tweb/public/810.aad7a584f7c8c739c66e.ch...

1 line
14 KiB
Plaintext

{"version":3,"file":"810.aad7a584f7c8c739c66e.chunk.js","mappings":"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","sources":["webpack://tweb/./src/pages/pageSignIn.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 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"],"names":["btnQr","btnNext","page","inputWrapper","document","createElement","lastCountrySelected","lastCountryCodeSelected","classList","add","countryInputField","onCountryChange","country","code","telInputField","value","lastValue","country_code","setTimeout","telEl","focus","onInput","formatted","countryName","name","default_name","override","length","style","visibility","input","addEventListener","e","key","onSubmit","signedCheckboxField","text","withRipple","checked","keepSigned","then","state","label","toggle","phone_number","api_id","api_hash","settings","_","pFlags","authorization","user","m","default","mount","Object","assign","catch","err","type","setError","console","error","innerText","append","container","h4","subtitle","pageEl","querySelector","nearestDcResult","langPack","countries","hash","lang_code","simulateInputEvent","dcs","Set","done","this_dc","promise","nearest_dc","push","Promise","resolve","forEach","dcId","delete","_dcs","g","shift","dbKey","finally","selectCountryByIso2","undefined","removeAttribute"],"sourceRoot":""}