diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/backend.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/backend.ts | 108 |
1 files changed, 60 insertions, 48 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/backend.ts b/packages/merchant-backoffice-ui/src/hooks/backend.ts index 3f3db2fa1..952b33f7e 100644 --- a/packages/merchant-backoffice-ui/src/hooks/backend.ts +++ b/packages/merchant-backoffice-ui/src/hooks/backend.ts @@ -28,8 +28,8 @@ import { HttpResponse, HttpResponseOk, RequestOptions, -} from "../utils/request.js"; -import { useApiContext } from "../context/api.js"; +} from "@gnu-taler/web-util/lib/index.browser"; +import { useApiContext } from "@gnu-taler/web-util/lib/index.browser"; export function useMatchMutate(): ( re: RegExp, @@ -54,12 +54,17 @@ export function useMatchMutate(): ( }; } -export function useBackendInstancesTestForAdmin(): HttpResponse<MerchantBackend.Instances.InstancesResponse> { +export function useBackendInstancesTestForAdmin(): HttpResponse< + MerchantBackend.Instances.InstancesResponse, + MerchantBackend.ErrorDetail +> { const { request } = useBackendBaseRequest(); type Type = MerchantBackend.Instances.InstancesResponse; - const [result, setResult] = useState<HttpResponse<Type>>({ loading: true }); + const [result, setResult] = useState< + HttpResponse<Type, MerchantBackend.ErrorDetail> + >({ loading: true }); useEffect(() => { request<Type>(`/management/instances`) @@ -70,12 +75,17 @@ export function useBackendInstancesTestForAdmin(): HttpResponse<MerchantBackend. return result; } -export function useBackendConfig(): HttpResponse<MerchantBackend.VersionResponse> { +export function useBackendConfig(): HttpResponse< + MerchantBackend.VersionResponse, + MerchantBackend.ErrorDetail +> { const { request } = useBackendBaseRequest(); type Type = MerchantBackend.VersionResponse; - const [result, setResult] = useState<HttpResponse<Type>>({ loading: true }); + const [result, setResult] = useState< + HttpResponse<Type, MerchantBackend.ErrorDetail> + >({ loading: true }); useEffect(() => { request<Type>(`/config`) @@ -88,15 +98,15 @@ export function useBackendConfig(): HttpResponse<MerchantBackend.VersionResponse interface useBackendInstanceRequestType { request: <T>( - path: string, + endpoint: string, options?: RequestOptions, ) => Promise<HttpResponseOk<T>>; - fetcher: <T>(path: string) => Promise<HttpResponseOk<T>>; - reserveDetailFetcher: <T>(path: string) => Promise<HttpResponseOk<T>>; - tipsDetailFetcher: <T>(path: string) => 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>[]>; orderFetcher: <T>( - path: string, + endpoint: string, paid?: YesOrNo, refunded?: YesOrNo, wired?: YesOrNo, @@ -104,26 +114,26 @@ interface useBackendInstanceRequestType { delta?: number, ) => Promise<HttpResponseOk<T>>; transferFetcher: <T>( - path: string, + endpoint: string, payto_uri?: string, verified?: string, position?: string, delta?: number, ) => Promise<HttpResponseOk<T>>; templateFetcher: <T>( - path: string, + endpoint: string, position?: string, delta?: number, ) => Promise<HttpResponseOk<T>>; webhookFetcher: <T>( - path: string, + endpoint: string, position?: string, delta?: number, ) => Promise<HttpResponseOk<T>>; } interface useBackendBaseRequestType { request: <T>( - path: string, + endpoint: string, options?: RequestOptions, ) => Promise<HttpResponseOk<T>>; } @@ -141,10 +151,10 @@ export function useBackendBaseRequest(): useBackendBaseRequestType { const request = useCallback( function requestImpl<T>( - path: string, + endpoint: string, options: RequestOptions = {}, ): Promise<HttpResponseOk<T>> { - return requestHandler<T>(backend, path, { token, ...options }); + return requestHandler<T>(backend, endpoint, { token, ...options }); }, [backend, token], ); @@ -153,45 +163,47 @@ export function useBackendBaseRequest(): useBackendBaseRequestType { } export function useBackendInstanceRequest(): useBackendInstanceRequestType { - const { url: baseUrl, token: baseToken } = useBackendContext(); + const { url: rootBackendUrl, token: rootToken } = useBackendContext(); const { token: instanceToken, id, admin } = useInstanceContext(); const { request: requestHandler } = useApiContext(); - const { backend, token } = !admin - ? { backend: baseUrl, token: baseToken } - : { backend: `${baseUrl}/instances/${id}`, token: instanceToken }; + const { baseUrl, token } = !admin + ? { baseUrl: rootBackendUrl, token: rootToken } + : { baseUrl: `${rootBackendUrl}/instances/${id}`, token: instanceToken }; const request = useCallback( function requestImpl<T>( - path: string, + endpoint: string, options: RequestOptions = {}, ): Promise<HttpResponseOk<T>> { - return requestHandler<T>(backend, path, { token, ...options }); + return requestHandler<T>(baseUrl, endpoint, { token, ...options }); }, - [backend, token], + [baseUrl, token], ); const multiFetcher = useCallback( function multiFetcherImpl<T>( - paths: string[], + endpoints: string[], ): Promise<HttpResponseOk<T>[]> { return Promise.all( - paths.map((path) => requestHandler<T>(backend, path, { token })), + endpoints.map((endpoint) => + requestHandler<T>(baseUrl, endpoint, { token }), + ), ); }, - [backend, token], + [baseUrl, token], ); const fetcher = useCallback( - function fetcherImpl<T>(path: string): Promise<HttpResponseOk<T>> { - return requestHandler<T>(backend, path, { token }); + function fetcherImpl<T>(endpoint: string): Promise<HttpResponseOk<T>> { + return requestHandler<T>(baseUrl, endpoint, { token }); }, - [backend, token], + [baseUrl, token], ); const orderFetcher = useCallback( function orderFetcherImpl<T>( - path: string, + endpoint: string, paid?: YesOrNo, refunded?: YesOrNo, wired?: YesOrNo, @@ -208,42 +220,42 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { if (refunded !== undefined) params.refunded = refunded; if (wired !== undefined) params.wired = wired; if (date_ms !== undefined) params.date_ms = date_ms; - return requestHandler<T>(backend, path, { params, token }); + return requestHandler<T>(baseUrl, endpoint, { params, token }); }, - [backend, token], + [baseUrl, token], ); const reserveDetailFetcher = useCallback( function reserveDetailFetcherImpl<T>( - path: string, + endpoint: string, ): Promise<HttpResponseOk<T>> { - return requestHandler<T>(backend, path, { + return requestHandler<T>(baseUrl, endpoint, { params: { tips: "yes", }, token, }); }, - [backend, token], + [baseUrl, token], ); const tipsDetailFetcher = useCallback( function tipsDetailFetcherImpl<T>( - path: string, + endpoint: string, ): Promise<HttpResponseOk<T>> { - return requestHandler<T>(backend, path, { + return requestHandler<T>(baseUrl, endpoint, { params: { pickups: "yes", }, token, }); }, - [backend, token], + [baseUrl, token], ); const transferFetcher = useCallback( function transferFetcherImpl<T>( - path: string, + endpoint: string, payto_uri?: string, verified?: string, position?: string, @@ -257,14 +269,14 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { } if (position !== undefined) params.offset = position; - return requestHandler<T>(backend, path, { params, token }); + return requestHandler<T>(baseUrl, endpoint, { params, token }); }, - [backend, token], + [baseUrl, token], ); const templateFetcher = useCallback( function templateFetcherImpl<T>( - path: string, + endpoint: string, position?: string, delta?: number, ): Promise<HttpResponseOk<T>> { @@ -274,14 +286,14 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { } if (position !== undefined) params.offset = position; - return requestHandler<T>(backend, path, { params, token }); + return requestHandler<T>(baseUrl, endpoint, { params, token }); }, - [backend, token], + [baseUrl, token], ); const webhookFetcher = useCallback( function webhookFetcherImpl<T>( - path: string, + endpoint: string, position?: string, delta?: number, ): Promise<HttpResponseOk<T>> { @@ -291,9 +303,9 @@ export function useBackendInstanceRequest(): useBackendInstanceRequestType { } if (position !== undefined) params.offset = position; - return requestHandler<T>(backend, path, { params, token }); + return requestHandler<T>(baseUrl, endpoint, { params, token }); }, - [backend, token], + [baseUrl, token], ); return { |