From 2c6bd001281a1c48d0c6bcb28cd6b258de95c5d7 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Fri, 13 May 2022 11:36:30 -0400 Subject: [PATCH] Set 5s as default timeout for ping (#6271) --- app/actions/remote/general.ts | 5 +++-- app/client/rest/base.ts | 4 ++++ app/client/rest/general.ts | 6 +++--- types/api/client.d.ts | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/actions/remote/general.ts b/app/actions/remote/general.ts index ba9c6eca2c..28fa60e215 100644 --- a/app/actions/remote/general.ts +++ b/app/actions/remote/general.ts @@ -35,7 +35,8 @@ async function getDeviceIdForPing(serverUrl: string, checkDeviceId: boolean) { return getDeviceToken(appDatabase); } -export const doPing = async (serverUrl: string, verifyPushProxy: boolean) => { +// Default timeout interval for ping is 5 seconds +export const doPing = async (serverUrl: string, verifyPushProxy: boolean, timeoutInterval = 5) => { let client: Client; try { client = await NetworkManager.createClient(serverUrl); @@ -57,7 +58,7 @@ export const doPing = async (serverUrl: string, verifyPushProxy: boolean) => { let response: ClientResponse; try { - response = await client.ping(deviceId); + response = await client.ping(deviceId, timeoutInterval); if (response.code === 401) { // Don't invalidate the client since we want to eventually diff --git a/app/client/rest/base.ts b/app/client/rest/base.ts index 079c0178ed..2f769db583 100644 --- a/app/client/rest/base.ts +++ b/app/client/rest/base.ts @@ -244,6 +244,10 @@ export default class ClientBase { retryLimit: 0, }; } + if (options.timeoutInterval) { + requestOptions.timeoutInterval = options.timeoutInterval; + } + let response: ClientResponse; try { response = await request!(url, requestOptions); diff --git a/app/client/rest/general.ts b/app/client/rest/general.ts index ed44a159f3..c5486d34ff 100644 --- a/app/client/rest/general.ts +++ b/app/client/rest/general.ts @@ -7,7 +7,7 @@ import ClientError from './error'; export interface ClientGeneralMix { getOpenGraphMetadata: (url: string) => Promise; - ping: (deviceId?: string) => Promise; + ping: (deviceId?: string, timeoutInterval?: number) => Promise; logClientError: (message: string, level?: string) => Promise; getClientConfigOld: () => Promise; getClientLicenseOld: () => Promise; @@ -25,14 +25,14 @@ const ClientGeneral = (superclass: any) => class extends superclass { ); }; - ping = async (deviceId?: string) => { + ping = async (deviceId?: string, timeoutInterval?: number) => { let url = `${this.urlVersion}/system/ping?time=${Date.now()}`; if (deviceId) { url = `${url}&device_id=${deviceId}`; } return this.doFetch( url, - {method: 'get'}, + {method: 'get', timeoutInterval}, false, ); }; diff --git a/types/api/client.d.ts b/types/api/client.d.ts index 1402eb2e91..e99bfb8d6d 100644 --- a/types/api/client.d.ts +++ b/types/api/client.d.ts @@ -7,6 +7,7 @@ type ClientOptions = { body?: any; method?: string; noRetry?: boolean; + timeoutInterval?: number; }; interface ClientErrorProps extends Error {