aboutsummaryrefslogtreecommitdiff
path: root/packages/demobank-ui/src/hooks/backend.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/demobank-ui/src/hooks/backend.ts')
-rw-r--r--packages/demobank-ui/src/hooks/backend.ts26
1 files changed, 20 insertions, 6 deletions
diff --git a/packages/demobank-ui/src/hooks/backend.ts b/packages/demobank-ui/src/hooks/backend.ts
index 3fe744874..e0b8d83ef 100644
--- a/packages/demobank-ui/src/hooks/backend.ts
+++ b/packages/demobank-ui/src/hooks/backend.ts
@@ -17,6 +17,7 @@
import { canonicalizeBaseUrl } from "@gnu-taler/taler-util";
import {
ErrorType,
+ HttpError,
RequestError,
useLocalStorage,
} from "@gnu-taler/web-util/lib/index.browser";
@@ -193,6 +194,22 @@ export function usePublicBackend(): useBackendType {
};
}
+type CheckResult = ValidResult | RequestInvalidResult | InvalidationResult;
+
+interface ValidResult {
+ valid: true;
+}
+interface RequestInvalidResult {
+ valid: false;
+ requestError: true;
+ cause: RequestError<any>["cause"];
+}
+interface InvalidationResult {
+ valid: false;
+ requestError: false;
+ error: unknown;
+}
+
export function useCredentialsChecker() {
const { request } = useApiContext();
const baseUrl = getInitialBackendBaseURL();
@@ -201,10 +218,7 @@ export function useCredentialsChecker() {
return async function testLogin(
username: string,
password: string,
- ): Promise<{
- valid: boolean;
- cause?: ErrorType;
- }> {
+ ): Promise<CheckResult> {
try {
await request(baseUrl, `access-api/accounts/${username}/`, {
basicAuth: { username, password },
@@ -213,9 +227,9 @@ export function useCredentialsChecker() {
return { valid: true };
} catch (error) {
if (error instanceof RequestError) {
- return { valid: false, cause: error.cause.type };
+ return { valid: false, requestError: true, cause: error.cause };
}
- return { valid: false, cause: ErrorType.UNEXPECTED };
+ return { valid: false, requestError: false, error };
}
};
}