Переписка

Разговор один на один внутри приложения: ученик пишет автору, автор отвечает, обоим приходит уведомление в бот.

Блок из палитры, таблица переписки — и ноль в высоте ленты, то есть чат-экран.
Блок из палитры, таблица переписки — и ноль в высоте ленты, то есть чат-экран.

Блок «Переписка» — это лента реплик и строка ввода под ней. Собрать похожее из списка, поля и кнопки можно было и раньше; не получалось ровно то, из-за чего разговор узнают разговором: реплики разной ширины по двум сторонам, лента, которая сама держится низа, отправка по Enter и поле ввода, не уезжающее под клавиатуру.

Что заполнить:

  • Таблица переписки — обычная таблица с режимом доступа «каждый пишет себе, админ видит всё». Ученик видит свою ветку, автор — все.
  • Столбец с текстом и столбец «от кого». Второй блок заполняет сам: обе стороны лежат в строках ученика, и различить их можно только тем, что записано.
  • «Где запомнен собеседник (для экрана автора)» — только на экране автора: здесь запоминается выбранный человек, и лента показывает его ветку. У ученика поле остаётся пустым — ветка у него одна.
  • Пока там ничего не запомнено, автор видит список разговоров: имя, последняя реплика, время и точка у тех, кто ждёт ответа. Нажатие открывает разговор, «Закрыть переписку» (действие «Запомнить» с пустым значением) возвращает к списку.
  • Высота ленты. Число — лента такой высоты посреди страницы. Ноль — чат-экран: лента занимает всё, что осталось от окна, прокручивается сама, а строка ввода стоит внизу и остаётся над клавиатурой.

Жесты в ленте — те же, к которым привыкли в мессенджерах. Свайп вправо по реплике отвечает на неё: цитата встаёт над полем ввода и уходит вместе с ответом, а потом видна в самом пузыре. Долгое нажатие открывает ряд значков — реакция ставится и снимается одним касанием. И то и другое хранится в самой строке переписки (replyText, replyFrom, reaction), то есть видно и в панели данных.

Галочка «Сообщать о сообщении в бот» работает в обе стороны, и адресата выбирает сама: реплика ученика уходит уведомлением владельцу приложения, а ответ автора — тому ученику, которому он отвечает. Пишет бот владельца, поэтому уведомление придёт только тому, кто хоть раз нажимал в нём «Старт»; молчание в этом случае — не сбой.

Кто перед лентой — решает не блок, а права: автор приложения и тот, кого вы назначили админом этой таблицы, видят и ведут чужие ветки; все остальные — свою. Роль админа назначается в таблице людей, где у человека одна строка: «админ — это тот, у кого в столбце „Роль“ написано „Тренер“».

Где: Палитра блоков → «Данные» → «Переписка».

Читать дальше