tweb/public/53.40d79ab9d14e8d83cf01.chu...

1 line
41 KiB
Plaintext

{"version":3,"file":"53.40d79ab9d14e8d83cf01.chunk.js","mappings":"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","sources":["webpack://tweb/./src/components/languageChangeButton.ts","webpack://tweb/./src/pages/pageAuthCode.ts","webpack://tweb/./src/pages/pageSignIn.ts","webpack://tweb/./src/helpers/bytes/bytesToBase64.ts","webpack://tweb/./src/pages/pageSignQR.ts","webpack://tweb/./src/helpers/fixBase64String.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 cancelEvent from '../helpers/dom/cancelEvent';\nimport {attachClickEvent} from '../helpers/dom/clickEvent';\nimport loadFonts from '../helpers/dom/loadFonts';\nimport {Config, LangPackDifference, LangPackString} from '../layer';\nimport I18n, {LangPackKey} from '../lib/langPack';\nimport rootScope from '../lib/rootScope';\nimport Button from './button';\nimport {putPreloader} from './putPreloader';\n\nlet set = false;\n\nfunction getLang(): Promise<[Config.config, LangPackString[], LangPackDifference.langPackDifference]> {\n if(cachedPromise) return cachedPromise;\n return cachedPromise = rootScope.managers.apiManager.getConfig().then((config) => {\n if(config.suggested_lang_code !== I18n.lastRequestedLangCode) {\n // I18n.loadLangPack(config.suggested_lang_code);\n\n return Promise.all([\n config,\n I18n.getStrings(config.suggested_lang_code, ['Login.ContinueOnLanguage']),\n I18n.getCacheLangPack()\n ]);\n } else {\n return [] as any;\n }\n });\n}\n\nlet cachedPromise: ReturnType<typeof getLang>;\n\nexport default function getLanguageChangeButton(appendTo: HTMLElement) {\n if(set) return;\n getLang().then(([config, strings]) => {\n if(!config) {\n return;\n }\n\n const backup: LangPackString[] = [];\n strings.forEach((string) => {\n const backupString = I18n.strings.get(string.key as LangPackKey);\n if(!backupString) {\n return;\n }\n\n backup.push(backupString);\n I18n.strings.set(string.key as LangPackKey, string);\n });\n\n const key: LangPackKey = 'Login.ContinueOnLanguage';\n const btnChangeLanguage = Button('btn-primary btn-secondary btn-primary-transparent primary', {text: key});\n btnChangeLanguage.lastElementChild.classList.remove('i18n'); // prevent changing language\n loadFonts({text: [I18n.format(key, true)]}).then(() => {\n window.requestAnimationFrame(() => {\n appendTo.append(btnChangeLanguage);\n });\n });\n\n rootScope.addEventListener('language_change', () => {\n btnChangeLanguage.remove();\n }, {once: true});\n\n backup.forEach((string) => {\n I18n.strings.set(string.key as LangPackKey, string);\n });\n\n attachClickEvent(btnChangeLanguage, (e) => {\n cancelEvent(e);\n\n set = true;\n\n btnChangeLanguage.disabled = true;\n putPreloader(btnChangeLanguage);\n\n I18n.getLangPack(config.suggested_lang_code);\n });\n });\n}\n","/*\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 mediaSizes from '../helpers/mediaSizes';\nimport {AuthSentCode, AuthSentCodeType, AuthSignIn} from '../layer';\nimport Page from './page';\nimport pageSignIn from './pageSignIn';\nimport TrackingMonkey from '../components/monkeys/tracking';\nimport CodeInputField from '../components/codeInputField';\nimport {i18n, LangPackKey} from '../lib/langPack';\nimport {randomLong} from '../helpers/random';\nimport replaceContent from '../helpers/dom/replaceContent';\nimport rootScope from '../lib/rootScope';\nimport lottieLoader from '../lib/rlottie/lottieLoader';\nimport RLottiePlayer from '../lib/rlottie/rlottiePlayer';\nimport setBlankToAnchor from '../lib/richTextProcessor/setBlankToAnchor';\nimport {attachClickEvent} from '../helpers/dom/clickEvent';\n\nlet authSentCode: AuthSentCode.authSentCode = null;\n\nlet headerElement: HTMLHeadElement = null;\nlet sentTypeElement: HTMLParagraphElement = null;\nlet codeInput: HTMLInputElement, codeInputField: CodeInputField;\nlet monkey: TrackingMonkey, player: RLottiePlayer;\n\nconst cleanup = () => {\n setTimeout(() => {\n monkey?.remove();\n player?.remove();\n }, 300);\n};\n\nconst submitCode = (code: string) => {\n codeInput.setAttribute('disabled', 'true');\n\n const params: AuthSignIn = {\n phone_number: authSentCode.phone_number,\n phone_code_hash: authSentCode.phone_code_hash,\n phone_code: code\n };\n\n // console.log('invoking auth.signIn with params:', params);\n\n rootScope.managers.apiManager.invokeApi('auth.signIn', params, {ignoreErrors: true})\n .then((response) => {\n // console.log('auth.signIn response:', response);\n\n switch(response._) {\n case 'auth.authorization':\n rootScope.managers.apiManager.setUser(response.user);\n\n import('./pageIm').then((m) => {\n m.default.mount();\n });\n cleanup();\n break;\n case 'auth.authorizationSignUpRequired':\n // console.log('Registration needed!');\n\n import('./pageSignUp').then((m) => {\n m.default.mount({\n 'phone_number': authSentCode.phone_number,\n 'phone_code_hash': authSentCode.phone_code_hash\n });\n });\n\n cleanup();\n break;\n /* default:\n codeInput.innerText = response._;\n break; */\n }\n }).catch(async(err) => {\n let good = false;\n switch(err.type) {\n case 'SESSION_PASSWORD_NEEDED':\n // console.warn('pageAuthCode: SESSION_PASSWORD_NEEDED');\n good = true;\n err.handled = true;\n await (await import('./pagePassword')).default.mount(); // lol\n setTimeout(() => {\n codeInput.value = '';\n }, 300);\n break;\n case 'PHONE_CODE_EXPIRED':\n codeInput.classList.add('error');\n replaceContent(codeInputField.label, i18n('PHONE_CODE_EXPIRED'));\n break;\n case 'PHONE_CODE_EMPTY':\n case 'PHONE_CODE_INVALID':\n codeInput.classList.add('error');\n replaceContent(codeInputField.label, i18n('PHONE_CODE_INVALID'));\n break;\n default:\n codeInputField.label.innerText = err.type;\n break;\n }\n\n if(!good) {\n codeInputField.select();\n }\n\n codeInput.removeAttribute('disabled');\n });\n};\n\nconst onFirstMount = () => {\n page.pageEl.querySelector('.input-wrapper').append(codeInputField.container);\n\n const editButton = page.pageEl.querySelector('.phone-edit') as HTMLElement;\n attachClickEvent(editButton, () => {\n return pageSignIn.mount();\n });\n};\n\nconst getAnimation = () => {\n const imageDiv = page.pageEl.querySelector('.auth-image') as HTMLDivElement;\n const size = mediaSizes.isMobile ? 100 : 166;\n if(authSentCode.type._ === 'auth.sentCodeTypeFragmentSms') {\n if(imageDiv.firstElementChild) {\n monkey?.remove();\n monkey = undefined;\n imageDiv.replaceChildren();\n }\n\n const container = document.createElement('div');\n container.classList.add('media-sticker-wrapper');\n imageDiv.append(container);\n return lottieLoader.loadAnimationAsAsset({\n container: container,\n loop: true,\n autoplay: true,\n width: size,\n height: size\n }, 'jolly_roger').then((animation) => {\n player = animation;\n return lottieLoader.waitForFirstFrame(animation);\n }).then(() => {});\n } else {\n if(imageDiv.firstElementChild) {\n player?.remove();\n player = undefined;\n imageDiv.replaceChildren();\n }\n\n monkey = new TrackingMonkey(codeInputField, size);\n imageDiv.append(monkey.container);\n return monkey.load();\n }\n};\n\nconst page = new Page('page-authCode', true, onFirstMount, (_authCode: typeof authSentCode) => {\n authSentCode = _authCode;\n\n if(!headerElement) {\n headerElement = page.pageEl.getElementsByClassName('phone')[0] as HTMLHeadElement;\n sentTypeElement = page.pageEl.getElementsByClassName('sent-type')[0] as HTMLParagraphElement;\n } else {\n codeInput.value = '';\n\n const evt = document.createEvent('HTMLEvents');\n evt.initEvent('input', false, true);\n codeInput.dispatchEvent(evt);\n }\n\n const CODE_LENGTH = (authSentCode.type as AuthSentCodeType.authSentCodeTypeApp).length;\n if(!codeInputField) {\n codeInputField = new CodeInputField({\n label: 'Code',\n name: randomLong(),\n length: CODE_LENGTH,\n onFill: (code) => {\n submitCode(code);\n }\n });\n\n codeInput = codeInputField.input as HTMLInputElement;\n }\n\n codeInputField.options.length = CODE_LENGTH;\n\n headerElement.innerText = authSentCode.phone_number;\n let key: LangPackKey, args: any[];\n const authSentCodeType = authSentCode.type;\n switch(authSentCodeType._) {\n case 'auth.sentCodeTypeSms':\n key = 'Login.Code.SentSms';\n break;\n case 'auth.sentCodeTypeApp':\n key = 'Login.Code.SentInApp';\n break;\n case 'auth.sentCodeTypeCall':\n key = 'Login.Code.SentCall';\n break;\n case 'auth.sentCodeTypeFragmentSms':\n key = 'PhoneNumber.Code.Fragment.Info';\n const a = document.createElement('a');\n setBlankToAnchor(a);\n a.href = authSentCodeType.url;\n args = [a];\n break;\n default:\n key = 'Login.Code.SentUnknown';\n args = [authSentCodeType._];\n break;\n }\n\n replaceContent(sentTypeElement, i18n(key, args));\n\n rootScope.managers.appStateManager.pushToState('authState', {_: 'authStateAuthCode', sentCode: _authCode});\n\n return getAnimation();\n}, () => {\n codeInput.focus();\n});\n\nexport default page;\n","/*\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 Page from './page';\nimport CheckboxField from '../components/checkboxField';\nimport Button from '../components/button';\nimport IS_TOUCH_SUPPORTED from '../environment/touchSupport';\nimport App from '../config/app';\nimport I18n, {_i18n, i18n} from '../lib/langPack';\nimport lottieLoader from '../lib/rlottie/lottieLoader';\nimport ripple from '../components/ripple';\nimport pageSignQR from './pageSignQR';\nimport getLanguageChangeButton from '../components/languageChangeButton';\nimport cancelEvent from '../helpers/dom/cancelEvent';\nimport {attachClickEvent} from '../helpers/dom/clickEvent';\nimport replaceContent from '../helpers/dom/replaceContent';\nimport toggleDisability from '../helpers/dom/toggleDisability';\nimport sessionStorage from '../lib/sessionStorage';\nimport {DcAuthKey} from '../types';\nimport placeCaretAtEnd from '../helpers/dom/placeCaretAtEnd';\nimport {HelpCountry, HelpCountryCode} from '../layer';\nimport stateStorage from '../lib/stateStorage';\nimport rootScope from '../lib/rootScope';\nimport TelInputField from '../components/telInputField';\nimport apiManagerProxy from '../lib/mtproto/mtprotoworker';\nimport CountryInputField from '../components/countryInputField';\n\n// import _countries from '../countries_pretty.json';\nlet btnNext: HTMLButtonElement = null, btnQr: HTMLButtonElement;\n\nconst onFirstMount = () => {\n /* if(Modes.test) {\n Countries.push({\n _: 'help.country',\n default_name: 'Test Country',\n country_codes: [{\n _: 'help.countryCode',\n country_code: '999 66',\n patterns: ['999 66 XXX XX']\n }],\n iso2: 'KK'\n });\n\n console.log('Added test country to list!');\n } */\n\n // const countries: Country[] = _countries.default.filter((c) => c.emoji);\n // const countries: Country[] = Countries.filter((c) => c.emoji).sort((a, b) => a.name.localeCompare(b.name));\n // const countries = I18n.countriesList.filter((country) => !country.pFlags?.hidden);\n\n const inputWrapper = document.createElement('div');\n inputWrapper.classList.add('input-wrapper');\n\n let lastCountrySelected: HelpCountry, lastCountryCodeSelected: HelpCountryCode;\n const countryInputField = new CountryInputField({\n onCountryChange: (country, code) => {\n lastCountrySelected = country, lastCountryCodeSelected = code;\n\n if(!code) {\n return;\n }\n\n telInputField.value = telInputField.lastValue = '+' + code.country_code;\n setTimeout(() => {\n telEl.focus();\n placeCaretAtEnd(telEl, true);\n }, 0);\n }\n });\n\n const telInputField = new TelInputField({\n onInput: (formatted) => {\n lottieLoader.loadLottieWorkers();\n\n const {country, code} = formatted || {};\n const countryName = country ? country.name || country.default_name : ''/* 'Unknown' */;\n if(countryName !== countryInputField.value && (\n !lastCountrySelected ||\n !country ||\n !code || (\n lastCountrySelected !== country &&\n lastCountryCodeSelected.country_code !== code.country_code\n )\n )\n ) {\n countryInputField.override(country, code, countryName);\n }\n\n // if(country && (telInputField.value.length - 1) >= (country.pattern ? country.pattern.length : 9)) {\n if(country || (telInputField.value.length - 1) > 1) {\n btnNext.style.visibility = '';\n } else {\n btnNext.style.visibility = 'hidden';\n }\n }\n });\n\n const telEl = telInputField.input;\n\n telEl.addEventListener('keypress', (e) => {\n // console.log('keypress', this.value);\n if(!btnNext.style.visibility &&/* this.value.length >= 9 && */ e.key === 'Enter') {\n return onSubmit();\n }\n });\n\n /* telEl.addEventListener('focus', function(this: typeof telEl, e) {\n this.removeAttribute('readonly'); // fix autocomplete\n });*/\n\n const signedCheckboxField = new CheckboxField({\n text: 'Login.KeepSigned',\n name: 'keepSession',\n withRipple: true,\n checked: true\n });\n\n signedCheckboxField.input.addEventListener('change', () => {\n const keepSigned = signedCheckboxField.checked;\n rootScope.managers.appStateManager.pushToState('keepSigned', keepSigned);\n\n apiManagerProxy.toggleStorages(keepSigned, true);\n });\n\n apiManagerProxy.getState().then((state) => {\n if(!stateStorage.isAvailable()) {\n signedCheckboxField.checked = false;\n signedCheckboxField.label.classList.add('checkbox-disabled');\n } else {\n signedCheckboxField.checked = state.keepSigned;\n }\n });\n\n btnNext = Button('btn-primary btn-color-primary', {text: 'Login.Next'});\n btnNext.style.visibility = 'hidden';\n\n const onSubmit = (e?: Event) => {\n if(e) {\n cancelEvent(e);\n }\n\n const toggle = toggleDisability([/* telEl, countryInput, */btnNext, btnQr], true);\n\n replaceContent(btnNext, i18n('PleaseWait'));\n putPreloader(btnNext);\n\n // return;\n\n const phone_number = telInputField.value;\n rootScope.managers.apiManager.invokeApi('auth.sendCode', {\n phone_number: phone_number,\n api_id: App.id,\n api_hash: App.hash,\n settings: {\n _: 'codeSettings', // that's how we sending Type\n pFlags: {}\n }\n // lang_code: navigator.language || 'en'\n }).then((code) => {\n // console.log('got code', code);\n\n if(code._ === 'auth.sentCodeSuccess') {\n const {authorization} = code;\n if(authorization._ === 'auth.authorization') {\n rootScope.managers.apiManager.setUser(authorization.user);\n\n import('./pageIm').then((m) => {\n m.default.mount();\n });\n }\n }\n\n import('./pageAuthCode').then((m) => m.default.mount(Object.assign(code, {phone_number: phone_number})));\n }).catch((err) => {\n toggle();\n\n switch(err.type) {\n case 'PHONE_NUMBER_INVALID':\n telInputField.setError();\n replaceContent(telInputField.label, i18n('Login.PhoneLabelInvalid'));\n telEl.classList.add('error');\n replaceContent(btnNext, i18n('Login.Next'));\n break;\n default:\n console.error('auth.sendCode error:', err);\n btnNext.innerText = err.type;\n break;\n }\n });\n };\n\n attachClickEvent(btnNext, onSubmit);\n\n btnQr = Button('btn-primary btn-secondary btn-primary-transparent primary', {text: 'Login.QR.Login'});\n\n const qrMounted = false;\n btnQr.addEventListener('click', () => {\n pageSignQR.mount();\n /* const promise = import('./pageSignQR');\n btnQr.disabled = true;\n\n let preloaderDiv: HTMLElement;\n if(!qrMounted) {\n preloaderDiv = putPreloader(btnQr);\n qrMounted = true;\n }\n\n promise.then((module) => {\n module.default.mount();\n\n setTimeout(() => {\n btnQr.removeAttribute('disabled');\n if(preloaderDiv) {\n preloaderDiv.remove();\n }\n }, 200);\n }); */\n });\n\n inputWrapper.append(countryInputField.container, telInputField.container, signedCheckboxField.label, btnNext, btnQr);\n\n const h4 = document.createElement('h4');\n h4.classList.add('text-center');\n _i18n(h4, 'Login.Title');\n\n const subtitle = document.createElement('div');\n subtitle.classList.add('subtitle', 'text-center');\n _i18n(subtitle, 'Login.StartText');\n\n page.pageEl.querySelector('.container').append(h4, subtitle, inputWrapper);\n\n const tryAgain = () => {\n rootScope.managers.apiManager.invokeApi('help.getNearestDc').then((nearestDcResult) => {\n const langPack = stateStorage.getFromCache('langPack');\n if(langPack && !langPack.countries?.hash) {\n I18n.getLangPack(langPack.lang_code).then(() => {\n telInputField.simulateInputEvent();\n });\n }\n\n const dcs = new Set([1, 2, 3, 4, 5]);\n const done: number[] = [nearestDcResult.this_dc];\n\n let promise: Promise<any>;\n if(nearestDcResult.nearest_dc !== nearestDcResult.this_dc) {\n promise = rootScope.managers.apiManager.getNetworkerVoid(nearestDcResult.nearest_dc).then(() => {\n done.push(nearestDcResult.nearest_dc);\n });\n }\n\n (promise || Promise.resolve()).then(() => {\n done.forEach((dcId) => {\n dcs.delete(dcId);\n });\n\n const _dcs = [...dcs];\n const g = async(): Promise<void> => {\n const dcId = _dcs.shift();\n if(!dcId) return;\n\n const dbKey: DcAuthKey = `dc${dcId}_auth_key` as any;\n const key = await sessionStorage.get(dbKey);\n if(key) {\n return g();\n }\n\n setTimeout(() => { // * если одновременно запросить все нетворкеры, не будет проходить запрос на код\n rootScope.managers.apiManager.getNetworkerVoid(dcId/* , {fileDownload: true} */).finally(g);\n }, /* done.includes(dcId) ? 0 : */3000);\n };\n\n g();\n });\n\n return nearestDcResult;\n }).then((nearestDcResult) => {\n if(!countryInputField.value.length && !telInputField.value.length) {\n countryInputField.selectCountryByIso2(nearestDcResult.country);\n }\n\n // console.log('woohoo', nearestDcResult, country);\n })// .catch(tryAgain);\n };\n\n if(!IS_TOUCH_SUPPORTED) {\n setTimeout(() => {\n telEl.focus();\n }, 0);\n }\n\n getLanguageChangeButton(inputWrapper);\n\n tryAgain();\n};\n\nconst page = new Page('page-sign', true, onFirstMount, () => {\n if(btnNext) {\n replaceContent(btnNext, i18n('Login.Next'));\n ripple(btnNext, undefined, undefined, true);\n btnNext.removeAttribute('disabled');\n }\n\n if(btnQr) {\n btnQr.removeAttribute('disabled');\n }\n\n rootScope.managers.appStateManager.pushToState('authState', {_: 'authStateSignIn'});\n});\n\nexport default page;\n","export default function bytesToBase64(bytes: number[] | Uint8Array) {\n let mod3: number;\n let result = '';\n\n for(let nLen = bytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; ++nIdx) {\n mod3 = nIdx % 3;\n nUint24 |= bytes[nIdx] << (16 >>> mod3 & 24);\n if(mod3 === 2 || nLen - nIdx === 1) {\n result += String.fromCharCode(\n uint6ToBase64(nUint24 >>> 18 & 63),\n uint6ToBase64(nUint24 >>> 12 & 63),\n uint6ToBase64(nUint24 >>> 6 & 63),\n uint6ToBase64(nUint24 & 63)\n );\n nUint24 = 0;\n }\n }\n\n return result.replace(/A(?=A$|$)/g, '=');\n}\n\nexport function uint6ToBase64(nUint6: number) {\n return nUint6 < 26 ?\n nUint6 + 65 :\n nUint6 < 52 ?\n nUint6 + 71 :\n nUint6 < 62 ?\n nUint6 - 4 :\n nUint6 === 62 ?\n 43 :\n nUint6 === 63 ?\n 47 :\n 65;\n}\n","/*\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 type {DcId} from '../types';\nimport Page from './page';\nimport {AuthAuthorization, AuthLoginToken} from '../layer';\nimport App from '../config/app';\nimport Button from '../components/button';\nimport {_i18n, i18n, LangPackKey} from '../lib/langPack';\nimport rootScope from '../lib/rootScope';\nimport {putPreloader} from '../components/putPreloader';\nimport getLanguageChangeButton from '../components/languageChangeButton';\nimport pause from '../helpers/schedulers/pause';\nimport fixBase64String from '../helpers/fixBase64String';\nimport bytesCmp from '../helpers/bytes/bytesCmp';\nimport bytesToBase64 from '../helpers/bytes/bytesToBase64';\nimport textToSvgURL from '../helpers/textToSvgURL';\n\nconst FETCH_INTERVAL = 3;\n\nconst onFirstMount = async() => {\n const pageElement = page.pageEl;\n const imageDiv = pageElement.querySelector('.auth-image') as HTMLDivElement;\n\n let preloader = putPreloader(imageDiv, true);\n\n const inputWrapper = document.createElement('div');\n inputWrapper.classList.add('input-wrapper');\n\n const btnBack = Button('btn-primary btn-secondary btn-primary-transparent primary', {text: 'Login.QR.Cancel'});\n inputWrapper.append(btnBack);\n\n getLanguageChangeButton(inputWrapper);\n\n const container = imageDiv.parentElement;\n\n const h4 = document.createElement('h4');\n _i18n(h4, 'Login.QR.Title');\n\n const helpList = document.createElement('ol');\n helpList.classList.add('qr-description');\n (['Login.QR.Help1', 'Login.QR.Help2', 'Login.QR.Help3'] as LangPackKey[]).forEach((key) => {\n const li = document.createElement('li');\n li.append(i18n(key));\n helpList.append(li);\n });\n\n container.append(h4, helpList, inputWrapper);\n\n btnBack.addEventListener('click', () => {\n import('./pageSignIn').then((m) => m.default.mount());\n stop = true;\n });\n\n const results = await Promise.all([\n import('qr-code-styling' as any)\n ]);\n const QRCodeStyling = results[0].default;\n\n let stop = false;\n rootScope.addEventListener('user_auth', () => {\n stop = true;\n cachedPromise = null;\n }, {once: true});\n\n const options: {dcId?: DcId, ignoreErrors: true} = {ignoreErrors: true};\n let prevToken: Uint8Array | number[];\n\n const iterate = async(isLoop: boolean) => {\n try {\n let loginToken = await rootScope.managers.apiManager.invokeApi('auth.exportLoginToken', {\n api_id: App.id,\n api_hash: App.hash,\n except_ids: []\n }, {ignoreErrors: true});\n\n if(loginToken._ === 'auth.loginTokenMigrateTo') {\n if(!options.dcId) {\n options.dcId = loginToken.dc_id as DcId;\n rootScope.managers.apiManager.setBaseDcId(loginToken.dc_id);\n // continue;\n }\n\n loginToken = await rootScope.managers.apiManager.invokeApi('auth.importLoginToken', {\n token: loginToken.token\n }, options) as AuthLoginToken.authLoginToken;\n }\n\n if(loginToken._ === 'auth.loginTokenSuccess') {\n const authorization = loginToken.authorization as any as AuthAuthorization.authAuthorization;\n rootScope.managers.apiManager.setUser(authorization.user);\n import('./pageIm').then((m) => m.default.mount());\n return true;\n }\n\n /* // to base64\n var decoder = new TextDecoder('utf8');\n var b64encoded = btoa(String.fromCharCode.apply(null, [...loginToken.token])); */\n\n if(!prevToken || !bytesCmp(prevToken, loginToken.token)) {\n prevToken = loginToken.token;\n\n const encoded = bytesToBase64(loginToken.token);\n const url = 'tg://login?token=' + fixBase64String(encoded, true);\n\n const style = window.getComputedStyle(document.documentElement);\n const surfaceColor = style.getPropertyValue('--surface-color').trim();\n const textColor = style.getPropertyValue('--primary-text-color').trim();\n const primaryColor = style.getPropertyValue('--primary-color').trim();\n\n const logoUrl = await fetch('assets/img/logo_padded.svg')\n .then((res) => res.text())\n .then((text) => {\n text = text.replace(/(fill:).+?(;)/, `$1${primaryColor}$2`);\n return textToSvgURL(text);\n });\n\n const qrCode = new QRCodeStyling({\n width: 240 * window.devicePixelRatio,\n height: 240 * window.devicePixelRatio,\n data: url,\n image: logoUrl,\n dotsOptions: {\n color: textColor,\n type: 'rounded'\n },\n cornersSquareOptions: {\n type: 'extra-rounded'\n },\n imageOptions: {\n imageSize: 1,\n margin: 0\n },\n backgroundOptions: {\n color: surfaceColor\n },\n qrOptions: {\n errorCorrectionLevel: 'L'\n }\n });\n\n qrCode.append(imageDiv);\n (imageDiv.lastChild as HTMLCanvasElement).classList.add('qr-canvas');\n\n let promise: Promise<void>;\n if(qrCode._drawingPromise) {\n promise = qrCode._drawingPromise;\n } else {\n promise = Promise.race([\n pause(1000),\n new Promise<void>((resolve) => {\n qrCode._canvas._image.addEventListener('load', () => {\n window.requestAnimationFrame(() => resolve());\n }, {once: true});\n })\n ]);\n }\n\n // * это костыль, но библиотека не предоставляет никаких событий\n await promise.then(() => {\n if(preloader) {\n preloader.style.animation = 'hide-icon .4s forwards';\n\n const c = imageDiv.children[1] as HTMLElement;\n c.style.display = 'none';\n c.style.animation = 'grow-icon .4s forwards';\n setTimeout(() => {\n c.style.display = '';\n }, 150);\n\n setTimeout(() => {\n c.style.animation = '';\n }, 500);\n preloader = undefined;\n } else {\n Array.from(imageDiv.children).slice(0, -1).forEach((el) => {\n el.remove();\n });\n }\n });\n }\n\n if(isLoop) {\n const timestamp = Date.now() / 1000;\n const diff = loginToken.expires - timestamp - await rootScope.managers.timeManager.getServerTimeOffset();\n\n await pause(diff > FETCH_INTERVAL ? 1e3 * FETCH_INTERVAL : 1e3 * diff | 0);\n }\n } catch(err) {\n switch((err as ApiError).type) {\n case 'SESSION_PASSWORD_NEEDED':\n (err as ApiError).handled = true;\n import('./pagePassword').then((m) => m.default.mount());\n stop = true;\n cachedPromise = null;\n break;\n default:\n console.error('pageSignQR: default error:', err);\n stop = true;\n break;\n }\n\n return true;\n }\n\n return false;\n };\n\n // await iterate(false);\n\n return async() => {\n stop = false;\n\n do {\n if(stop) {\n break;\n }\n\n const needBreak = await iterate(true);\n if(needBreak) {\n break;\n }\n } while(true);\n };\n};\n\nlet cachedPromise: Promise<() => Promise<void>>;\nconst page = new Page('page-signQR', true, () => {\n return cachedPromise;\n}, () => {\n // console.log('onMount');\n if(!cachedPromise) cachedPromise = onFirstMount();\n cachedPromise.then((func) => {\n func();\n });\n\n rootScope.managers.appStateManager.pushToState('authState', {_: 'authStateSignQr'});\n});\n\nexport default page;\n","export default function fixBase64String(str: string, toUrl: boolean) {\n if(toUrl) {\n return str.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/\\=+$/, '');\n } else {\n return str.replace(/-/g, '+').replace(/_/g, '/');\n }\n}\n"],"names":["cachedPromise","set","getLanguageChangeButton","appendTo","then","config","suggested_lang_code","Promise","all","strings","backup","forEach","string","backupString","key","push","btnChangeLanguage","text","lastElementChild","classList","remove","window","requestAnimationFrame","append","once","e","disabled","codeInput","codeInputField","monkey","player","authSentCode","headerElement","sentTypeElement","cleanup","setTimeout","page","pageEl","querySelector","container","editButton","_authCode","value","evt","document","createEvent","initEvent","dispatchEvent","getElementsByClassName","CODE_LENGTH","type","length","args","label","name","onFill","code","setAttribute","params","phone_number","phone_code_hash","phone_code","ignoreErrors","response","_","user","m","default","mount","catch","err","good","handled","add","innerText","select","removeAttribute","submitCode","input","options","authSentCodeType","a","createElement","href","url","sentCode","imageDiv","size","firstElementChild","undefined","replaceChildren","loop","autoplay","width","height","animation","load","getAnimation","focus","btnQr","btnNext","inputWrapper","lastCountrySelected","lastCountryCodeSelected","countryInputField","onCountryChange","country","telInputField","lastValue","country_code","telEl","onInput","formatted","countryName","default_name","override","style","visibility","addEventListener","onSubmit","signedCheckboxField","withRipple","checked","keepSigned","state","toggle","api_id","api_hash","settings","pFlags","authorization","Object","assign","setError","console","error","h4","subtitle","nearestDcResult","langPack","countries","hash","lang_code","simulateInputEvent","dcs","Set","done","this_dc","promise","nearest_dc","resolve","dcId","delete","_dcs","g","shift","dbKey","finally","selectCountryByIso2","uint6ToBase64","nUint6","preloader","putPreloader","btnBack","parentElement","helpList","li","stop","QRCodeStyling","rootScope","prevToken","iterate","isLoop","loginToken","except_ids","dc_id","token","bytesCmp","bytes","mod3","result","nLen","nUint24","nIdx","String","fromCharCode","replace","bytesToBase64","getComputedStyle","documentElement","surfaceColor","getPropertyValue","trim","textColor","primaryColor","logoUrl","fetch","res","textToSvgURL","qrCode","devicePixelRatio","data","image","dotsOptions","color","cornersSquareOptions","imageOptions","imageSize","margin","backgroundOptions","qrOptions","errorCorrectionLevel","lastChild","_drawingPromise","race","pause","_canvas","_image","c","children","display","Array","from","slice","el","timestamp","Date","now","diff","expires","func"],"sourceRoot":""}