summaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/hooks/backend.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/backend.ts')
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/backend.ts115
1 files changed, 12 insertions, 103 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/backend.ts b/packages/merchant-backoffice-ui/src/hooks/backend.ts
index 37dfd8fd6..8eb9b4cf2 100644
--- a/packages/merchant-backoffice-ui/src/hooks/backend.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/backend.ts
@@ -20,24 +20,21 @@
*/
import {
- AbsoluteTime,
- AccessToken,
- HttpStatusCode,
+ TalerErrorDetail,
+ TalerMerchantApi
} from "@gnu-taler/taler-util";
import {
EmptyObject,
- ErrorType,
HttpError,
HttpResponse,
HttpResponseOk,
RequestError,
RequestOptions,
- useApiContext,
+ useApiContext
} from "@gnu-taler/web-util/browser";
import { useCallback, useEffect, useState } from "preact/hooks";
import { useSWRConfig } from "swr";
import { useSessionContext } from "../context/session.js";
-import { LoginToken, MerchantBackend, Timestamp } from "../declaration.js";
export function useMatchMutate(): (
re?: RegExp,
@@ -72,21 +69,21 @@ export function useMatchMutate(): (
}
export function useBackendInstancesTestForAdmin(): HttpResponse<
- MerchantBackend.Instances.InstancesResponse,
- MerchantBackend.ErrorDetail
+ TalerMerchantApi.InstancesResponse,
+ TalerErrorDetail
> {
const { request } = useBackendBaseRequest();
- type Type = MerchantBackend.Instances.InstancesResponse;
+ type Type = TalerMerchantApi.InstancesResponse;
const [result, setResult] = useState<
- HttpResponse<Type, MerchantBackend.ErrorDetail>
+ HttpResponse<Type, TalerErrorDetail>
>({ loading: true });
useEffect(() => {
request<Type>(`/management/instances`)
.then((data) => setResult(data))
- .catch((error: RequestError<MerchantBackend.ErrorDetail>) =>
+ .catch((error: RequestError<TalerErrorDetail>) =>
setResult(error.cause),
);
}, [request]);
@@ -98,14 +95,14 @@ const CHECK_CONFIG_INTERVAL_OK = 5 * 60 * 1000;
const CHECK_CONFIG_INTERVAL_FAIL = 2 * 1000;
export function useBackendConfig(): HttpResponse<
- MerchantBackend.VersionResponse | undefined,
- RequestError<MerchantBackend.ErrorDetail>
+ TalerMerchantApi.VersionResponse | undefined,
+ RequestError<TalerErrorDetail>
> {
const { request } = useBackendBaseRequest();
- type Type = MerchantBackend.VersionResponse;
+ type Type = TalerMerchantApi.VersionResponse;
type State = {
- data: HttpResponse<Type, RequestError<MerchantBackend.ErrorDetail>>;
+ data: HttpResponse<Type, RequestError<TalerErrorDetail>>;
timer: number;
};
const [result, setResult] = useState<State>({
@@ -191,94 +188,6 @@ type LoginResult =
cause: HttpError<EmptyObject>;
};
-export function useCredentialsChecker() {
- const { request } = useApiContext();
- //check against instance details endpoint
- //while merchant backend doesn't have a login endpoint
- async function requestNewLoginToken(
- baseUrl: string,
- token: AccessToken,
- ): Promise<LoginResult> {
- const data: MerchantBackend.Instances.LoginTokenRequest = {
- scope: "write",
- duration: {
- d_us: "forever",
- },
- refreshable: true,
- };
- try {
- const response =
- await request<MerchantBackend.Instances.LoginTokenSuccessResponse>(
- baseUrl,
- `/private/token`,
- {
- method: "POST",
- token,
- data,
- },
- );
- return {
- valid: true,
- token: response.data.token,
- expiration: response.data.expiration,
- };
- } catch (error) {
- if (error instanceof RequestError) {
- return { valid: false, cause: error.cause };
- }
-
- return {
- valid: false,
- cause: {
- type: ErrorType.UNEXPECTED,
- loading: false,
- info: {
- hasToken: true,
- status: 0,
- options: {},
- url: `/private/token`,
- payload: {},
- },
- exception: error,
- message:
- error instanceof Error ? error.message : "unpexepected error",
- },
- };
- }
- }
-
- async function refreshLoginToken(
- baseUrl: string,
- token: LoginToken,
- ): Promise<LoginResult> {
- if (
- AbsoluteTime.isExpired(
- AbsoluteTime.fromProtocolTimestamp(token.expiration),
- )
- ) {
- return {
- valid: false,
- cause: {
- type: ErrorType.CLIENT,
- status: HttpStatusCode.Unauthorized,
- message: "login token expired, login again.",
- info: {
- hasToken: true,
- status: 401,
- options: {},
- url: `/private/token`,
- payload: {},
- },
- payload: {},
- },
- };
- }
-
- return requestNewLoginToken(baseUrl, token.token as AccessToken);
- }
- return { requestNewLoginToken, refreshLoginToken };
-}
-
/**
*
* @param root the request is intended to the base URL and no the instance URL