diff options
author | Sebastian <sebasjm@gmail.com> | 2023-09-04 14:17:55 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-09-04 14:17:55 -0300 |
commit | e1d86816a7c07cb8ca2d54676d5cdbbe513f2ba7 (patch) | |
tree | d4ed5506ab3550a7e9b1a082d7ffeddf9f3c4954 /packages/merchant-backoffice-ui/src/hooks/backend.ts | |
parent | ff20c3e25e076c24f7cb93eabe58b6f934f51f35 (diff) | |
download | wallet-core-e1d86816a7c07cb8ca2d54676d5cdbbe513f2ba7.tar.xz |
backoffcie new version, lot of changes
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/backend.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/backend.ts | 111 |
1 files changed, 62 insertions, 49 deletions
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<any> { 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<HttpResponseOk<T>>; fetcher: <T>(endpoint: string) => Promise<HttpResponseOk<T>>; reserveDetailFetcher: <T>(endpoint: string) => Promise<HttpResponseOk<T>>; - tipsDetailFetcher: <T>(endpoint: string) => Promise<HttpResponseOk<T>>; - multiFetcher: <T>(url: string[]) => Promise<HttpResponseOk<T>[]>; + rewardsDetailFetcher: <T>(endpoint: string) => Promise<HttpResponseOk<T>>; + multiFetcher: <T>(params: [url: string[]]) => Promise<HttpResponseOk<T>[]>; orderFetcher: <T>( - 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<HttpResponseOk<T>>; transferFetcher: <T>( - endpoint: string, - payto_uri?: string, - verified?: string, - position?: string, - delta?: number, + params: [endpoint: string, + payto_uri?: string, + verified?: string, + position?: string, + delta?: number,] ) => Promise<HttpResponseOk<T>>; templateFetcher: <T>( - endpoint: string, - position?: string, - delta?: number, + params: [endpoint: string, + position?: string, + delta?: number] ) => Promise<HttpResponseOk<T>>; webhookFetcher: <T>( - endpoint: string, - position?: string, - delta?: number, + params: [endpoint: string, + position?: string, + delta?: number] ) => Promise<HttpResponseOk<T>>; } 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<T>( - endpoints: string[], + args: [endpoints: string[]], ): Promise<HttpResponseOk<T>[]> { + const [endpoints] = args return Promise.all( endpoints.map((endpoint) => requestHandler<T>(baseUrl, endpoint, { token }), @@ -232,13 +241,14 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const orderFetcher = useCallback( function orderFetcherImpl<T>( - 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<HttpResponseOk<T>> { + 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<HttpResponseOk<T>> { return requestHandler<T>(baseUrl, endpoint, { params: { - tips: "yes", + rewards: "yes", }, token, }); @@ -268,8 +278,8 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { [baseUrl, token], ); - const tipsDetailFetcher = useCallback( - function tipsDetailFetcherImpl<T>( + const rewardsDetailFetcher = useCallback( + function rewardsDetailFetcherImpl<T>( endpoint: string, ): Promise<HttpResponseOk<T>> { return requestHandler<T>(baseUrl, endpoint, { @@ -284,12 +294,13 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { const transferFetcher = useCallback( function transferFetcherImpl<T>( - endpoint: string, - payto_uri?: string, - verified?: string, - position?: string, - delta?: number, + args: [endpoint: string, + payto_uri?: string, + verified?: string, + position?: string, + delta?: number,] ): Promise<HttpResponseOk<T>> { + 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<T>( - endpoint: string, - position?: string, - delta?: number, + args: [endpoint: string, + position?: string, + delta?: number,] ): Promise<HttpResponseOk<T>> { + 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<T>( - endpoint: string, - position?: string, - delta?: number, + args: [endpoint: string, + position?: string, + delta?: number,] ): Promise<HttpResponseOk<T>> { + 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, |