summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/lib/api-access-methods.ts
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2024-10-22 15:32:24 +0200
committerOskar <oskar@mullvad.net>2024-10-22 15:32:24 +0200
commit1ec8c9d6c4dc799fb0c6479cdc9dad438bf37129 (patch)
tree43caf1e9884496f64c2333648c16381eaa1cf18a /gui/src/renderer/lib/api-access-methods.ts
parent6533665d1fdf9a97e6ea1e36f01ee2f293b4338c (diff)
parentcf62ffdd17eac7958977895f098742c704aa3047 (diff)
downloadmullvadvpn-1ec8c9d6c4dc799fb0c6479cdc9dad438bf37129.tar.xz
mullvadvpn-1ec8c9d6c4dc799fb0c6479cdc9dad438bf37129.zip
Merge branch 'add-react-linter-rules'
Diffstat (limited to 'gui/src/renderer/lib/api-access-methods.ts')
-rw-r--r--gui/src/renderer/lib/api-access-methods.ts84
1 files changed, 48 insertions, 36 deletions
diff --git a/gui/src/renderer/lib/api-access-methods.ts b/gui/src/renderer/lib/api-access-methods.ts
index fd78d1484a..90d406cc3d 100644
--- a/gui/src/renderer/lib/api-access-methods.ts
+++ b/gui/src/renderer/lib/api-access-methods.ts
@@ -3,7 +3,7 @@ import { useCallback, useRef, useState } from 'react';
import { CustomProxy } from '../../shared/daemon-rpc-types';
import { useScheduler } from '../../shared/scheduler';
import { useAppContext } from '../context';
-import { useBoolean } from './utilityHooks';
+import { useBoolean } from './utility-hooks';
export function useApiAccessMethodTest(
autoReset = true,
@@ -28,54 +28,66 @@ export function useApiAccessMethodTest(
// scheduler is used to clear it.
const testResultResetScheduler = useScheduler();
- const testApiAccessMethod = useCallback(async (method: CustomProxy | string) => {
- testResultResetScheduler.cancel();
- setTestResult(undefined);
+ const testApiAccessMethod = useCallback(
+ async (method: CustomProxy | string) => {
+ testResultResetScheduler.cancel();
+ setTestResult(undefined);
- setTesting();
- let reachable;
- let testPromise;
+ setTesting();
+ let reachable;
+ let testPromise;
- const submitTimestamp = Date.now();
- try {
- testPromise =
- typeof method === 'string'
- ? testApiAccessMethodById(method)
- : testCustomApiAccessMethod(method);
+ const submitTimestamp = Date.now();
+ try {
+ testPromise =
+ typeof method === 'string'
+ ? testApiAccessMethodById(method)
+ : testCustomApiAccessMethod(method);
- lastTestPromise.current = testPromise;
- reachable = await testPromise;
- } catch {
- reachable = false;
- }
+ lastTestPromise.current = testPromise;
+ reachable = await testPromise;
+ } catch {
+ reachable = false;
+ }
- // Make sure the loading text is displayed for at least `minDuration` milliseconds.
- const submitDuration = Date.now() - submitTimestamp;
- if (submitDuration < minDuration) {
- await new Promise<void>((resolve) =>
- delayScheduler.schedule(resolve, minDuration - submitDuration),
- );
- }
+ // Make sure the loading text is displayed for at least `minDuration` milliseconds.
+ const submitDuration = Date.now() - submitTimestamp;
+ if (submitDuration < minDuration) {
+ await new Promise<void>((resolve) =>
+ delayScheduler.schedule(resolve, minDuration - submitDuration),
+ );
+ }
- if (testPromise !== lastTestPromise.current) {
- return;
- }
+ if (testPromise !== lastTestPromise.current) {
+ return;
+ }
- setTestResult(reachable);
- unsetTesting();
+ setTestResult(reachable);
+ unsetTesting();
- if (autoReset) {
- testResultResetScheduler.schedule(() => setTestResult(undefined), 5000);
- }
+ if (autoReset) {
+ testResultResetScheduler.schedule(() => setTestResult(undefined), 5000);
+ }
- return reachable;
- }, []);
+ return reachable;
+ },
+ [
+ autoReset,
+ delayScheduler,
+ minDuration,
+ setTesting,
+ testApiAccessMethodById,
+ testCustomApiAccessMethod,
+ testResultResetScheduler,
+ unsetTesting,
+ ],
+ );
const resetTestResult = useCallback(() => {
lastTestPromise.current = undefined;
unsetTesting();
setTestResult(undefined);
- }, []);
+ }, [unsetTesting]);
return [testing, testResult, testApiAccessMethod, resetTestResult];
}