Platos y nutricion
PlatosScreen
El catálogo nutricional muestra los platos aprobados en un formato de tarjeta única con navegación secuencial, similar a un carrusel lineal. El usuario ve un plato a la vez y puede avanzar o retroceder entre ellos.
Carga de datos
Al inicializar la pantalla se realizan dos consultas a Supabase en paralelo:
Platos aceptados: from("platos").select { filter { eq("visibilidad", true); eq("aceptado", true) } }. Solo se muestran en el carrusel los platos que han sido aprobados por un administrador y tienen visibilidad activada.
Sugerencias pendientes (solo administrador): from("platos").select { filter { eq("aceptado", false) } }. Los platos pendientes de moderación solo son visibles para los administradores.
Visualizacion del plato
Cada tarjeta muestra:
- Imagen del plato (si
imagen_urlcontiene un string Base64, se decodifica aBitmapmedianteImageUtils.decodeBase64ToBitmap). - Nombre del plato.
- Calorías.
- Tiempo de preparación.
- Descripción o receta.
Sugerencia de platos por el usuario
Cualquier usuario puede sugerir un nuevo plato mediante el botón de sugerencia, que abre un diálogo modal con los siguientes campos:
- Título (nombre del plato)
- Receta o descripción
- Tiempo de preparación
- Calorías
- Foto (seleccionada de la galería mediante
ActivityResultContracts.GetContent(), convertida a Base64)
El plato se inserta en Supabase con aceptado = false y visibilidad = true. Quedará pendiente de revisión por un administrador.
Moderacion por administrador
El administrador ve en una sección separada la lista de platos pendientes de aprobación (aceptado = false). Para cada plato puede:
- Aceptar: Ejecuta
update { set("aceptado", true) }en Supabase. El plato pasa a ser visible en el carrusel. - Rechazar: Ejecuta
deleteen Supabase. El plato se elimina permanentemente.
Desde el carrusel de platos aceptados, el administrador también puede eliminar cualquier plato ya publicado.