diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/instance.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/instance.ts | 211 |
1 files changed, 3 insertions, 208 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts index 5f17dbf79..0ba68250a 100644 --- a/packages/merchant-backoffice-ui/src/hooks/instance.ts +++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts @@ -20,219 +20,14 @@ import { } from "@gnu-taler/web-util/browser"; import { useBackendBaseRequest, - useBackendInstanceRequest, - useMatchMutate, + useBackendInstanceRequest } from "./backend.js"; // FIX default import https://github.com/microsoft/TypeScript/issues/49189 -import { AccessToken, TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util"; -import _useSWR, { SWRHook, useSWRConfig } from "swr"; -import { useSessionContext } from "../context/session.js"; +import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util"; +import _useSWR, { SWRHook } from "swr"; const useSWR = _useSWR as unknown as SWRHook; -interface InstanceAPI { - updateInstance: ( - data: TalerMerchantApi.InstanceReconfigurationMessage, - ) => Promise<void>; - deleteInstance: () => Promise<void>; - clearAccessToken: (currentToken: AccessToken | undefined) => Promise<void>; - // setNewAccessToken: ( - // currentToken: AccessToken | undefined, - // token: AccessToken, - // ) => Promise<void>; -} - -export function useAdminAPI(): AdminAPI { - const { request } = useBackendBaseRequest(); - const mutateAll = useMatchMutate(); - - const createInstance = async ( - instance: TalerMerchantApi.InstanceConfigurationMessage, - ): Promise<void> => { - await request(`/management/instances`, { - method: "POST", - data: instance, - }); - - mutateAll(/\/management\/instances/); - }; - - const deleteInstance = async (id: string): Promise<void> => { - await request(`/management/instances/${id}`, { - method: "DELETE", - }); - - mutateAll(/\/management\/instances/); - }; - - const purgeInstance = async (id: string): Promise<void> => { - await request(`/management/instances/${id}`, { - method: "DELETE", - params: { - purge: "YES", - }, - }); - - mutateAll(/\/management\/instances/); - }; - - return { createInstance, deleteInstance, purgeInstance }; -} - -export interface AdminAPI { - createInstance: ( - data: TalerMerchantApi.InstanceConfigurationMessage, - ) => Promise<void>; - deleteInstance: (id: string) => Promise<void>; - purgeInstance: (id: string) => Promise<void>; -} - -export function useManagementAPI(instanceId: string): InstanceAPI { - const mutateAll = useMatchMutate(); - const { - state: { backendUrl }, - logIn, - logOut, - } = useSessionContext(); - const { request } = useBackendBaseRequest(); - - const updateInstance = async ( - instance: TalerMerchantApi.InstanceReconfigurationMessage, - ): Promise<void> => { - await request(`/management/instances/${instanceId}`, { - method: "PATCH", - data: instance, - }); - - mutateAll(/\/management\/instances/); - }; - - const deleteInstance = async (): Promise<void> => { - await request(`/management/instances/${instanceId}`, { - method: "DELETE", - }); - - mutateAll(/\/management\/instances/); - }; - - const clearAccessToken = async ( - currentToken: AccessToken | undefined, - ): Promise<void> => { - await request(`/management/instances/${instanceId}/auth`, { - method: "POST", - token: currentToken, - data: { method: "external" }, - }); - - mutateAll(/\/management\/instances/); - }; - - // const setNewAccessToken = async ( - // currentToken: AccessToken | undefined, - // newToken: AccessToken, - // ): Promise<void> => { - - // await request(`/management/instances/${instanceId}/auth`, { - // method: "POST", - // token: currentToken, - // data: { method: "token", token: newToken }, - // }); - - // const resp = await requestNewLoginToken(backendUrl, newToken); - // if (resp.valid) { - // logIn({ token: resp.token as AccessToken }); - // } else { - // logOut(); - // } - - // mutateAll(/\/management\/instances/); - // }; - - return { - updateInstance, - deleteInstance, - // setNewAccessToken, - clearAccessToken, - }; -} - -export function useInstanceAPI(): InstanceAPI { - const { mutate } = useSWRConfig(); - const { - state: { backendUrl }, - } = useSessionContext(); - - const { request } = useBackendInstanceRequest(); - const { state, logIn, logOut } = useSessionContext(); - - const adminToken = - state.status === "loggedIn" && state.isAdmin ? state.token : undefined; - - const updateInstance = async ( - instance: TalerMerchantApi.InstanceReconfigurationMessage, - ): Promise<void> => { - await request(`/private/`, { - method: "PATCH", - data: instance, - }); - - if (adminToken) { - mutate(["/private/instances", adminToken, backendUrl], null); - } - mutate([`/private/`], null); - }; - - const deleteInstance = async (): Promise<void> => { - await request(`/private/`, { - method: "DELETE", - // token: adminToken, - }); - - if (adminToken) { - mutate(["/private/instances", adminToken, backendUrl], null); - } - mutate([`/private/`], null); - }; - - const clearAccessToken = async ( - currentToken: AccessToken | undefined, - ): Promise<void> => { - await request(`/private/auth`, { - method: "POST", - token: currentToken, - data: { method: "external" }, - }); - - mutate([`/private/`], null); - }; - - // const setNewAccessToken = async ( - // currentToken: AccessToken | undefined, - // newToken: AccessToken, - // ): Promise<void> => { - // await request(`/private/auth`, { - // method: "POST", - // token: currentToken, - // data: { method: "token", token: newToken }, - // }); - - // const resp = await requestNewLoginToken(backendUrl, newToken); - // if (resp.valid) { - // logIn({ token: resp.token as AccessToken }); - // } else { - // logOut(); - // } - - // mutate([`/private/`], null); - // }; - - return { - updateInstance, - deleteInstance, - // setNewAccessToken, - clearAccessToken, - }; -} export function useInstanceDetails(): HttpResponse< TalerMerchantApi.QueryInstancesResponse, |