Info

Download .APK (62.9 MB)

Source on GitHub

https://github.com/grishka/TelegramAndroidContests/tree/contest_nov2021

Testing and Issues

You can test this app and submit issues during the testing period of the November 2021 Android Contest contest.

Entries with serious issues will not be able to win the contest, but even minor issues might be important for overall results.

Voting

286

Comments

Выполнены все 3 задачи.

- В запрете на пересылку вроде всё понятно. Сервер принимает флаг для любых чатов, но в интерфейсе я отображаю настройку только для приватных (без юзернейма). Кнопки пересылки и шаринга могли остаться на экранах, которые не были перечислены в задании, вроде аудиоплеера.
- Видимость кнопок на экране чата, в фотопросмотрщике и в shared media обновляется в реальном времени при изменении настроек чата, как и (не)возможность делать скриншоты.
- В меню отправки от имени канала заголовок прокручивается вместе с содержимым. Это сделано целенаправленно, потому что в системных меню с заголовком это работает так же. При открытой в горизонтальной ориентации клавиатуре так влезает хоть что-то, иначе бы влезал только заголовок.
- Для меню отправки обработаны все эдж-кейсы вроде взаимодействия с клавиатурой и панелью эмоджи/стикеров.
- В календаре нажатие на день при неактивном режиме выбора ничего не делает, потому что в задании не было явно указано, что оно должно делать.
- Алгоритм выбора диапазона дней подсмотрен в приложении банка: по первому нажатию выбирается один день, по второму второй, по третьему снова первый, а предыдущее выделение сбрасывается.
- В превью чата не показывается дата и количество сообщений в экшенбаре, потому что, во-первых, это будет путать пользователя, т.к. чат можно прокручивать куда угодно, а во-вторых на iOS в shared media такого нет, там такой же заголовок, как на экране чата.

- Анимации везде где надо есть, но достаточно простые. Видео с анимациями появились достаточно поздно, не стал их реализовывать во избежание риска появления багов.
You have not added any comments yet...
by rating

Issues

Fair Mammoth Nov 18, 2021 at 22:37
Выполнено задач: 3/3

Поздравляем с победой. Из положительных сторон отметим продуманную работу над различными вариантами клавиатур и альбомной ориентацией, а также внимание к деталям; например, запрет на выделение части текстового сообщения в задаче №1, сохранение позиции выбора активного канала при реализации задачи №2. При работе над задачей №3 реализовано качественное выделение дней, предпросмотр конкретной даты.

Выявленные недоработки:
 
1. Запрет на пересылку и сохранение медиафайлов
1.1 Пользователь может обойти запрет на скриншоты через переход в раздел закрепленных или запланированных сообщений с последующим возвращением на экран чата.
1.2 Приложение обрезает строки в контекстном меню стикеров по ширине плашки с пояснением о запрете на пересылку.
1.3 В музыкальном плеере отображаются функциональные кнопки Share/Save to music – позволяющие поделиться или сохранить файл.
1.4 На сущностях контактов доступна нефункциональная кнопка Copy.
1.5 Приложение отображает подсказку о запрете на пересылку для сервисных сообщений (Alex added you to this group и так далее).
1.6 Подсказка о запрете на пересылку сообщений отображается в разделе запланированных сообщений. 
1.7 При выборе нескольких сообщений не появляется подсказка о запрете на пересылку сообщений. 
1.8 Кнопка ⋮ всё ещё выводится в просмотрщике GIF. 
1.9 Кнопка кисти может накладываться на элементы плеера в просмотрщике.
1.10 Текст подсказки расположен не в соответствии с дизайном предоставленных макетов.
1.11 Местоположение подсказки в Shared Media не соответствует предоставленному дизайну.
1.12 У неактивной кнопки Forward не должно быть эффекта Ripple.
Samsung Galaxy A51 (Android 11); Xiaomi Redmi Note 8 Pro (Android 10); Samsung Galaxy S10 (Android 11).
20
Fair Mammoth Nov 18, 2021 at 22:37
2. Отправка сообщений от имени канала в публичных группах
2.1 Приложение может вылететь при развернутом слое со списком публичных каналов, если в этот момент у пользователя отзываются права администратора в открытой группе.
2.2 Новые созданные публичные каналы не появляются в списке до перезапуска приложения.
2.3 Ожидамое, хоть и не опубликованное поведение заголовка Send Message As предусматривает его фиксацию вместо прокрутки вместе со списком каналов. 

