diff options
author | Sebastian <sebasjm@gmail.com> | 2024-04-01 12:57:14 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2024-04-01 12:57:14 -0300 |
commit | 49960c51f73c8b000623a7d8978e9ab6386b04f2 (patch) | |
tree | 77378055d32f3688e01b804c69c23b485d516688 /packages/merchant-backoffice-ui/src/hooks/instance.ts | |
parent | 9237058c8ff4ad12a28520c2ec63afdea65af119 (diff) | |
download | wallet-core-49960c51f73c8b000623a7d8978e9ab6386b04f2.tar.xz |
migrate getInstance
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/instance.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/instance.ts | 238 |
1 files changed, 143 insertions, 95 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts index 0ba68250a..e8a431ae5 100644 --- a/packages/merchant-backoffice-ui/src/hooks/instance.ts +++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts @@ -16,7 +16,8 @@ import { HttpResponse, HttpResponseOk, - RequestError + RequestError, + useMerchantApiContext } from "@gnu-taler/web-util/browser"; import { useBackendBaseRequest, @@ -24,114 +25,161 @@ import { } from "./backend.js"; // FIX default import https://github.com/microsoft/TypeScript/issues/49189 -import { TalerErrorDetail, TalerMerchantApi } from "@gnu-taler/taler-util"; -import _useSWR, { SWRHook } from "swr"; +import { AccessToken, TalerErrorDetail, TalerHttpError, TalerMerchantApi, TalerMerchantInstanceResultByMethod, TalerMerchantManagementResultByMethod, TalerMerchantResultByMethod } from "@gnu-taler/taler-util"; +import _useSWR, { SWRHook, mutate } from "swr"; +import { useSessionContext } from "../context/session.js"; const useSWR = _useSWR as unknown as SWRHook; -export function useInstanceDetails(): HttpResponse< - TalerMerchantApi.QueryInstancesResponse, - TalerErrorDetail -> { - const { fetcher } = useBackendInstanceRequest(); - - const { data, error, isValidating } = useSWR< - HttpResponseOk<TalerMerchantApi.QueryInstancesResponse>, - RequestError<TalerErrorDetail> - >([`/private/`], fetcher, { - refreshInterval: 0, - refreshWhenHidden: false, - revalidateOnFocus: false, - revalidateOnReconnect: false, - refreshWhenOffline: false, - revalidateIfStale: false, - errorRetryCount: 0, - errorRetryInterval: 1, - shouldRetryOnError: false, - }); - - if (isValidating) return { loading: true, data: data?.data }; - if (data) return data; - if (error) return error.cause; - return { loading: true }; +export function revalidateInstanceDetails() { + return mutate( + (key) => Array.isArray(key) && key[key.length - 1] === "getCurrentInstanceDetails", + undefined, + { revalidate: true }, + ); } +export function useInstanceDetails() { + // const { fetcher } = useBackendInstanceRequest(); + + // const { data, error, isValidating } = useSWR< + // HttpResponseOk<TalerMerchantApi.QueryInstancesResponse>, + // RequestError<TalerErrorDetail> + // >([`/private/`], fetcher, { + // refreshInterval: 0, + // refreshWhenHidden: false, + // revalidateOnFocus: false, + // revalidateOnReconnect: false, + // refreshWhenOffline: false, + // revalidateIfStale: false, + // errorRetryCount: 0, + // errorRetryInterval: 1, + // shouldRetryOnError: false, + // }); + + // if (isValidating) return { loading: true, data: data?.data }; + // if (data) return data; + // if (error) return error.cause; + // return { loading: true }; + + const { state: session } = useSessionContext(); + const { lib: { management } } = useMerchantApiContext(); + + async function fetcher([token]: [AccessToken]) { + return await management.getCurrentInstanceDetails(token); + } -type KYCStatus = - | { type: "ok" } - | { type: "redirect"; status: TalerMerchantApi.AccountKycRedirects }; + const { data, error } = useSWR< + TalerMerchantManagementResultByMethod<"getCurrentInstanceDetails">, + TalerHttpError + >([session.token, "getCurrentInstanceDetails"], fetcher); -export function useInstanceKYCDetails(): HttpResponse< - KYCStatus, - TalerErrorDetail -> { - const { fetcher } = useBackendInstanceRequest(); + if (data) return data; + if (error) return error; + return undefined; +} - const { data, error } = useSWR< - HttpResponseOk<TalerMerchantApi.AccountKycRedirects>, - RequestError<TalerErrorDetail> - >([`/private/kyc`], fetcher, { - refreshInterval: 60 * 1000, - refreshWhenHidden: false, - revalidateOnFocus: false, - revalidateIfStale: false, - revalidateOnMount: false, - revalidateOnReconnect: false, - refreshWhenOffline: false, - errorRetryCount: 0, - errorRetryInterval: 1, - shouldRetryOnError: false, - }); - - if (data) { - if (data.info?.status === 202) - return { ok: true, data: { type: "redirect", status: data.data } }; - return { ok: true, data: { type: "ok" } }; +// type KYCStatus = +// | { type: "ok" } +// | { type: "redirect"; status: TalerMerchantApi.AccountKycRedirects }; +export function revalidateInstanceKYCDetails() { + return mutate( + (key) => Array.isArray(key) && key[key.length - 1] === "getCurrentIntanceKycStatus", + undefined, + { revalidate: true }, + ); +} +export function useInstanceKYCDetails() { + // const { fetcher } = useBackendInstanceRequest(); + + // const { data, error } = useSWR< + // HttpResponseOk<TalerMerchantApi.AccountKycRedirects>, + // RequestError<TalerErrorDetail> + // >([`/private/kyc`], fetcher, { + // refreshInterval: 60 * 1000, + // refreshWhenHidden: false, + // revalidateOnFocus: false, + // revalidateIfStale: false, + // revalidateOnMount: false, + // revalidateOnReconnect: false, + // refreshWhenOffline: false, + // errorRetryCount: 0, + // errorRetryInterval: 1, + // shouldRetryOnError: false, + // }); + + // if (data) { + // if (data.info?.status === 202) + // return { ok: true, data: { type: "redirect", status: data.data } }; + // return { ok: true, data: { type: "ok" } }; + // } + // if (error) return error.cause; + // return { loading: true }; + + const { state: session } = useSessionContext(); + const { lib: { management } } = useMerchantApiContext(); + + async function fetcher([token]: [AccessToken]) { + return await management.getCurrentIntanceKycStatus(token, {}); } - if (error) return error.cause; - return { loading: true }; + + const { data, error } = useSWR< + TalerMerchantManagementResultByMethod<"getCurrentIntanceKycStatus">, + TalerHttpError + >([session.token, "getCurrentIntanceKycStatus"], fetcher); + + if (data) return data; + if (error) return error; + return undefined; + + +} + +export function revalidateManagedInstanceDetails() { + return mutate( + (key) => Array.isArray(key) && key[key.length - 1] === "getInstanceDetails", + undefined, + { revalidate: true }, + ); } +export function useManagedInstanceDetails(instanceId: string) { + const { state: session } = useSessionContext(); + const { lib: { management } } = useMerchantApiContext(); + + async function fetcher([token, instanceId]: [AccessToken, string]) { + return await management.getInstanceDetails(token, instanceId); + } + + const { data, error } = useSWR< + TalerMerchantManagementResultByMethod<"getInstanceDetails">, + TalerHttpError + >([session.token, instanceId, "getInstanceDetails"], fetcher); -export function useManagedInstanceDetails( - instanceId: string, -): HttpResponse< - TalerMerchantApi.QueryInstancesResponse, - TalerErrorDetail -> { - const { request } = useBackendBaseRequest(); - - const { data, error, isValidating } = useSWR< - HttpResponseOk<TalerMerchantApi.QueryInstancesResponse>, - RequestError<TalerErrorDetail> - >([`/management/instances/${instanceId}`], request, { - refreshInterval: 0, - refreshWhenHidden: false, - revalidateOnFocus: false, - revalidateOnReconnect: false, - refreshWhenOffline: false, - errorRetryCount: 0, - errorRetryInterval: 1, - shouldRetryOnError: false, - }); - - if (isValidating) return { loading: true, data: data?.data }; if (data) return data; - if (error) return error.cause; - return { loading: true }; + if (error) return error; + return undefined; } -export function useBackendInstances(): HttpResponse< - TalerMerchantApi.InstancesResponse, - TalerErrorDetail -> { - const { request } = useBackendBaseRequest(); +export function revalidateBackendInstances() { + return mutate( + (key) => Array.isArray(key) && key[key.length - 1] === "listInstances", + undefined, + { revalidate: true }, + ); +} +export function useBackendInstances() { + const { state: session } = useSessionContext(); + const { lib: { management } } = useMerchantApiContext(); - const { data, error, isValidating } = useSWR< - HttpResponseOk<TalerMerchantApi.InstancesResponse>, - RequestError<TalerErrorDetail> - >(["/management/instances"], request); + async function fetcher([token]: [AccessToken]) { + return await management.listInstances(token); + } + + const { data, error } = useSWR< + TalerMerchantManagementResultByMethod<"listInstances">, + TalerHttpError + >([session.token, "listInstances"], fetcher); - if (isValidating) return { loading: true, data: data?.data }; if (data) return data; - if (error) return error.cause; - return { loading: true }; + if (error) return error; + return undefined; } |