Frozen-Burrito / hydrate-app

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

[BUG] Un mismo registro de hidratación puede ser guardado varias veces, resultando en duplicados #48

Open Frozen-Burrito opened 2 years ago

Frozen-Burrito commented 2 years ago

Descripción del Error Cuando la app obtiene uno o más registros de hidratación desde la extensión, es común que un mismo registro de hidratación sea "creado" varias veces, haciendo que se muestren muchos registros idénticos.

Cómo Reproducir Pasos para reproducir el error:

  1. Conectar la app con la extensión para botellas a través de BLE.
  2. Tomar agua, desde una botella con la extensión adherida.
  3. Navegar a la vista de historial de hidratación en la app.
  4. Ver los registros duplicados.

Comportamiento Esperado La app debe obtener cada registro de hidratación una sola vez, y guardar cada registro en su BD una sola vez.

Entorno

Contexto Adicional No estoy seguro si el problema es causado por la app al obtener los registros, o por la extensión, que notifica más de una vez a la app con el mismo registro.

Frozen-Burrito commented 2 years ago

A pesar de haber observado este problema el viernes pasado, en las pruebas realizadas a día de hoy, solamente 2/7 registros de hidratación fueron duplicados una sola vez (dos copias en total, en vez de las varias decenas de la vez original). Falta probar más a fondo la sincronización de registros por BLE.

Frozen-Burrito commented 2 years ago

Al haber realizado más pruebas, la teoría actual de la causa del problema consiste en una combinación de dos factores:

  1. El dispositivo de extensión para botellas persiste el número de registros almacenados que están pendientes de envío a la app. Sin embargo, no identifica cuáles registros ya fueron sincronizados ni borra la memoria NVS, por lo que existe la probabilidad de que un registro de hidratación sea enviado a la app más de una vez cuando se reinicia el chip.
  2. La app guarda una sola vez cada registro de hidratación recibido, pero no se asegura que el registro que está por guardar no exista previamente. Esto no es un problema en sí, pero el problema anterior expone esta característica de la app.

En estas pruebas también se identificaron dos problemas en el mecanismo de transmisión de registros de hidratación, pero serán descritos a detalle en sus propios issues.