3. Удаление сообщений в выбранном диапазоне
3.1 Последовательная смена ориентации устройства с портретной на альбомную и обратно ломает вёрстку – календарь начинает отображаться с левой части экрана.
3.2 Выбранный цвет заголовка Select days не соответствует дизайну предоставленных макетов.
3.3 Пользователю не выводится дата и количества сообщений за неё в шапке предпросмотра чата.
3.4 При попытке предпросмотра дня без медиа приложение открывает ближайший следующий день с медиа.
3.5 В предпросмотре дня чат открывается с небольшим прыжком – происходит не зависящая от пользователя прокрутка истории на несколько пикселей вверх для вывода пузыря с датой.
3.6 При выгрузке приложения из памяти устройства с развернутым предпросмотром чата, последующий запуск может привести к открытию приложения в некорректном состоянии и последующем падении при повторном открытии предпросмотра. 
Samsung Galaxy A51 (Android 11); Xiaomi Redmi Note 8 Pro (Android 10); Samsung Galaxy S10 (Android 11).
20
У тебя еще Hint добавляется непосредственно в SharedMediaLyout, который не соответствует так называем макетам. У тебя он под кнопкой, а должен быть сверху. В SharedMediaLayout его нельзя добавлять. т.к. он может перекрываться ActionBar`ом, он должен быть где-то на уровне ProfileActivity.
5
Eager Cat Nov 16, 2021 at 11:26
Я подумал, что нет смысла вот настолько соответствовать макетам. Важно соответствовать их духу, а не прям вот так вот. Так было намного проще. Не люблю лезть в родительские вьюшки.
Идешь на экран превью в календаре.
Далее либо:
a) открываешь не телефоне другое толстое приложение, чтобы ОС выкинула из памяти активность телеграмма либо
б) идешь в настройки для разработчика и там ставишь галку "Вытеснение активности" и сворачиваешь/разворачиваешь приложение телеграмма.
Ты увидишь, что менюшка с действиями пропала и чат на весь экран.
Далее нажимаешь назад, видишь календарь и делаешь долгий тап по любому дню. Будет краш.
2
Eager Cat Nov 16, 2021 at 12:09
Эээ? Я думал телеграм вообще не умеет в сохранение и восстановление состояния активити?!..
2) Тот самый краш о котором описано выше после вытеснения активности.
Samsung A51/Android 11
2
Критические уязвимости
Samsung A71
1
Eager Cat Nov 17, 2021 at 06:02
Где?
Необходима проверка кейса
Samsung A71
1
Eager Cat Nov 18, 2021 at 12:20
В секретных чатах и самоуничтожающихся фотках кстати тоже есть такая страшная, великая и ужасная zero-day уязвимость.
Понял. Паштет сливает переписку в секретных чатах.
Samsung A71
1
В общем - вау!
Не больной но очень важный глюк в задаче 2: при создании нового паблик канала, и после этого заходя в паблик группу, новый канал не отображается в списке send as. Выход (назад назад...) Также не помогает. Необходимо выкинуть прогу из оперативки, зайти, и тогда все появиться. Прикладываю скриншоты до отчистки ram и после. Нужно поменять Момент запроса save as, и всегда делать это запроси в не использовать локальный (видимо устаревший) кеш.
Xiaomi mi mix 3 5G
В той же задачи: при прокрутке header тоже улетает, должен оставаться на месте.
Xiaomi mi mix 3 5G
Eager Cat Nov 16, 2021 at 10:21
Да не факт что должен. То видео было "как _можно_ сделать". Я специально сделал, чтобы прокручивался, потому что в похожих внешне системных меню с заголовком он прокручивается. А ещё если повернуть экран, с открытой клавиатурой может ничего кроме этого заголовка не влезть, а так влезает.
ŭ
Работу не удается установить полностью, идёт загрузка, установка, все завершается, но приложение не появляется в меню

Samsung A50
Eager Cat Nov 16, 2021 at 10:26
Проблема у вас с лаунчером.
ŭ
Прост с двумя другими работами такой проблемы не было🥴
Eager Cat Nov 16, 2021 at 10:50
Я название не менял, оно называется просто Telegram, может не заметили?
Пустая менюшка при открытии гифки обычном пользователем не (админ)
Eager Cat Nov 16, 2021 at 10:52
А вот это реально мой косяк ¯\_(ツ)_/¯
Вытеснение активности на экране превью чата в календаре.
При возврате обратно в приложение:
1)Пропадает меню у превью.
2)После закрытия превью, если сделать долгое нажатие на дату - краш.
Eager Cat Nov 16, 2021 at 11:51
А подробнее можно? Не совсем понял, что именно происходит, и почему именно превью пропадает.

А вообще, конечно, да, обожаю эти кастомные фрагменты 👍👍👍
При форварде, когда он запрещен, сообщение не удаляется, а сохраняется локально как неуспешно отправленное.
Pixel 6 pro/Android 12
Eager Cat Nov 16, 2021 at 19:09
По-моему в задании не сказано, что неуспешно отправленные сообщения должны удаляться.
Тогда его потом можно будет сохранить из неотправленного
Pixel 6 pro/Android 12
Eager Cat Nov 16, 2021 at 19:20
А ещё можно открыть это сообщение с какого-нибудь экрана, где есть кнопка пересылки, выключить интернет и переслать, тогда ошибка не придёт, но сохранить всё равно можно будет :)
Запрет пересылки:
- При открытом попапе, если запретить, то по выбору пункта меню просто закроется
- Кнопки пересылке в апабаре тоже не реагируют на изменения на лету
- В фото превью кнопки нижнего бара - рисовния и шаринга ведут себя непредсказуемо при включении/выключении ограничений, точнее на вид так - если отключить пересылку на видео - то они пропадут везде, если на фото, то будет везде рисование.
SGS S9
Лендскейп
SGS S9
Eager Cat Nov 16, 2021 at 21:26
Ага, примерно так и было задумано. Может можно было принудительно закрывать клавиатуру в такой ситуации, но я не уверен.
Я не судья, но на сколько понял (и так и сделал), но превью календаря должно содержать только сообщения выбранного дня. Ну и уж точно титл - имя / субтитл - количество сообщений этого дня.
Удаление уже не пробую - предыдущие работы все чаты подропали((
SGS S9
Ага, примерно так и было задумано.

Я в такой ситуации ограничил список по высоте и показал поверх клавиатуры - все равно без выбора ей не воспользоваться
SGS S9
Eager Cat Nov 16, 2021 at 21:32
Поверх можно показать, если это сделать как отдельное окно. А я его кладу в FrameLayout, в котором вся ChatActivity, поверх всего остального. И если делать окном с закрытием по тапу за пределами, становится непонятен смысл крестика на кнопке.
Сборка в режиме DEBUG_PRIVATE_VERSION = true
Samsung A71
Eager Cat Nov 17, 2021 at 06:01
И что?
1) В музыке не поддержан запрет на форвардинг/сохранение.
Samsung A51/Android 11
Eager Cat Nov 17, 2021 at 10:59
В задании ничего не было сказано про этот экран.
3) Тап по системному сообщению. Не знаю есть ли тут смысл показывать надпись "Forwards from this channel are restricted". Там ведь никогда не было никаких подобных действий сохранения/пересылки.
Samsung A51/Android 11
4) В превью в календаре. При повороте экрана блюр берется от предыдущей ориентации телефона.
Samsung A51/Android 11
Тормозит при сохранении опции из 1 задачи
Samsung A71
Nobody added any issues yet...