summaryrefslogtreecommitdiff
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.ts191
1 files changed, 89 insertions, 102 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts
index 0ba68250a..f5f8893cd 100644
--- a/packages/merchant-backoffice-ui/src/hooks/instance.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts
@@ -13,125 +13,112 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import {
- HttpResponse,
- HttpResponseOk,
- RequestError
-} from "@gnu-taler/web-util/browser";
-import {
- useBackendBaseRequest,
- useBackendInstanceRequest
-} 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, TalerHttpError, TalerMerchantManagementResultByMethod } 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 };
+export function revalidateInstanceDetails() {
+ return mutate(
+ (key) => Array.isArray(key) && key[key.length - 1] === "getCurrentInstanceDetails",
+ undefined,
+ { revalidate: true },
+ );
+}
+export function useInstanceDetails() {
+ const { state: session } = useSessionContext();
+ const { lib: { instance } } = useSessionContext();
+
+ async function fetcher([token]: [AccessToken]) {
+ return await instance.getCurrentInstanceDetails(token);
+ }
+
+ const { data, error } = useSWR<
+ TalerMerchantManagementResultByMethod<"getCurrentInstanceDetails">,
+ TalerHttpError
+ >([session.token, "getCurrentInstanceDetails"], fetcher);
+
if (data) return data;
- if (error) return error.cause;
- return { loading: true };
+ if (error) return error;
+ return undefined;
}
-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 { state: session } = useSessionContext();
+ const { lib: { instance } } = useSessionContext();
-export function useInstanceKYCDetails(): HttpResponse<
- KYCStatus,
- TalerErrorDetail
-> {
- const { fetcher } = useBackendInstanceRequest();
+ async function fetcher([token]: [AccessToken]) {
+ return await instance.getCurrentIntanceKycStatus(token, {});
+ }
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 };
+ 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: { instance } } = useSessionContext();
+
+ async function fetcher([token, instanceId]: [AccessToken, string]) {
+ return await instance.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: { instance } } = useSessionContext();
- const { data, error, isValidating } = useSWR<
- HttpResponseOk<TalerMerchantApi.InstancesResponse>,
- RequestError<TalerErrorDetail>
- >(["/management/instances"], request);
+ async function fetcher([token]: [AccessToken]) {
+ return await instance.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;
}