Блюда и питание
ПластиныЭкран
Каталог питательных веществ отображает одобренные блюда в формате одной карточки с последовательной навигацией, аналогичной линейной карусели. Пользователь видит по одному блюду за раз и может перемещаться между ними.
Загрузка данных
При инициализации экрана к Supabase параллельно выполняются два запроса:
Принимаемые блюда: from("platos").select { filter { eq("visibilidad", true); eq("aceptado", true) } }. В карусели отображаются только блюда, одобренные администратором и имеющие включенную видимость.
Предложения, ожидающие рассмотрения (только администратор): from("platos").select { filter { eq("aceptado", false) } }. Блюда, ожидающие модерации, видны только администраторам.
Дисплей тарелки
На каждой карточке изображено:
- Изображение блюда (если
imagen_urlсодержит строку Base64, она декодируется вBitmapс помощьюImageUtils.decodeBase64ToBitmap). - Название блюда.
- Калории.
- Время подготовки.
- Описание или рецепт.
Блюдо, предложенное пользователем
Любой пользователь может предложить новое блюдо с помощью кнопки предложения, которая открывает модальное диалоговое окно со следующими полями:
- Название (название блюда)
- Рецепт или описание
- Время подготовки
- Калории
- Фотография (выбрана из галереи с помощью
ActivityResultContracts.GetContent(), преобразована в Base64)
Блюдо вставляется в Supabase с помощью aceptado = false и visibilidad = true. Оно будет находиться на рассмотрении администратора.
Модерация администратором
Администратор в отдельном разделе видит список блюд, ожидающих согласования (aceptado = false). К каждому блюду вы можете:
- ОК: Запустите
update { set("aceptado", true) }в Supabase. Блюдо становится видно в карусели. - Отклонить: Запустите
deleteв Supabase. Пластина удаляется навсегда.
Из карусели принятых блюд администратор также может удалить уже опубликованные блюда.