From e1d86816a7c07cb8ca2d54676d5cdbbe513f2ba7 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 4 Sep 2023 14:17:55 -0300 Subject: backoffcie new version, lot of changes --- .../merchant-backoffice-ui/src/hooks/backend.ts | 111 ++++++++++++--------- 1 file changed, 62 insertions(+), 49 deletions(-) (limited to 'packages/merchant-backoffice-ui/src/hooks/backend.ts') diff --git a/packages/merchant-backoffice-ui/src/hooks/backend.ts b/packages/merchant-backoffice-ui/src/hooks/backend.ts index 145a366f6..ecd34df6d 100644 --- a/packages/merchant-backoffice-ui/src/hooks/backend.ts +++ b/packages/merchant-backoffice-ui/src/hooks/backend.ts @@ -33,8 +33,9 @@ import { } from "@gnu-taler/web-util/browser"; import { useApiContext } from "@gnu-taler/web-util/browser"; + export function useMatchMutate(): ( - re: RegExp, + re?: RegExp, value?: unknown, ) => Promise { const { cache, mutate } = useSWRConfig(); @@ -45,13 +46,19 @@ export function useMatchMutate(): ( ); } - return function matchRegexMutate(re: RegExp, value?: unknown) { - const allKeys = Array.from(cache.keys()); - const keys = allKeys.filter((key) => re.test(key)); - const mutations = keys.map((key) => { - return mutate(key, value, true); + return function matchRegexMutate(re?: RegExp) { + return mutate((key) => { + // evict if no key or regex === all + if (!key || !re) return true + // match string + if (typeof key === 'string' && re.test(key)) return true + // record or object have the path at [0] + if (typeof key === 'object' && re.test(key[0])) return true + //key didn't match regex + return false + }, undefined, { + revalidate: true, }); - return Promise.all(mutations); }; } @@ -106,32 +113,32 @@ interface useBackendInstanceRequestType { ) => Promise>; fetcher: (endpoint: string) => Promise>; reserveDetailFetcher: (endpoint: string) => Promise>; - tipsDetailFetcher: (endpoint: string) => Promise>; - multiFetcher: (url: string[]) => Promise[]>; + rewardsDetailFetcher: (endpoint: string) => Promise>; + multiFetcher: (params: [url: string[]]) => Promise[]>; orderFetcher: ( - endpoint: string, - paid?: YesOrNo, - refunded?: YesOrNo, - wired?: YesOrNo, - searchDate?: Date, - delta?: number, + params: [endpoint: string, + paid?: YesOrNo, + refunded?: YesOrNo, + wired?: YesOrNo, + searchDate?: Date, + delta?: number,] ) => Promise>; transferFetcher: ( - endpoint: string, - payto_uri?: string, - verified?: string, - position?: string, - delta?: number, + params: [endpoint: string, + payto_uri?: string, + verified?: string, + position?: string, + delta?: number,] ) => Promise>; templateFetcher: ( - endpoint: string, - position?: string, - delta?: number, + params: [endpoint: string, + position?: string, + delta?: number] ) => Promise>; webhookFetcher: ( - endpoint: string, - position?: string, - delta?: number, + params: [endpoint: string, + position?: string, + delta?: number] ) => Promise>; } interface useBackendBaseRequestType { @@ -147,7 +154,7 @@ export function useCredentialsChecker() { const { request } = useApiContext(); //check against instance details endpoint //while merchant backend doesn't have a login endpoint - return async function testLogin( + async function testLogin( instance: string, token: string, ): Promise<{ @@ -167,6 +174,7 @@ export function useCredentialsChecker() { return { valid: false, cause: ErrorType.UNEXPECTED }; } }; + return testLogin } /** @@ -212,8 +220,9 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const multiFetcher = useCallback( function multiFetcherImpl( - endpoints: string[], + args: [endpoints: string[]], ): Promise[]> { + const [endpoints] = args return Promise.all( endpoints.map((endpoint) => requestHandler(baseUrl, endpoint, { token }), @@ -232,13 +241,14 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const orderFetcher = useCallback( function orderFetcherImpl( - endpoint: string, - paid?: YesOrNo, - refunded?: YesOrNo, - wired?: YesOrNo, - searchDate?: Date, - delta?: number, + args: [endpoint: string, + paid?: YesOrNo, + refunded?: YesOrNo, + wired?: YesOrNo, + searchDate?: Date, + delta?: number,] ): Promise> { + const [endpoint, paid, refunded, wired, searchDate, delta] = args const date_s = delta && delta < 0 && searchDate ? (searchDate.getTime() / 1000) + 1 @@ -260,7 +270,7 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { ): Promise> { return requestHandler(baseUrl, endpoint, { params: { - tips: "yes", + rewards: "yes", }, token, }); @@ -268,8 +278,8 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { [baseUrl, token], ); - const tipsDetailFetcher = useCallback( - function tipsDetailFetcherImpl( + const rewardsDetailFetcher = useCallback( + function rewardsDetailFetcherImpl( endpoint: string, ): Promise> { return requestHandler(baseUrl, endpoint, { @@ -284,12 +294,13 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const transferFetcher = useCallback( function transferFetcherImpl( - endpoint: string, - payto_uri?: string, - verified?: string, - position?: string, - delta?: number, + args: [endpoint: string, + payto_uri?: string, + verified?: string, + position?: string, + delta?: number,] ): Promise> { + const [endpoint, payto_uri, verified, position, delta] = args const params: any = {}; if (payto_uri !== undefined) params.payto_uri = payto_uri; if (verified !== undefined) params.verified = verified; @@ -305,10 +316,11 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const templateFetcher = useCallback( function templateFetcherImpl( - endpoint: string, - position?: string, - delta?: number, + args: [endpoint: string, + position?: string, + delta?: number,] ): Promise> { + const [endpoint, position, delta] = args const params: any = {}; if (delta !== undefined) { params.limit = delta; @@ -322,10 +334,11 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const webhookFetcher = useCallback( function webhookFetcherImpl( - endpoint: string, - position?: string, - delta?: number, + args: [endpoint: string, + position?: string, + delta?: number,] ): Promise> { + const [endpoint, position, delta] = args const params: any = {}; if (delta !== undefined) { params.limit = delta; @@ -343,7 +356,7 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { multiFetcher, orderFetcher, reserveDetailFetcher, - tipsDetailFetcher, + rewardsDetailFetcher, transferFetcher, templateFetcher, webhookFetcher, -- cgit v1.2.3