From a005aa8a2e540e9f98428be41230840a9342c54f Mon Sep 17 00:00:00 2001 From: Vincent Date: Wed, 8 Jul 2020 11:41:30 +1000 Subject: [PATCH] onLoading join --- .../session/LeftPaneMessageSection.tsx | 18 +++++++----------- ts/session/types/OpenGroup.ts | 12 +++++++++--- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ts/components/session/LeftPaneMessageSection.tsx b/ts/components/session/LeftPaneMessageSection.tsx index 4a3d3ade3..d32f819e1 100644 --- a/ts/components/session/LeftPaneMessageSection.tsx +++ b/ts/components/session/LeftPaneMessageSection.tsx @@ -462,7 +462,6 @@ export class LeftPaneMessageSection extends React.Component { return; } - // Already connected? if (Boolean(await OpenGroup.getConversation(serverUrl))) { window.pushToast({ @@ -474,15 +473,12 @@ export class LeftPaneMessageSection extends React.Component { return; } - const successPromise = OpenGroup.join(serverUrl); - const timeoutPromise = new Promise((_resolve, reject) => - // tslint:disable-next-line: no-unnecessary-callback-wrapper no-void-expression - setTimeout(() => reject(), window.CONSTANTS.MAX_CONNECTION_DURATION) - ); + // Connect to server + const successPromise = OpenGroup.join(serverUrl, () => { + this.setState({ loading: true }); + }); - // Connect to server with timeout. - this.setState({ loading: true }); - await Promise.race([successPromise, timeoutPromise]).then(() => { + successPromise.then(() => { this.handleToggleOverlay(undefined); this.setState({ loading: false, @@ -501,8 +497,8 @@ export class LeftPaneMessageSection extends React.Component { }); window.pushToast({ - title: window.i18n('attemptedConnectionTimeout'), - id: 'attemptedConnectionTimeout', + title: window.i18n('connectToServerFail'), + id: 'connectToServerFail', type: 'error', }); }); diff --git a/ts/session/types/OpenGroup.ts b/ts/session/types/OpenGroup.ts index 45c4f31d1..44a6cb661 100644 --- a/ts/session/types/OpenGroup.ts +++ b/ts/session/types/OpenGroup.ts @@ -70,7 +70,9 @@ export class OpenGroup { return new OpenGroup(openGroupParams); } - public static async join(server: string): Promise { + public static async join(server: string, onLoading?: any): Promise { + // onLoading called when the server begins connecting - after passing every guard + const prefixedServer = OpenGroup.prefixify(server); if (!OpenGroup.validate(server)) { return; @@ -94,12 +96,16 @@ export class OpenGroup { } } + // Try to connect to server try { + if (onLoading) { + onLoading(); + } + conversation = await window.attemptConnection(prefixedServer, channel); conversationId = conversation?.cid; } catch (e) { - console.warn(e); - return; + throw new Error(e); } // Do we want to add conversation as a property of OpenGroup?