diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/instance.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/instance.ts | 113 |
1 files changed, 43 insertions, 70 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts index ab59487de..3c05472d0 100644 --- a/packages/merchant-backoffice-ui/src/hooks/instance.ts +++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts @@ -15,14 +15,11 @@ */ import useSWR, { useSWRConfig } from "swr"; import { useBackendContext } from "../context/backend.js"; -import { useInstanceContext } from "../context/instance.js"; import { MerchantBackend } from "../declaration.js"; +import { HttpError, HttpResponse, HttpResponseOk } from "../utils/request.js"; import { - fetcher, - HttpError, - HttpResponse, - HttpResponseOk, - request, + useBackendBaseRequest, + useBackendInstanceRequest, useMatchMutate, } from "./backend.js"; @@ -36,15 +33,14 @@ interface InstanceAPI { } export function useAdminAPI(): AdminAPI { - const { url, token } = useBackendContext(); + const { request } = useBackendBaseRequest(); const mutateAll = useMatchMutate(); const createInstance = async ( instance: MerchantBackend.Instances.InstanceConfigurationMessage, ): Promise<void> => { - await request(`${url}/management/instances`, { - method: "post", - token, + await request(`/management/instances`, { + method: "POST", data: instance, }); @@ -52,18 +48,16 @@ export function useAdminAPI(): AdminAPI { }; const deleteInstance = async (id: string): Promise<void> => { - await request(`${url}/management/instances/${id}`, { - method: "delete", - token, + await request(`/management/instances/${id}`, { + method: "DELETE", }); mutateAll(/\/management\/instances/); }; const purgeInstance = async (id: string): Promise<void> => { - await request(`${url}/management/instances/${id}`, { - method: "delete", - token, + await request(`/management/instances/${id}`, { + method: "DELETE", params: { purge: "YES", }, @@ -85,14 +79,14 @@ export interface AdminAPI { export function useManagementAPI(instanceId: string): InstanceAPI { const mutateAll = useMatchMutate(); - const { url, token, updateLoginStatus } = useBackendContext(); + const { updateToken } = useBackendContext(); + const { request } = useBackendBaseRequest(); const updateInstance = async ( instance: MerchantBackend.Instances.InstanceReconfigurationMessage, ): Promise<void> => { - await request(`${url}/management/instances/${instanceId}`, { - method: "patch", - token, + await request(`/management/instances/${instanceId}`, { + method: "PATCH", data: instance, }); @@ -100,18 +94,16 @@ export function useManagementAPI(instanceId: string): InstanceAPI { }; const deleteInstance = async (): Promise<void> => { - await request(`${url}/management/instances/${instanceId}`, { - method: "delete", - token, + await request(`/management/instances/${instanceId}`, { + method: "DELETE", }); mutateAll(/\/management\/instances/); }; const clearToken = async (): Promise<void> => { - await request(`${url}/management/instances/${instanceId}/auth`, { - method: "post", - token, + await request(`/management/instances/${instanceId}/auth`, { + method: "POST", data: { method: "external" }, }); @@ -119,13 +111,12 @@ export function useManagementAPI(instanceId: string): InstanceAPI { }; const setNewToken = async (newToken: string): Promise<void> => { - await request(`${url}/management/instances/${instanceId}/auth`, { - method: "post", - token, + await request(`/management/instances/${instanceId}/auth`, { + method: "POST", data: { method: "token", token: newToken }, }); - updateLoginStatus(url, newToken); + updateToken(newToken); mutateAll(/\/management\/instances/); }; @@ -139,71 +130,59 @@ export function useInstanceAPI(): InstanceAPI { token: adminToken, updateLoginStatus, } = useBackendContext(); - const { token: instanceToken, id, admin } = useInstanceContext(); - - const { url, token } = !admin - ? { url: baseUrl, token: adminToken } - : { url: `${baseUrl}/instances/${id}`, token: instanceToken }; + const { request } = useBackendInstanceRequest(); const updateInstance = async ( instance: MerchantBackend.Instances.InstanceReconfigurationMessage, ): Promise<void> => { - await request(`${url}/private/`, { - method: "patch", - token, + await request(`/private/`, { + method: "PATCH", data: instance, }); if (adminToken) mutate(["/private/instances", adminToken, baseUrl], null); - mutate([`/private/`, token, url], null); + mutate([`/private/`], null); }; const deleteInstance = async (): Promise<void> => { - await request(`${url}/private/`, { - method: "delete", - token: adminToken, + await request(`/private/`, { + method: "DELETE", + // token: adminToken, }); if (adminToken) mutate(["/private/instances", adminToken, baseUrl], null); - mutate([`/private/`, token, url], null); + mutate([`/private/`], null); }; const clearToken = async (): Promise<void> => { - await request(`${url}/private/auth`, { - method: "post", - token, + await request(`/private/auth`, { + method: "POST", data: { method: "external" }, }); - mutate([`/private/`, token, url], null); + mutate([`/private/`], null); }; const setNewToken = async (newToken: string): Promise<void> => { - await request(`${url}/private/auth`, { - method: "post", - token, + await request(`/private/auth`, { + method: "POST", data: { method: "token", token: newToken }, }); updateLoginStatus(baseUrl, newToken); - mutate([`/private/`, token, url], null); + mutate([`/private/`], null); }; return { updateInstance, deleteInstance, setNewToken, clearToken }; } export function useInstanceDetails(): HttpResponse<MerchantBackend.Instances.QueryInstancesResponse> { - const { url: baseUrl, token: baseToken } = useBackendContext(); - const { token: instanceToken, id, admin } = useInstanceContext(); - - const { url, token } = !admin - ? { url: baseUrl, token: baseToken } - : { url: `${baseUrl}/instances/${id}`, token: instanceToken }; + const { fetcher } = useBackendInstanceRequest(); const { data, error, isValidating } = useSWR< HttpResponseOk<MerchantBackend.Instances.QueryInstancesResponse>, HttpError - >([`/private/`, token, url], fetcher, { + >([`/private/`], fetcher, { refreshInterval: 0, refreshWhenHidden: false, revalidateOnFocus: false, @@ -225,17 +204,12 @@ type KYCStatus = | { type: "redirect"; status: MerchantBackend.Instances.AccountKycRedirects }; export function useInstanceKYCDetails(): HttpResponse<KYCStatus> { - const { url: baseUrl, token: baseToken } = useBackendContext(); - const { token: instanceToken, id, admin } = useInstanceContext(); - - const { url, token } = !admin - ? { url: baseUrl, token: baseToken } - : { url: `${baseUrl}/instances/${id}`, token: instanceToken }; + const { fetcher } = useBackendInstanceRequest(); const { data, error } = useSWR< HttpResponseOk<MerchantBackend.Instances.AccountKycRedirects>, HttpError - >([`/private/kyc`, token, url], fetcher, { + >([`/private/kyc`], fetcher, { refreshInterval: 5000, refreshWhenHidden: false, revalidateOnFocus: false, @@ -258,12 +232,12 @@ export function useInstanceKYCDetails(): HttpResponse<KYCStatus> { export function useManagedInstanceDetails( instanceId: string, ): HttpResponse<MerchantBackend.Instances.QueryInstancesResponse> { - const { url, token } = useBackendContext(); + const { request } = useBackendBaseRequest(); const { data, error, isValidating } = useSWR< HttpResponseOk<MerchantBackend.Instances.QueryInstancesResponse>, HttpError - >([`/management/instances/${instanceId}`, token, url], fetcher, { + >([`/management/instances/${instanceId}`], request, { refreshInterval: 0, refreshWhenHidden: false, revalidateOnFocus: false, @@ -281,13 +255,12 @@ export function useManagedInstanceDetails( } export function useBackendInstances(): HttpResponse<MerchantBackend.Instances.InstancesResponse> { - const { url } = useBackendContext(); - const { token } = useInstanceContext(); + const { request } = useBackendBaseRequest(); const { data, error, isValidating } = useSWR< HttpResponseOk<MerchantBackend.Instances.InstancesResponse>, HttpError - >(["/management/instances", token, url], fetcher); + >(["/management/instances"], request); if (isValidating) return { loading: true, data: data?.data }; if (data) return data; |