Перейти к основному содержанию

Блюда и питание

ПластиныЭкран​

Каталог питательных веществ отображает одобренные блюда в формате одной карточки с последовательной навигацией, аналогичной линейной карусели. Пользователь видит по одному блюду за раз и может перемещаться между ними.

Загрузка данных​

При инициализации экрана к 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. Пластина удаляется навсегда.

Из карусели принятых блюд администратор также может удалить уже опубликованные блюда.