Compare commits

...

370 Commits

Author SHA1 Message Date
mrbesen 3c0ec894fc
migrate to quilt 2023-03-24 19:59:10 +01:00
Eduard Kuzmenko 62b265a8eb Fix FF newlines again 2023-03-13 22:14:19 +04:00
Eduard Kuzmenko f14a235b81 Avatar context menu 2023-03-13 20:13:21 +04:00
Eduard Kuzmenko 5af49d55f1 Build 2023-03-13 18:47:15 +04:00
Eduard Kuzmenko 7b6a714bf8 Add attach bot to menu
Fix extra newlines with Ctrl+Enter
Fix newlines in Firefox
2023-03-13 18:46:26 +04:00
Eduard Kuzmenko e617a5f547 Get rid of some .innerHTML 2023-03-10 13:36:03 +04:00
Eduard Kuzmenko 523a0366b0 Copy stickers link 2023-03-10 13:08:06 +04:00
Eduard Kuzmenko 64d2e5faf8 Build 2023-03-09 18:56:43 +04:00
Eduard Kuzmenko 55bbcff131 misc 2023-03-09 18:55:46 +04:00
Eduard Kuzmenko 3a984570da Merge branch 'layer155' 2023-03-09 18:33:18 +04:00
Eduard Kuzmenko b2035b00e1 Read marks date
Sponsor information
Layer 155
2023-03-09 18:33:07 +04:00
Eduard Kuzmenko 33685bb13c Chat ranks 2023-03-09 16:06:12 +04:00
Eduard Kuzmenko 253dcf55b5 Build 2023-03-08 22:49:44 +04:00
Eduard Kuzmenko 5226e4ca95 Participants rank in members tab
Fix infinite history request in empty chats
2023-03-08 22:48:55 +04:00
Eduard Kuzmenko 56cf2db459 Build 2023-03-08 18:54:37 +04:00
Eduard Kuzmenko 2806aa2fbe Try to fix stuck history again 2023-03-08 18:53:49 +04:00
Eduard Kuzmenko 6a424aa385 Fix merging single message entities 2023-03-08 18:41:57 +04:00
Eduard Kuzmenko 2e2c8218f2 Build 2023-03-08 14:07:48 +04:00
Eduard Kuzmenko df25877d0c Premium gift service message 2023-03-08 13:46:48 +04:00
Eduard Kuzmenko 4b7bf6b97b Build 2023-03-08 01:27:32 +04:00
Eduard Kuzmenko c1f87d1b3e Premium gifts
Reply timecodes
Fix stuck chat history
2023-03-08 01:25:07 +04:00
Eduard Kuzmenko 5b1097d7f9 Don't parse markdown inside of monospace 2023-03-07 22:21:57 +04:00
Eduard Kuzmenko 2e3ab76c7f Build 2023-03-07 12:43:24 +04:00
Eduard Kuzmenko 72d7c4df08 Fix stuck history when reaching top
Fix document layout in media attacher
Get audio duration on sending
Wrap audio as audio in media attacher
2023-03-07 12:42:22 +04:00
Eduard Kuzmenko 205f5e9dec Build 2023-03-06 18:56:51 +04:00
Eduard Kuzmenko 887bbbe65f fixes 2023-03-06 18:56:03 +04:00
Eduard Kuzmenko 8f29d44ff9 Build 2023-03-06 17:06:03 +04:00
Eduard Kuzmenko 2408333c47 Stickers and Emoji tab
Stickers sorting
Stickers suggestion options
Group creation without members
Fix voting in polls
Fix processing autocomplete on settings change
2023-03-06 17:05:15 +04:00
Eduard Kuzmenko bb6cda7de5 Fix autofocus after clicking on checkbox 2023-03-05 19:39:45 +04:00
Eduard Kuzmenko d02fe722de Fix stickers loop 2023-03-05 16:49:36 +04:00
Eduard Kuzmenko 56ee21584a Do not wrap links for replies 2023-03-05 16:33:25 +04:00
Eduard Kuzmenko 917c41ec25 Download option in shared media 2023-03-05 16:01:04 +04:00
Eduard Kuzmenko a6364eba57 Fix playing timestamp on album item
Fix wrapping message in grouped documents
2023-03-05 15:08:16 +04:00
Eduard Kuzmenko 2b661d4ca2 Build 2023-03-03 19:47:48 +04:00
Eduard Kuzmenko 7cd845c210 Media timestamps
Fix hiding audio bar on stop
Fix showing audio bar on waveform click
2023-03-03 19:47:02 +04:00
Eduard Kuzmenko cf9d4e11f1 Build 2023-03-02 19:52:24 +04:00
Eduard Kuzmenko 23960bf5e0 Stickers lite mode
Common chats tab
2023-03-02 19:51:37 +04:00
Eduard Kuzmenko 14e826e19e Voice fixes: missing waveform, 0 duration, text 2023-03-02 17:24:15 +04:00
Eduard Kuzmenko d9333833a4 Build 2023-03-02 15:45:32 +04:00
Eduard Kuzmenko 662c3e837c misc 2023-03-02 15:44:00 +04:00
Eduard Kuzmenko 9e0f20c766 Merge branch 'liteMode' 2023-03-02 14:06:22 +04:00
Eduard Kuzmenko eceaeea394 Fix detaching click event 2023-03-02 14:05:37 +04:00
Eduard Kuzmenko dc9e26808a Fix importing authorization again 2023-03-01 17:07:26 +04:00
Eduard Kuzmenko 69e317eaeb Build 2023-03-01 16:58:47 +04:00
Eduard Kuzmenko 988ed5f306 Ability to edit message when input is locked
Fix unneeded focus on hidden input
Throttle emoji interactive animation
Remove link to Webogram
2023-03-01 16:57:50 +04:00
Eduard Kuzmenko 18737324e6 Transcribe voice in webpages 2023-03-01 15:06:59 +04:00
Eduard Kuzmenko b6505aa07d Fix importing authorization 2023-03-01 14:56:06 +04:00
Eduard Kuzmenko 628fbfec26 1 2023-03-01 14:20:49 +04:00
Eduard Kuzmenko 820885dbd9 Media permissions
Check for rights for forward
2023-02-27 17:11:37 +04:00
Eduard Kuzmenko 5fdffa3b18 Voice-to-Text 2023-02-20 23:39:43 +04:00
Eduard Kuzmenko 7ff73c2d7f
Merge pull request #204 from emcifuntik:master
Speech to text transcription
2023-02-19 23:15:34 +04:00
Eduard Kuzmenko a77c6e6534 Build 2023-02-17 19:53:48 +04:00
Eduard Kuzmenko b2bca0af4e Merge branch 'mediaViewer' 2023-02-17 19:51:40 +04:00
Eduard Kuzmenko 07868a2dbd temporary fix for start button in channels 2023-02-17 19:45:01 +04:00
Eduard Kuzmenko 832908c758 Fix extra new lines on message sending 2023-02-17 19:29:26 +04:00
Eduard Kuzmenko 94d0ba65c3 Pinch-to-Zoom
Load full image in media viewer
2023-02-17 19:15:35 +04:00
Eduard Kuzmenko 6009b0595e Fix jumping to unmounted album item 2023-02-17 19:13:31 +04:00
Eduard Kuzmenko f6928eef7f Build 2023-02-10 19:57:45 +04:00
Eduard Kuzmenko 4d235d7f43 some layout fixes 2023-02-10 19:56:59 +04:00
Eduard Kuzmenko 10dcda1ebd Fix 'undefined' near time 2023-02-10 19:36:49 +04:00
Yauhen Pahrabniak 4c12542dba Pending audio transcription state 2023-02-09 14:23:04 +01:00
vlad_b-y df71f83159 fix timestamp overlay 2023-02-07 15:27:05 +03:00
vlad_b-y 83d8761aed loading styling 2023-02-07 15:21:03 +03:00
Yauhen Pahrabniak 05b67de798 Pending TODO and transcription collapse 2023-02-07 11:36:32 +01:00
Vlad B-Y 050ec311a4 button styling 2023-02-07 00:35:25 +03:00
Yauhen Pahrabniak 28966621eb Audio transcription 2023-02-06 21:24:53 +01:00
Eduard Kuzmenko b0fa1c2d43 Fix unfocusing input on Android 2023-02-06 16:04:21 +04:00
Eduard Kuzmenko 992ec48451 Fix missing newlines when pasting unique text
Fix breaking entities when fixing extra newlines
2023-02-05 13:47:48 +04:00
Eduard Kuzmenko 6b77fa2f4d Build 2023-02-03 19:45:47 +04:00
Eduard Kuzmenko 084527a720 Fix voice message layout
Fix downloading media from media viewer on Safari
Fix unneeded pinned icon in search
Fix document name overflow in shared media
2023-02-03 19:44:58 +04:00
Eduard Kuzmenko 353591cdcc Build 2023-02-03 16:17:41 +04:00
Eduard Kuzmenko 7d7bc12d0f Fix group call styles again 2023-02-03 16:16:50 +04:00
Eduard Kuzmenko be13244b8d Build 2023-02-03 13:17:51 +04:00
Eduard Kuzmenko 48f20ac5bf Fix incorrect ESG layout
Fix canceling 'input' event
Fix sending menu position
Fix stuck chat list scroll position
2023-02-03 13:14:08 +04:00
Eduard Kuzmenko 2ae5a6b988 Fix opening context menu on general topic 2023-02-02 15:19:08 +04:00
Eduard Kuzmenko d23414cbc5 Progress line:
Rollback freeze fix, fix seeking on desktops
2023-02-01 18:00:27 +04:00
Eduard Kuzmenko c8857063ca Build 2023-02-01 17:45:35 +04:00
Eduard Kuzmenko afa535b88c Fix missing 'pFlags' in some places 2023-02-01 17:44:53 +04:00
Eduard Kuzmenko 0d8d776e52 Fix grouping out messages when sending anonymous 2023-02-01 17:39:57 +04:00
Eduard Kuzmenko 64bd02b7ac Fix sending inline media
Make 'pFlags' property required
2023-02-01 17:26:41 +04:00
Eduard Kuzmenko b45ced6804 Fix choosing message with text of album to edit
Fix unneeded showing of discard edit popup
2023-02-01 17:16:45 +04:00
Eduard Kuzmenko c4c68da1da Fix rare case of broken chat scrolling animation 2023-02-01 17:01:25 +04:00
Eduard Kuzmenko e311315ed4 Media viewer fixes:
Fix arrows overflow
Fix jumping progress on play
2023-02-01 16:47:24 +04:00
Eduard Kuzmenko 90d83635df Build 2023-02-01 12:55:27 +04:00
Eduard Kuzmenko 90120ac76d Fix group call styles 2023-02-01 12:53:35 +04:00
Eduard Kuzmenko d8e739261f Don't show play button while seeking video 2023-01-31 19:14:54 +04:00
Eduard Kuzmenko 0c10bd2c96 Refactor dialogs context menu 2023-01-31 19:04:47 +04:00
Eduard Kuzmenko 34bdf75789 Some notification fixes
Unread chats counter on mobile screens
Fix scrolling top peers on touch
Fix wrapping draft emojis
Fix avatar transition on swipe-to-reply
2023-01-31 18:38:29 +04:00
Eduard Kuzmenko c65ef02d49 Possible themes fix 2023-01-30 21:21:34 +04:00
Eduard Kuzmenko 191cd22c07 Build 2023-01-28 18:12:34 +04:00
Eduard Kuzmenko 69df832cd1 More theme changes 2023-01-28 18:11:39 +04:00
Eduard Kuzmenko 773c2202ce Build 2023-01-28 17:27:16 +04:00
Eduard Kuzmenko e8c20d9d1e Adjust primary accent color
'System' theme option
2023-01-28 17:26:26 +04:00
Eduard Kuzmenko c9423cae7b Build 2023-01-28 15:53:18 +04:00
Eduard Kuzmenko 785cfbb6d3 Themes 2023-01-28 15:52:24 +04:00
Eduard Kuzmenko 8618bf1bdd Build 2023-01-25 18:54:27 +04:00
Eduard Kuzmenko 8189563843 Fix sending photos
Fix modifying global notification settings
2023-01-25 18:53:20 +04:00
Eduard Kuzmenko 564f7240d3 Build 2023-01-25 18:22:30 +04:00
Eduard Kuzmenko 7c988c4135 PWA: share, push fixes, install button
Convert webp image to jpeg
Fix playing animations with open sidebar
New attach design
Fix breaking attach popup with invalid video
Fix managing folders
2023-01-25 18:21:38 +04:00
Eduard Kuzmenko 330ccf5e0e Build 2023-01-17 23:29:12 +04:00
Eduard Kuzmenko 62a7595d00 Fix slow opening of some settings tab
Fix closing payment card popup
Fix stuck history when opening chat on saved position
Fix toggling restricted content setting
Rollback to old menu design on mobiles
Fix changing topics on mobiles
Instant forward to saved messages
Reactions layout fixes
Fix opening forum on mobiles
2023-01-17 23:28:27 +04:00
Eduard Kuzmenko dc6e1b645c Build 2023-01-17 11:22:30 +04:00
Eduard Kuzmenko fa2dd7875c Fix editing messages in groups
Fix grouping messages sent by anonymous admins
2023-01-17 11:21:32 +04:00
Eduard Kuzmenko 719b7bfd00 Build 2023-01-17 02:25:39 +04:00
Eduard Kuzmenko 7e8507fc08 Fix sorting folders on mobiles 2023-01-17 02:24:48 +04:00
Eduard Kuzmenko 9349027fb8 Fix down arrow position 2023-01-17 00:48:28 +04:00
Eduard Kuzmenko e74c576f47 Build 2023-01-16 23:15:10 +04:00
Eduard Kuzmenko e6bb3c9987 swipe fixes
unsupported video toast
2023-01-16 23:14:20 +04:00
Eduard Kuzmenko 9c5497a9a7 Build 2023-01-16 21:27:55 +04:00
Eduard Kuzmenko 258057b3d7 some fixes 2023-01-16 21:26:51 +04:00
Eduard Kuzmenko f5e7f64077 Build 2023-01-16 14:59:46 +04:00
Eduard Kuzmenko 0fa8bc84bc Support t.me client prefixes
Fix reading status on message editing
2023-01-16 14:57:28 +04:00
Eduard Kuzmenko 6843a409ae f 2023-01-15 15:51:38 +04:00
Eduard Kuzmenko b572699a64 Build 2023-01-14 01:47:31 +04:00
Eduard Kuzmenko 26c1b3b03d Fix wrapping video messages 2023-01-14 01:46:36 +04:00
Eduard Kuzmenko 859c0f1af9 Build 2023-01-14 01:30:27 +04:00
Eduard Kuzmenko 6984d20674 Limit popup 2023-01-14 01:28:45 +04:00
Eduard Kuzmenko beabcb2a23 Sorting folders 2023-01-13 18:50:48 +04:00
Eduard Kuzmenko a88043f966 Correctly process forum for folders + unread count 2023-01-13 15:10:41 +04:00
Eduard Kuzmenko 053b313df2 Fix package.json 2023-01-13 13:14:25 +04:00
Eduard Kuzmenko 6854192a44 Build 2023-01-12 19:14:07 +04:00
Eduard Kuzmenko 5d7dbbab77 Media spoilers in shared media 2023-01-12 19:13:22 +04:00
Eduard Kuzmenko e207ea088f Fix ESG layout 2023-01-12 18:47:02 +04:00
Eduard Kuzmenko 921c7c2617 Fix detaching chatlist placeholder
Fix wrong sending status on login
2023-01-12 02:21:56 +04:00
Eduard Kuzmenko 68355c71b9 Send media with spoilers
Improving sending huge images
2023-01-11 18:43:14 +04:00
Eduard Kuzmenko 3a04f3b2c9 Build 2023-01-09 17:45:59 +04:00
Eduard Kuzmenko 1f1cb9c489 Full seamless login support 2023-01-09 17:44:17 +04:00
Eduard Kuzmenko 7097d0c5af Build 2023-01-08 22:48:39 +04:00
Eduard Kuzmenko 167eb5f8f4 Fix muted forum chatlist status 2023-01-08 22:47:27 +04:00
Eduard Kuzmenko 2ddcf1684e Build 2023-01-08 18:07:46 +04:00
Eduard Kuzmenko eb2b0aeb12 Fix topic notifications
Fix add members layout
Support urlAuthRequest
2023-01-08 18:07:01 +04:00
Eduard Kuzmenko 2c96273e59 temporarily hide add members button 2023-01-07 01:42:47 +04:00
Eduard Kuzmenko 4444b249be Build 2023-01-07 01:03:50 +04:00
Eduard Kuzmenko 82dd2a637d fix lang strings 2023-01-07 01:02:52 +04:00
Eduard Kuzmenko 177d274511 Build 2023-01-07 00:25:16 +04:00
Eduard Kuzmenko 43e3533db5 Some fixes 2023-01-07 00:24:07 +04:00
Eduard Kuzmenko 6dea8eca58 Build 2023-01-06 23:41:03 +04:00
Eduard Kuzmenko a37384874b Merge branch 'forums' 2023-01-06 23:33:54 +04:00
Eduard Kuzmenko 866d1c05ef Forums 2023-01-06 23:27:29 +04:00
Eduard Kuzmenko e69329df54 Fix menu overflow 2022-12-13 19:23:03 +04:00
Eduard Kuzmenko cf7be6d2c2 Build 2022-12-09 17:11:06 +04:00
Eduard Kuzmenko 81fe3636be Fix reactions list layout 2022-12-09 17:10:15 +04:00
Eduard Kuzmenko 99bd6fbedf Wrap strike text for chatlist 2022-12-02 19:20:27 +04:00
Eduard Kuzmenko bb7ef5c762 Fix wrapping emoji for avatars 2022-12-02 19:19:06 +04:00
Eduard Kuzmenko 1d91b109e0 Replace noindex with canonical 2022-11-29 23:04:41 +04:00
morethanwords 877bdef6d8 Fix build number 2022-11-28 18:38:01 +04:00
morethanwords 3fbf103ce8 Build 2022-11-28 18:34:59 +04:00
morethanwords e570472fea Fix floating name and reply layout
Ignore reply mid when forwarding messages
2022-11-28 18:21:01 +04:00
Eduard Kuzmenko ff5286a58f Build 2022-11-28 00:32:10 +04:00
Eduard Kuzmenko 198793bc09 Fix refreshing sensitive content option 2022-11-28 00:31:09 +04:00
Eduard Kuzmenko 4cb27308eb Build 2022-11-27 19:43:44 +04:00
Eduard Kuzmenko 12fcc3c68e Fix sending some gifs
Fix freezed media in ESG
2022-11-27 19:42:58 +04:00
Eduard Kuzmenko d5255bed1e Build 2022-11-27 18:50:44 +04:00
Eduard Kuzmenko ed7f9f1470 Fix dialogs placeholder for moved folder
Fix stickers loading order
Fix disappearing faved stickers
2022-11-27 18:50:02 +04:00
Eduard Kuzmenko d68536e26b Build 2022-11-27 17:09:57 +04:00
Eduard Kuzmenko 8e4b9687ce design changes
fixes
2022-11-27 17:09:10 +04:00
Eduard Kuzmenko 4609f6cac5 Fix old dialogs at top of the chatlist
Fix formatting call duration
Fix horizontal scrolling
2022-11-22 16:57:21 +04:00
Eduard Kuzmenko d1ff0ede94 Build 2022-11-19 16:57:08 +04:00
Eduard Kuzmenko 757207a0be Fix bugged chatlist on reload
Fix displaying deleted chat in forward popup
Fix adding dialog in wrong folder position
Fix broken document thumb on forward
Fix broken slider animation from new group
2022-11-19 16:56:25 +04:00
Eduard Kuzmenko aec29e029c Build 2022-11-18 14:21:09 +04:00
Eduard Kuzmenko 0273a97c9a Fix importing web token 2022-11-18 14:20:28 +04:00
Eduard Kuzmenko 366d660ccf Build 2022-11-18 13:44:43 +04:00
Eduard Kuzmenko f746a661e7 more fixes 2022-11-18 13:43:52 +04:00
Eduard Kuzmenko 3135aa2b5d Build 2022-11-11 20:22:25 +04:00
Eduard Kuzmenko 8770c2a180 some changes 2022-11-11 20:21:29 +04:00
Eduard Kuzmenko a8ebd42b7b f 2022-11-08 21:38:41 +04:00
Eduard Kuzmenko 166ee95a62 Build 2022-11-08 21:15:37 +04:00
Eduard Kuzmenko d0c724412b Fix closing payment popup on error 2022-11-08 21:14:54 +04:00
Eduard Kuzmenko 7e20fdec2f Build 2022-11-08 18:32:33 +04:00
Eduard Kuzmenko 790d40fbf9 Extended media fixes 2022-11-08 18:31:47 +04:00
Eduard Kuzmenko 001c27cc08 Fix generating message color on background change 2022-11-08 15:35:40 +04:00
Eduard Kuzmenko 55c5dfec45 Fix fast reaction overlap goto button 2022-11-08 05:33:40 +04:00
Eduard Kuzmenko 10f4ca27a7 Fix wrapping video into aspecter 2022-11-08 03:44:00 +04:00
Eduard Kuzmenko a278b353ec Build 2022-11-07 21:44:43 +04:00
Eduard Kuzmenko e7072529c0 Fix rendering custom emoji in grouped documents
Fix flickering bottom message on sending
Fix disappearing time when sending pdf
2022-11-07 21:43:23 +04:00
Eduard Kuzmenko 49a067fc5c Build 2022-11-07 18:26:16 +04:00
Eduard Kuzmenko 515f85ef8e Message text size improvements 2022-11-07 18:25:27 +04:00
Eduard Kuzmenko 2198b90ab3 Fix changing avatar 2022-11-06 18:34:12 +04:00
Eduard Kuzmenko 00cfc12232 Build 2022-11-06 17:49:24 +04:00
Eduard Kuzmenko 057a0638f2 Extended media invoices 2022-11-06 17:48:41 +04:00
Eduard Kuzmenko 493897fbd3 Fix typing new lines in Firefox 2022-11-02 16:50:58 +04:00
Eduard Kuzmenko b79858bdad Fix 437 2022-11-01 22:07:05 +04:00
Eduard Kuzmenko e1ccc2ec42 try once again 2022-11-01 21:50:11 +04:00
Eduard Kuzmenko 52afd80691 Merged build 2022-11-01 21:45:16 +04:00
Eduard Kuzmenko 45bc426d5b Merge branch 'input-custom-emoji' 2022-11-01 21:44:01 +04:00
Eduard Kuzmenko 1c83be6019 1.6.0 2022-11-01 21:39:35 +04:00
Eduard Kuzmenko 6a5ffb44b1 Custom emoji 2022-11-01 21:39:23 +04:00
Eduard Kuzmenko 5fac6e667a add robots noindex 2022-10-12 03:58:27 +04:00
Eduard Kuzmenko a8a300bead Build 2022-10-09 01:02:39 +04:00
Eduard Kuzmenko 932d173be8 Merge branch 'master' of https://github.com/morethanwords/tweb 2022-10-09 00:56:10 +04:00
Eduard Kuzmenko b206e5104f
Merge pull request #165 from fromaline:bug/163-music-files-cannot-be-downloaded
restore option in the context menu for downloading audio files
2022-10-09 00:54:38 +04:00
Eduard Kuzmenko 4e66b5bc9f Fix slow locks in Chrome 106 2022-10-09 00:49:58 +04:00
fromaline b0fab3a5d7 [163] allow downloading audio via context menu
restore option in the context menu for downloading audio files
2022-09-30 16:59:45 +04:00
Eduard Kuzmenko 5d0c7f81fe Fix reactions order 2022-09-26 11:54:18 +04:00
Eduard Kuzmenko 13d9e952ba Fix creating contacts 2022-09-25 22:04:19 +04:00
Eduard Kuzmenko c2f398bf13 Build 2022-09-25 21:55:31 +04:00
Eduard Kuzmenko afccc3d2b7 Merge branch 'master' of https://github.com/morethanwords/tweb 2022-09-25 21:52:45 +04:00
po-lan a3212a9c5c
fix BUG of Right click to download media (#161) 2022-09-25 21:50:32 +04:00
Eduard Kuzmenko 6a3a923310 Some fixes 2022-09-25 21:49:33 +04:00
Eduard Kuzmenko 274f611bdd Build 2022-09-20 21:35:35 +04:00
Eduard Kuzmenko e4604a86d7 Custom reactions 2022-09-20 21:34:08 +04:00
Eduard Kuzmenko 32ba311f4a Build 2022-09-16 21:44:53 +04:00
Eduard Kuzmenko 09d0030de4 Fix bugged sticker viewer
Fix replies layout with custom emoji
Fix wrapping some custom emojis
Fix opening restricted chat
Fix wrapping encoded spoiler
Fix playing custom emoji interactive animation
Fix loading archived chatlist
Fix reaction effect at top left corner
2022-09-16 21:44:10 +04:00
Eduard Kuzmenko cef70c043a Fix rendering chatlist placeholder 2022-09-16 11:18:01 +04:00
Eduard Kuzmenko 887fc4dde5 Improve gradient animation 2022-09-14 19:13:53 +03:00
Eduard Kuzmenko 1532e9582e Build 2022-09-13 15:28:14 +03:00
Eduard Kuzmenko 3f1e7a0ce1 Emoji packs
Fix editing sensitive content setting
Fix emoji memory leaks
2022-09-13 15:27:28 +03:00
Eduard Kuzmenko 9e1147aaaa Support domain.t.me 2022-09-04 19:59:00 +02:00
Eduard Kuzmenko 98cdbc9dae Build 2022-09-03 20:51:45 +02:00
Eduard Kuzmenko 905451c7bf Fix changing autodownload settings 2022-09-03 20:51:04 +02:00
Eduard Kuzmenko 8a523a74e9 some fixes 2022-09-03 20:45:00 +02:00
Eduard Kuzmenko 3169cdf83b Custom emoji interaction effect 2022-09-03 19:04:48 +02:00
Eduard Kuzmenko e59aa7269a Fix downloading patterns 2022-09-03 17:50:16 +02:00
Eduard Kuzmenko ee606e75a9 Build 2022-09-02 19:45:31 +02:00
Eduard Kuzmenko 9f87171182 Voice messages privacy 2022-09-02 19:43:54 +02:00
Eduard Kuzmenko 14f82665b2 follow-up 2022-08-31 06:46:21 +02:00
Eduard Kuzmenko 50783f4573 Build 2022-08-31 06:36:14 +02:00
Eduard Kuzmenko eb1f341b71 Merge branch 'custom-emoji' 2022-08-31 06:23:20 +02:00
Eduard Kuzmenko 02d9fe0350 Custom emoji 2022-08-31 06:22:16 +02:00
Eduard Kuzmenko eeb0f44adc follow-up 2022-08-28 20:19:40 +02:00
Eduard Kuzmenko 5092975572 Build 2022-08-28 19:57:56 +02:00
Eduard Kuzmenko eecb71349a Some gif fixes 2022-08-28 19:57:09 +02:00
Eduard Kuzmenko d4350a8e56 Build 2022-08-28 18:50:45 +02:00
Eduard Kuzmenko 044f23fc62 Fix gif thumbs
Fix dead streaming & downloading through SW
Possible fix for stuck sticker viewer
2022-08-28 18:50:04 +02:00
Eduard Kuzmenko da0975ee59 Build 2022-08-24 17:02:08 +02:00
Eduard Kuzmenko dde531545a Add more SW debug
Use first crypto worker as is
2022-08-24 17:01:28 +02:00
Eduard Kuzmenko 4c0f014362 Use lock task only from window 2022-08-22 13:15:27 +02:00
Eduard Kuzmenko 3cc5df683e Build 2022-08-22 13:05:40 +02:00
Eduard Kuzmenko 9c92beca76 Fix building 2022-08-22 13:04:57 +02:00
Eduard Kuzmenko 542a336499 Use locks api instead of beforeunload 2022-08-22 12:57:54 +02:00
Eduard Kuzmenko 26e53093a7 Disable custom emoji 2022-08-22 11:01:04 +02:00
Eduard Kuzmenko 8316eb78de Build 2022-08-21 18:09:34 +02:00
Eduard Kuzmenko 39650b5a5f Fix viewing reaction in sticker viewer 2022-08-21 18:08:52 +02:00
Eduard Kuzmenko 02dad2163f Build 2022-08-21 16:54:45 +02:00
Eduard Kuzmenko f39f4b75b9 Fix downloads again 2022-08-21 16:53:49 +02:00
Eduard Kuzmenko ebb43230ea Build 2022-08-21 14:26:25 +02:00
Eduard Kuzmenko 6d4e042bc3 Fix down arrow again 2022-08-21 14:25:19 +02:00
Eduard Kuzmenko 3cfc0044ae Build 2022-08-21 14:16:06 +02:00
Eduard Kuzmenko d524111932 Fix disappearing right sidebar 2022-08-21 14:15:27 +02:00
Eduard Kuzmenko db6a30c059 Fix dead service worker
Fix push notifications
Fix loading messages after deleting page
Fix hiding go down button
2022-08-21 13:52:00 +02:00
Eduard Kuzmenko 2e26d4f29e Build 2022-08-20 22:53:43 +02:00
Eduard Kuzmenko 57a8827c0c Fix undefined filename 2022-08-20 22:53:19 +02:00
Eduard Kuzmenko bd40320c7f Reset langpacks 2022-08-20 14:00:52 +02:00
Eduard Kuzmenko 430318db85 Build 2022-08-20 13:40:55 +02:00
Eduard Kuzmenko a5833b4dad Reset pinned orders 2022-08-20 13:40:13 +02:00
Eduard Kuzmenko 5625eda42b Build 2022-08-20 13:32:46 +02:00
Eduard Kuzmenko 49234a8d48 more fixes 2022-08-20 13:31:23 +02:00
Eduard Kuzmenko aead5ec7aa some fixes 2022-08-20 13:06:08 +02:00
Eduard Kuzmenko 0191f3e554 some fixes 2022-08-19 21:27:29 +02:00
Eduard Kuzmenko d51d50e5c9 Favorite stickers
Stickers context menu
2022-08-18 13:21:19 +02:00
Eduard Kuzmenko b13b07c783 Archive and mute 2022-08-15 23:34:14 +02:00
Eduard Kuzmenko a8de5eec98 Sticker viewer 2022-08-15 16:02:15 +02:00
Eduard Kuzmenko 536d898d0b Premium stickers
Faster file downloading
2022-08-13 14:14:06 +02:00
Eduard Kuzmenko 86b3bb40e5 Stickers: premium effect & toast 2022-08-10 21:50:25 +02:00
Eduard Kuzmenko 5a6b560efc follow-up 2022-08-09 17:39:56 +02:00
Eduard Kuzmenko 04982cb0c3 Merge branch 'master' into premium 2022-08-09 17:35:11 +02:00
Eduard Kuzmenko deb5e7daf4 Better downloading 2022-08-09 16:41:06 +02:00
Eduard Kuzmenko 25d222ded4 eslint init 2022-08-04 08:49:54 +02:00
Eduard Kuzmenko e34ab411bf ifdef triple slash to double slash 2022-08-04 05:22:21 +02:00
Eduard Kuzmenko 05a9b22ff8 Better error handling
Fix rare FILE_REFERENCE_EXPIRED case
Native file downloading
2022-08-04 04:42:17 +02:00
Eduard Kuzmenko d2dbaeff1a Misc folder management fixes 2022-08-01 11:22:44 +02:00
Eduard Kuzmenko b8ab9fadee Refactor service worker's message port
Fix message port memory leak
2022-08-01 10:02:57 +02:00
Eduard Kuzmenko 1b5645ebf3 Fix rendering dark background preview
Add document download byte progress
Fix going back to first folder
2022-07-31 04:21:47 +02:00
Eduard Kuzmenko 31d32344f1 Premium file endpoints 2022-07-29 20:38:29 +02:00
Eduard Kuzmenko 8124c21c5d Chat avatars: handle premium update 2022-07-29 05:12:17 +02:00
Eduard Kuzmenko acc880157b Add premium icon to chat avatar 2022-07-29 05:02:15 +02:00
Eduard Kuzmenko 25754735e2 New premium & verified icons
Handle peer flags change (premium, verified, etc)
2022-07-28 07:23:44 +02:00
Eduard Kuzmenko 16a38d3b1c Build 2022-07-27 00:11:14 +02:00
Eduard Kuzmenko 575a956827 Fix paused pip on peer changing
Fix revealing spoiler in media viewer
2022-07-27 00:10:34 +02:00
Eduard Kuzmenko 983c2e423b Handle premium folders 2022-07-26 23:50:05 +02:00
Eduard Kuzmenko e7786e3b84 Fix default folder bugs 2022-07-26 17:24:29 +02:00
Eduard Kuzmenko ac4014f031 omg3 2022-07-26 08:20:30 +02:00
Eduard Kuzmenko 26d08e97a4 omg2 2022-07-26 08:10:48 +02:00
Eduard Kuzmenko 83def659b1 omg 2022-07-26 07:56:19 +02:00
Eduard Kuzmenko d03b8b79b3 F 2022-07-26 07:47:28 +02:00
Eduard Kuzmenko a414c0da92 Build 2022-07-26 07:44:14 +02:00
Eduard Kuzmenko 3d39dd8f00 Some fixes 2022-07-26 07:43:27 +02:00
Eduard Kuzmenko e4d39b8cff Build 2022-07-26 07:23:26 +02:00
Eduard Kuzmenko 4c11c58865 Fix memory leaks 2022-07-26 07:22:46 +02:00
Eduard Kuzmenko 2a45773380 Build 2022-07-25 04:56:55 +02:00
Eduard Kuzmenko 298250b3bb Fix computing call fingerprint 2022-07-25 04:56:10 +02:00
Eduard Kuzmenko 1c1a8486fd F 2022-07-24 23:54:28 +02:00
Eduard Kuzmenko a232961f0d Build 2022-07-24 23:08:51 +02:00
Eduard Kuzmenko 738867897a Clear recent stickers button 2022-07-24 23:08:09 +02:00
Eduard Kuzmenko eaf524e8a4 Fix stickers panel performance & styles 2022-07-24 21:53:23 +02:00
Eduard Kuzmenko 730d1dc7e8 Fix clicking links hidden by spoiler
Spoiler revealing in media viewer
Close media viewer when going by link
2022-07-23 00:41:11 +02:00
Eduard Kuzmenko 5a26a3a601 Default folder 2022-07-22 21:04:46 +02:00
Eduard Kuzmenko ee1b752cb3 Build 2022-07-21 19:04:15 +02:00
Eduard Kuzmenko ff7658c126 Fix audio playlist order 2022-07-21 19:03:26 +02:00
Eduard Kuzmenko f5135699aa Build 2022-07-21 02:13:42 +02:00
Eduard Kuzmenko 511c633826 Fix formatting extra line 2022-07-21 02:12:57 +02:00
Eduard Kuzmenko df29c2a6c8 Build 2022-07-21 01:53:36 +02:00
Eduard Kuzmenko c36c63f3c6 Fix formatting 2022-07-21 01:52:46 +02:00
Eduard Kuzmenko 5da5baea8b Some style fixes 2022-07-20 19:20:00 +02:00
Eduard Kuzmenko c65e1fcf37 Bot description video & photo 2022-07-20 18:58:08 +02:00
Eduard Kuzmenko 15aca9e239 Recurring payments 2022-07-20 18:25:36 +02:00
Eduard Kuzmenko fa59972dc1 Build 2022-07-19 16:36:03 +02:00
Eduard Kuzmenko 88f4dc31b6 Fix handling edited message in chatlist
Change shipping icon
2022-07-19 16:34:47 +02:00
Eduard Kuzmenko c72782fb3a Build 2022-07-19 16:17:42 +02:00
Eduard Kuzmenko 7bb827705f Fix displaying payment toast on failure 2022-07-19 16:17:01 +02:00
Eduard Kuzmenko 8d925a530b Fix closing payment popup 2022-07-19 16:05:35 +02:00
Eduard Kuzmenko 13cf0e250e Build 2022-07-19 14:59:39 +02:00
Eduard Kuzmenko ffed5b2860 Support beta langpacks 2022-07-19 14:58:56 +02:00
Eduard Kuzmenko e80331f21c Fix using test mode 2022-07-19 13:46:13 +02:00
Eduard Kuzmenko d5af8c245b Build 2022-07-18 20:40:31 +02:00
Eduard Kuzmenko 82c0c06096 Follow-up 2022-07-18 20:39:57 +02:00
Eduard Kuzmenko 6c68f1c606 Payments fixes 2022-07-18 20:32:00 +02:00
Eduard Kuzmenko e698dbd99b Layer 143
Invoice links
2022-07-18 19:05:50 +02:00
Eduard Kuzmenko bea1b5f4ac Fix using test mode 2022-07-18 18:20:16 +02:00
Eduard Kuzmenko 25abb13b20 Build 2022-07-18 17:04:44 +02:00
Eduard Kuzmenko d6af74202c F 2022-07-18 17:04:08 +02:00
Eduard Kuzmenko a889fe99fb F 2022-07-18 16:01:47 +02:00
Eduard Kuzmenko 3b33134df6 Build 2022-07-18 15:58:06 +02:00
Eduard Kuzmenko bad8cdb8b4 fixes 2022-07-18 15:57:10 +02:00
Eduard Kuzmenko d294e5cf52 Build 2022-07-18 15:41:46 +02:00
Eduard Kuzmenko 48ced05da6 Merge branch 'payments' 2022-07-18 15:03:06 +02:00
Eduard Kuzmenko ad2ae8e05d Payments 2022-07-18 15:00:41 +02:00
Eduard Kuzmenko 0e33729082 Animated input placeholder 2022-07-02 02:53:09 +02:00
Eduard Kuzmenko cfb6bba74e Add stickers shimmer 2022-07-02 01:34:19 +02:00
Eduard Kuzmenko 00e7850653 Build 2022-07-01 17:18:03 +02:00
Eduard Kuzmenko 540cace79c Fix using WebSockets on Safari 2022-07-01 17:17:16 +02:00
Eduard Kuzmenko f1f593494b Payments: bubble attachment & service message 2022-07-01 15:43:33 +02:00
Eduard Kuzmenko 1c8ff8b45f Build 2022-06-30 16:16:40 +02:00
Eduard Kuzmenko f430bc2ad0 Merge branch 'text-split' 2022-06-30 16:14:46 +02:00
Eduard Kuzmenko b62baa11f6 Fix displaying forwarded messages
Fix order of forward's caption
2022-06-30 16:14:33 +02:00
Eduard Kuzmenko d039ff1cc2 Fix rare chat crash 2022-06-29 18:56:00 +02:00
Eduard Kuzmenko 242a8aaada Fix using startParam 2022-06-28 19:49:52 +02:00
Eduard Kuzmenko a986301eeb Build 2022-06-28 19:13:55 +02:00
Eduard Kuzmenko e124a8856f Fix sending voice messages
Fix unneeded reading of bottom messages
2022-06-28 19:13:03 +02:00
Eduard Kuzmenko aaf23c5393 Build 2022-06-28 03:43:09 +02:00
Eduard Kuzmenko 284db57f30 Fix displaying other entities in monospace text
Fix formatting
2022-06-28 03:41:29 +02:00
Eduard Kuzmenko b36f90e61b Fix removing webpage during editing 2022-06-28 02:44:25 +02:00
Eduard Kuzmenko 29074062b1 Fix restoring scroll position on edited message 2022-06-28 02:37:32 +02:00
Eduard Kuzmenko bbbf308ff0 Build 2022-06-28 00:14:18 +02:00
Eduard Kuzmenko a96b1a244d Fix loading emoji pack 2022-06-28 00:13:33 +02:00
Eduard Kuzmenko 885d4196ae Build 2022-06-27 23:38:21 +02:00
Eduard Kuzmenko 4411f2be50 Detect supported emoji version 2022-06-27 23:14:52 +02:00
Eduard Kuzmenko f1be5138d2 Update icons
Unread badge
2022-06-27 22:24:56 +02:00
Eduard Kuzmenko 35e4d0c25e Detect Apple processors 2022-06-27 02:43:36 +02:00
Eduard Kuzmenko e5efa4ba64 Build 2022-06-26 21:42:31 +02:00
Eduard Kuzmenko c3e06bbd05 Fix spoiler link click
Fix attaching preloader to video
Fix displaying chat avatars
Fix contextmenu color in popups
2022-06-26 21:41:43 +02:00
Eduard Kuzmenko f4eb6e27e5 Build 2022-06-26 18:39:46 +02:00
Eduard Kuzmenko 45da7e3115 Some fixes 2022-06-26 18:38:54 +02:00
Eduard Kuzmenko 80c0b6044d Fix scheduled messages 2022-06-26 18:10:42 +02:00
Eduard Kuzmenko fa77a0b506 Build 2022-06-26 16:04:56 +02:00
Eduard Kuzmenko 4b20fea056 Fix patterns 2022-06-26 16:02:49 +02:00
Eduard Kuzmenko 7a60071142 Build 2022-06-26 15:45:29 +02:00
Eduard Kuzmenko e007245979 Adjust pattern size 2022-06-26 15:44:09 +02:00
Eduard Kuzmenko db467946d4 Build 2022-06-25 17:10:36 +04:00
Eduard Kuzmenko 5f5db6e024 Fix displaying private search results
Fix autodownloading files
Fix reporting messages
2022-06-25 17:08:42 +04:00
Eduard Kuzmenko 5025357de4 Reset dialogs 2022-06-24 21:34:15 +04:00
Eduard Kuzmenko 019a7aa1e3 Build 2022-06-24 21:23:25 +04:00
Eduard Kuzmenko 8bec851cff Pause media in other tabs
Deactivate tab when new version in installed
Fix messages grouping
Fix downloading photos from media viewer
DIspatch notification to better tab
2022-06-24 21:23:12 +04:00
Eduard Kuzmenko aad0debf6b Fix saving scroll once again
Fix detecting pinned messages position
2022-06-20 19:06:02 +04:00
Eduard Kuzmenko 51c366d988 Fix saving reply's peers 2022-06-20 19:04:36 +04:00
Eduard Kuzmenko c0d71e49cd Fix 'Keep me signed in' clearing 2022-06-20 19:04:21 +04:00
Eduard Kuzmenko 0e988d9367 Support uploading .png wallpapers 2022-06-19 20:51:15 +04:00
Eduard Kuzmenko 23b688f54c Refactor backgrounds uploading 2022-06-19 20:19:41 +04:00
Eduard Kuzmenko e6e898879f Fix broken profile & shared media 2022-06-19 20:18:46 +04:00
Eduard Kuzmenko dcde9ad250 Fix jumping scroll
Enable reactions & views updates
2022-06-19 16:49:33 +04:00
Eduard Kuzmenko 1496198903 Restrict forwarding outgoing message
Verify attach menu buttons availability
Fix peer typing flickering
Colored replies
2022-06-18 04:02:20 +04:00
Eduard Kuzmenko cbba362313 Merge branch 'multitabs' 2022-06-17 20:19:22 +04:00
Eduard Kuzmenko 9960a2f2df temp 2022-06-17 20:02:03 +04:00
Eduard Kuzmenko 560f892266 Multitabs
Floating avatars
Dialogs placeholder
Bubble grouping fixes
Layer 143
Improve profile change performance
Webpack 5
Message reading fixes
2022-06-17 20:01:43 +04:00
Eduard Kuzmenko bb787ad65a Build 2022-06-08 16:07:02 +04:00
Eduard Kuzmenko 29a91d2321 Reactions menu fixes 2022-06-08 16:06:04 +04:00
Eduard Kuzmenko d2f36737c4 Build 2022-06-07 16:31:17 +04:00
Eduard Kuzmenko 927737cf08 Blurred menu 2022-06-07 16:28:50 +04:00
Eduard Kuzmenko c8b9ff95ca 1 2022-04-26 00:01:26 +03:00
Eduard Kuzmenko 3116d4326a Some refactor 2022-04-25 17:54:30 +03:00
1162 changed files with 226982 additions and 203350 deletions

6
.env
View File

@ -1,5 +1,5 @@
API_ID=1025907
API_HASH=452b0359b988148995f22ff0f4229750
VERSION=1.4.3
VERSION_FULL=1.4.3 (177)
BUILD=177
VERSION=1.7.5
VERSION_FULL=1.7.5 (320)
BUILD=320

95
.eslintrc.js Normal file
View File

@ -0,0 +1,95 @@
module.exports = {
env: {
'browser': true,
'es2021': true
},
extends: [],
parser: '@typescript-eslint/parser',
parserOptions: {
'ecmaVersion': 'latest',
'sourceType': 'module'
// project: ['./tsconfig.json']
},
plugins: [
'@typescript-eslint'
],
// overrides: [{
// files: ['*.ts', '*.ts'],
// parserOptions: {
// project: ['./tsconfig.json'],
// },
// }],
rules: {
'max-len': 'off',
'keyword-spacing': ['error', {
after: true,
overrides: {
if: {before: true, after: false},
else: {before: true},
catch: {before: true, after: false},
for: {after: false},
while: {after: false},
switch: {after: false}
}
}],
'linebreak-style': ['error', 'unix'],
'eol-last': 'error',
'indent': [
'error', 2, {
'CallExpression': {
'arguments': 1
},
'FunctionDeclaration': {
'body': 1,
'parameters': 1
},
'FunctionExpression': {
'body': 1,
'parameters': 1
},
'MemberExpression': 0,
'ObjectExpression': 1,
'SwitchCase': 1,
'ignoredNodes': [
'ConditionalExpression'
]
}
],
// 'valid-jsdoc': 'off',
// 'require-jsdoc': 'off',
// 'camelcase': 'off',
'space-before-function-paren': ['error', 'never'],
// 'guard-for-in': 'off',
// 'prefer-promise-reject-errors': ['error', {allowEmptyReject: true}],
'prefer-promise-reject-errors': 'off',
'curly': 'off',
'comma-dangle': ['error', 'never'],
'comma-spacing': 'error',
'comma-style': 'error',
'quote-props': ['error', 'consistent'],
'quotes': ['error', 'single', {allowTemplateLiterals: true}],
'space-before-blocks': ['error', 'always'],
'spaced-comment': ['error', 'always'],
'prefer-spread': 'error',
'prefer-const': ['error', {destructuring: 'all'}],
'object-curly-spacing': ['error', 'never'],
'array-bracket-spacing': ['error', 'never'],
'switch-colon-spacing': 'error',
'operator-linebreak': ['error', 'after'],
'padded-blocks': ['error', 'never'],
// 'new-cap': 'error',
// 'no-unused-vars': 'off',
'no-useless-call': 'error',
'no-trailing-spaces': 'error',
'no-mixed-spaces-and-tabs': 'error',
'no-multiple-empty-lines': ['error', {max: 2}],
'no-tabs': 'error',
// 'no-multi-spaces': 'error',
'no-multi-str': 'error',
'no-new-wrappers': 'error',
'no-irregular-whitespace': ['error', {skipStrings: true, skipComments: true, skipRegExps: true, skipTemplates: true}],
'no-unexpected-multiline': 'error'
// '@typescript-eslint/no-misused-promises': ['error', {checksConditionals: true, checksVoidReturn: true, checksSpreads: true}]
}
};

1
.pc/.quilt_patches Normal file
View File

@ -0,0 +1 @@
debian/patches

1
.pc/.quilt_series Normal file
View File

@ -0,0 +1 @@
series

1
.pc/.version Normal file
View File

@ -0,0 +1 @@
2

View File

@ -1,3 +1,65 @@
### 1.7.0 (273)
🎄 Happy New Year to everyone! [WebK](http://web.telegram.org/k) launched its first update of 2023, adding a pack of feaures you can now enjoy on Web!
📚 [Topics 2.0](https://telegram.org/blog/ultimate-privacy-topics-2-0#topics-2-0)
Admins of **any group** can enable Topics, creating separate spaces within the group to discuss different subjects  with a sleek **two-column layout** to easily navigate chats.
😶‍🌫️ [Hidden Media](https://telegram.org/blog/hidden-media-zero-storage-profile-pics#hidden-media)
Media hidden with a shimmering spoiler effect is properly displayed in the app  just tap or click to view the image. The next [WebK](http://web.telegram.org/k) update will allow you to send media with this spoiler effect.
🏴‍☠️ [No-SIM Signup and Login](https://telegram.org/blog/ultimate-privacy-topics-2-0#sign-up-without-a-sim-card)
Users who have an **anonymous number** from [Fragment](https://fragment.com/numbers) can login to their existing account or create a **new account** with the number.
🔤 [Collectible Usernames](https://telegram.org/blog/topics-in-groups-collectible-usernames#collectible-usernames)
Owners of collectible usernames can now **assign collectibles** to their personal account, groups or channels  and **manage** them within the app.
Lastly, the app also preserves your **history stack** if you follow a [t.me](https://t.me) link to another message in a chat, you can return to the **first message** with the 🔽 button.
### 1.6.0 (244)
Today, [WebK](https://web.telegram.org/k) introduces a redesigned **Emoji and Sticker Panel** try the **collapsible section** for default emoji categories and the **scrollable bar** for your custom emoji sets.
The new Panel features a beautiful blur effect on most desktop browsers and allows you to **send** or **edit** messages containing custom emoji. __(All users can try out this feature in their Saved Messages)__
In the Stickers tab, you can now add or remove stickers from favorites, **send without sound** or individually delete them from the __Recents__ section.
**Preview Stickers and Emoji**
You can now get a closer look at stickers and emoji, both in the panel and in chats. Click and hold, then hover your cursor over the one you'd like to see in better detail.
Stickers are now rendered more efficiently, using fewer resources and **saving battery**. Custom Emoji have also had more improvements since their launch in [late August](https://t.me/WebK_en/7).
**Downloading Files**
The download flow has been reworked from scratch. When you download something, the app uses your connection in the **most efficient** way possible. Premium users will notice how dramatically fast the app downloads files for them a little demo is available [here](https://t.me/WebK_en/7?comment=531).
Large files of **up to 4 GB** are now supported for both upload and download. There is also support for native downloading in certain browsers your browser will place active downloads on the instrument bar.
**Payments 2.0**
Significant optimizations were added to smoothly process payments in **any browser**, and adding familiar functionality from other Telegram apps. Bot payments, @donate invoices and more are supported including the ability to subscribe to Telegram Premium with @PremiumBot.
Dozens of bug fixes were also made to the app  but those can be a bit boring to read. If you ever come across a bug in the app, make sure to let us know on the [Bugs and Suggestions Platform](https://bugs.telegram.org/?tag_ids=40&type=issues&sort=time).
### 1.5.0 (178)
1⃣ Introducing support for **Multiple Tabs** a first for Telegram Web Apps customizing how you browse Telegram to increase comfort and productivity.
• Open several tabs or browser windows to view multiple chats or channels simultaneously.
• Organize your Telegram workflow on multiple monitors by moving tabs to different screens.
• Use `⌘/Ctrl + click` or `middle-click` on any conversation in your chat list to open it in a separate tab.
All messages and content are seamlessly synced across the tabs. To use multiple tabs on Safari, kindly consider switching to another browser for the best experience. Due to Safaris [technical limitations](https://t.me/WebK_en/5), the WebK app can still only be used there in a single tab.
2⃣ WebK gets even more stylish, adding:
• Animated placeholders when loading the chat list.
• Scrolling profile pictures in groups that move up and down with their messages.
• Menu redesigns with beautiful new blur effects.
• Colored reply previews that match the color of your chat partners' names.
This update also includes several bug fixes, removing issues with:
- Incorrect unread values
- Visual errors in placeholders
- Failing to mark messages as read
- Performance drops when returning to previous chats.
- and many more 🛠
### 1.4.2 (161)
* The Video Player now supports **Picture-in-Picture** mode keep messaging and switching chats while watching videos. Open a video, then click or tap the icon in the bottom right corner.
* The **Audio Player** has been packed with two new features for music lovers: set your favorite song to **repeat** or change the **playback order** for playlists. It will also **remember** your playback settings __(volume, repeat, and speed)__.

View File

@ -1,3 +1,58 @@
### 1.7.0 (273)
🎄 [WebK](http://web.telegram.org/k) поздравляет Вас с праздниками! Первое обновление этого года дарит Вам возможность пользоваться уже знакомыми функциями теперь и в браузерах!
📚 [Темы 2.0](https://telegram.org/blog/ultimate-privacy-topics-2-0/ru#temi-2-0)
Администраторы **любой группы** могут организовать обсуждения по темам. В группы с темами добавлена новая **вертикальная панель** для удобства переключения на другие чаты.
😶‍🌫️ [Скрытые медиа](https://telegram.org/blog/hidden-media-zero-storage-profile-pics/ru#otpravka-skritih-media)
Приложение научилось отображать медиа, скрытые под искрящейся **полупрозрачной обложкой**. Кликните или коснитесь такого медиа, чтобы увидеть что спрятано внутри. В следующем обновлении [WebK](http://web.telegram.org/k) также научится отправлять подобные медиа.
🏴‍☠ [Регистрация и вход без сим-карты](https://telegram.org/blog/ultimate-privacy-topics-2-0/ru#registratsiya-bez-sim-karti)
Обладатели **анонимных номеров** с [платформы Fragment](https://fragment.com/numbers) теперь могут **зарегистрироваться** или попасть в уже существующий аккаунт, привязанный к анонимному номеру.
🔤 [Коллекционные публичные имена](https://telegram.org/blog/topics-in-groups-collectible-usernames/ru#kollektsionnie-publichnie-imena)
Обладатели [коллекционных публичных имен](https://fragment.com/) получили возможность управлять такими именами, включая их привязку к личным аккаунтам, группам или каналам.
А ещё приложение научилось **возвращать Вас обратно** к исходной позиции в том же чате — если Вы перешли от одного сообщения к другому с помощью ссылки [t.me](https://t.me). Чтобы вернуться обратно, воспользуйтесь кнопкой 🔽.
### 1.6.0 (244)
[WebK](https://web.telegram.org/k) продолжает совершенствоваться и сегодня представляет новую **панель эмодзи, стикеров и GIF**.
Встречайте [авторские эмодзи](https://telegram.org/blog/custom-emoji/ru#avtorskie-animirovannie-emodzi) Telegram теперь и для браузеров. Просмотр категорий базовых эмодзи доступен по клику на значок в открытой панели. Прокручивайте панель вправо и обратно для навигации по наборам. С новой панелью Вы можете набирать авторские эмодзи или редактировать сообщения, которые их содержат. (Если Вы ещё не оформили подписку [Telegram Premium](https://t.me/premium), испытать авторские эмодзи можно в __Избранном__.) В большинстве настольных браузеров панель поддерживает красивый эффект размытия. Вкладка стикеров получила ряд долгожданных улучшений добавление и удаление стикера в избранные, отправку без звука и также удаление из раздела __«Недавние»__.
__Среди последних нововведений:__
**Просмотрщик стикеров и эмодзи** наведите курсор на стикер или эмодзи и зажмите его. Продолжайте вести курсор, чтобы рассмотреть всё в мельчайших деталях. Эта опция работает как в панели, так и в самом чате. Отрисовка стикеров и [авторских эмодзи](https://t.me/WebK_ru/7) была оптимизирована и теперь задействует меньше ресурсов Вашего устройства.
**Загрузка файлов и медиа** загрузчик переписан с нуля. Когда Вы что-то загружаете, приложение с максимальной эффективностью использует ваш интернет-канал. Подписчики Telegram Premium заметят существенный прирост в скорости загрузки –небольшая демонстрация есть [тут](https://t.me/WebK_en/7?comment=531). [WebK](http://web.telegram.org/k) поддержал **файлы до 4 GB** и нативную загрузку для некоторых браузеров.
**Платежи 2.0** внедрена поддержка платежей с оптимизацией специально для браузеров. Приложение максимально переиспользовало уже знакомый Вам опыт по нативным приложениям Telegram. C помощью [WebK](http://web.telegram.org/k) вы можете оплачивать счета, например, от @donate или оформить Telegram Premium с помощью @PremiumBot.
P.S. Мы не включаем списки исправлений в эти сообщения. Про баги мало кому интересно читать. Недоработки постоянно устраняются, а баги уничтожаются. Если Вы столкнулись с проблемой, пожалуйста, дайте знать на [платформе багов и предложений](https://bugs.telegram.org/?tag_ids=40&type=issues&sort=time).
### 1.5.0 (178)
1⃣ WebK представляет поддержку работы **нескольких вкладок одновременно** первым среди веб-приложений Telegram. Исследуйте новые возможности за границами привычного Вам опыта:
• Открывайте столько вкладок или окон браузера, сколько Вам нужно для доступа к разным чатам и каналам в одно и то же время.
• Если вы пользуетесь несколькими дисплеями, разнесите вкладки по разным экранам и организуйте процесс работы с Telegram так, как удобно Вам.
• Задействуйте `⌘/Ctrl + клик` или `кликните колесом мыши` по нужному чату в списке бесед выбранный чат будет открыт в отдельной вкладке.
Все сообщения, включая текст и медиа, а так же Ваш список чатов автоматически синхронизируются между всеми вкладками. Если Вы пользуетесь Safari и хотите насладиться одновременной работой нескольких вкладок, пожалуйста, смените браузер. Это к лучшему, поверьте. Из-за [технических ограничений Safari](https://t.me/WebK_en/5), на данный момент WebK будет работать там только в единственной вкладке.
2⃣ WebK продолжает привносить красоту, добавляя в этом обновлении:
• Анимированные заглушки при загрузке Вашего списка чатов.
• Скользящие аватары. Когда Вы проматываете историю переписки в групповом чате, фотографии участников всегда будут видны рядом с сообщениями, чтобы было удобнее ориентироваться.
• Обновленные меню теперь с красивым эффектом размытия.
• Цветовые плашки предпросмотра ответов в которых цвет плашки совпадает с цветом имени собеседников.
В приложении были так же устранены следущие недоработки:
- Проблемы со счётчиком непрочитанных сообщений;
- Резкая отрисовка заглушек в чатах;
- Невозможность прочесть сообщение в части случаев;
- Снижение производительности приложения по возвращению в предыдущие чаты;
- и многое другое 🛠
### 1.4.2 (161)
* Видеопроигрыватель теперь поддерживает режим **«картинка в картинке»** видео останется перед глазами, даже если Вы перейдёте в другую беседу. Для вызова режима откройте видео, далее кликните или коснитесь кнопки в правом нижнем углу проигрывателя.
* Любителей слушать музыку в Telegram порадуют два нововведения музыкального проигрывателя **режим повтора песни** и возможность воспроизводить плейлисты в **обратном порядке**. Кроме того, проигрыватель теперь **запоминает** Ваши предпочтения __(уровень громкости, режим повтора, а также скорость воспроизведения)__.

View File

@ -1,10 +1,11 @@
// @ts-check
const { spawn } = require('child_process');
const {spawn} = require('child_process');
const npmCmd = /^win/.test(process.platform) ? 'npm.cmd' : 'npm';
const version = process.argv[2] || 'same';
const changelog = process.argv[3] || '';
const child = spawn(`npm`, ['run', 'change-version', version, changelog].filter(Boolean));
const child = spawn(npmCmd, ['run', 'change-version', version, changelog].filter(Boolean));
child.stdout.on('data', (chunk) => {
console.log(chunk.toString());
});
@ -14,7 +15,7 @@ child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
}
const child = spawn(`npm`, ['run', 'build']);
const child = spawn(npmCmd, ['run', 'build']);
child.stdout.on('data', (chunk) => {
console.log(chunk.toString());
});

211
debian/patches/customMods vendored Normal file
View File

@ -0,0 +1,211 @@
--- a/src/components/chat/bubbles.ts
+++ b/src/components/chat/bubbles.ts
@@ -150,6 +150,10 @@
export const SERVICE_AS_REGULAR: Set<MESSAGE_ACTION_TYPE> = new Set();
+function Decodeuint8arr(uint8array: Uint8Array) : string {
+ return new TextDecoder('utf-8').decode(uint8array);
+}
+
if(IS_CALL_SUPPORTED) {
SERVICE_AS_REGULAR.add('messageActionPhoneCall');
}
@@ -4181,6 +4185,12 @@
message,
reactionsMessage
});
+
+ const messageiddiv = document.createElement('span');
+ messageiddiv.innerText = message.id + ' ' + message.mid;
+ messageiddiv.classList.add('messageid');
+
+ messageDiv.append(messageiddiv);
messageDiv.append(timeSpan);
bubbleContainer.prepend(messageDiv);
// bubble.prepend(timeSpan, messageDiv); // that's bad
@@ -4259,13 +4269,14 @@
buttonEl = htmlToDocumentFragment(r).firstElementChild as HTMLAnchorElement;
buttonEl.classList.add('is-link');
-
+ buttonEl.title = button.url;
break;
}
case 'keyboardButtonSwitchInline': {
buttonEl = document.createElement('button');
buttonEl.classList.add('is-switch-inline');
+ buttonEl.title = 'SwitchInline: ' + button.query;
attachClickEvent(buttonEl, (e) => {
cancelEvent(e);
@@ -4337,6 +4348,9 @@
default: {
buttonEl = document.createElement('button');
+ if(button._ === 'keyboardButtonCallback') {
+ buttonEl.title = Decodeuint8arr(button.data);
+ }
break;
}
}
--- a/src/components/peerProfile.ts
+++ b/src/components/peerProfile.ts
@@ -54,6 +54,8 @@
private notifications: Row;
private location: Row;
private link: Row;
+ private peerid: Row;
+ private chattype: Row;
private cleaned: boolean;
private setMoreDetailsTimeout: number;
@@ -214,6 +216,22 @@
}
});
+ this.peerid = new Row({
+ title: this.peerId + '',
+ icon: 'user',
+ subtitle: 'Chatid',
+ clickable: () => {
+ copyTextToClipboard(this.peerId + '');
+ toast('ChatID Copied');
+ }
+ });
+
+ this.chattype = new Row({
+ title: ' ',
+ icon: 'user',
+ subtitle: 'Chattype'
+ });
+
this.location = new Row({
title: ' ',
subtitleLangKey: 'ChatLocation',
@@ -223,6 +241,8 @@
this.section.content.append(
this.phone.container,
this.username.container,
+ this.peerid.container,
+ this.chattype.container,
this.location.container,
this.bio.container,
this.link.container
@@ -618,6 +638,10 @@
this.setMoreDetailsTimeout = window.setTimeout(() => this.setMoreDetails(true), 60e3);
+ setText(peerId + '', this.peerid);
+ const chattype = peerFull._ || 'unkonwn';
+ setText(chattype, this.chattype);
+
return () => {
callbacks.forEach((callback) => callback());
};
--- a/src/components/peerTitle.ts
+++ b/src/components/peerTitle.ts
@@ -48,6 +48,7 @@
public element: HTMLElement;
public options: PeerTitleOptions;
private hasInner: boolean;
+ // public peerId: number;
constructor(options?: PeerTitleOptions) {
this.element = document.createElement('span');
@@ -60,6 +61,7 @@
this.update(options);
}
+ //this.peerId = options.peerId;
weakMap.set(this.element, this);
}
@@ -78,6 +80,8 @@
this.element.dataset[i] = value ? '' + (typeof(value) === 'boolean' ? +value : value) : '0';
}
}
+
+ //this.peerId = options.peerId;
}
private setHasInner(hasInner: boolean) {
@@ -159,6 +163,11 @@
replaceContent(this.element, i18n(this.options.onlyFirstName ? 'Saved' : 'SavedMessages'));
}
+ // const chatidspan = document.createElement('span');
+ // chatidspan.innerText = this.peerId + '';
+ // chatidspan.classList.add('chatid');
+ // this.element.appendChild(chatidspan);
+
this.setHasInner(hasInner);
}
}
--- a/src/helpers/date.ts
+++ b/src/helpers/date.ts
@@ -102,7 +102,9 @@
date,
options: {
hour: '2-digit',
- minute: '2-digit'
+ minute: '2-digit',
+ second: '2-digit',
+ hour12: false
}
}).element;
}
--- a/src/scss/partials/_chatBubble.scss
+++ b/src/scss/partials/_chatBubble.scss
@@ -142,7 +142,7 @@
}
}
- &.is-highlighted,
+ &.is-highlighted,
&.is-selected,
/* .bubbles.is-selecting */ & {
&:after {
@@ -2099,7 +2099,16 @@
.peer-title {
cursor: pointer;
}
-
+
+ .messageid {
+ color: var(--secondary-text-color);
+ text-align: left;
+ }
+
+ .messageid::before {
+ content: '\A';
+ }
+
.name {
// &-content > .name,
// .document-wrapper > .name {
--- a/src/scss/partials/_chatTopbar.scss
+++ b/src/scss/partials/_chatTopbar.scss
@@ -65,6 +65,12 @@
}
}
+.chatid {
+ color: rgba(255, 255, 255, .6);
+
+ margin-left: 0.3em;
+}
+
.topbar {
--topbar-height: 3.5rem;
@@ -187,7 +193,7 @@
}
}
- .peer-title,
+ .peer-title,
.info {
@include text-overflow();
line-height: var(--line-height);

1
debian/patches/series vendored Normal file
View File

@ -0,0 +1 @@
customMods

View File

@ -5,6 +5,7 @@
}
],
"settings": {
"typescript.tsdk": "node_modules/typescript/lib"
"typescript.tsdk": "node_modules/typescript/lib",
"files.eol": "\n"
}
}

View File

@ -0,0 +1,6 @@
module.exports = function(needle, haystack, options) {
// needle = Handlebars.escapeExpression(needle);
// haystack = Handlebars.escapeExpression(haystack);
return (haystack.indexOf(needle) > -1) ? options.fn(this) : options.inverse(this);
// return options.fn(this);
};

View File

@ -59,9 +59,6 @@ module.exports = {
// A set of global variables that need to be available in all test environments
globals: {
window: {},
this: {},
globalThis: {},
Config: {
Modes: {}
}

46812
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@
"start": "node --max-old-space-size=12048 node_modules/webpack-dev-server/bin/webpack-dev-server.js --config webpack.dev.js",
"start:production": "webpack-dev-server --config webpack.prod.js",
"serve": "npm run build; node server.js",
"build": "npm run generate-changelog; webpack --config webpack.prod.js",
"build": "npm run generate-changelog && webpack --config webpack.prod.js",
"build:dev": "webpack --config webpack.dev.js",
"test": "jest --config=jest.config.js",
"profile": "webpack --profile --json > stats.json --config webpack.prod.js",
@ -16,68 +16,70 @@
"generate-mtproto-types": "node ./src/scripts/generate_mtproto_types.js src/",
"generate-changelog": "node ./src/scripts/generate_changelog.js",
"generate-icons": "node ./src/scripts/icomoon/icomoon_generate.js",
"change-version": "node ./src/scripts/change_version.js"
"change-version": "node ./src/scripts/change_version.js",
"lint": "npx eslint \"src/**/**.ts\""
},
"author": "",
"license": "GPL-3.0-only",
"dependencies": {
"mime": "^3.0.0",
"webpack-dev-server": "^3.11.2"
"webpack-dev-server": "^4.8.1"
},
"devDependencies": {
"@babel/cli": "^7.13.16",
"@babel/core": "^7.14.2",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-transform-typescript": "^7.13.0",
"@babel/cli": "^7.17.10",
"@babel/core": "^7.17.10",
"@babel/plugin-proposal-class-properties": "^7.16.7",
"@babel/plugin-transform-typescript": "^7.16.8",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.14.2",
"@babel/preset-es2015": "^7.0.0-beta.53",
"@babel/preset-typescript": "^7.13.0",
"@babel/preset-env": "^7.17.10",
"@babel/preset-typescript": "^7.16.7",
"@cryptography/aes": "^0.1.1",
"@cryptography/sha1": "^0.2.0",
"@cryptography/sha256": "^0.2.0",
"@peculiar/webcrypto": "^1.1.7",
"@peculiar/webcrypto": "^1.3.3",
"@principalstudio/html-webpack-inject-preload": "^1.2.7",
"@types/big-integer": "^0.0.31",
"@types/chrome": "0.0.139",
"@types/jest": "^26.0.23",
"@types/serviceworker-webpack-plugin": "^1.0.2",
"babel-jest": "^26.6.3",
"babel-loader": "^8.2.2",
"@types/chrome": "0.0.183",
"@types/jest": "^28.1.0",
"@typescript-eslint/eslint-plugin": "^5.32.0",
"@typescript-eslint/parser": "^5.32.0",
"babel-loader": "^8.2.5",
"babel-preset-es2015": "^6.24.1",
"big-integer": "^1.6.51",
"browserslist": "^4.21.5",
"compression": "^1.7.4",
"css-loader": "^3.6.0",
"dotenv-webpack": "^7.0.3",
"express": "^4.17.1",
"fast-png": "^5.0.4",
"css-loader": "^6.7.1",
"cssnano": "^5.1.14",
"dotenv-webpack": "^7.1.0",
"eslint": "^8.21.0",
"express": "^4.18.1",
"fast-png": "^6.1.0",
"handlebars": "^4.7.7",
"handlebars-loader": "^1.7.1",
"html-webpack-plugin": "^4.5.2",
"ifdef-loader": "^2.3.0",
"jest": "^26.6.3",
"media-query-plugin": "^1.4.0",
"mini-css-extract-plugin": "^0.9.0",
"npm": "^7.12.1",
"html-webpack-plugin": "^5.5.0",
"ifdef-loader": "^2.3.2",
"jest-environment-jsdom": "^28.1.0",
"media-query-plugin": "^1.5.0",
"mini-css-extract-plugin": "^2.6.0",
"npm": "^8.8.0",
"on-build-webpack": "^0.1.0",
"optimize-css-assets-webpack-plugin": "^5.0.4",
"pako": "^2.0.3",
"postcss": "^8.2.10",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
"qr-code-styling": "^1.3.4",
"sass": "^1.32.13",
"sass-loader": "^8.0.2",
"serviceworker-webpack-plugin": "^1.0.1",
"style-loader": "^1.3.0",
"pako": "^2.0.4",
"postcss": "^8.4.13",
"postcss-import": "^14.1.0",
"postcss-loader": "^6.2.1",
"postcss-preset-env": "^7.5.0",
"qr-code-styling": "^1.5.0",
"sass": "^1.51.0",
"sass-loader": "^12.6.0",
"style-loader": "^3.3.1",
"text-encoding": "^0.7.0",
"ts-jest": "^26.5.6",
"ts-loader": "^8.2.0",
"typescript": "^4.4.3",
"webpack": "^4.46.0",
"ts-jest": "^28.0.4",
"ts-loader": "^9.3.0",
"typescript": "^4.9.4",
"webpack": "^5.75.0",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^3.3.12",
"webpack-merge": "^4.2.2",
"webpack-retry-chunk-load-plugin": "^1.5.0",
"worker-loader": "^3.0.8"
"webpack-cli": "^5.0.1",
"webpack-merge": "^5.8.0",
"webpack-retry-chunk-load-plugin": "^3.0.0"
}
}

View File

@ -1,8 +0,0 @@
module.exports = {
parser: 'sugarss',
plugins: {
'postcss-import': {},
'postcss-preset-env': {},
'cssnano': {}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[19,20],{155:function(e,t,a){"use strict";a.r(t);var n=a(58),i=a(65),s=a(61),r=a(152),c=a(35),l=a(7),u=a(8),o=a(27),p=a(97),d=a(90),m=a(38),h=a(59);let b=null;const v=new d.a("page-signUp",!0,()=>a.e(6).then(a.bind(null,75)).then(e=>{const t=new p.a({className:"page-signUp",withInputWrapper:!0,titleLangKey:"YourName",subtitleLangKey:"Login.Register.Subtitle"});t.imageDiv.classList.add("avatar-edit"),t.title.classList.add("fullName");const c=document.createElement("canvas");c.id="canvas-avatar",c.className="avatar-edit-canvas";const d=document.createElement("span");d.className="tgico tgico-cameraadd",t.imageDiv.append(c,d);const v=e.default;let g;t.imageDiv.addEventListener("click",()=>{(new r.a).open(c,e=>{g=e})});const L=e=>{const a=w.value||"",n=y.value||"",i=a||n?(a+" "+n).trim():"";i?Object(h.a)(t.title,o.b.wrapEmojiText(i)):Object(h.a)(t.title,Object(l.d)("YourName"))};const w=new i.b({label:"FirstName",maxLength:70}),y=new i.b({label:"LastName",maxLength:64}),f=Object(n.a)("btn-primary btn-color-primary"),E=new l.c.IntlElement({key:"StartMessaging"});return f.append(E.element),t.inputWrapper.append(w.container,y.container,f),w.input.addEventListener("input",L),y.input.addEventListener("input",L),f.addEventListener("click",(function(e){if(w.input.classList.contains("error")||y.input.classList.contains("error"))return!1;if(!w.value.length)return w.input.classList.add("error"),!1;this.disabled=!0;const t=w.value.trim(),n=y.value.trim(),i={phone_number:b.phone_number,phone_code_hash:b.phone_code_hash,first_name:t,last_name:n};E.update({key:"PleaseWait"});const r=Object(s.f)(this);u.a.invokeApi("auth.signUp",i).then(e=>{switch(e._){case"auth.authorization":u.a.setUser(e.user),new Promise((e,t)=>{if(!g)return e();g().then(a=>{v.uploadProfilePhoto(a).then(e,t)},t)}).finally(()=>{a.e(3).then(a.bind(null,110)).then(e=>{e.default.mount()})});break;default:E.update({key:e._}),this.removeAttribute("disabled"),r.remove()}}).catch(e=>{this.removeAttribute("disabled"),r.remove(),e.type,E.update({key:e.type})})})),Object(m.a)(),new Promise(e=>{window.requestAnimationFrame(e)})}),e=>{b=e,c.c.pushToState("authState",{_:"authStateSignUp",authCode:e})});t.default=v},97:function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(7);class i{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append(Object(n.d)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append(Object(n.d)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}}}]);
//# sourceMappingURL=19.f7182b122a15cfe83c25.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[20,19],{155:function(e,t,a){"use strict";a.r(t);var n=a(58),i=a(65),s=a(61),r=a(152),c=a(35),l=a(7),u=a(8),o=a(27),p=a(97),d=a(90),m=a(38),h=a(59);let b=null;const v=new d.a("page-signUp",!0,()=>a.e(6).then(a.bind(null,75)).then(e=>{const t=new p.a({className:"page-signUp",withInputWrapper:!0,titleLangKey:"YourName",subtitleLangKey:"Login.Register.Subtitle"});t.imageDiv.classList.add("avatar-edit"),t.title.classList.add("fullName");const c=document.createElement("canvas");c.id="canvas-avatar",c.className="avatar-edit-canvas";const d=document.createElement("span");d.className="tgico tgico-cameraadd",t.imageDiv.append(c,d);const v=e.default;let g;t.imageDiv.addEventListener("click",()=>{(new r.a).open(c,e=>{g=e})});const L=e=>{const a=w.value||"",n=y.value||"",i=a||n?(a+" "+n).trim():"";i?Object(h.a)(t.title,o.b.wrapEmojiText(i)):Object(h.a)(t.title,Object(l.d)("YourName"))};const w=new i.b({label:"FirstName",maxLength:70}),y=new i.b({label:"LastName",maxLength:64}),f=Object(n.a)("btn-primary btn-color-primary"),E=new l.c.IntlElement({key:"StartMessaging"});return f.append(E.element),t.inputWrapper.append(w.container,y.container,f),w.input.addEventListener("input",L),y.input.addEventListener("input",L),f.addEventListener("click",(function(e){if(w.input.classList.contains("error")||y.input.classList.contains("error"))return!1;if(!w.value.length)return w.input.classList.add("error"),!1;this.disabled=!0;const t=w.value.trim(),n=y.value.trim(),i={phone_number:b.phone_number,phone_code_hash:b.phone_code_hash,first_name:t,last_name:n};E.update({key:"PleaseWait"});const r=Object(s.f)(this);u.a.invokeApi("auth.signUp",i).then(e=>{switch(e._){case"auth.authorization":u.a.setUser(e.user),new Promise((e,t)=>{if(!g)return e();g().then(a=>{v.uploadProfilePhoto(a).then(e,t)},t)}).finally(()=>{a.e(3).then(a.bind(null,110)).then(e=>{e.default.mount()})});break;default:E.update({key:e._}),this.removeAttribute("disabled"),r.remove()}}).catch(e=>{this.removeAttribute("disabled"),r.remove(),e.type,E.update({key:e.type})})})),Object(m.a)(),new Promise(e=>{window.requestAnimationFrame(e)})}),e=>{b=e,c.c.pushToState("authState",{_:"authStateSignUp",authCode:e})});t.default=v},97:function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(7);class i{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append(Object(n.d)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append(Object(n.d)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}}}]);
//# sourceMappingURL=20.6096df8f14772978d7c3.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[22],{198:function(e,a,s){"use strict";s.r(a);function c(e,a){switch(e){case 27764:if(a%10==1&&(a%100<11||a%100>19))return"one";if(a%10>=2&&a%10<=9&&(a%100<11||a%100>19))return"few";break;case 27766:if(0==a)return"zero";if(a%10==1&&a%100!=11)return"one";break;case 25465:if(2==a)return"two";if(3==a)return"few";if(0==a)return"zero";if(1==a)return"one";if(6==a)return"many";break;case 25189:case 25203:case 26738:case 29301:case 29544:case 29554:case 30059:if(a%10==1&&a%100!=11)return"one";if(a%10>=2&&a%10<=4&&(a%100<12||a%100>14))return"few";if(a%10==0||a%10>=5&&a%10<=9||a%100>=11&&a%100<=14)return"many";break;case 7041896:if(0==a)return"zero";if(1==a)return"one";break;case 7563369:if(a>=2&&a<=10)return"few";if(a>=0&&a<=1)return"one";break;case 26725:if(2==a)return"two";if(1==a)return"one";if(0!=a&&a%10==0)return"many";break;case 25459:case 29547:if(1==a)return"one";if(a>=2&&a<=4)return"few";break;case 25202:if(0!=a&&a%1e6==0)return"many";if(a%10==1&&a%100!=11&&a%100!=71&&a%100!=91)return"one";if(a%10==2&&a%100!=12&&a%100!=72&&a%100!=92)return"two";if((a%10>=3&&a%10<=4||a%10==9)&&(a%100<10||a%100>19)&&(a%100<70||a%100>79)&&(a%100<90||a%100>99))return"few";break;case 29548:if(a%100==2)return"two";if(a%100==1)return"one";if(a%100>=3&&a%100<=4)return"few";break;case 7102823:if(0==a)return"zero";if(a>=0&&a<=2&&0!=a&&2!=a)return"one";break;case 28780:if(1==a)return"one";if(a%10>=2&&a%10<=4&&(a%100<12||a%100>14))return"few";if(1!=a&&a%10>=0&&a%10<=1||a%10>=5&&a%10<=9||a%100>=12&&a%100<=14)return"many";break;case 26468:if(2==a||12==a)return"two";if(1==a||11==a)return"one";if(a>=3&&a<=10||a>=13&&a<=19)return"few";break;case 26486:if(a%10>=1&&a%10<=2||a%20==0)return"one";break;case 28011:if(a%10==1&&11!=a)return"one";break;case 28020:if(1==a)return"one";if(a%100>=11&&a%100<=19)return"many";if(0==a||a%100>=2&&a%100<=10)return"few";break;case 28015:case 29295:if(1==a)return"one";if(0==a||1!=a&&a%100>=1&&a%100<=19)return"few";break;case 26465:if(2==a)return"two";if(1==a)return"one";if(a>=3&&a<=6)return"few";if(a>=7&&a<=10)return"many";break;case 26214:case 26226:case 7037282:if(a>=0&&a<=2&&2!=a)return"one";break;case 26997:case 27511:case 29541:case 7233905:case 7564641:case 7564649:case 7564650:case 7564654:case 7564659:if(2==a)return"two";if(1==a)return"one";break;case 24939:case 24941:case 25192:case 26729:case 27758:case 28007:case 29801:case 29804:case 30561:case 6711660:case 6780279:case 7238511:if(a>=0&&a<=1)return"one";break;case 7633517:if(a>=0&&a<=1||a>=11&&a<=99)return"one";break;case 24934:case 25191:case 25198:case 25441:case 25697:case 25701:case 25718:case 25957:case 25964:case 25966:case 25967:case 25971:case 25972:case 25973:case 26217:case 26223:case 26233:case 26476:case 26485:case 26721:case 26995:case 26996:case 27499:case 27500:case 27507:case 27509:case 27513:case 27746:case 27751:case 28012:case 28014:case 28018:case 28258:case 28260:case 28261:case 28268:case 28270:case 28271:case 28274:case 28281:case 28525:case 28530:case 28531:case 28769:case 28787:case 28788:case 29293:case 29550:case 29551:case 29553:case 29555:case 29556:case 29558:case 29559:case 29793:case 29797:case 29803:case 29806:case 29811:case 30066:case 30309:case 30319:case 30824:case 31349:case 6386529:case 6386548:case 6448493:case 6448506:case 6451832:case 6514535:case 6514802:case 6515554:case 6714738:case 6779767:case 6840695:case 6973295:case 6974819:case 7037290:case 7037799:case 7039850:case 7041890:case 7168371:case 7169903:case 7233896:case 7237224:case 7240046:case 7364976:case 7499622:case 7501675:case 7561585:case 7562600:case 7566201:case 7567730:case 7628143:case 7629159:case 7763310:case 7823717:case 7892839:if(1==a)return"one";break;case 24946:if(2==a)return"two";if(1==a)return"one";if(0==a)return"zero";if(a%100>=3&&a%100<=10)return"few";if(a%100>=11&&a%100<=99)return"many"}return"other"}const r={PluralRules:class{constructor(e){this.select=c.bind(null,function(e){let a=0;for(let s=0;s<e.length;++s)a=(a<<8)+e.charCodeAt(s);return a}(e))}}};a.default=r}}]);
//# sourceMappingURL=22.0a628e2d4248ba9d2bc6.chunk.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[23,3],{110:function(e,t,a){"use strict";a.r(t);var n=a(38),c=a(42),s=a(35),l=a(7);const u=new(a(90).a)("page-chats",!1,()=>(s.c.pushToState("authState",{_:"authStateSignedIn"}),l.c.requestedServerLanguage||l.c.getCacheLangPack().then(e=>{e.local&&l.c.getLangPack(e.lang_code)}),u.pageEl.style.display="",Object(n.a)(),Promise.all([Object(c.a)(),Promise.all([a.e(1),a.e(2),a.e(5),a.e(6),a.e(13)]).then(a.bind(null,184))]).then(()=>{setTimeout(()=>{document.getElementById("auth-pages").remove()},1e3)})));t.default=u}}]);
//# sourceMappingURL=23.6be0d0c4a28ca0d0952b.chunk.js.map

View File

@ -1 +0,0 @@
{"version":3,"sources":["webpack:///./src/pages/pageIm.ts"],"names":["page","pushToState","_","requestedServerLanguage","getCacheLangPack","then","langPack","local","getLangPack","lang_code","pageEl","style","display","Promise","all","setTimeout","document","getElementById","remove"],"mappings":"yFAAA,0CAoDA,MAAMA,EAAO,IApDb,MAoDiB,GAAK,cAAc,EAxCjB,KACjB,IAAgBC,YAAY,YAAa,CAACC,EAAG,sBAIzC,IAAKC,yBACP,IAAKC,mBAAmBC,KAAKC,IACxBA,EAASC,OACV,IAAKC,YAAYF,EAASG,aAKhCT,EAAKU,OAAOC,MAAMC,QAAU,GAe5B,cAEOC,QAAQC,IAAI,CACjB,cACA,4EACCT,KAAK,KACNU,WAAW,KACTC,SAASC,eAAe,cAAcC,UACrC,SAKQ","file":"23.6be0d0c4a28ca0d0952b.chunk.js","sourcesContent":["/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport blurActiveElement from \"../helpers/dom/blurActiveElement\";\r\nimport loadFonts from \"../helpers/dom/loadFonts\";\r\nimport appStateManager from \"../lib/appManagers/appStateManager\";\r\nimport I18n from \"../lib/langPack\";\r\nimport Page from \"./page\";\r\n\r\nlet onFirstMount = () => {\r\n appStateManager.pushToState('authState', {_: 'authStateSignedIn'});\r\n // ! TOO SLOW\r\n /* appStateManager.saveState(); */\r\n\r\n if(!I18n.requestedServerLanguage) {\r\n I18n.getCacheLangPack().then(langPack => {\r\n if(langPack.local) {\r\n I18n.getLangPack(langPack.lang_code);\r\n }\r\n });\r\n }\r\n\r\n page.pageEl.style.display = '';\r\n \r\n //AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;\r\n\r\n /* // @ts-ignore\r\n var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;\r\n alert('AudioContext:' + typeof(AudioContext));\r\n // @ts-ignore\r\n alert('global.navigator:' + typeof(navigator));\r\n alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));\r\n alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));\r\n alert('global.WebAssembly:' + typeof(WebAssembly)); */\r\n\r\n //(Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach(el => ripple(el));\r\n\r\n blurActiveElement();\r\n\r\n return Promise.all([\r\n loadFonts()/* .then(() => new Promise((resolve) => window.requestAnimationFrame(resolve))) */,\r\n import('../lib/appManagers/appDialogsManager')\r\n ]).then(() => {\r\n setTimeout(() => {\r\n document.getElementById('auth-pages').remove();\r\n }, 1e3);\r\n });\r\n};\r\n\r\nconst page = new Page('page-chats', false, onFirstMount);\r\nexport default page;\r\n"],"sourceRoot":""}

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[231],{3231:(t,e,a)=>{a.r(e),a.d(e,{default:()=>u});var n=a(279),i=a(4159),o=a(236),r=a(3512),h=a(4874);let d;const s=new h.Z("page-signImport",!0,(()=>{var t,e,h,u;(0,n.y)(s.pageEl.firstElementChild,!0),t=void 0,e=void 0,u=function*(){const{dcId:t,token:e,tgAddr:n}=d;let h;try{r.Z.managers.apiManager.setBaseDcId(t);const n=yield r.Z.managers.apiManager.invokeApi("auth.importWebTokenAuthorization",{api_id:i.Z.id,api_hash:i.Z.hash,web_auth_token:e},{dcId:t,ignoreErrors:!0});"auth.authorization"===n._&&(r.Z.managers.apiManager.setUser(n.user),h=a.e(781).then(a.bind(a,5436)))}catch(t){switch(t.type){case"SESSION_PASSWORD_NEEDED":t.handled=!0,h=a.e(442).then(a.bind(a,9437));break;default:{console.error("authorization import error:",t);const e=o.h.authState._;"authStateSignIn"===e?h=a.e(641).then(a.bind(a,810)):"authStateSignQr"===e&&(h=a.e(776).then(a.bind(a,9709)));break}}}location.hash=(null==n?void 0:n.trim())?"#?tgaddr="+encodeURIComponent(n):"",h&&h.then((t=>t.default.mount()))},new((h=void 0)||(h=Promise))((function(a,n){function i(t){try{r(u.next(t))}catch(t){n(t)}}function o(t){try{r(u.throw(t))}catch(t){n(t)}}function r(t){var e;t.done?a(t.value):(e=t.value,e instanceof h?e:new h((function(t){t(e)}))).then(i,o)}r((u=u.apply(t,e||[])).next())}))}),(t=>{d=t,r.Z.managers.appStateManager.pushToState("authState",{_:"authStateSignImport",data:d})})),u=s}}]);
//# sourceMappingURL=231.f4d1bfe6ff7f14577f96.chunk.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"231.f4d1bfe6ff7f14577f96.chunk.js","mappings":"6KAaA,IAAIA,EAEJ,MAwCMC,EAAO,IAAI,IAAK,mBAAmB,GAAM,K,aAC7C,OAAaA,EAAKC,OAAOC,mBAAmB,G,OAzCb,E,OAAA,E,EAAA,YAC/B,MAAM,KAACC,EAAI,MAAEC,EAAK,OAAEC,GAAUN,EAC9B,IAAIO,EACJ,IACE,oCAA0CH,GAC1C,MAAMI,QAAsB,kCAAwC,mCAAoC,CACtGC,OAAQ,OACRC,SAAU,SACVC,eAAgBN,GACf,CAACD,OAAMQ,cAAc,IAED,uBAApBJ,EAAcK,IACf,gCAAsCL,EAAcM,MACpDP,EAAiB,8B,CAGnB,MAAMQ,GACN,OAAQA,EAAiBC,MACvB,IAAK,0BACFD,EAAiBE,SAAU,EAC5BV,EAAiB,8BACjB,MAGF,QAAS,CACPW,QAAQC,MAAM,8BAA+BJ,GAC7C,MAAMK,EAAe,gBACD,oBAAjBA,EAAoCb,EAAiB,6BAC/B,oBAAjBa,IAAoCb,EAAiB,+BAC7D,K,GAKNc,SAASC,MAAOhB,aAAM,EAANA,EAAQiB,QAAS,YAAcC,mBAAmBlB,GAAU,GACzEC,GACDA,EAAekB,MAAMC,GAAMA,EAAEC,QAAQC,SAEzC,E,YAtCiC,K,iQA0Cf,IACdC,IACF7B,EAAO6B,EACP,yCAA+C,YAAa,CAAChB,EAAG,sBAAuBb,QAAM,IAG/F,G","sources":["webpack://tweb/./src/pages/pageSignImport.ts"],"sourcesContent":["/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport {putPreloader} from '../components/putPreloader';\nimport App from '../config/app';\nimport {STATE_INIT} from '../config/state';\nimport rootScope from '../lib/rootScope';\nimport {AuthState} from '../types';\nimport Page from './page';\n\nlet data: AuthState.signImport['data'];\n\nconst importWebToken = async() => {\n const {dcId, token, tgAddr} = data;\n let mountPageAfter: Promise<{default: Page}>;\n try {\n rootScope.managers.apiManager.setBaseDcId(dcId);\n const authorization = await rootScope.managers.apiManager.invokeApi('auth.importWebTokenAuthorization', {\n api_id: App.id,\n api_hash: App.hash,\n web_auth_token: token\n }, {dcId, ignoreErrors: true});\n\n if(authorization._ === 'auth.authorization') {\n rootScope.managers.apiManager.setUser(authorization.user);\n mountPageAfter = import('./pageIm');\n // return;\n }\n } catch(err) {\n switch((err as ApiError).type) {\n case 'SESSION_PASSWORD_NEEDED': {\n (err as ApiError).handled = true;\n mountPageAfter = import('./pagePassword');\n break;\n }\n\n default: {\n console.error('authorization import error:', err);\n const defaultState = STATE_INIT.authState._;\n if(defaultState === 'authStateSignIn') mountPageAfter = import('./pageSignIn');\n else if(defaultState === 'authStateSignQr') mountPageAfter = import('./pageSignQR');\n break;\n }\n }\n }\n\n location.hash = tgAddr?.trim() ? '#?tgaddr=' + encodeURIComponent(tgAddr) : '';\n if(mountPageAfter) {\n mountPageAfter.then((m) => m.default.mount());\n }\n};\n\nconst page = new Page('page-signImport', true, () => {\n putPreloader(page.pageEl.firstElementChild, true);\n importWebToken();\n}, (_data: typeof data) => {\n data = _data;\n rootScope.managers.appStateManager.pushToState('authState', {_: 'authStateSignImport', data});\n});\n\nexport default page;\n"],"names":["data","page","pageEl","firstElementChild","dcId","token","tgAddr","mountPageAfter","authorization","api_id","api_hash","web_auth_token","ignoreErrors","_","user","err","type","handled","console","error","defaultState","location","hash","trim","encodeURIComponent","then","m","default","mount","_data"],"sourceRoot":""}

View File

@ -1,2 +0,0 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[24],{200:function(t,r,o){"use strict";o.r(r),o.d(r,"default",(function(){return f}));const a=[1,57,41,21,203,34,97,73,227,91,149,62,105,45,39,137,241,107,3,173,39,71,65,238,219,101,187,87,81,151,141,133,249,117,221,209,197,187,177,169,5,153,73,139,133,127,243,233,223,107,103,99,191,23,177,171,165,159,77,149,9,139,135,131,253,245,119,231,224,109,211,103,25,195,189,23,45,175,171,83,81,79,155,151,147,9,141,137,67,131,129,251,123,30,235,115,113,221,217,53,13,51,50,49,193,189,185,91,179,175,43,169,83,163,5,79,155,19,75,147,145,143,35,69,17,67,33,65,255,251,247,243,239,59,29,229,113,111,219,27,213,105,207,51,201,199,49,193,191,47,93,183,181,179,11,87,43,85,167,165,163,161,159,157,155,77,19,75,37,73,145,143,141,35,138,137,135,67,33,131,129,255,63,250,247,61,121,239,237,117,29,229,227,225,111,55,109,216,213,211,209,207,205,203,201,199,197,195,193,48,190,47,93,185,183,181,179,178,176,175,173,171,85,21,167,165,41,163,161,5,79,157,78,154,153,19,75,149,74,147,73,144,143,71,141,140,139,137,17,135,134,133,66,131,65,129,1],e=[0,9,10,10,14,12,14,14,16,15,16,15,16,15,15,17,18,17,12,18,16,17,17,19,19,18,19,18,18,19,19,19,20,19,20,20,20,20,20,20,15,20,19,20,20,20,21,21,21,20,20,20,21,18,21,21,21,21,20,21,17,21,21,21,22,22,21,22,22,21,22,21,19,22,22,19,20,22,22,21,21,21,22,22,22,18,22,22,21,22,22,23,22,20,23,22,22,23,23,21,19,21,21,21,23,23,23,22,23,23,21,23,22,23,18,22,23,20,22,23,23,23,21,22,20,22,21,22,24,24,24,24,24,22,21,24,23,23,24,21,24,23,24,22,24,24,22,24,24,22,23,24,24,24,20,23,22,23,24,24,24,24,24,24,24,23,21,23,22,23,24,24,24,22,24,24,24,23,22,24,24,25,23,25,25,23,24,25,25,24,22,25,25,25,24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,23,25,23,24,25,25,25,25,25,25,25,25,25,24,22,25,25,23,25,25,20,24,25,24,25,25,22,24,25,24,25,24,25,25,24,25,25,25,25,22,25,25,25,24,25,24,25,18];function f(t,r,o,f,n,s,u){if(Number.isNaN(s)||s<1)return;s|=0,Number.isNaN(u)&&(u=1),(u|=0)>3&&(u=3),u<1&&(u=1);const i=t.getImageData(r,o,f,n),c=i.data;let p,N,b,m,d,g,h,k,l,w,D,I,J=f-1,j=n-1,q=s+1,v=[],x=[],y=[],z=a[s],A=e[s],B=[],C=[];for(;u-- >0;){for(I=D=0,d=0;d<n;d++){for(p=c[I]*q,N=c[I+1]*q,b=c[I+2]*q,g=1;g<=s;g++)h=I+((g>J?J:g)<<2),p+=c[h++],N+=c[h++],b+=c[h++];for(m=0;m<f;m++)v[D]=p,x[D]=N,y[D]=b,0==d&&(B[m]=((h=m+q)<J?h:J)<<2,C[m]=(h=m-s)>0?h<<2:0),k=I+B[m],l=I+C[m],p+=c[k++]-c[l++],N+=c[k++]-c[l++],b+=c[k++]-c[l++],D++;I+=f<<2}for(m=0;m<f;m++){for(w=m,p=v[w]*q,N=x[w]*q,b=y[w]*q,g=1;g<=s;g++)w+=g>j?0:f,p+=v[w],N+=x[w],b+=y[w];for(D=m<<2,d=0;d<n;d++)c[D]=p*z>>>A,c[D+1]=N*z>>>A,c[D+2]=b*z>>>A,0==m&&(B[d]=((h=d+q)<j?h:j)*f,C[d]=(h=d-s)>0?h*f:0),k=m+B[d],l=m+C[d],p+=v[k]-v[l],N+=x[k]-x[l],b+=y[k]-y[l],D+=f<<2}}t.putImageData(i,r,o)}}}]);
//# sourceMappingURL=24.3dbb6c36f540f3e15be0.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[3,23],{110:function(e,t,a){"use strict";a.r(t);var n=a(38),c=a(42),s=a(35),l=a(7);const u=new(a(90).a)("page-chats",!1,()=>(s.c.pushToState("authState",{_:"authStateSignedIn"}),l.c.requestedServerLanguage||l.c.getCacheLangPack().then(e=>{e.local&&l.c.getLangPack(e.lang_code)}),u.pageEl.style.display="",Object(n.a)(),Promise.all([Object(c.a)(),Promise.all([a.e(1),a.e(2),a.e(5),a.e(6),a.e(13)]).then(a.bind(null,184))]).then(()=>{setTimeout(()=>{document.getElementById("auth-pages").remove()},1e3)})));t.default=u}}]);
//# sourceMappingURL=3.fd4a457d3edbe045f3c5.chunk.js.map

View File

@ -1 +0,0 @@
{"version":3,"sources":["webpack:///./src/pages/pageIm.ts"],"names":["page","pushToState","_","requestedServerLanguage","getCacheLangPack","then","langPack","local","getLangPack","lang_code","pageEl","style","display","Promise","all","setTimeout","document","getElementById","remove"],"mappings":"yFAAA,0CAoDA,MAAMA,EAAO,IApDb,MAoDiB,GAAK,cAAc,EAxCjB,KACjB,IAAgBC,YAAY,YAAa,CAACC,EAAG,sBAIzC,IAAKC,yBACP,IAAKC,mBAAmBC,KAAKC,IACxBA,EAASC,OACV,IAAKC,YAAYF,EAASG,aAKhCT,EAAKU,OAAOC,MAAMC,QAAU,GAe5B,cAEOC,QAAQC,IAAI,CACjB,cACA,4EACCT,KAAK,KACNU,WAAW,KACTC,SAASC,eAAe,cAAcC,UACrC,SAKQ","file":"3.fd4a457d3edbe045f3c5.chunk.js","sourcesContent":["/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport blurActiveElement from \"../helpers/dom/blurActiveElement\";\r\nimport loadFonts from \"../helpers/dom/loadFonts\";\r\nimport appStateManager from \"../lib/appManagers/appStateManager\";\r\nimport I18n from \"../lib/langPack\";\r\nimport Page from \"./page\";\r\n\r\nlet onFirstMount = () => {\r\n appStateManager.pushToState('authState', {_: 'authStateSignedIn'});\r\n // ! TOO SLOW\r\n /* appStateManager.saveState(); */\r\n\r\n if(!I18n.requestedServerLanguage) {\r\n I18n.getCacheLangPack().then(langPack => {\r\n if(langPack.local) {\r\n I18n.getLangPack(langPack.lang_code);\r\n }\r\n });\r\n }\r\n\r\n page.pageEl.style.display = '';\r\n \r\n //AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;\r\n\r\n /* // @ts-ignore\r\n var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;\r\n alert('AudioContext:' + typeof(AudioContext));\r\n // @ts-ignore\r\n alert('global.navigator:' + typeof(navigator));\r\n alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));\r\n alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));\r\n alert('global.WebAssembly:' + typeof(WebAssembly)); */\r\n\r\n //(Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach(el => ripple(el));\r\n\r\n blurActiveElement();\r\n\r\n return Promise.all([\r\n loadFonts()/* .then(() => new Promise((resolve) => window.requestAnimationFrame(resolve))) */,\r\n import('../lib/appManagers/appDialogsManager')\r\n ]).then(() => {\r\n setTimeout(() => {\r\n document.getElementById('auth-pages').remove();\r\n }, 1e3);\r\n });\r\n};\r\n\r\nconst page = new Page('page-chats', false, onFirstMount);\r\nexport default page;\r\n"],"sourceRoot":""}

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[301],{9301:(e,n,o)=>{o.r(n),o.d(n,{default:()=>i});const i={"Login.Title":"Sign in to Telegram","Login.PhoneLabel":"Phone Number","Login.PhoneLabelInvalid":"Phone Number Invalid","Login.KeepSigned":"Keep me signed in","Login.StartText":"Please confirm your country and\nenter your phone number.","Login.Code.SentSms":"We have sent you an SMS\nwith the code.","Login.Code.SentInApp":"We have sent you a message in Telegram\nwith the code.","Login.Code.SentCall":"We will call you and voice\nthe code.","Login.Code.SentUnknown":"Please check everything\nfor a code (type: %s)","Login.Password.Title":"Enter Your Password","Login.Password.Subtitle":"Your account is protected with\nan additional password","Login.Register.Subtitle":"Enter your name and add\na profile picture",PleaseWait:"Please wait...",Code:"Code",LoginPassword:"Password",YourName:"Your Name",FirstName:"First name (required)",LastName:"Last name (optional)",StartMessaging:"Start Messaging",Country:"Country","Contacts.PhoneNumber.Placeholder":"Phone Number","Login.Next":"Next","Login.ContinueOnLanguage":"Continue in English","Login.QR.Title":"Log in to Telegram by QR Code","Login.QR.Help1":"Open Telegram on your phone","Login.QR.Help2":"Go to **Settings** > **Devices** > **Link Desktop Device**","Login.QR.Help3":"Point your phone at this screen to confirm login","Login.QR.Cancel":"Log in by phone Number","Login.QR.Login":"Log in by QR Code","PhoneNumber.Code.Fragment.Info":"Get the code in the Anonymous Numbers section on [Fragment](%1$@)",PHONE_CODE_INVALID:"Invalid code",PHONE_CODE_EXPIRED:"Code expired",PASSWORD_HASH_INVALID:"Incorrect password"}}}]);
//# sourceMappingURL=301.95838a8203f23dd1ce8f.chunk.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"301.95838a8203f23dd1ce8f.chunk.js","mappings":"yHAAA,MAwCA,EAxCa,CACX,cAAe,sBACf,mBAAoB,eACpB,0BAA2B,uBAC3B,mBAAoB,oBACpB,kBAAmB,4DACnB,qBAAsB,0CACtB,uBAAwB,yDACxB,sBAAuB,wCACvB,yBAA0B,iDAC1B,uBAAwB,sBACxB,0BAA2B,yDAC3B,0BAA2B,6CAC3B,WAAc,iBAGd,KAAQ,OACR,cAAiB,WACjB,SAAY,YACZ,UAAa,wBACb,SAAY,uBACZ,eAAkB,kBAClB,QAAW,UAGX,mCAAoC,eACpC,aAAc,OACd,2BAA4B,sBAC5B,iBAAkB,gCAClB,iBAAkB,8BAClB,iBAAkB,6DAClB,iBAAkB,mDAClB,kBAAmB,yBACnB,iBAAkB,oBAClB,iCAAkC,oEAClC,mBAAsB,eACtB,mBAAsB,eACtB,sBAAyB,qB","sources":["webpack://tweb/./src/langSign.ts"],"sourcesContent":["const lang = {\n 'Login.Title': 'Sign in to Telegram',\n 'Login.PhoneLabel': 'Phone Number',\n 'Login.PhoneLabelInvalid': 'Phone Number Invalid',\n 'Login.KeepSigned': 'Keep me signed in',\n 'Login.StartText': 'Please confirm your country and\\nenter your phone number.',\n 'Login.Code.SentSms': 'We have sent you an SMS\\nwith the code.',\n 'Login.Code.SentInApp': 'We have sent you a message in Telegram\\nwith the code.',\n 'Login.Code.SentCall': 'We will call you and voice\\nthe code.',\n 'Login.Code.SentUnknown': 'Please check everything\\nfor a code (type: %s)',\n 'Login.Password.Title': 'Enter Your Password',\n 'Login.Password.Subtitle': 'Your account is protected with\\nan additional password',\n 'Login.Register.Subtitle': 'Enter your name and add\\na profile picture',\n 'PleaseWait': 'Please wait...',\n\n // * android\n 'Code': 'Code',\n 'LoginPassword': 'Password',\n 'YourName': 'Your Name',\n 'FirstName': 'First name (required)',\n 'LastName': 'Last name (optional)',\n 'StartMessaging': 'Start Messaging',\n 'Country': 'Country',\n\n // * macos\n 'Contacts.PhoneNumber.Placeholder': 'Phone Number',\n 'Login.Next': 'Next',\n 'Login.ContinueOnLanguage': 'Continue in English',\n 'Login.QR.Title': 'Log in to Telegram by QR Code',\n 'Login.QR.Help1': 'Open Telegram on your phone',\n 'Login.QR.Help2': 'Go to **Settings** > **Devices** > **Link Desktop Device**',\n 'Login.QR.Help3': 'Point your phone at this screen to confirm login',\n 'Login.QR.Cancel': 'Log in by phone Number',\n 'Login.QR.Login': 'Log in by QR Code',\n 'PhoneNumber.Code.Fragment.Info': 'Get the code in the Anonymous Numbers section on [Fragment](%1$@)',\n 'PHONE_CODE_INVALID': 'Invalid code',\n 'PHONE_CODE_EXPIRED': 'Code expired',\n 'PASSWORD_HASH_INVALID': 'Incorrect password'\n};\n\nexport default lang;\n"],"names":[],"sourceRoot":""}

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[339,813],{2582:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(2325);class i{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append((0,n.ag)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append((0,n.ag)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}},8339:(e,t,a)=>{a.r(t),a.d(t,{default:()=>v});var n=a(2582),i=a(4874),s=a(8799),r=a(3512),c=a(503),u=a(1168),o=a(6765),l=a(5565),p=a(2325),m=a(8115),d=a(4494),h=a(279);let g=null;const v=new i.Z("page-signUp",!0,(()=>{return e=void 0,t=void 0,v=function*(){const e=new n.Z({className:"page-signUp",withInputWrapper:!0,titleLangKey:"YourName",subtitleLangKey:"Login.Register.Subtitle"});e.imageDiv.classList.add("avatar-edit"),e.title.classList.add("fullName");const t=document.createElement("canvas");t.id="canvas-avatar",t.className="avatar-edit-canvas";const i=document.createElement("span");let v;i.className="tgico tgico-cameraadd",e.imageDiv.append(t,i),e.imageDiv.addEventListener("click",(()=>{u.Z.createPopup(o.Z).open(t,(e=>{v=e}))}));const b=t=>{const a=y.value||"",n=w.value||"",i=a||n?(a+" "+n).trim():"";i?(0,l.Z)(e.title,(0,m.Z)(i)):(0,l.Z)(e.title,(0,p.ag)("YourName"))},y=new c.ZP({label:"FirstName",maxLength:70}),w=new c.ZP({label:"LastName",maxLength:64}),L=(0,d.Z)("btn-primary btn-color-primary"),f=new p.ZP.IntlElement({key:"StartMessaging"});return L.append(f.element),e.inputWrapper.append(y.container,w.container,L),y.input.addEventListener("input",b),w.input.addEventListener("input",b),L.addEventListener("click",(function(e){if(y.input.classList.contains("error")||w.input.classList.contains("error"))return!1;if(!y.value.length)return y.input.classList.add("error"),!1;this.disabled=!0;const t=y.value.trim(),n=w.value.trim(),i={phone_number:g.phone_number,phone_code_hash:g.phone_code_hash,first_name:t,last_name:n};f.update({key:"PleaseWait"});const s=(0,h.y)(this);r.Z.managers.apiManager.invokeApi("auth.signUp",i).then((e=>{"auth.authorization"===e._?(r.Z.managers.apiManager.setUser(e.user),new Promise(((e,t)=>{if(!v)return e();v().then((a=>{r.Z.managers.appProfileManager.uploadProfilePhoto(a).then(e,t)}),t)})).finally((()=>{a.e(781).then(a.bind(a,5436)).then((e=>{e.default.mount()}))}))):(f.update({key:e._}),this.removeAttribute("disabled"),s.remove())})).catch((e=>{this.removeAttribute("disabled"),s.remove(),e.type,f.update({key:e.type})}))})),(0,s.Z)(),new Promise((e=>{window.requestAnimationFrame(e)}))},new((i=void 0)||(i=Promise))((function(a,n){function s(e){try{c(v.next(e))}catch(e){n(e)}}function r(e){try{c(v.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,r)}c((v=v.apply(e,t||[])).next())}));var e,t,i,v}),(e=>{g=e,r.Z.managers.appStateManager.pushToState("authState",{_:"authStateSignUp",authCode:e})}))}}]);
//# sourceMappingURL=339.12bdbede82465e666965.chunk.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[392],{6392:(e,t,n)=>{n.r(t),n.d(t,{default:()=>w});var a=n(4755),o=n(4874),r=n(810),s=n(3083),l=n(4489),i=n(2325),u=n(144),h=n(5565),d=n(3512),c=n(1447),p=n(2521),m=n(2738);let E,g,_,b,C=null,v=null,y=null;const f=()=>{setTimeout((()=>{null==_||_.remove(),null==b||b.remove()}),300)},S=new o.Z("page-authCode",!0,(()=>{S.pageEl.querySelector(".input-wrapper").append(g.container);const e=S.pageEl.querySelector(".phone-edit");(0,m.fc)(e,(()=>r.default.mount()))}),(e=>{if(C=e,v){E.value="";const e=document.createEvent("HTMLEvents");e.initEvent("input",!1,!0),E.dispatchEvent(e)}else v=S.pageEl.getElementsByClassName("phone")[0],y=S.pageEl.getElementsByClassName("sent-type")[0];const t=C.type.length;let o,r;g||(g=new l.Z({label:"Code",name:(0,u.a)(),length:t,onFill:e=>{(e=>{E.setAttribute("disabled","true");const t={phone_number:C.phone_number,phone_code_hash:C.phone_code_hash,phone_code:e};d.Z.managers.apiManager.invokeApi("auth.signIn",t,{ignoreErrors:!0}).then((e=>{switch(e._){case"auth.authorization":d.Z.managers.apiManager.setUser(e.user),n.e(781).then(n.bind(n,5436)).then((e=>{e.default.mount()})),f();break;case"auth.authorizationSignUpRequired":n.e(813).then(n.bind(n,8339)).then((e=>{e.default.mount({phone_number:C.phone_number,phone_code_hash:C.phone_code_hash})})),f()}})).catch((e=>{return t=void 0,a=void 0,r=function*(){let t=!1;switch(e.type){case"SESSION_PASSWORD_NEEDED":t=!0,e.handled=!0,yield(yield n.e(442).then(n.bind(n,9437))).default.mount(),setTimeout((()=>{E.value=""}),300);break;case"PHONE_CODE_EXPIRED":E.classList.add("error"),(0,h.Z)(g.label,(0,i.ag)("PHONE_CODE_EXPIRED"));break;case"PHONE_CODE_EMPTY":case"PHONE_CODE_INVALID":E.classList.add("error"),(0,h.Z)(g.label,(0,i.ag)("PHONE_CODE_INVALID"));break;default:g.label.innerText=e.type}t||g.select(),E.removeAttribute("disabled")},new((o=void 0)||(o=Promise))((function(e,n){function s(e){try{i(r.next(e))}catch(e){n(e)}}function l(e){try{i(r.throw(e))}catch(e){n(e)}}function i(t){var n;t.done?e(t.value):(n=t.value,n instanceof o?n:new o((function(e){e(n)}))).then(s,l)}i((r=r.apply(t,a||[])).next())}));var t,a,o,r}))})(e)}}),E=g.input),g.options.length=t,v.innerText=C.phone_number;const m=C.type;switch(m._){case"auth.sentCodeTypeSms":o="Login.Code.SentSms";break;case"auth.sentCodeTypeApp":o="Login.Code.SentInApp";break;case"auth.sentCodeTypeCall":o="Login.Code.SentCall";break;case"auth.sentCodeTypeFragmentSms":o="PhoneNumber.Code.Fragment.Info";const e=document.createElement("a");(0,p.Z)(e),e.href=m.url,r=[e];break;default:o="Login.Code.SentUnknown",r=[m._]}return(0,h.Z)(y,(0,i.ag)(o,r)),d.Z.managers.appStateManager.pushToState("authState",{_:"authStateAuthCode",sentCode:e}),(()=>{const e=S.pageEl.querySelector(".auth-image"),t=a.Z.isMobile?100:166;if("auth.sentCodeTypeFragmentSms"===C.type._){e.firstElementChild&&(null==_||_.remove(),_=void 0,e.replaceChildren());const n=document.createElement("div");return n.classList.add("media-sticker-wrapper"),e.append(n),c.Z.loadAnimationAsAsset({container:n,loop:!0,autoplay:!0,width:t,height:t},"jolly_roger").then((e=>(b=e,c.Z.waitForFirstFrame(e)))).then((()=>{}))}return e.firstElementChild&&(null==b||b.remove(),b=void 0,e.replaceChildren()),_=new s.Z(g,t),e.append(_.container),_.load()})()}),(()=>{E.focus()})),w=S}}]);
//# sourceMappingURL=392.6ce981ebdcbba9b6fd04.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[436,781],{5436:(e,t,a)=>{a.r(t),a.d(t,{default:()=>h});var n=a(8799),s=a(4541),r=a(2325),l=a(3512);const o=new(a(4874).Z)("page-chats",!1,(()=>(l.Z.managers.appStateManager.pushToState("authState",{_:"authStateSignedIn"}),r.ZP.requestedServerLanguage||r.ZP.getCacheLangPack().then((e=>{e.local&&r.ZP.getLangPack(e.lang_code)})),o.pageEl.style.display="",(0,n.Z)(),Promise.all([(0,s.Z)(),Promise.resolve().then(a.bind(a,5005)),"requestVideoFrameCallback"in HTMLVideoElement.prototype?Promise.resolve():a.e(783).then(a.bind(a,7482))]).then((([e,t,a])=>{t.default.start(),setTimeout((()=>{document.getElementById("auth-pages").remove()}),1e3)}))))),h=o}}]);
//# sourceMappingURL=436.9e54c5e9f3feccf9d736.chunk.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"436.9e54c5e9f3feccf9d736.chunk.js","mappings":"yKAYA,MA0CMA,EAAO,I,QAAI,GAAK,cAAc,GA1Cf,KACnB,yCAA+C,YAAa,CAACC,EAAG,sBAI5D,8BACF,wBAAwBC,MAAMC,IACzBA,EAASC,OACV,iBAAiBD,EAASE,U,IAKhCL,EAAKM,OAAOC,MAAMC,QAAU,IAe5B,SAEOC,QAAQC,IAAI,EACjB,SACA,uCACA,8BAA+BC,iBAAiBC,UAAYH,QAAQI,UAAY,gCAC/EX,MAAK,EAAED,EAAGa,EAAmBC,MAC9BD,EAAkBE,QAAQC,QAC1BC,YAAW,KACTC,SAASC,eAAe,cAAcC,QAAQ,GAC7C,IAAI,OAKX,G","sources":["webpack://tweb/./src/pages/pageIm.ts"],"sourcesContent":["/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimport blurActiveElement from '../helpers/dom/blurActiveElement';\nimport loadFonts from '../helpers/dom/loadFonts';\nimport I18n from '../lib/langPack';\nimport rootScope from '../lib/rootScope';\nimport Page from './page';\n\nconst onFirstMount = () => {\n rootScope.managers.appStateManager.pushToState('authState', {_: 'authStateSignedIn'});\n // ! TOO SLOW\n /* appStateManager.saveState(); */\n\n if(!I18n.requestedServerLanguage) {\n I18n.getCacheLangPack().then((langPack) => {\n if(langPack.local) {\n I18n.getLangPack(langPack.lang_code);\n }\n });\n }\n\n page.pageEl.style.display = '';\n\n // AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;\n\n /* // @ts-ignore\n var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;\n alert('AudioContext:' + typeof(AudioContext));\n // @ts-ignore\n alert('global.navigator:' + typeof(navigator));\n alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));\n alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));\n alert('global.WebAssembly:' + typeof(WebAssembly)); */\n\n // (Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach((el) => ripple(el));\n\n blurActiveElement();\n\n return Promise.all([\n loadFonts()/* .then(() => new Promise((resolve) => window.requestAnimationFrame(resolve))) */,\n import('../lib/appManagers/appDialogsManager'),\n 'requestVideoFrameCallback' in HTMLVideoElement.prototype ? Promise.resolve() : import('../helpers/dom/requestVideoFrameCallbackPolyfill')\n ]).then(([_, appDialogsManager, __]) => {\n appDialogsManager.default.start();\n setTimeout(() => {\n document.getElementById('auth-pages').remove();\n }, 1e3);\n });\n};\n\nconst page = new Page('page-chats', false, onFirstMount);\nexport default page;\n"],"names":["page","_","then","langPack","local","lang_code","pageEl","style","display","Promise","all","HTMLVideoElement","prototype","resolve","appDialogsManager","__","default","start","setTimeout","document","getElementById","remove"],"sourceRoot":""}

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[437,442],{2582:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(2325);class s{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append((0,n.ag)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append((0,n.ag)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}},9437:(e,t,a)=>{a.r(t),a.d(t,{default:()=>v});var n=a(279),s=a(4755),i=a(4874),r=a(4494),l=a(6830),o=a(4425),p=a(2325),c=a(2582),u=a(3910),d=a(2738),h=a(2614),m=a(5565),g=a(1656),b=a(8115),w=a(3512);let y;const v=new i.Z("page-password",!0,(()=>{const e=new c.Z({className:"page-password",withInputWrapper:!0,titleLangKey:"Login.Password.Title",subtitleLangKey:"Login.Password.Subtitle"}),t=(0,r.Z)("btn-primary btn-color-primary"),i=new p.ZP.IntlElement({key:"Login.Next"});t.append(i.element);const v=new l.Z({label:"LoginPassword",name:"password"});let L;y=v.input,e.inputWrapper.append(v.container,t);const Z=()=>(L||(L=window.setInterval(Z,1e4)),w.Z.managers.passwordManager.getState().then((e=>{k=e,k.hint?(0,m.Z)(v.label,(0,h.Z)((0,b.Z)(k.hint))):v.setLabel()})));let k;const S=e=>{if(e&&(0,u.Z)(e),!y.value.length)return void y.classList.add("error");const s=(0,g.Z)([y,t],!0),r=y.value;i.update({key:"PleaseWait"});const l=(0,n.y)(t);v.setValueSilently(""+Math.random()),v.setValueSilently(r),w.Z.managers.passwordManager.check(r,k).then((e=>{"auth.authorization"===e._?(clearInterval(L),a.e(781).then(a.bind(a,5436)).then((e=>{e.default.mount()})),E&&E.remove()):(t.removeAttribute("disabled"),i.update({key:e._}),l.remove())})).catch((e=>{s(),v.input.classList.add("error"),e.type,i.update({key:"PASSWORD_HASH_INVALID"}),y.select(),l.remove(),Z()}))};(0,d.fc)(t,S),y.addEventListener("keypress",(function(e){if(this.classList.remove("error"),i.update({key:"Login.Next"}),"Enter"===e.key)return S()}));const N=s.Z.isMobile?100:166,E=new o.Z(v,N);return e.imageDiv.append(E.container),Promise.all([E.load(),Z()])}),null,(()=>{y.focus(),w.Z.managers.appStateManager.pushToState("authState",{_:"authStatePassword"})}))}}]);
//# sourceMappingURL=437.37bcbe9db9cbb8d8a753.chunk.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[442,437],{2582:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(2325);class s{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append((0,n.ag)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append((0,n.ag)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}},9437:(e,t,a)=>{a.r(t),a.d(t,{default:()=>v});var n=a(279),s=a(4755),i=a(4874),r=a(4494),l=a(6830),o=a(4425),p=a(2325),c=a(2582),u=a(3910),d=a(2738),h=a(2614),m=a(5565),g=a(1656),b=a(8115),w=a(3512);let y;const v=new i.Z("page-password",!0,(()=>{const e=new c.Z({className:"page-password",withInputWrapper:!0,titleLangKey:"Login.Password.Title",subtitleLangKey:"Login.Password.Subtitle"}),t=(0,r.Z)("btn-primary btn-color-primary"),i=new p.ZP.IntlElement({key:"Login.Next"});t.append(i.element);const v=new l.Z({label:"LoginPassword",name:"password"});let L;y=v.input,e.inputWrapper.append(v.container,t);const Z=()=>(L||(L=window.setInterval(Z,1e4)),w.Z.managers.passwordManager.getState().then((e=>{k=e,k.hint?(0,m.Z)(v.label,(0,h.Z)((0,b.Z)(k.hint))):v.setLabel()})));let k;const S=e=>{if(e&&(0,u.Z)(e),!y.value.length)return void y.classList.add("error");const s=(0,g.Z)([y,t],!0),r=y.value;i.update({key:"PleaseWait"});const l=(0,n.y)(t);v.setValueSilently(""+Math.random()),v.setValueSilently(r),w.Z.managers.passwordManager.check(r,k).then((e=>{"auth.authorization"===e._?(clearInterval(L),a.e(781).then(a.bind(a,5436)).then((e=>{e.default.mount()})),E&&E.remove()):(t.removeAttribute("disabled"),i.update({key:e._}),l.remove())})).catch((e=>{s(),v.input.classList.add("error"),e.type,i.update({key:"PASSWORD_HASH_INVALID"}),y.select(),l.remove(),Z()}))};(0,d.fc)(t,S),y.addEventListener("keypress",(function(e){if(this.classList.remove("error"),i.update({key:"Login.Next"}),"Enter"===e.key)return S()}));const N=s.Z.isMobile?100:166,E=new o.Z(v,N);return e.imageDiv.append(E.container),Promise.all([E.load(),Z()])}),null,(()=>{y.focus(),w.Z.managers.appStateManager.pushToState("authState",{_:"authStatePassword"})}))}}]);
//# sourceMappingURL=442.54c010363ba1cdea7bce.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(()=>{"use strict";(()=>{if("undefined"!=typeof __webpack_require__){var e=__webpack_require__.u,t=__webpack_require__.e,r={},i={};__webpack_require__.u=function(t){return e(t)+(r.hasOwnProperty(t)?"?"+r[t]:"")},__webpack_require__.e=function(n){return t(n).catch((function(t){var a=i.hasOwnProperty(n)?i[n]:999999;if(a<1){var o=e(n);throw t.message="Loading chunk "+n+" failed after 999999 retries.\n("+o+")",t.request=o,t}return new Promise((function(e){setTimeout((function(){var t=Date.now();r[n]=t,i[n]=a-1,e(__webpack_require__.e(n))}),3e3)}))}))}}})();const e="undefined"!=typeof window?window:self,t=navigator?navigator.userAgent:null,r=(navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i),navigator.userAgent.toLowerCase().indexOf("android"),/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor),(/iPad|iPhone|iPod/.test(navigator.platform)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)&&e.MSStream,!!("safari"in e)||!(!t||!(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match("Safari")&&!t.match("Chrome"))));let i;if(navigator.userAgent.toLowerCase().indexOf("firefox"),(void 0===navigator.maxTouchPoints||navigator.maxTouchPoints>0)&&navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i),r)try{i=+navigator.userAgent.match(/Version\/(.+?) /)[1]>=14}catch(e){i=!1}else i=!0;const n=i,a="undefined"!=typeof ImageBitmap;const o=[[[16219713,13335381],[16757049,16168585],[16765248,16764327],[16768889,16768965]],[[16219713,10771e3],[16757049,14653547],[16765248,15577475],[16768889,16040864]],[[16219713,7354903],[16757049,11233085],[16765248,12812110],[16768889,14194279]],[[16219713,4858889],[16757049,8207886],[16765248,9852201],[16768889,11100983]],[[16219713,2101002],[16757049,4270372],[16765248,5848375],[16768889,6505791]]],s=e=>Math.round(255*Math.min(Math.max(e,0),1));importScripts("rlottie-wasm.js");const h=self.Module;class d{constructor(e,t,r,i){this.reqId=e,this.width=t,this.height=r,this.raw=i}init(e,t){if(!this.dead){this.fps=Math.max(1,Math.min(60,t||60));try{this.handle=c.Api.init(),this.stringOnWasmHeap=allocate(intArrayFromString(e),"i8",0),this.frameCount=c.Api.loadFromData(this.handle,this.stringOnWasmHeap),c.Api.resize(this.handle,this.width,this.height),m(["loaded",this.reqId,this.frameCount,this.fps]),!this.raw&&a&&(this.imageData=new ImageData(this.width,this.height))}catch(e){console.error("init RLottieItem error:",e),m(["error",this.reqId,e])}}}render(e,t){if(!this.dead&&void 0!==this.handle&&!(this.frameCount<e||e<0))try{c.Api.render(this.handle,e);const r=c.Api.buffer(this.handle),i=h.HEAPU8.subarray(r,r+this.width*this.height*4);this.imageData?(this.imageData.data.set(i),createImageBitmap(this.imageData).then((t=>{m(["frame",this.reqId,e,t],[t])}))):(t?t.set(i):t=new Uint8ClampedArray(i),m(["frame",this.reqId,e,t],[t.buffer]))}catch(e){console.error("Render error:",e),this.dead=!0,m(["error",this.reqId,e])}}destroy(){this.dead=!0,void 0!==this.handle&&c.Api.destroy(this.handle)}}const c=new class{constructor(){this.Api={}}initApi(){this.Api={init:h.cwrap("lottie_init","",[]),destroy:h.cwrap("lottie_destroy","",["number"]),resize:h.cwrap("lottie_resize","",["number","number","number"]),buffer:h.cwrap("lottie_buffer","number",["number"]),render:h.cwrap("lottie_render","",["number","number"]),loadFromData:h.cwrap("lottie_load_from_data","number",["number","number"])}}init(){this.initApi(),m(["ready"])}};h.onRuntimeInitialized=function(){c.init()};const u={},f={loadFromData:function(e,t,r,i,n,a){const h=u[e]=new d(e,r,i,a);(function(e){return function(e,t){return new Promise((t=>{const r=new FileReader;r.addEventListener("loadend",(e=>{t(e.target.result)})),r.readAsText(e)}))}(e)})(t).then((t=>{try{if("number"==typeof n&&n>=1&&n<=5){const e=JSON.parse(t);(function(e,t){const r=o[Math.max(t-1,0)],i=e=>{switch(e.ty){case"st":case"fl":(e=>{const t=e.c.k,i=s(t[2])|s(t[1])<<8|s(t[0])<<16,n=r.find((e=>e[0]===i));n&&(t[0]=(n[1]>>16&255)/255,t[1]=(n[1]>>8&255)/255,t[2]=(255&n[1])/255)})(e)}e.hasOwnProperty("it")&&n(e.it)},n=e=>{for(const t of e)i(t)};try{for(const t of e.layers)if(t.shapes)for(const e of t.shapes)e.it?n(e.it):i(e)}catch(r){console.warn("cant apply replacements",r,e,t)}})(e,n),t=JSON.stringify(e)}const e=t.match(/"fr":\s*?(\d+?),/),r=+(null==e?void 0:e[1])||60;h.init(t,r)}catch(r){console.error("Invalid file for sticker:",t),m(["error",e,r])}}))},destroy:function(e){const t=u[e];t&&(t.destroy(),delete u[e])},renderFrame:function(e,t,r){u[e].render(t,r)}};function m(e,t){postMessage({queryMethodListener:e.shift(),queryMethodArguments:e},n?t:void 0)}onmessage=function(e){f[e.data.queryMethod].apply(f,e.data.queryMethodArguments)}})();
//# sourceMappingURL=508.108437b214c507c44cb2.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[642],{4642:(e,a,s)=>{s.r(a),s.d(a,{default:()=>f});const c="zero",r="one",t="two",n="few",u="many";function i(e,a){switch(e){case 27764:if(a%10==1&&(a%100<11||a%100>19))return r;if(a%10>=2&&a%10<=9&&(a%100<11||a%100>19))return n;break;case 27766:if(0==a)return c;if(a%10==1&&a%100!=11)return r;break;case 25465:if(2==a)return t;if(3==a)return n;if(0==a)return c;if(1==a)return r;if(6==a)return u;break;case 25189:case 25203:case 26738:case 29301:case 29544:case 29554:case 30059:if(a%10==1&&a%100!=11)return r;if(a%10>=2&&a%10<=4&&(a%100<12||a%100>14))return n;if(a%10==0||a%10>=5&&a%10<=9||a%100>=11&&a%100<=14)return u;break;case 7041896:if(0==a)return c;if(1==a)return r;break;case 7563369:if(a>=2&&a<=10)return n;if(a>=0&&a<=1)return r;break;case 26725:if(2==a)return t;if(1==a)return r;if(0!=a&&a%10==0)return u;break;case 25459:case 29547:if(1==a)return r;if(a>=2&&a<=4)return n;break;case 25202:if(0!=a&&a%1e6==0)return u;if(a%10==1&&a%100!=11&&a%100!=71&&a%100!=91)return r;if(a%10==2&&a%100!=12&&a%100!=72&&a%100!=92)return t;if((a%10>=3&&a%10<=4||a%10==9)&&(a%100<10||a%100>19)&&(a%100<70||a%100>79)&&(a%100<90||a%100>99))return n;break;case 29548:if(a%100==2)return t;if(a%100==1)return r;if(a%100>=3&&a%100<=4)return n;break;case 7102823:if(0==a)return c;if(a>=0&&a<=2&&0!=a&&2!=a)return r;break;case 28780:if(1==a)return r;if(a%10>=2&&a%10<=4&&(a%100<12||a%100>14))return n;if(1!=a&&a%10>=0&&a%10<=1||a%10>=5&&a%10<=9||a%100>=12&&a%100<=14)return u;break;case 26468:if(2==a||12==a)return t;if(1==a||11==a)return r;if(a>=3&&a<=10||a>=13&&a<=19)return n;break;case 26486:if(a%10>=1&&a%10<=2||a%20==0)return r;break;case 28011:if(a%10==1&&11!=a)return r;break;case 28020:if(1==a)return r;if(a%100>=11&&a%100<=19)return u;if(0==a||a%100>=2&&a%100<=10)return n;break;case 28015:case 29295:if(1==a)return r;if(0==a||1!=a&&a%100>=1&&a%100<=19)return n;break;case 26465:if(2==a)return t;if(1==a)return r;if(a>=3&&a<=6)return n;if(a>=7&&a<=10)return u;break;case 26214:case 26226:case 7037282:if(a>=0&&a<=2&&2!=a)return r;break;case 26997:case 27511:case 29541:case 7233905:case 7564641:case 7564649:case 7564650:case 7564654:case 7564659:if(2==a)return t;if(1==a)return r;break;case 24939:case 24941:case 25192:case 26729:case 27758:case 28007:case 29801:case 29804:case 30561:case 6711660:case 6780279:case 7238511:if(a>=0&&a<=1)return r;break;case 7633517:if(a>=0&&a<=1||a>=11&&a<=99)return r;break;case 24934:case 25191:case 25198:case 25441:case 25697:case 25701:case 25718:case 25957:case 25964:case 25966:case 25967:case 25971:case 25972:case 25973:case 26217:case 26223:case 26233:case 26476:case 26485:case 26721:case 26995:case 26996:case 27499:case 27500:case 27507:case 27509:case 27513:case 27746:case 27751:case 28012:case 28014:case 28018:case 28258:case 28260:case 28261:case 28268:case 28270:case 28271:case 28274:case 28281:case 28525:case 28530:case 28531:case 28769:case 28787:case 28788:case 29293:case 29550:case 29551:case 29553:case 29555:case 29556:case 29558:case 29559:case 29793:case 29797:case 29803:case 29806:case 29811:case 30066:case 30309:case 30319:case 30824:case 31349:case 6386529:case 6386548:case 6448493:case 6448506:case 6451832:case 6514535:case 6514802:case 6515554:case 6714738:case 6779767:case 6840695:case 6973295:case 6974819:case 7037290:case 7037799:case 7039850:case 7041890:case 7168371:case 7169903:case 7233896:case 7237224:case 7240046:case 7364976:case 7499622:case 7501675:case 7561585:case 7562600:case 7566201:case 7567730:case 7628143:case 7629159:case 7763310:case 7823717:case 7892839:if(1==a)return r;break;case 24946:if(2==a)return t;if(1==a)return r;if(0==a)return c;if(a%100>=3&&a%100<=10)return n;if(a%100>=11&&a%100<=99)return u}return"other"}const f={PluralRules:class{constructor(e){this.select=i.bind(null,function(e){let a=0;for(let s=0;s<e.length;++s)a=(a<<8)+e.charCodeAt(s);return a}(e))}}}}}]);
//# sourceMappingURL=642.be93122d1116ecdc9322.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
"use strict";(this.webpackChunktweb=this.webpackChunktweb||[]).push([[77],{7077:(t,a,e)=>{e.r(a),e.d(a,{default:()=>o});const r=[1,57,41,21,203,34,97,73,227,91,149,62,105,45,39,137,241,107,3,173,39,71,65,238,219,101,187,87,81,151,141,133,249,117,221,209,197,187,177,169,5,153,73,139,133,127,243,233,223,107,103,99,191,23,177,171,165,159,77,149,9,139,135,131,253,245,119,231,224,109,211,103,25,195,189,23,45,175,171,83,81,79,155,151,147,9,141,137,67,131,129,251,123,30,235,115,113,221,217,53,13,51,50,49,193,189,185,91,179,175,43,169,83,163,5,79,155,19,75,147,145,143,35,69,17,67,33,65,255,251,247,243,239,59,29,229,113,111,219,27,213,105,207,51,201,199,49,193,191,47,93,183,181,179,11,87,43,85,167,165,163,161,159,157,155,77,19,75,37,73,145,143,141,35,138,137,135,67,33,131,129,255,63,250,247,61,121,239,237,117,29,229,227,225,111,55,109,216,213,211,209,207,205,203,201,199,197,195,193,48,190,47,93,185,183,181,179,178,176,175,173,171,85,21,167,165,41,163,161,5,79,157,78,154,153,19,75,149,74,147,73,144,143,71,141,140,139,137,17,135,134,133,66,131,65,129,1],f=[0,9,10,10,14,12,14,14,16,15,16,15,16,15,15,17,18,17,12,18,16,17,17,19,19,18,19,18,18,19,19,19,20,19,20,20,20,20,20,20,15,20,19,20,20,20,21,21,21,20,20,20,21,18,21,21,21,21,20,21,17,21,21,21,22,22,21,22,22,21,22,21,19,22,22,19,20,22,22,21,21,21,22,22,22,18,22,22,21,22,22,23,22,20,23,22,22,23,23,21,19,21,21,21,23,23,23,22,23,23,21,23,22,23,18,22,23,20,22,23,23,23,21,22,20,22,21,22,24,24,24,24,24,22,21,24,23,23,24,21,24,23,24,22,24,24,22,24,24,22,23,24,24,24,20,23,22,23,24,24,24,24,24,24,24,23,21,23,22,23,24,24,24,22,24,24,24,23,22,24,24,25,23,25,25,23,24,25,25,24,22,25,25,25,24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,23,25,23,24,25,25,25,25,25,25,25,25,25,24,22,25,25,23,25,25,20,24,25,24,25,25,22,24,25,24,25,24,25,25,24,25,25,25,25,22,25,25,25,24,25,24,25,18];function o(t,a,e,o,u,s,i){if(Number.isNaN(s)||s<1)return;s|=0,Number.isNaN(i)&&(i=1),(i|=0)>3&&(i=3),i<1&&(i=1);const n=t.getImageData(a,e,o,u),b=n.data;let c,N,h,k,m,p,w,d,g,l,C,D,I=o-1,j=u-1,q=s+1,v=[],x=[],y=[],z=r[s],A=f[s],B=[],E=[];for(;i-- >0;){for(D=C=0,m=0;m<u;m++){for(c=b[D]*q,N=b[D+1]*q,h=b[D+2]*q,p=1;p<=s;p++)w=D+((p>I?I:p)<<2),c+=b[w++],N+=b[w++],h+=b[w++];for(k=0;k<o;k++)v[C]=c,x[C]=N,y[C]=h,0==m&&(B[k]=((w=k+q)<I?w:I)<<2,E[k]=(w=k-s)>0?w<<2:0),d=D+B[k],g=D+E[k],c+=b[d++]-b[g++],N+=b[d++]-b[g++],h+=b[d++]-b[g++],C++;D+=o<<2}for(k=0;k<o;k++){for(l=k,c=v[l]*q,N=x[l]*q,h=y[l]*q,p=1;p<=s;p++)l+=p>j?0:o,c+=v[l],N+=x[l],h+=y[l];for(C=k<<2,m=0;m<u;m++)b[C]=c*z>>>A,b[C+1]=N*z>>>A,b[C+2]=h*z>>>A,0==k&&(B[m]=((w=m+q)<j?w:j)*o,E[m]=(w=m-s)>0?w*o:0),d=k+B[m],g=k+E[m],c+=v[d]-v[g],N+=x[d]-x[g],h+=y[d]-y[g],C+=o<<2}}t.putImageData(n,a,e)}}}]);
//# sourceMappingURL=77.b8cf11d2b5dca36479ca.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More