В ходе выполнения задания необходимо реализовать UI чата с возможностью отправки сообщения. Вам доступен интерфейс ChatRepository
, который содержит методы доступа к данным сообщений (подробнее в документации).
Для реализации задания предлагается использовать виджеты из библиотеки material
, но это не обязательное условие. Главное - в общем соответствовать макету и выполнить задания. То есть вас никто не удерживает от дополнительного функционала, а также от способов реализации!
Начать выполнение задание нужно будет с этого шаблонного репозитория. Вам нужно форкнуть репозиторий, залить изменения в свой уже скопированный репозиторий и отправить его нам.
- Реализовать верхний app bar с текстовым полем ввода имени и кнопкой обновления чата. В текстовом поле должен присутствовать hint "Введите ник".
Иконка Icons.refresh
- Реализовать нижнюю панель с текстовым полем и кнопкой отправки сообщения. В текстовом поле должен присутвовать hint "Сообщение".
Иконка Icons.send
-
Реализовать отображение списка сообщений. Список должен обновляться по нажатию но кнопку обновления на верхней панели (отправка запроса
ChatRepository.messages
), а также после нажатия на кпоку отправки сообщения (отправка запросаChatRepository.sendMessage
). -
На элементе списка должен присутствовать ник автора сообщения, само сообщение, а также аватарка, представляющая из себя круг с первой буквой ника посередине. Сообщение, отправленное от своего имени, должно выделяться от других сообщений (например, цветом, как на скриншотах). См. объекты
ChatUserDto
иChatUserLocalDto
.
- Добавить состояния загрузки и обработки ошибок. Требуемые обработки состояний:
- Первоначальная загрузка с progress indicator
- Ошибка при первой загрузке: "Произошла ошибка"
- Ошибка при отправке сообщения в виде снекбара
- После отправки сообщения блокировать кнопку отправки и заменять её индикатором прогресса
- Добавить возможность поделиться геолокацией. Слева от поля ввода сообщения на нижней панели необходимо добавить кнопку "Поделиться геолокацией". После нажатия на кнопку должен показываться алерт с подтверждением, после чего вызываться метод
ChatRepository.sendGeolocation
с данными геолокации. При отсутствии запрашивать разрешения.
Иконка Icons.share_location_outlined
- Добавить сообщение в виде отображения геолокации. По тапу на сообщение открывать карту с геолокацией.