aboutsummaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/hooks/instance.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/instance.ts')
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/instance.ts38
1 files changed, 28 insertions, 10 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts
index 32ed30c6f..50f9487a3 100644
--- a/packages/merchant-backoffice-ui/src/hooks/instance.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts
@@ -19,10 +19,11 @@ import {
RequestError,
} from "@gnu-taler/web-util/browser";
import { useBackendContext } from "../context/backend.js";
-import { MerchantBackend } from "../declaration.js";
+import { AccessToken, MerchantBackend } from "../declaration.js";
import {
useBackendBaseRequest,
useBackendInstanceRequest,
+ useCredentialsChecker,
useMatchMutate,
} from "./backend.js";
@@ -36,7 +37,7 @@ interface InstanceAPI {
) => Promise<void>;
deleteInstance: () => Promise<void>;
clearToken: () => Promise<void>;
- setNewToken: (token: string) => Promise<void>;
+ setNewToken: (token: AccessToken) => Promise<void>;
}
export function useAdminAPI(): AdminAPI {
@@ -86,8 +87,10 @@ export interface AdminAPI {
export function useManagementAPI(instanceId: string): InstanceAPI {
const mutateAll = useMatchMutate();
+ const { url: backendURL } = useBackendContext()
const { updateToken } = useBackendContext();
const { request } = useBackendBaseRequest();
+ const { requestNewLoginToken } = useCredentialsChecker()
const updateInstance = async (
instance: MerchantBackend.Instances.InstanceReconfigurationMessage,
@@ -117,13 +120,20 @@ export function useManagementAPI(instanceId: string): InstanceAPI {
mutateAll(/\/management\/instances/);
};
- const setNewToken = async (newToken: string): Promise<void> => {
+ const setNewToken = async (newToken: AccessToken): Promise<void> => {
await request(`/management/instances/${instanceId}/auth`, {
method: "POST",
data: { method: "token", token: newToken },
});
- updateToken(newToken);
+ const resp = await requestNewLoginToken(backendURL, newToken)
+ if (resp.valid) {
+ const { token, expiration } = resp
+ updateToken({ token, expiration });
+ } else {
+ updateToken(undefined)
+ }
+
mutateAll(/\/management\/instances/);
};
@@ -132,12 +142,13 @@ export function useManagementAPI(instanceId: string): InstanceAPI {
export function useInstanceAPI(): InstanceAPI {
const { mutate } = useSWRConfig();
+ const { url: backendURL, updateToken } = useBackendContext()
+
const {
- url: baseUrl,
token: adminToken,
- updateLoginStatus,
} = useBackendContext();
const { request } = useBackendInstanceRequest();
+ const { requestNewLoginToken } = useCredentialsChecker()
const updateInstance = async (
instance: MerchantBackend.Instances.InstanceReconfigurationMessage,
@@ -147,7 +158,7 @@ export function useInstanceAPI(): InstanceAPI {
data: instance,
});
- if (adminToken) mutate(["/private/instances", adminToken, baseUrl], null);
+ if (adminToken) mutate(["/private/instances", adminToken, backendURL], null);
mutate([`/private/`], null);
};
@@ -157,7 +168,7 @@ export function useInstanceAPI(): InstanceAPI {
// token: adminToken,
});
- if (adminToken) mutate(["/private/instances", adminToken, baseUrl], null);
+ if (adminToken) mutate(["/private/instances", adminToken, backendURL], null);
mutate([`/private/`], null);
};
@@ -170,13 +181,20 @@ export function useInstanceAPI(): InstanceAPI {
mutate([`/private/`], null);
};
- const setNewToken = async (newToken: string): Promise<void> => {
+ const setNewToken = async (newToken: AccessToken): Promise<void> => {
await request(`/private/auth`, {
method: "POST",
data: { method: "token", token: newToken },
});
- updateLoginStatus(baseUrl, newToken);
+ const resp = await requestNewLoginToken(backendURL, newToken)
+ if (resp.valid) {
+ const { token, expiration } = resp
+ updateToken({ token, expiration });
+ } else {
+ updateToken(undefined)
+ }
+
mutate([`/private/`], null);
};