Skip to content

Fix/UI ux stability#36

Merged
Zibete merged 8 commits intomainfrom
fix/ui-ux-stability
Mar 1, 2026
Merged

Fix/UI ux stability#36
Zibete merged 8 commits intomainfrom
fix/ui-ux-stability

Conversation

@Zibete
Copy link
Copy Markdown
Owner

@Zibete Zibete commented Mar 1, 2026

🧾 fix(ui): estabilización UX + logout seguro + coherencia visual

Base: origin/main
Rama: fix/ui-ux-stability


🧾 Qué se cambió

🧩 Groups

  • Fix en carga de grupos: GroupRepository.getAllGroups() ahora usa la key del snapshot como source of truth para leer /Groups/Users/<groupKey> y hace fallback de name si viene vacío.
  • Interacciones temporales: FAB y cards muestran diálogo "¡Próximamente: Salas en ZIBE!" (sin disparar join/create) para poder testear UI (refresh/búsqueda/diseño).

🧠 Welcome BottomSheet (EditProfile)

  • El flag del welcome no se resetea en logout → se muestra 1 sola vez y persiste entre sesiones.

🧾 BottomSheet (Compose)

  • ZibeBottomSheet fuerza ModalBottomSheetProperties con system bars en modo oscuro mientras el sheet está abierto (evita icons/texto oscuros y mejora consistencia visual).

🧭 ChatList

  • Se reemplazó el ContextMenu de long-press por PopupMenu estilado (mismo look & feel que el overflow).
  • Strings nuevas para "Marcar leído / Marcar no leído".

🧵 Coroutines / errores

  • zibeCatching ahora re-lanza CancellationException (no se trata como error).
  • Guard en ProfileViewModel para no mostrar diálogo cuando es cancelación (evita "Standalone Coroutine was cancelled" al navegar rápido).

🔒 Logout (crashes + UX)

  • Se evitan crashes al cerrar sesión:
    • ChatList: stopObserving() deja de recalcular refs que requieren usuario logueado (usa/cacha refs).
    • ProfileRepository: manejo seguro de cancelaciones/permission issues en listeners RTDB durante sign-out.
  • Overlay global de loading durante logout (visible desde cualquier pantalla abierta por drawer).

🔧 Por qué

  • Había errores por lecturas RTDB inválidas cuando name faltaba en meta (terminaba consultando /Groups/Users sin child → rules → PERMISSION_DENIED).
  • El welcome se repetía por reset de flag en logout (se había modificado para testear sin reinstalar).
  • Material3 ModalBottomSheet cambiaba el estado visual de system bars al abrir/cerrar.
  • El long-press de ChatList no era consistente con el overflow (ContextMenu vs PopupMenu).
  • Cancelaciones de coroutines se estaban mostrando como error real.
  • Durante logout se intentaban operar refs/listeners que dependían de un usuario aún logueado → crashes.
  • Faltaba feedback global (spinner) durante sign-out desde cualquier pantalla.

♻️ Contratos

  • zibeCatching {}: CancellationException ya no se encapsula como Failure → se re-lanza (comportamiento correcto de coroutines).
  • ZibeButtonPrimary: nuevo parámetro iconSize: Dp = 24.dp (Auth lo usa en 40.dp para Google/Facebook).
  • ChatList long-press: el menú pasa a PopupMenu + recurso nuevo menu_chat_list_item.xml.

🔥 Código muerto

  • Se desactiva el flujo de join/create desde Groups por ahora (acciones reemplazadas por diálogo).
  • ContextMenu de ChatList deja de usarse (migrado a PopupMenu).

✅ Tests agregados (JVM)

  • Ninguno en esta iteración.

✅ Cómo correr los tests

./gradlew testDebugUnitTest lintDebug :app:assembleDebug

✅ Checklist manual

  • Groups: entrar a Groups → lista visible (sin snack de error).
  • Groups: pull-to-refresh → recarga sin error.
  • Groups: búsqueda → filtra lista.
  • Groups: click FAB → diálogo "Salas próximamente".
  • Groups: click card → mismo diálogo.
  • Welcome: instalación limpia → welcome aparece 1 vez; cerrar y reabrir → no reaparece.
  • Welcome: logout → login → no reaparece.
  • BottomSheet (EditProfile Compose): abrir/cerrar sheet → system bars consistentes (sin icons/texto oscuros).
  • ChatList: long-press → menú igual al overflow.
  • ChatList: "Marcar leído/no leído" cambia según unreadCount.
  • ChatList: "Notificaciones on/off" cambia según estado CHAT_STATE_SILENT.
  • Profile: navegar rápido Users ↔ Profile → no aparece "Standalone Coroutine was cancelled".
  • Logout: desde drawer en cualquier pantalla → aparece overlay global + no crashea + navega a Splash.

📦 Commits incluidos

  • 6517d 🧩 arregla la carga de grupos cuando falta name en meta y muestra "Salas próximamente"
  • fecdf 🧠 mantiene el flag del welcome a través del logout (no se resetea)
  • aa7d2 🧾 fuerza system bars en modo oscuro mientras el bottom sheet está abierto
  • e1906 🧭 unifica el menú de long-press con el estilo del overflow usando PopupMenu
  • a3129 🧵 re-lanza cancelaciones y evita diálogos de error por cancelación en Profile
  • fe66d 🔒 evita crashes en logout (listeners + cancelaciones/RTDB)
  • ff7f1 ⏳ permite definir iconSize en botón primario para iconos sociales
  • 732aa 🧱 agrega overlay global de loading durante logout

🚧 Fuera de alcance

  • Renombre funcional "Groups → Salas" a nivel de código/modelos/paths (solo texto de UI por ahora).
  • UX final de flows de Salas (create/join/host), navegación y permisos definitivos.
  • Suite de tests dedicada para logout + bottom sheet + groups.

@Zibete Zibete merged commit 8b0beb5 into main Mar 1, 2026
1 check passed
@Zibete Zibete deleted the fix/ui-ux-stability branch March 1, 2026 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant