Frozen-Burrito / hydrate-app

Repositorio para la app de apoyo de la botella hydrate, desarrollada con Flutter.
2 stars 0 forks source link

[BUG] Se registran nuevas entradas en la tabla de entornos y perfiles, cuando ya existe la entrada necesaria #12

Closed Frozen-Burrito closed 2 years ago

Frozen-Burrito commented 2 years ago

Descripción del Error Parece que con cada ejecución de la app, de alguna manera se agregan nuevos registros en la tabla muchos a muchos entre perfiles y entornos. Los registros son idénticos (referencian al mismo perfil de usuario y el mismo entorno). Esto provoca que métodos como UserProfile.selectedEnvironment produzcan errores inesperados.

Cómo Reproducir Pasos para reproducir el error:

  1. Abrir la aplicación
  2. Cerrar la aplicación
  3. Abrir la app nuevamente
  4. Ver el error

Comportamiento Esperado La app agrega un solo registro a la tabla muchos a muchos, cuando se crea un nuevo perfil de usuario. Este registro referencia el nuevo perfil con el entorno por defecto (el entorno que es desbloqueado gratis, para todos).

Entorno

Contexto Adicional El total de registros en la tabla debe equivaler a la suma del número de perfiles desbloqueados de cada perfil de la app.

También, el getter UserProfile.selectedEnvironment produce un error cuando unlockedEnvironments no está vacío, pero el ID de selectedEnvId no coincide con ninguno de los entornos desbloqueados. Actualmente, esto genera un StateError. Quizás es más apropiado que simplemente modifique selectedEnvId a un valor correcto y retorne el entorno por defecto.

Frozen-Burrito commented 2 years ago

La implementación del getter UserProfile.selectedEnvironment fue modificada para evitar que lance un StateError, aún cuando las condiciones sean incorrectas (cuando un perfil tiene un selectedEnvId que no existe en su colección de unlockedEnvironments.

Frozen-Burrito commented 2 years ago

Es posible que el issue #13 contribuya directamente a este error.

Frozen-Burrito commented 2 years ago

La solución del issue #13 arregló la causa del error identificado en este issue