Commit f86d1e2
committed
feat: QR code login option in the web login page
The QR login plumbing (CallQrGenerator wrapping LoginWithQRCode, QR
rendering in Index) existed but nothing invoked it, and it could not
have worked from the web anyway: when the account has 2FA,
LoginWithQRCode asks for the password through Config("password"), which
with the convenience constructor prompts on the console - QR login only
worked when driving the library from a terminal.
Wire it end to end:
- The main client is now built with a custom config callback that
routes the "password" request to the web UI: a QrPasswordNeeded event
switches the login form to the 2FA password step and the value is
handed back to the waiting login task, which blocks on a
TaskCompletionSource (5 minute timeout) on its background thread.
- The login page offers "Log in with QR code" next to the phone step:
it shows the tg://login QR (auto-refreshed by the library when each
token expires), instructions and a back button; on success the shared
post-login initialization runs and navigation proceeds as with the
normal flow.
- DoLogin's post-login tail is extracted into CompleteLogin, reused by
the QR flow.
- checkAuth: when a session exists but no user data file is saved (the
QR case - there is no phone to save), attempt a silent session
restore via DoLogin(null) instead of always bouncing to the phone
step, so QR sessions survive app restarts.1 parent 0715286 commit f86d1e2
3 files changed
Lines changed: 165 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
177 | 190 | | |
178 | 191 | | |
179 | 192 | | |
| |||
585 | 598 | | |
586 | 599 | | |
587 | 600 | | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
588 | 630 | | |
589 | 631 | | |
590 | | - | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
591 | 636 | | |
592 | 637 | | |
593 | 638 | | |
| |||
632 | 677 | | |
633 | 678 | | |
634 | 679 | | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
635 | 690 | | |
636 | 691 | | |
637 | 692 | | |
| |||
696 | 751 | | |
697 | 752 | | |
698 | 753 | | |
699 | | - | |
700 | | - | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
701 | 768 | | |
702 | 769 | | |
703 | 770 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
| |||
81 | 85 | | |
82 | 86 | | |
83 | 87 | | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
84 | 97 | | |
85 | 98 | | |
86 | 99 | | |
| |||
98 | 111 | | |
99 | 112 | | |
100 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
101 | 120 | | |
102 | 121 | | |
103 | 122 | | |
| |||
119 | 138 | | |
120 | 139 | | |
121 | 140 | | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
122 | 147 | | |
123 | 148 | | |
124 | 149 | | |
| |||
248 | 273 | | |
249 | 274 | | |
250 | 275 | | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
251 | 335 | | |
252 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
253 | 345 | | |
254 | 346 | | |
255 | 347 | | |
| |||
308 | 400 | | |
309 | 401 | | |
310 | 402 | | |
| 403 | + | |
311 | 404 | | |
312 | 405 | | |
313 | 406 | | |
| |||
0 commit comments