aboutsummaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/hooks
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-12-19 12:23:39 -0300
committerSebastian <sebasjm@gmail.com>2022-12-19 12:23:39 -0300
commit72b429321553841ac1ff48cf974bfc65da01bb06 (patch)
tree7db9a4462f02de6cb86de695a1e64772b00ead5f /packages/merchant-backoffice-ui/src/hooks
parent770ab6f01dc81a16f384f314982bd761540f8e65 (diff)
downloadwallet-core-72b429321553841ac1ff48cf974bfc65da01bb06.tar.xz
pretty
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks')
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/async.ts41
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/backend.ts21
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/index.ts114
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/instance.ts22
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/listener.ts42
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/notifications.ts38
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/order.ts76
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/product.ts39
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/reserves.ts34
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/transfer.ts69
10 files changed, 275 insertions, 221 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/async.ts b/packages/merchant-backoffice-ui/src/hooks/async.ts
index a842c73e4..6c116e628 100644
--- a/packages/merchant-backoffice-ui/src/hooks/async.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/async.ts
@@ -15,38 +15,41 @@
*/
/**
-*
-* @author Sebastian Javier Marchano (sebasjm)
-*/
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
import { useState } from "preact/hooks";
import { cancelPendingRequest } from "./backend.js";
export interface Options {
- slowTolerance: number,
+ slowTolerance: number;
}
export interface AsyncOperationApi<T> {
- request: (...a: any) => void,
- cancel: () => void,
- data: T | undefined,
- isSlow: boolean,
- isLoading: boolean,
- error: string | undefined
+ request: (...a: any) => void;
+ cancel: () => void;
+ data: T | undefined;
+ isSlow: boolean;
+ isLoading: boolean;
+ error: string | undefined;
}
-export function useAsync<T>(fn?: (...args: any) => Promise<T>, { slowTolerance: tooLong }: Options = { slowTolerance: 1000 }): AsyncOperationApi<T> {
+export function useAsync<T>(
+ fn?: (...args: any) => Promise<T>,
+ { slowTolerance: tooLong }: Options = { slowTolerance: 1000 },
+): AsyncOperationApi<T> {
const [data, setData] = useState<T | undefined>(undefined);
const [isLoading, setLoading] = useState<boolean>(false);
const [error, setError] = useState<any>(undefined);
- const [isSlow, setSlow] = useState(false)
+ const [isSlow, setSlow] = useState(false);
const request = async (...args: any) => {
if (!fn) return;
setLoading(true);
const handler = setTimeout(() => {
- setSlow(true)
- }, tooLong)
+ setSlow(true);
+ }, tooLong);
try {
const result = await fn(...args);
@@ -55,14 +58,14 @@ export function useAsync<T>(fn?: (...args: any) => Promise<T>, { slowTolerance:
setError(error);
}
setLoading(false);
- setSlow(false)
- clearTimeout(handler)
+ setSlow(false);
+ clearTimeout(handler);
};
function cancel() {
- cancelPendingRequest()
+ cancelPendingRequest();
setLoading(false);
- setSlow(false)
+ setSlow(false);
}
return {
@@ -71,6 +74,6 @@ export function useAsync<T>(fn?: (...args: any) => Promise<T>, { slowTolerance:
data,
isSlow,
isLoading,
- error
+ error,
};
}
diff --git a/packages/merchant-backoffice-ui/src/hooks/backend.ts b/packages/merchant-backoffice-ui/src/hooks/backend.ts
index 0c844700b..cbfac35de 100644
--- a/packages/merchant-backoffice-ui/src/hooks/backend.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/backend.ts
@@ -25,17 +25,20 @@ import { MerchantBackend } from "../declaration.js";
import { useBackendContext } from "../context/backend.js";
import { useEffect, useState } from "preact/hooks";
import { DEFAULT_REQUEST_TIMEOUT } from "../utils/constants.js";
-import { axiosHandler, removeAxiosCancelToken } from "../utils/switchableAxios.js";
+import {
+ axiosHandler,
+ removeAxiosCancelToken,
+} from "../utils/switchableAxios.js";
export function useMatchMutate(): (
re: RegExp,
- value?: unknown
+ value?: unknown,
) => Promise<any> {
const { cache, mutate } = useSWRConfig();
if (!(cache instanceof Map)) {
throw new Error(
- "matchMutate requires the cache provider to be a Map instance"
+ "matchMutate requires the cache provider to be a Map instance",
);
}
@@ -154,7 +157,7 @@ interface RequestOptions {
function buildRequestOk<T>(
res: AxiosResponse<T>,
url: string,
- hasToken: boolean
+ hasToken: boolean,
): HttpResponseOk<T> {
return {
ok: true,
@@ -177,7 +180,7 @@ function buildRequestOk<T>(
function buildRequestFailed(
ex: AxiosError<MerchantBackend.ErrorDetail>,
url: string,
- hasToken: boolean
+ hasToken: boolean,
):
| HttpResponseClientError
| HttpResponseServerError
@@ -236,14 +239,14 @@ export function cancelPendingRequest(): void {
}
export function isAxiosError<T>(
- error: AxiosError | any
+ error: AxiosError | any,
): error is AxiosError<T> {
return error && error.isAxiosError;
}
export async function request<T>(
url: string,
- options: RequestOptions = {}
+ options: RequestOptions = {},
): Promise<HttpResponseOk<T>> {
const headers = options.token
? { Authorization: `Bearer ${options.token}` }
@@ -273,7 +276,7 @@ export async function request<T>(
export function multiFetcher<T>(
urls: string[],
token: string,
- backend: string
+ backend: string,
): Promise<HttpResponseOk<T>[]> {
return Promise.all(urls.map((url) => fetcher<T>(url, token, backend)));
}
@@ -281,7 +284,7 @@ export function multiFetcher<T>(
export function fetcher<T>(
url: string,
token: string,
- backend: string
+ backend: string,
): Promise<HttpResponseOk<T>> {
return request<T>(`${backend}${url}`, { token });
}
diff --git a/packages/merchant-backoffice-ui/src/hooks/index.ts b/packages/merchant-backoffice-ui/src/hooks/index.ts
index 9194ec0e9..0581d9938 100644
--- a/packages/merchant-backoffice-ui/src/hooks/index.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/index.ts
@@ -15,81 +15,109 @@
*/
/**
-*
-* @author Sebastian Javier Marchano (sebasjm)
-*/
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
import { StateUpdater, useCallback, useState } from "preact/hooks";
import { ValueOrFunction } from "../utils/types.js";
-
const calculateRootPath = () => {
- const rootPath = typeof window !== undefined ? window.location.origin + window.location.pathname : '/'
- return rootPath
-}
-
-export function useBackendURL(url?: string): [string, boolean, StateUpdater<string>, () => void] {
- const [value, setter] = useNotNullLocalStorage('backend-url', url || calculateRootPath())
- const [triedToLog, setTriedToLog] = useLocalStorage('tried-login')
+ const rootPath =
+ typeof window !== undefined
+ ? window.location.origin + window.location.pathname
+ : "/";
+ return rootPath;
+};
+
+export function useBackendURL(
+ url?: string,
+): [string, boolean, StateUpdater<string>, () => void] {
+ const [value, setter] = useNotNullLocalStorage(
+ "backend-url",
+ url || calculateRootPath(),
+ );
+ const [triedToLog, setTriedToLog] = useLocalStorage("tried-login");
const checkedSetter = (v: ValueOrFunction<string>) => {
- setTriedToLog('yes')
- return setter(p => (v instanceof Function ? v(p) : v).replace(/\/$/, ''))
- }
+ setTriedToLog("yes");
+ return setter((p) => (v instanceof Function ? v(p) : v).replace(/\/$/, ""));
+ };
const resetBackend = () => {
- setTriedToLog(undefined)
- }
- return [value, !!triedToLog, checkedSetter, resetBackend]
+ setTriedToLog(undefined);
+ };
+ return [value, !!triedToLog, checkedSetter, resetBackend];
}
-export function useBackendDefaultToken(initialValue?: string): [string | undefined, StateUpdater<string | undefined>] {
- return useLocalStorage('backend-token', initialValue)
+export function useBackendDefaultToken(
+ initialValue?: string,
+): [string | undefined, StateUpdater<string | undefined>] {
+ return useLocalStorage("backend-token", initialValue);
}
-export function useBackendInstanceToken(id: string): [string | undefined, StateUpdater<string | undefined>] {
- const [token, setToken] = useLocalStorage(`backend-token-${id}`)
- const [defaultToken, defaultSetToken] = useBackendDefaultToken()
+export function useBackendInstanceToken(
+ id: string,
+): [string | undefined, StateUpdater<string | undefined>] {
+ const [token, setToken] = useLocalStorage(`backend-token-${id}`);
+ const [defaultToken, defaultSetToken] = useBackendDefaultToken();
// instance named 'default' use the default token
- if (id === 'default') {
- return [defaultToken, defaultSetToken]
+ if (id === "default") {
+ return [defaultToken, defaultSetToken];
}
- return [token, setToken]
+ return [token, setToken];
}
export function useLang(initial?: string): [string, StateUpdater<string>] {
- const browserLang = typeof window !== "undefined" ? navigator.language || (navigator as any).userLanguage : undefined;
- const defaultLang = (browserLang || initial || 'en').substring(0, 2)
- return useNotNullLocalStorage('lang-preference', defaultLang)
+ const browserLang =
+ typeof window !== "undefined"
+ ? navigator.language || (navigator as any).userLanguage
+ : undefined;
+ const defaultLang = (browserLang || initial || "en").substring(0, 2);
+ return useNotNullLocalStorage("lang-preference", defaultLang);
}
-export function useLocalStorage(key: string, initialValue?: string): [string | undefined, StateUpdater<string | undefined>] {
- const [storedValue, setStoredValue] = useState<string | undefined>((): string | undefined => {
- return typeof window !== "undefined" ? window.localStorage.getItem(key) || initialValue : initialValue;
- });
-
- const setValue = (value?: string | ((val?: string) => string | undefined)) => {
- setStoredValue(p => {
- const toStore = value instanceof Function ? value(p) : value
+export function useLocalStorage(
+ key: string,
+ initialValue?: string,
+): [string | undefined, StateUpdater<string | undefined>] {
+ const [storedValue, setStoredValue] = useState<string | undefined>(
+ (): string | undefined => {
+ return typeof window !== "undefined"
+ ? window.localStorage.getItem(key) || initialValue
+ : initialValue;
+ },
+ );
+
+ const setValue = (
+ value?: string | ((val?: string) => string | undefined),
+ ) => {
+ setStoredValue((p) => {
+ const toStore = value instanceof Function ? value(p) : value;
if (typeof window !== "undefined") {
if (!toStore) {
- window.localStorage.removeItem(key)
+ window.localStorage.removeItem(key);
} else {
window.localStorage.setItem(key, toStore);
}
}
- return toStore
- })
+ return toStore;
+ });
};
return [storedValue, setValue];
}
-export function useNotNullLocalStorage(key: string, initialValue: string): [string, StateUpdater<string>] {
+export function useNotNullLocalStorage(
+ key: string,
+ initialValue: string,
+): [string, StateUpdater<string>] {
const [storedValue, setStoredValue] = useState<string>((): string => {
- return typeof window !== "undefined" ? window.localStorage.getItem(key) || initialValue : initialValue;
+ return typeof window !== "undefined"
+ ? window.localStorage.getItem(key) || initialValue
+ : initialValue;
});
const setValue = (value: string | ((val: string) => string)) => {
@@ -97,7 +125,7 @@ export function useNotNullLocalStorage(key: string, initialValue: string): [stri
setStoredValue(valueToStore);
if (typeof window !== "undefined") {
if (!valueToStore) {
- window.localStorage.removeItem(key)
+ window.localStorage.removeItem(key);
} else {
window.localStorage.setItem(key, valueToStore);
}
@@ -106,5 +134,3 @@ export function useNotNullLocalStorage(key: string, initialValue: string): [stri
return [storedValue, setValue];
}
-
-
diff --git a/packages/merchant-backoffice-ui/src/hooks/instance.ts b/packages/merchant-backoffice-ui/src/hooks/instance.ts
index 7564f8ef6..ab59487de 100644
--- a/packages/merchant-backoffice-ui/src/hooks/instance.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/instance.ts
@@ -28,7 +28,7 @@ import {
interface InstanceAPI {
updateInstance: (
- data: MerchantBackend.Instances.InstanceReconfigurationMessage
+ data: MerchantBackend.Instances.InstanceReconfigurationMessage,
) => Promise<void>;
deleteInstance: () => Promise<void>;
clearToken: () => Promise<void>;
@@ -40,7 +40,7 @@ export function useAdminAPI(): AdminAPI {
const mutateAll = useMatchMutate();
const createInstance = async (
- instance: MerchantBackend.Instances.InstanceConfigurationMessage
+ instance: MerchantBackend.Instances.InstanceConfigurationMessage,
): Promise<void> => {
await request(`${url}/management/instances`, {
method: "post",
@@ -77,7 +77,7 @@ export function useAdminAPI(): AdminAPI {
export interface AdminAPI {
createInstance: (
- data: MerchantBackend.Instances.InstanceConfigurationMessage
+ data: MerchantBackend.Instances.InstanceConfigurationMessage,
) => Promise<void>;
deleteInstance: (id: string) => Promise<void>;
purgeInstance: (id: string) => Promise<void>;
@@ -88,7 +88,7 @@ export function useManagementAPI(instanceId: string): InstanceAPI {
const { url, token, updateLoginStatus } = useBackendContext();
const updateInstance = async (
- instance: MerchantBackend.Instances.InstanceReconfigurationMessage
+ instance: MerchantBackend.Instances.InstanceReconfigurationMessage,
): Promise<void> => {
await request(`${url}/management/instances/${instanceId}`, {
method: "patch",
@@ -125,7 +125,7 @@ export function useManagementAPI(instanceId: string): InstanceAPI {
data: { method: "token", token: newToken },
});
- updateLoginStatus(url, newToken)
+ updateLoginStatus(url, newToken);
mutateAll(/\/management\/instances/);
};
@@ -134,7 +134,11 @@ export function useManagementAPI(instanceId: string): InstanceAPI {
export function useInstanceAPI(): InstanceAPI {
const { mutate } = useSWRConfig();
- const { url: baseUrl, token: adminToken, updateLoginStatus } = useBackendContext();
+ const {
+ url: baseUrl,
+ token: adminToken,
+ updateLoginStatus,
+ } = useBackendContext();
const { token: instanceToken, id, admin } = useInstanceContext();
const { url, token } = !admin
@@ -142,7 +146,7 @@ export function useInstanceAPI(): InstanceAPI {
: { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const updateInstance = async (
- instance: MerchantBackend.Instances.InstanceReconfigurationMessage
+ instance: MerchantBackend.Instances.InstanceReconfigurationMessage,
): Promise<void> => {
await request(`${url}/private/`, {
method: "patch",
@@ -181,7 +185,7 @@ export function useInstanceAPI(): InstanceAPI {
data: { method: "token", token: newToken },
});
- updateLoginStatus(baseUrl, newToken)
+ updateLoginStatus(baseUrl, newToken);
mutate([`/private/`, token, url], null);
};
@@ -252,7 +256,7 @@ export function useInstanceKYCDetails(): HttpResponse<KYCStatus> {
}
export function useManagedInstanceDetails(
- instanceId: string
+ instanceId: string,
): HttpResponse<MerchantBackend.Instances.QueryInstancesResponse> {
const { url, token } = useBackendContext();
diff --git a/packages/merchant-backoffice-ui/src/hooks/listener.ts b/packages/merchant-backoffice-ui/src/hooks/listener.ts
index df037de7f..d101f7bb8 100644
--- a/packages/merchant-backoffice-ui/src/hooks/listener.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/listener.ts
@@ -15,9 +15,9 @@
*/
/**
-*
-* @author Sebastian Javier Marchano (sebasjm)
-*/
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
import { useState } from "preact/hooks";
@@ -26,25 +26,27 @@ import { useState } from "preact/hooks";
* an action (a button) and other child have the action implemented (like
* gathering information with a form). The difference with other approaches is
* that in this case the parent component is not holding the state.
- *
- * It will return a subscriber and activator.
- *
+ *
+ * It will return a subscriber and activator.
+ *
* The activator may be undefined, if it is undefined it is indicating that the
* subscriber is not ready to be called.
*
* The subscriber will receive a function (the listener) that will be call when the
* activator runs. The listener must return the collected information.
- *
+ *
* As a result, when the activator is triggered by a child component, the
* @action function is called receives the information from the listener defined by other
- * child component
+ * child component
*
* @param action from <T> to <R>
* @returns activator and subscriber, undefined activator means that there is not subscriber
*/
-export function useListener<T, R = any>(action: (r: T) => Promise<R>): [undefined | (() => Promise<R>), (listener?: () => T) => void] {
- type RunnerHandler = { toBeRan?: () => Promise<R>; };
+export function useListener<T, R = any>(
+ action: (r: T) => Promise<R>,
+): [undefined | (() => Promise<R>), (listener?: () => T) => void] {
+ type RunnerHandler = { toBeRan?: () => Promise<R> };
const [state, setState] = useState<RunnerHandler>({});
/**
@@ -58,24 +60,26 @@ export function useListener<T, R = any>(action: (r: T) => Promise<R>): [undefine
toBeRan: () => {
const whatWeGetFromTheListener = listener();
return action(whatWeGetFromTheListener);
- }
+ },
});
} else {
setState({
- toBeRan: undefined
- })
+ toBeRan: undefined,
+ });
}
};
/**
* activator will call runner if there is someone subscribed
*/
- const activator = state.toBeRan ? async () => {
- if (state.toBeRan) {
- return state.toBeRan();
- }
- return Promise.reject();
- } : undefined;
+ const activator = state.toBeRan
+ ? async () => {
+ if (state.toBeRan) {
+ return state.toBeRan();
+ }
+ return Promise.reject();
+ }
+ : undefined;
return [activator, subscriber];
}
diff --git a/packages/merchant-backoffice-ui/src/hooks/notifications.ts b/packages/merchant-backoffice-ui/src/hooks/notifications.ts
index 63b1e5e16..133ddd80b 100644
--- a/packages/merchant-backoffice-ui/src/hooks/notifications.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/notifications.ts
@@ -15,9 +15,9 @@
*/
/**
-*
-* @author Sebastian Javier Marchano (sebasjm)
-*/
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
import { useState } from "preact/hooks";
import { Notification } from "../utils/types.js";
@@ -28,21 +28,29 @@ interface Result {
removeNotification: (n: Notification) => void;
}
-type NotificationWithDate = Notification & { since: Date }
+type NotificationWithDate = Notification & { since: Date };
-export function useNotifications(initial: Notification[] = [], timeout = 3000): Result {
- const [notifications, setNotifications] = useState<(NotificationWithDate)[]>(initial.map(i => ({...i, since: new Date() })))
+export function useNotifications(
+ initial: Notification[] = [],
+ timeout = 3000,
+): Result {
+ const [notifications, setNotifications] = useState<NotificationWithDate[]>(
+ initial.map((i) => ({ ...i, since: new Date() })),
+ );
const pushNotification = (n: Notification): void => {
- const entry = { ...n, since: new Date() }
- setNotifications(ns => [...ns, entry])
- if (n.type !== 'ERROR') setTimeout(() => {
- setNotifications(ns => ns.filter(x => x.since !== entry.since))
- }, timeout)
- }
+ const entry = { ...n, since: new Date() };
+ setNotifications((ns) => [...ns, entry]);
+ if (n.type !== "ERROR")
+ setTimeout(() => {
+ setNotifications((ns) => ns.filter((x) => x.since !== entry.since));
+ }, timeout);
+ };
const removeNotification = (notif: Notification) => {
- setNotifications((ns: NotificationWithDate[]) => ns.filter(n => n !== notif))
- }
- return { notifications, pushNotification, removeNotification }
+ setNotifications((ns: NotificationWithDate[]) =>
+ ns.filter((n) => n !== notif),
+ );
+ };
+ return { notifications, pushNotification, removeNotification };
}
diff --git a/packages/merchant-backoffice-ui/src/hooks/order.ts b/packages/merchant-backoffice-ui/src/hooks/order.ts
index 75c474187..d1e26b671 100644
--- a/packages/merchant-backoffice-ui/src/hooks/order.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/order.ts
@@ -32,15 +32,15 @@ import {
export interface OrderAPI {
//FIXME: add OutOfStockResponse on 410
createOrder: (
- data: MerchantBackend.Orders.PostOrderRequest
+ data: MerchantBackend.Orders.PostOrderRequest,
) => Promise<HttpResponseOk<MerchantBackend.Orders.PostOrderResponse>>;
forgetOrder: (
id: string,
- data: MerchantBackend.Orders.ForgetRequest
+ data: MerchantBackend.Orders.ForgetRequest,
) => Promise<HttpResponseOk<void>>;
refundOrder: (
id: string,
- data: MerchantBackend.Orders.RefundRequest
+ data: MerchantBackend.Orders.RefundRequest,
) => Promise<HttpResponseOk<MerchantBackend.Orders.MerchantRefundResponse>>;
deleteOrder: (id: string) => Promise<HttpResponseOk<void>>;
getPaymentURL: (id: string) => Promise<HttpResponseOk<string>>;
@@ -56,7 +56,7 @@ export function orderFetcher<T>(
refunded?: YesOrNo,
wired?: YesOrNo,
searchDate?: Date,
- delta?: number
+ delta?: number,
): Promise<HttpResponseOk<T>> {
const date_ms =
delta && delta < 0 && searchDate
@@ -78,16 +78,16 @@ export function useOrderAPI(): OrderAPI {
const { url, token } = !admin
? {
- url: baseUrl,
- token: adminToken,
- }
+ url: baseUrl,
+ token: adminToken,
+ }
: {
- url: `${baseUrl}/instances/${id}`,
- token: instanceToken,
- };
+ url: `${baseUrl}/instances/${id}`,
+ token: instanceToken,
+ };
const createOrder = async (
- data: MerchantBackend.Orders.PostOrderRequest
+ data: MerchantBackend.Orders.PostOrderRequest,
): Promise<HttpResponseOk<MerchantBackend.Orders.PostOrderResponse>> => {
const res = await request<MerchantBackend.Orders.PostOrderResponse>(
`${url}/private/orders`,
@@ -95,7 +95,7 @@ export function useOrderAPI(): OrderAPI {
method: "post",
token,
data,
- }
+ },
);
await mutateAll(/.*private\/orders.*/);
// mutate('')
@@ -103,7 +103,7 @@ export function useOrderAPI(): OrderAPI {
};
const refundOrder = async (
orderId: string,
- data: MerchantBackend.Orders.RefundRequest
+ data: MerchantBackend.Orders.RefundRequest,
): Promise<HttpResponseOk<MerchantBackend.Orders.MerchantRefundResponse>> => {
mutateAll(/@"\/private\/orders"@/);
const res = request<MerchantBackend.Orders.MerchantRefundResponse>(
@@ -112,17 +112,17 @@ export function useOrderAPI(): OrderAPI {
method: "post",
token,
data,
- }
+ },
);
// order list returns refundable information, so we must evict everything
await mutateAll(/.*private\/orders.*/);
- return res
+ return res;
};
const forgetOrder = async (
orderId: string,
- data: MerchantBackend.Orders.ForgetRequest
+ data: MerchantBackend.Orders.ForgetRequest,
): Promise<HttpResponseOk<void>> => {
mutateAll(/@"\/private\/orders"@/);
const res = request<void>(`${url}/private/orders/${orderId}/forget`, {
@@ -132,10 +132,10 @@ export function useOrderAPI(): OrderAPI {
});
// we may be forgetting some fields that are pare of the listing, so we must evict everything
await mutateAll(/.*private\/orders.*/);
- return res
+ return res;
};
const deleteOrder = async (
- orderId: string
+ orderId: string,
): Promise<HttpResponseOk<void>> => {
mutateAll(/@"\/private\/orders"@/);
const res = request<void>(`${url}/private/orders/${orderId}`, {
@@ -143,18 +143,18 @@ export function useOrderAPI(): OrderAPI {
token,
});
await mutateAll(/.*private\/orders.*/);
- return res
+ return res;
};
const getPaymentURL = async (
- orderId: string
+ orderId: string,
): Promise<HttpResponseOk<string>> => {
return request<MerchantBackend.Orders.MerchantOrderStatusResponse>(
`${url}/private/orders/${orderId}`,
{
method: "get",
token,
- }
+ },
).then((res) => {
const url =
res.data.order_status === "unpaid"
@@ -170,14 +170,14 @@ export function useOrderAPI(): OrderAPI {
}
export function useOrderDetails(
- oderId: string
+ oderId: string,
): HttpResponse<MerchantBackend.Orders.MerchantOrderStatusResponse> {
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, };
+ ? { url: baseUrl, token: baseToken }
+ : { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const { data, error, isValidating } = useSWR<
HttpResponseOk<MerchantBackend.Orders.MerchantOrderStatusResponse>,
@@ -205,14 +205,14 @@ export interface InstanceOrderFilter {
export function useInstanceOrders(
args?: InstanceOrderFilter,
- updateFilter?: (d: Date) => void
+ updateFilter?: (d: Date) => void,
): HttpResponsePaginated<MerchantBackend.Orders.OrderHistory> {
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, };
+ ? { url: baseUrl, token: baseToken }
+ : { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const [pageBefore, setPageBefore] = useState(1);
const [pageAfter, setPageAfter] = useState(1);
@@ -241,7 +241,7 @@ export function useInstanceOrders(
args?.date,
totalBefore,
],
- orderFetcher
+ orderFetcher,
);
const {
data: afterData,
@@ -258,7 +258,7 @@ export function useInstanceOrders(
args?.date,
-totalAfter,
],
- orderFetcher
+ orderFetcher,
);
//this will save last result
@@ -278,7 +278,8 @@ export function useInstanceOrders(
// if the query returns less that we ask, then we have reach the end or beginning
const isReachingEnd = afterData && afterData.data.orders.length < totalAfter;
- const isReachingStart = args?.date === undefined ||
+ const isReachingStart =
+ args?.date === undefined ||
(beforeData && beforeData.data.orders.length < totalBefore);
const pagination = {
@@ -290,9 +291,9 @@ export function useInstanceOrders(
setPageAfter(pageAfter + 1);
} else {
const from =
- afterData.data.orders[afterData.data.orders.length - 1].timestamp
- .t_s;
- if (from && from !== "never" && updateFilter) updateFilter(new Date(from * 1000));
+ afterData.data.orders[afterData.data.orders.length - 1].timestamp.t_s;
+ if (from && from !== "never" && updateFilter)
+ updateFilter(new Date(from * 1000));
}
},
loadMorePrev: () => {
@@ -303,7 +304,8 @@ export function useInstanceOrders(
const from =
beforeData.data.orders[beforeData.data.orders.length - 1].timestamp
.t_s;
- if (from && from !== "never" && updateFilter) updateFilter(new Date(from * 1000));
+ if (from && from !== "never" && updateFilter)
+ updateFilter(new Date(from * 1000));
}
},
};
@@ -312,9 +314,9 @@ export function useInstanceOrders(
!beforeData || !afterData
? []
: (beforeData || lastBefore).data.orders
- .slice()
- .reverse()
- .concat((afterData || lastAfter).data.orders);
+ .slice()
+ .reverse()
+ .concat((afterData || lastAfter).data.orders);
if (loadingAfter || loadingBefore) return { loading: true, data: { orders } };
if (beforeData && afterData) {
return { ok: true, data: { orders }, ...pagination };
diff --git a/packages/merchant-backoffice-ui/src/hooks/product.ts b/packages/merchant-backoffice-ui/src/hooks/product.ts
index 7a0c4dec1..fb7889834 100644
--- a/packages/merchant-backoffice-ui/src/hooks/product.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/product.ts
@@ -24,21 +24,21 @@ import {
HttpResponseOk,
multiFetcher,
request,
- useMatchMutate
+ useMatchMutate,
} from "./backend.js";
export interface ProductAPI {
createProduct: (
- data: MerchantBackend.Products.ProductAddDetail
+ data: MerchantBackend.Products.ProductAddDetail,
) => Promise<void>;
updateProduct: (
id: string,
- data: MerchantBackend.Products.ProductPatchDetail
+ data: MerchantBackend.Products.ProductPatchDetail,
) => Promise<void>;
deleteProduct: (id: string) => Promise<void>;
lockProduct: (
id: string,
- data: MerchantBackend.Products.LockRequest
+ data: MerchantBackend.Products.LockRequest,
) => Promise<void>;
}
@@ -49,11 +49,11 @@ export function useProductAPI(): ProductAPI {
const { token: instanceToken, id, admin } = useInstanceContext();
const { url, token } = !admin
- ? { url: baseUrl, token: adminToken, }
- : { url: `${baseUrl}/instances/${id}`, token: instanceToken, };
+ ? { url: baseUrl, token: adminToken }
+ : { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const createProduct = async (
- data: MerchantBackend.Products.ProductAddDetail
+ data: MerchantBackend.Products.ProductAddDetail,
): Promise<void> => {
const res = await request(`${url}/private/products`, {
method: "post",
@@ -66,7 +66,7 @@ export function useProductAPI(): ProductAPI {
const updateProduct = async (
productId: string,
- data: MerchantBackend.Products.ProductPatchDetail
+ data: MerchantBackend.Products.ProductPatchDetail,
): Promise<void> => {
const r = await request(`${url}/private/products/${productId}`, {
method: "patch",
@@ -87,7 +87,7 @@ export function useProductAPI(): ProductAPI {
const lockProduct = async (
productId: string,
- data: MerchantBackend.Products.LockRequest
+ data: MerchantBackend.Products.LockRequest,
): Promise<void> => {
await request(`${url}/private/products/${productId}/lock`, {
method: "post",
@@ -108,8 +108,8 @@ export function useInstanceProducts(): HttpResponse<
const { token: instanceToken, id, admin } = useInstanceContext();
const { url, token } = !admin
- ? { url: baseUrl, token: baseToken, }
- : { url: `${baseUrl}/instances/${id}`, token: instanceToken, };
+ ? { url: baseUrl, token: baseToken }
+ : { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const { data: list, error: listError } = useSWR<
HttpResponseOk<MerchantBackend.Products.InventorySummaryResponse>,
@@ -123,7 +123,7 @@ export function useInstanceProducts(): HttpResponse<
});
const paths = (list?.data.products || []).map(
- (p) => `/private/products/${p.product_id}`
+ (p) => `/private/products/${p.product_id}`,
);
const { data: products, error: productError } = useSWR<
HttpResponseOk<MerchantBackend.Products.ProductDetail>[],
@@ -136,7 +136,6 @@ export function useInstanceProducts(): HttpResponse<
refreshWhenOffline: false,
});
-
if (listError) return listError;
if (productError) return productError;
@@ -154,20 +153,20 @@ export function useInstanceProducts(): HttpResponse<
}
export function useProductDetails(
- productId: string
+ productId: string,
): HttpResponse<MerchantBackend.Products.ProductDetail> {
const { url: baseUrl, token: baseToken } = useBackendContext();
const { token: instanceToken, id, admin } = useInstanceContext();
const { url, token } = !admin
? {
- url: baseUrl,
- token: baseToken,
- }
+ url: baseUrl,
+ token: baseToken,
+ }
: {
- url: `${baseUrl}/instances/${id}`,
- token: instanceToken,
- };
+ url: `${baseUrl}/instances/${id}`,
+ token: instanceToken,
+ };
const { data, error, isValidating } = useSWR<
HttpResponseOk<MerchantBackend.Products.ProductDetail>,
diff --git a/packages/merchant-backoffice-ui/src/hooks/reserves.ts b/packages/merchant-backoffice-ui/src/hooks/reserves.ts
index 0810ad26c..f6d77f113 100644
--- a/packages/merchant-backoffice-ui/src/hooks/reserves.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/reserves.ts
@@ -33,11 +33,11 @@ export function useReservesAPI(): ReserveMutateAPI {
const { token: instanceToken, id, admin } = useInstanceContext();
const { url, token } = !admin
- ? { url: baseUrl, token: adminToken, }
- : { url: `${baseUrl}/instances/${id}`, token: instanceToken, };
+ ? { url: baseUrl, token: adminToken }
+ : { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const createReserve = async (
- data: MerchantBackend.Tips.ReserveCreateRequest
+ data: MerchantBackend.Tips.ReserveCreateRequest,
): Promise<
HttpResponseOk<MerchantBackend.Tips.ReserveCreateConfirmation>
> => {
@@ -47,7 +47,7 @@ export function useReservesAPI(): ReserveMutateAPI {
method: "post",
token,
data,
- }
+ },
);
//evict reserve list query
@@ -58,7 +58,7 @@ export function useReservesAPI(): ReserveMutateAPI {
const authorizeTipReserve = async (
pub: string,
- data: MerchantBackend.Tips.TipCreateRequest
+ data: MerchantBackend.Tips.TipCreateRequest,
): Promise<HttpResponseOk<MerchantBackend.Tips.TipCreateConfirmation>> => {
const res = await request<MerchantBackend.Tips.TipCreateConfirmation>(
`${url}/private/reserves/${pub}/authorize-tip`,
@@ -66,7 +66,7 @@ export function useReservesAPI(): ReserveMutateAPI {
method: "post",
token,
data,
- }
+ },
);
//evict reserve details query
@@ -76,7 +76,7 @@ export function useReservesAPI(): ReserveMutateAPI {
};
const authorizeTip = async (
- data: MerchantBackend.Tips.TipCreateRequest
+ data: MerchantBackend.Tips.TipCreateRequest,
): Promise<HttpResponseOk<MerchantBackend.Tips.TipCreateConfirmation>> => {
const res = await request<MerchantBackend.Tips.TipCreateConfirmation>(
`${url}/private/tips`,
@@ -84,7 +84,7 @@ export function useReservesAPI(): ReserveMutateAPI {
method: "post",
token,
data,
- }
+ },
);
//evict all details query
@@ -110,14 +110,14 @@ export function useReservesAPI(): ReserveMutateAPI {
export interface ReserveMutateAPI {
createReserve: (
- data: MerchantBackend.Tips.ReserveCreateRequest
+ data: MerchantBackend.Tips.ReserveCreateRequest,
) => Promise<HttpResponseOk<MerchantBackend.Tips.ReserveCreateConfirmation>>;
authorizeTipReserve: (
id: string,
- data: MerchantBackend.Tips.TipCreateRequest
+ data: MerchantBackend.Tips.TipCreateRequest,
) => Promise<HttpResponseOk<MerchantBackend.Tips.TipCreateConfirmation>>;
authorizeTip: (
- data: MerchantBackend.Tips.TipCreateRequest
+ data: MerchantBackend.Tips.TipCreateRequest,
) => Promise<HttpResponseOk<MerchantBackend.Tips.TipCreateConfirmation>>;
deleteReserve: (id: string) => Promise<HttpResponse<void>>;
}
@@ -127,8 +127,8 @@ export function useInstanceReserves(): HttpResponse<MerchantBackend.Tips.Tipping
const { token: instanceToken, id, admin } = useInstanceContext();
const { url, token } = !admin
- ? { url: baseUrl, token: baseToken, }
- : { url: `${baseUrl}/instances/${id}`, token: instanceToken, };
+ ? { url: baseUrl, token: baseToken }
+ : { url: `${baseUrl}/instances/${id}`, token: instanceToken };
const { data, error, isValidating } = useSWR<
HttpResponseOk<MerchantBackend.Tips.TippingReserveStatus>,
@@ -142,7 +142,7 @@ export function useInstanceReserves(): HttpResponse<MerchantBackend.Tips.Tipping
}
export function useReserveDetails(
- reserveId: string
+ reserveId: string,
): HttpResponse<MerchantBackend.Tips.ReserveDetail> {
const { url: baseUrl } = useBackendContext();
const { token, id: instanceId, admin } = useInstanceContext();
@@ -167,7 +167,7 @@ export function useReserveDetails(
}
export function useTipDetails(
- tipId: string
+ tipId: string,
): HttpResponse<MerchantBackend.Tips.TipDetails> {
const { url: baseUrl } = useBackendContext();
const { token, id: instanceId, admin } = useInstanceContext();
@@ -194,7 +194,7 @@ export function useTipDetails(
function reserveDetailFetcher<T>(
url: string,
token: string,
- backend: string
+ backend: string,
): Promise<HttpResponseOk<T>> {
return request<T>(`${backend}${url}`, {
token,
@@ -207,7 +207,7 @@ function reserveDetailFetcher<T>(
function tipsDetailFetcher<T>(
url: string,
token: string,
- backend: string
+ backend: string,
): Promise<HttpResponseOk<T>> {
return request<T>(`${backend}${url}`, {
token,
diff --git a/packages/merchant-backoffice-ui/src/hooks/transfer.ts b/packages/merchant-backoffice-ui/src/hooks/transfer.ts
index 2ab22b1a1..d1ac2c285 100644
--- a/packages/merchant-backoffice-ui/src/hooks/transfer.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/transfer.ts
@@ -35,7 +35,7 @@ async function transferFetcher<T>(
payto_uri?: string,
verified?: string,
position?: string,
- delta?: number
+ delta?: number,
): Promise<HttpResponseOk<T>> {
const params: any = {};
if (payto_uri !== undefined) params.payto_uri = payto_uri;
@@ -55,28 +55,31 @@ export function useTransferAPI(): TransferAPI {
const { url, token } = !admin
? {
- url: baseUrl,
- token: adminToken,
- }
+ url: baseUrl,
+ token: adminToken,
+ }
: {
- url: `${baseUrl}/instances/${id}`,
- token: instanceToken,
- };
+ url: `${baseUrl}/instances/${id}`,
+ token: instanceToken,
+ };
const informTransfer = async (
- data: MerchantBackend.Transfers.TransferInformation
+ data: MerchantBackend.Transfers.TransferInformation,
): Promise<
HttpResponseOk<MerchantBackend.Transfers.MerchantTrackTransferResponse>
> => {
- const res = await request<MerchantBackend.Transfers.MerchantTrackTransferResponse>(
- `${url}/private/transfers`, {
- method: "post",
- token,
- data,
- });
+ const res =
+ await request<MerchantBackend.Transfers.MerchantTrackTransferResponse>(
+ `${url}/private/transfers`,
+ {
+ method: "post",
+ token,
+ data,
+ },
+ );
await mutateAll(/.*private\/transfers.*/);
- return res
+ return res;
};
return { informTransfer };
@@ -84,7 +87,7 @@ export function useTransferAPI(): TransferAPI {
export interface TransferAPI {
informTransfer: (
- data: MerchantBackend.Transfers.TransferInformation
+ data: MerchantBackend.Transfers.TransferInformation,
) => Promise<
HttpResponseOk<MerchantBackend.Transfers.MerchantTrackTransferResponse>
>;
@@ -98,7 +101,7 @@ export interface InstanceTransferFilter {
export function useInstanceTransfers(
args?: InstanceTransferFilter,
- updatePosition?: (id: string) => void
+ updatePosition?: (id: string) => void,
): HttpResponsePaginated<MerchantBackend.Transfers.TransferList> {
const { url: baseUrl, token: baseToken } = useBackendContext();
const { token: instanceToken, id, admin } = useInstanceContext();
@@ -133,7 +136,7 @@ export function useInstanceTransfers(
args?.position,
totalBefore,
],
- transferFetcher
+ transferFetcher,
);
const {
data: afterData,
@@ -149,7 +152,7 @@ export function useInstanceTransfers(
args?.position,
-totalAfter,
],
- transferFetcher
+ transferFetcher,
);
//this will save last result
@@ -168,8 +171,10 @@ export function useInstanceTransfers(
if (afterError) return afterError;
// if the query returns less that we ask, then we have reach the end or beginning
- const isReachingEnd = afterData && afterData.data.transfers.length < totalAfter;
- const isReachingStart = args?.position === undefined ||
+ const isReachingEnd =
+ afterData && afterData.data.transfers.length < totalAfter;
+ const isReachingStart =
+ args?.position === undefined ||
(beforeData && beforeData.data.transfers.length < totalBefore);
const pagination = {
@@ -180,10 +185,10 @@ export function useInstanceTransfers(
if (afterData.data.transfers.length < MAX_RESULT_SIZE) {
setPageAfter(pageAfter + 1);
} else {
- const from =
- `${afterData.data
- .transfers[afterData.data.transfers.length - 1]
- .transfer_serial_id}`;
+ const from = `${
+ afterData.data.transfers[afterData.data.transfers.length - 1]
+ .transfer_serial_id
+ }`;
if (from && updatePosition) updatePosition(from);
}
},
@@ -192,10 +197,10 @@ export function useInstanceTransfers(
if (beforeData.data.transfers.length < MAX_RESULT_SIZE) {
setPageBefore(pageBefore + 1);
} else if (beforeData) {
- const from =
- `${beforeData.data
- .transfers[beforeData.data.transfers.length - 1]
- .transfer_serial_id}`;
+ const from = `${
+ beforeData.data.transfers[beforeData.data.transfers.length - 1]
+ .transfer_serial_id
+ }`;
if (from && updatePosition) updatePosition(from);
}
},
@@ -205,9 +210,9 @@ export function useInstanceTransfers(
!beforeData || !afterData
? []
: (beforeData || lastBefore).data.transfers
- .slice()
- .reverse()
- .concat((afterData || lastAfter).data.transfers);
+ .slice()
+ .reverse()
+ .concat((afterData || lastAfter).data.transfers);
if (loadingAfter || loadingBefore)
return { loading: true, data: { transfers } };
if (beforeData && afterData) {