better error handling
This commit is contained in:
parent
0bf92a44df
commit
ae4d4647e9
@ -141,8 +141,8 @@ export function LoginModal({ onConfirm, withMessage }: Props): VNode {
|
||||
class="button is-info"
|
||||
onClick={async () => {
|
||||
const secretToken = normalizeToken(token);
|
||||
const isOk = await testLogin(url, secretToken);
|
||||
if (isOk) {
|
||||
const { valid, cause } = await testLogin(url, secretToken);
|
||||
if (valid) {
|
||||
onConfirm(url, secretToken);
|
||||
} else {
|
||||
onConfirm(url);
|
||||
|
@ -25,8 +25,10 @@ import { useBackendContext } from "../context/backend.js";
|
||||
import { useCallback, useEffect, useState } from "preact/hooks";
|
||||
import { useInstanceContext } from "../context/instance.js";
|
||||
import {
|
||||
ErrorType,
|
||||
HttpResponse,
|
||||
HttpResponseOk,
|
||||
RequestError,
|
||||
RequestOptions,
|
||||
} from "@gnu-taler/web-util/lib/index.browser";
|
||||
import { useApiContext } from "@gnu-taler/web-util/lib/index.browser";
|
||||
@ -146,14 +148,21 @@ export function useCredentialsChecker() {
|
||||
return async function testLogin(
|
||||
instance: string,
|
||||
token: string,
|
||||
): Promise<boolean> {
|
||||
): Promise<{
|
||||
valid: boolean;
|
||||
cause?: ErrorType;
|
||||
}> {
|
||||
try {
|
||||
const response = await request(instance, `/private/`, {
|
||||
token,
|
||||
});
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
return { valid: true };
|
||||
} catch (error) {
|
||||
if (error instanceof RequestError) {
|
||||
return { valid: false, cause: error.cause.type };
|
||||
}
|
||||
|
||||
return { valid: false, cause: ErrorType.UNEXPECTED };
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user