Info

Open Website
WARNING! Clicking "Open Website" will launch a third-party app, use at your own risk. We do not recommend logging in with your main account.

Testing and Issues

You can test this app and submit issues during the testing period of the JavaScript Contest, Stage 2 contest.

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

Voting

2
by rating

Issues

Fair Quokka Mar 31, 2020 at 13:13
Конкурсное задание выполнено не до конца. Из всех типов медиа в приложении поддержаны только фотографии, не реализован фотопросмотрщик. Работа над поиском не завершена — найденные сообщения могут дублироваться, а прогресс-бар зависать.

Скорость работы приложения оказалась ниже ожидаемой в части загрузки чатов и медиа, при просмотре анимированных стикеров. Есть незначительные отклонения от предоставленного дизайна.

В ходе тестирования работы было выявлено множество существенных недостатков:

– Проблемы со входом в приложение: https://contest.com/javascript-web-2/entry1306#issue10676;
– Периодически приложение не переходит на экран ввода кода после того, как номер был подтверждён – при этом в другую сессию приходит свежий код;
– После успешного входа приложение может разлогинить аккаунт сразу после попадания на экран чатов;
– Проблема с некоторыми наполненными аккаунтами – при входе в них бесконечная загрузка, в консоли появляется Cannot read property 'split' of undefined.
– Некоторые чаты могут не открываться, при этом прогресс-бар бесконечно вращается, а в Shared Media отображается содержимое этих чатов;
– При смене чатов случайным образом может появляется ошибка “123”;
– Третья колонка заслоняет экран чата;
– Не поддержана панель стикеров;
– В приложении нет переноса строки при отправке сообщения.

Перечисленные недоработки и незавершенное конкурсное задание не позволяют данной работе занять призовое место.
macOS 10.15.3, Chrome 80.0.3987.
20
D
Deleted Account Feb 18, 2020 at 15:46
See comment
Dark Unicorn Feb 18, 2020 at 15:52
Hello everybody. I screwed up a bit and uploaded the version using Subtle Crypto Api (available only via https) and connecting to the ws (not wss) address of the Telegram servers. The link below is the corrected version. All I changed is to add "s" to "ws" in the js/proto.min.js file, no other files have been changed, you can easily check this. Sorry for the inconvenience and thank you.

https://xooler.github.io/telegram-js/
To get around Chromes security care, it's enough just to add "http://entry1306-jsround2.usercontest.com/" to  "Insecure origins treated as secure" in "chrome://flags" as described here https://contest.com/javascript-web-2/entry1300#issue10674 . With mine it will be "http://entry1300-jsround2.usercontest.com,http://entry1306-jsround2.usercontest.com"
Dark Unicorn Feb 19, 2020 at 09:25
Hi. Thanks for the alternative solution. it suits more, because it works with the version loaded on contest.com, there will be no suspicions that we modified something after the end of the competition
D
Deleted Account Feb 20, 2020 at 16:00
Main info:
- support modern browser (from support webcomponents, textencoder/decoder, web crypto pbkdf2)
- show info block for unsupport browsers
- using webworker for crypto and hash functions
- support screen size from 1024px width
- lazy loading resources (split auth and app resources), display content after they load (no jerking when loading styles, icons, fonts like some other participants)
- only auth screen transfer 185kb gzip resources includes fonts, assets (with countries flags spritesheet)
- only app screen transfer 165kb gzip resources includes messages background image
- from auth screen to app screen without page realod transfer 276kb gzip resources
- tgs monkey anmations optimized and glued to one tgs file only 18.2kb size
- used dependencies: gunzip and lottie (lottie bundle optimized for support only tgs features from 147kb to 67kb non-gzipped)
- custom scrollbar used for all components
- fonts splited by unicode ranges, so loaded only needed
D
Deleted Account Feb 20, 2020 at 16:00
Protocol features:
- to use connection to test servers add #testmode hash to url
- custom websocket implementation of mtproto with last layer
- lazy connection to all dc
- remove unused methods and constructors from tl schema (app size optimization)
- for crypto using browser api for maximum, except aes for implementation of aes-ige
- working correctly with all dc and handling migration and other errors
- reconnect in case of lack of internet connection,
- displaying information about the inaccessibility of the Internet, or telegram blocking in a specific region on the authorization screen
- app screen have not indicator but reconnect is support to
- correct updates handling from https://core.telegram.org/api/updates with recovering gaps
D
Deleted Account Feb 20, 2020 at 16:01
Auth screen:
- all problems described in stage 1 are fixed
- auto-detection user country and its selection in the drop-down list from the help.getNearestDc method
- processing and outputting information about all kinds of errors
- correct formatting of phone numbers depending on the selected country
- auto-detection of the country as you enter the phone number
- correct country change if not correctly defined (for example, for USA and Canada with the same +1 code)
- initializing the connection before loading the rest of the resources
D
Deleted Account Feb 20, 2020 at 16:01
Auth screen 2:
- added functionality 2fa
- correct and seamless animation of a monkey
- displaying flags is not like emoji and is correct on all systems (for example, on windows instead of flags 2-letter identifiers of countries are displayed for many other participants who used emoji)
- when you return to the editing screen the phone number after sending the code, the auth.cancelCode method is called
- display of service rules during registration
- upload and crop photos during registration
- maximally matches the provided layouts with cool animations
D
Deleted Account Feb 20, 2020 at 16:01
App screen:
- maximally matches the provided layouts
- handling and display new state of dialogs updates: change folder; messages updates; unread marks; read history; user typing; unreaded count; new dialog with user, new chat, new channel; delete dialogs
- handling and display new state of messages updates: new, edit, delete
- handling and display new state of peers updates: change status, name, phone, photo
- local caching dialogs, users info, photos, images, stickers, files
- dialogs list fetch only after auth, after dislogs list state changings by updates
D
Deleted Account Feb 20, 2020 at 16:02
App screen 2:
- for no avatar photo placeholders used colors from offical telegram app
- dialogs change sort, add and remove animations
- dialogs unreded count and unreaded mark animation
- dialogs list and messages list have overlays on top and bottom with transparent gradient to background
- correct messages bubbles corders border radius and sended photo without caption bubble corner crop
- messages sending form new line by ctrl+enter
D
Deleted Account Feb 20, 2020 at 16:02
Additional information:
- in this stage i concentrated my strength on size, attention to detail and speed, so i have not implement addition functional
- of the necessary functionality for stage 2, only sending stickers is not implemented
- sometimes there is a bug with a logout immediately after authorization, in this case, try to clear localstorage and try again
Dark Unicorn Feb 23, 2020 at 10:53
Hi! Thanks for issue. I think problem with one of dialogs item field. If you want test my solution, you can use connection to test servers with clear account, just add hash #testmode to url
Hey, stuck on the auth screen
MacBook Pro 13", Chrome 80.0.3987.116
Dark Unicorn Feb 23, 2020 at 21:11
Hi! Thanks for issue. Please see 1st and 2nd issues to fix this
> Hi! Thanks for issue. Please see 1st and 2nd issues to fix this

Ok, same error as Merry Ant then. https://xooler.github.io/telegram-js/#testmode does not send any code for my number
MacBook Pro 13", Chrome 80.0.3987.116
Dark Unicorn Feb 23, 2020 at 21:17
I'm definitely not sure, but test servers may not send SMS to real numbers, please use the test numbers according to the instructions https://core.telegram.org/api/auth#test-phone-numbers
Nobody added any issues yet...