From 1597f86aa330e99edef1d114db4a1c40b2d2d88e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Espino=20Garc=C3=ADa?= Date: Wed, 7 Sep 2022 11:55:31 +0200 Subject: [PATCH] Add fallback to rest on websocket reconnect (#6624) --- app/actions/websocket/index.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/actions/websocket/index.ts b/app/actions/websocket/index.ts index 6ed8aae4c3..085abb1fd4 100644 --- a/app/actions/websocket/index.ts +++ b/app/actions/websocket/index.ts @@ -45,7 +45,7 @@ import {getCurrentUser} from '@queries/servers/user'; import {dismissAllModals, popToRoot} from '@screens/navigation'; import NavigationStore from '@store/navigation_store'; import {isTablet} from '@utils/helpers'; -import {logInfo} from '@utils/log'; +import {logDebug, logInfo} from '@utils/log'; import {handleCategoryCreatedEvent, handleCategoryDeletedEvent, handleCategoryOrderUpdatedEvent, handleCategoryUpdatedEvent} from './category'; import {handleChannelConvertedEvent, handleChannelCreatedEvent, @@ -127,9 +127,6 @@ async function doReconnectRest(serverUrl: string, operator: ServerDataOperator, const currentChannel = await getCurrentChannel(database); const currentActiveServerUrl = await getActiveServerUrl(DatabaseManager.appDatabase!.database); - if (serverUrl === currentActiveServerUrl) { - DeviceEventEmitter.emit(Events.FETCHING_POSTS, true); - } const entryData = await entry(serverUrl, currentTeam?.id, currentChannel?.id, lastDisconnectedAt); if ('error' in entryData) { if (serverUrl === currentActiveServerUrl) { @@ -199,8 +196,17 @@ async function doReconnect(serverUrl: string) { license = system.license; } + const currentActiveServerUrl = await getActiveServerUrl(DatabaseManager.appDatabase!.database); + if (serverUrl === currentActiveServerUrl) { + DeviceEventEmitter.emit(Events.FETCHING_POSTS, true); + } + if (config.FeatureFlagGraphQL === 'true') { - await graphQLCommon(serverUrl, true, system.currentTeamId, system.currentChannelId); + const {error} = await graphQLCommon(serverUrl, true, system.currentTeamId, system.currentChannelId); + if (error) { + logDebug('Error using GraphQL, trying REST', error); + await doReconnectRest(serverUrl, operator, system.currentTeamId, system.currentUserId, config, license, lastDisconnectedAt); + } } else { await doReconnectRest(serverUrl, operator, system.currentTeamId, system.currentUserId, config, license, lastDisconnectedAt); }