Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.0 KiB
64 lines
2.0 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
import {putPreloader} from '../components/putPreloader'; |
|
import App from '../config/app'; |
|
import {STATE_INIT} from '../config/state'; |
|
import rootScope from '../lib/rootScope'; |
|
import {AuthState} from '../types'; |
|
import Page from './page'; |
|
|
|
let data: AuthState.signImport['data']; |
|
|
|
const importWebToken = async() => { |
|
const {dcId, token, tgAddr} = data; |
|
let mountPageAfter: Promise<{default: Page}>; |
|
try { |
|
rootScope.managers.apiManager.setBaseDcId(dcId); |
|
const authorization = await rootScope.managers.apiManager.invokeApi('auth.importWebTokenAuthorization', { |
|
api_id: App.id, |
|
api_hash: App.hash, |
|
web_auth_token: token |
|
}, {dcId, ignoreErrors: true}); |
|
|
|
if(authorization._ === 'auth.authorization') { |
|
rootScope.managers.apiManager.setUser(authorization.user); |
|
mountPageAfter = import('./pageIm'); |
|
// return; |
|
} |
|
} catch(err) { |
|
switch((err as ApiError).type) { |
|
case 'SESSION_PASSWORD_NEEDED': { |
|
(err as ApiError).handled = true; |
|
mountPageAfter = import('./pagePassword'); |
|
break; |
|
} |
|
|
|
default: { |
|
console.error('authorization import error:', err); |
|
const defaultState = STATE_INIT.authState._; |
|
if(defaultState === 'authStateSignIn') mountPageAfter = import('./pageSignIn'); |
|
else if(defaultState === 'authStateSignQr') mountPageAfter = import('./pageSignQR'); |
|
break; |
|
} |
|
} |
|
} |
|
|
|
location.hash = tgAddr?.trim() ? '#?tgaddr=' + encodeURIComponent(tgAddr) : ''; |
|
if(mountPageAfter) { |
|
mountPageAfter.then((m) => m.default.mount()); |
|
} |
|
}; |
|
|
|
const page = new Page('page-signImport', true, () => { |
|
putPreloader(page.pageEl.firstElementChild, true); |
|
importWebToken(); |
|
}, (_data: typeof data) => { |
|
data = _data; |
|
rootScope.managers.appStateManager.pushToState('authState', {_: 'authStateSignImport', data}); |
|
}); |
|
|
|
export default page;
|
|
|