diff options
Diffstat (limited to 'packages/demobank-ui/src/hooks')
-rw-r--r-- | packages/demobank-ui/src/hooks/access.ts | 64 | ||||
-rw-r--r-- | packages/demobank-ui/src/hooks/backend.ts | 26 |
2 files changed, 54 insertions, 36 deletions
diff --git a/packages/demobank-ui/src/hooks/access.ts b/packages/demobank-ui/src/hooks/access.ts index ee8566efe..546d59a84 100644 --- a/packages/demobank-ui/src/hooks/access.ts +++ b/packages/demobank-ui/src/hooks/access.ts @@ -59,30 +59,6 @@ export function useAccessAPI(): AccessAPI { ); return res; }; - const abortWithdrawal = async (id: string): Promise<HttpResponseOk<void>> => { - const res = await request<void>( - `access-api/accounts/${account}/withdrawals/${id}/abort`, - { - method: "POST", - contentType: "json", - }, - ); - await mutateAll(/.*accounts\/.*\/withdrawals\/.*/); - return res; - }; - const confirmWithdrawal = async ( - id: string, - ): Promise<HttpResponseOk<void>> => { - const res = await request<void>( - `access-api/accounts/${account}/withdrawals/${id}/confirm`, - { - method: "POST", - contentType: "json", - }, - ); - await mutateAll(/.*accounts\/.*\/withdrawals\/.*/); - return res; - }; const createTransaction = async ( data: SandboxBackend.Access.CreateBankAccountTransactionCreate, ): Promise<HttpResponseOk<void>> => { @@ -107,14 +83,41 @@ export function useAccessAPI(): AccessAPI { }; return { - abortWithdrawal, - confirmWithdrawal, createWithdrawal, createTransaction, deleteAccount, }; } +export function useAccessAnonAPI(): AccessAnonAPI { + const mutateAll = useMatchMutate(); + const { request } = useAuthenticatedBackend(); + + const abortWithdrawal = async (id: string): Promise<HttpResponseOk<void>> => { + const res = await request<void>(`access-api/withdrawals/${id}/abort`, { + method: "POST", + contentType: "json", + }); + await mutateAll(/.*withdrawals\/.*/); + return res; + }; + const confirmWithdrawal = async ( + id: string, + ): Promise<HttpResponseOk<void>> => { + const res = await request<void>(`access-api/withdrawals/${id}/confirm`, { + method: "POST", + contentType: "json", + }); + await mutateAll(/.*withdrawals\/.*/); + return res; + }; + + return { + abortWithdrawal, + confirmWithdrawal, + }; +} + export function useTestingAPI(): TestingAPI { const mutateAll = useMatchMutate(); const { request: noAuthRequest } = usePublicBackend(); @@ -145,13 +148,15 @@ export interface AccessAPI { ) => Promise< HttpResponseOk<SandboxBackend.Access.BankAccountCreateWithdrawalResponse> >; - abortWithdrawal: (wid: string) => Promise<HttpResponseOk<void>>; - confirmWithdrawal: (wid: string) => Promise<HttpResponseOk<void>>; createTransaction: ( data: SandboxBackend.Access.CreateBankAccountTransactionCreate, ) => Promise<HttpResponseOk<void>>; deleteAccount: () => Promise<HttpResponseOk<void>>; } +export interface AccessAnonAPI { + abortWithdrawal: (wid: string) => Promise<HttpResponseOk<void>>; + confirmWithdrawal: (wid: string) => Promise<HttpResponseOk<void>>; +} export interface InstanceTemplateFilter { //FIXME: add filter to the template list @@ -210,7 +215,6 @@ export function useAccountDetails( // FIXME: should poll export function useWithdrawalDetails( - account: string, wid: string, ): HttpResponse< SandboxBackend.Access.BankAccountGetWithdrawalResponse, @@ -221,7 +225,7 @@ export function useWithdrawalDetails( const { data, error } = useSWR< HttpResponseOk<SandboxBackend.Access.BankAccountGetWithdrawalResponse>, RequestError<SandboxBackend.SandboxError> - >([`access-api/accounts/${account}/withdrawals/${wid}`], fetcher, { + >([`access-api/withdrawals/${wid}`], fetcher, { refreshInterval: 1000, refreshWhenHidden: false, revalidateOnFocus: false, 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 }; } }; } |