summaryrefslogtreecommitdiffhomepage
path: root/gui/src/renderer/lib/api-access-methods.ts
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/renderer/lib/api-access-methods.ts')
-rw-r--r--gui/src/renderer/lib/api-access-methods.ts82
1 files changed, 47 insertions, 35 deletions
diff --git a/gui/src/renderer/lib/api-access-methods.ts b/gui/src/renderer/lib/api-access-methods.ts
index fd78d1484a..270d0fbf62 100644
--- a/gui/src/renderer/lib/api-access-methods.ts
+++ b/gui/src/renderer/lib/api-access-methods.ts
@@ -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];
}