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 1 contest.

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

Voting

79

Comments

Giant Parrot Nov 19, 2019 at 00:41
Handmaded with ❤️ from scratch. 

Feature list:
- Own MTProto implementation. Works completely asynchronous with Web Workers and uses the fastest (rusha for sha1, forge for sha256) ever available hashing solutions: https://dominictarr.github.io/crypto-bench/
- Supports PFS. Updates the temporary auth key every two hours. Follows the security guidelines.
- All the scrollable content is rendered partially. You can scroll up a whole message history or the dialog list without loosing any performance.
- The dialog list and message history are animated. It uses FLIP technique for smooth content appearing, removing and shuffling.
- The gzipped JS bundle size, including the workers and the tl-schema, is 231kb. The whole app zip size is 308kb for content and 938kb for favicons.

Made as a part of the master degree diploma work for BMSTU IC8 Information Security.
2
Giant Parrot Nov 19, 2019 at 01:58
You can use localStorage.setItem('debugmt', 1) in a browser developer console to view the MTProto connection logs.

Known Issues due to lack of time:
- By default, DC 2 is set. If you provide any non DC 2 phone number, the app will take some time to switch DC and create new keys pair.
- Message deleting and editing is not implemented yet.
- New dialogs won't show at the dialogs list.
- Short chat messages and short self messages updates are not implemented yet.
- The dialog and messages loaders are freezing.
- Sometimes there can be issues with temporary and permanent keys generation / binding. You can use client.svc.meta = {} and localStorage.uid = 0 to force an authorization data removal.
You have not added any comments yet...
by rating

Issues

Fair Quokka Jan 10 at 02:08
Приложение использует собственную реализацию протокола (transferred size: 270KB), высокая скорость работы приложения, а также соответствие дизайну предоставленных макетов в целом позволяют высоко оценить работу.

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

В процессе тестирования выявлены следующие недостатки: 

– Некоторые детали дизайна некорректны: в шапке открытого чата нет кнопок, в каналах сохраняется поле ввода, логотип канала отображается напротив сообщений, кнопка ‘Next’ появляется до введения валидного номера .
– Медленная загрузка чатов.

Недоработки экрана входа: 

– Префиксы некоторых стран содержат лишний символ, что в итоге приводит к невозможности входа (использование пункта 'Other' в выпадающем списке стран решает эту проблему);
– США как страна по умолчанию;
– Редактирование номера приводит к полному сбросу данных;
– На экране ввода кода нет автоматической проверки введёного кода и фильтрации поля ввода.
Google Chrome 78.0.3904, macOS 10.15.2
20
Tactful Seal Nov 18, 2019 at 23:29
+ Great idea of tg logo display before page is ready.
+ Cool that country autocompletes not only by name, but by code too.
- It doesn't let you start the number with code, changing country by it. Can't edit code in number.
4
Дмитрий Диль Nov 18, 2019 at 18:36
Probably winning solution
1
Earnest Hedgehog Nov 20, 2019 at 04:49
Very good implementation. If this is a diploma work, can I see your source code?
1
Giant Parrot Dec 3, 2019 at 10:28
Thank you! The source code will be available here after the contest end:
https://github.com/spalt08/telegram-js (application)
https://github.com/spalt08/mtproto-js (MTProto library)
Quirky Mammoth Nov 19, 2019 at 03:33
If put long value on check code input the monkey is dissapear. Also you can submit check code as soon as user input 5 symbols. No need next button.
Overall, good job!
Windows 10, Chrome Browser
k
Bug when changing the phone number after the input. Input place caret to the end for any modification
Hm...because of something, I can't get further than login screen even for my real number.
Desktop / MacOS / Chrome
Giant Parrot Nov 19, 2019 at 09:37
Most likely that your connection to Telegram is blocked. Try to use a VPN.
if i chose Other, i can't pass validation.
Giant Parrot Nov 19, 2019 at 09:50
Vosem vosemsot
Pyat pyat pyat tri pyat tri pyat
Prosche pozvonit chem u kogo to zanimat 

It works. You forgot to add 7 (the country code) at the start of the phone number, that’s why the validation failed.
Login Page:
- when select country scroll appears on a moment
- no country images
- if you type name of country and press arrow key and press enter, there will be unexpected country (see video)
- hover on country in select isn't implemented
- it'd be better if after changing phone number, input won't be cleared
- input's caret should be blue when input is focused, and red when input is wrong (according to mockups)
- when phone number isn't completed 'Next' button shouldn't be visible (according to mockups)
- can't change phone code. It's important as many users don't use country select in real at all
- it'd a good to invoke help.getNearestDc and select country according to current user's location.
* I've faced with login failure (endless auth.sendCode performing) a couple of times (one of them see in video, console included only migration message)
Giant Parrot Nov 19, 2019 at 12:42
Thank you for your feedback. We had not enough time to work all the little details, we will fix them before the next contest stage.

> no country images

Your browser/OS doesn't support emojies, please update your system.

> when phone number isn't completed 'Next' button shouldn't be visible (according to mockups)

We considered the markups as not very good for UX. When there is no button on the screen, the user can think «what to do next? it doesn't work». We decided to leave the button so that the user can click it and see what's wrong.
Main Page:
- it seems some heavy operations are processed in main thread. Sometimes I have freezes when select a dialog (try to select consistently 5+ dialogs)
- all users are online
- message creation box shouldn't be visible in broadcast channels (like Telegram Contests)
- probably it'll be better user can't select dialog's title
- there aren't checks in my messages
- there aren't dates in photo messages
- dialog with myself should be called 'Saved Messages' (when it's selected)
- default scroll
* Nice images preload
Nobody added any issues yet...