From 15e4cc25c03032df0a4e541a2f1b8533308c3b0b Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Wed, 23 Jun 2021 17:44:06 +0300 Subject: [PATCH] More fixes for broken sessions --- src/api/gramjs/methods/client.ts | 27 ++++++++++++++-------- src/lib/gramjs/client/TelegramClient.js | 7 +++++- src/modules/actions/api/initial.ts | 8 +++++-- src/modules/actions/apiUpdaters/initial.ts | 6 ++--- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/api/gramjs/methods/client.ts b/src/api/gramjs/methods/client.ts index 50dd64bab..89d2f826e 100644 --- a/src/api/gramjs/methods/client.ts +++ b/src/api/gramjs/methods/client.ts @@ -70,15 +70,24 @@ export async function init(_onUpdate: OnApiUpdate, initialArgs: ApiInitialArgs) console.log('[GramJs/client] CONNECTING'); } - await client.start({ - phoneNumber: onRequestPhoneNumber, - phoneCode: onRequestCode, - password: onRequestPassword, - firstAndLastNames: onRequestRegistration, - qrCode: onRequestQrCode, - onError: onAuthError, - initialMethod: 'qrCode', - }); + try { + await client.start({ + phoneNumber: onRequestPhoneNumber, + phoneCode: onRequestCode, + password: onRequestPassword, + firstAndLastNames: onRequestRegistration, + qrCode: onRequestQrCode, + onError: onAuthError, + initialMethod: 'qrCode', + }); + } catch (err) { + onUpdate({ + '@type': 'updateConnectionState', + connectionState: 'connectionStateBroken', + }); + + return; + } if (DEBUG) { // eslint-disable-next-line no-console diff --git a/src/lib/gramjs/client/TelegramClient.js b/src/lib/gramjs/client/TelegramClient.js index 8617de5fb..2e1406b12 100644 --- a/src/lib/gramjs/client/TelegramClient.js +++ b/src/lib/gramjs/client/TelegramClient.js @@ -244,7 +244,12 @@ class TelegramClient { * @returns {Promise} */ async destroy() { - await this.disconnect(); + try { + await this.disconnect(); + } catch (err) { + // Do nothing + } + this.session.delete(); this._eventBuilders = []; } diff --git a/src/modules/actions/api/initial.ts b/src/modules/actions/api/initial.ts index dbf0f80bc..928e837a0 100644 --- a/src/modules/actions/api/initial.ts +++ b/src/modules/actions/api/initial.ts @@ -126,8 +126,12 @@ addReducer('saveSession', (global, actions, payload) => { addReducer('signOut', () => { (async () => { - await unsubscribe(); - await callApi('destroy'); + try { + await unsubscribe(); + await callApi('destroy'); + } catch (err) { + // Do nothing + } getDispatch().reset(); })(); diff --git a/src/modules/actions/apiUpdaters/initial.ts b/src/modules/actions/apiUpdaters/initial.ts index 3d85f6c40..14010ee3e 100644 --- a/src/modules/actions/apiUpdaters/initial.ts +++ b/src/modules/actions/apiUpdaters/initial.ts @@ -150,13 +150,13 @@ function onUpdateConnectionState(update: ApiUpdateConnectionState) { } function onUpdateSession(update: ApiUpdateSession) { + const { sessionData } = update; const { authRememberMe, authState } = getGlobal(); - if (!authRememberMe || authState !== 'authorizationStateReady') { + + if (!authRememberMe || (sessionData && authState !== 'authorizationStateReady')) { return; } - const { sessionData } = update; - getDispatch().saveSession({ sessionData }); }