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.ts113
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;