diff options
author | Sebastian <sebasjm@gmail.com> | 2023-01-03 01:57:39 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-01-03 01:58:18 -0300 |
commit | a2668c22f0d18386fc988f27299172145d9fa15d (patch) | |
tree | 38f06046ce4d71ee3af64ede931754bfae6dc954 /packages/merchant-backoffice-ui/src/hooks/reserves.ts | |
parent | d1aa79eae817b1cf4c23f800308ecad101692ac7 (diff) | |
download | wallet-core-a2668c22f0d18386fc988f27299172145d9fa15d.tar.xz |
refactor better QA
removed axios, use fetch
removed jest, added mocha and chai
moved the default request handler to runtime dependency (so it can be replaced for testing)
refactored ALL the test to the standard web-utils
all hooks now use ONE request handler
moved the tests from test folder to src
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/reserves.ts')
-rw-r--r-- | packages/merchant-backoffice-ui/src/hooks/reserves.ts | 90 |
1 files changed, 18 insertions, 72 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/reserves.ts b/packages/merchant-backoffice-ui/src/hooks/reserves.ts index f6d77f113..dc127af13 100644 --- a/packages/merchant-backoffice-ui/src/hooks/reserves.ts +++ b/packages/merchant-backoffice-ui/src/hooks/reserves.ts @@ -14,27 +14,14 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ import useSWR, { useSWRConfig } from "swr"; -import { useBackendContext } from "../context/backend.js"; -import { useInstanceContext } from "../context/instance.js"; import { MerchantBackend } from "../declaration.js"; -import { - fetcher, - HttpError, - HttpResponse, - HttpResponseOk, - request, - useMatchMutate, -} from "./backend.js"; +import { HttpError, HttpResponse, HttpResponseOk } from "../utils/request.js"; +import { useBackendInstanceRequest, useMatchMutate } from "./backend.js"; export function useReservesAPI(): ReserveMutateAPI { const mutateAll = useMatchMutate(); const { mutate } = useSWRConfig(); - const { url: baseUrl, token: adminToken } = useBackendContext(); - const { token: instanceToken, id, admin } = useInstanceContext(); - - const { url, token } = !admin - ? { url: baseUrl, token: adminToken } - : { url: `${baseUrl}/instances/${id}`, token: instanceToken }; + const { request } = useBackendInstanceRequest(); const createReserve = async ( data: MerchantBackend.Tips.ReserveCreateRequest, @@ -42,10 +29,9 @@ export function useReservesAPI(): ReserveMutateAPI { HttpResponseOk<MerchantBackend.Tips.ReserveCreateConfirmation> > => { const res = await request<MerchantBackend.Tips.ReserveCreateConfirmation>( - `${url}/private/reserves`, + `/private/reserves`, { - method: "post", - token, + method: "POST", data, }, ); @@ -61,16 +47,15 @@ export function useReservesAPI(): ReserveMutateAPI { data: MerchantBackend.Tips.TipCreateRequest, ): Promise<HttpResponseOk<MerchantBackend.Tips.TipCreateConfirmation>> => { const res = await request<MerchantBackend.Tips.TipCreateConfirmation>( - `${url}/private/reserves/${pub}/authorize-tip`, + `/private/reserves/${pub}/authorize-tip`, { - method: "post", - token, + method: "POST", data, }, ); //evict reserve details query - await mutate([`/private/reserves/${pub}`, token, url]); + await mutate([`/private/reserves/${pub}`]); return res; }; @@ -79,10 +64,9 @@ export function useReservesAPI(): ReserveMutateAPI { data: MerchantBackend.Tips.TipCreateRequest, ): Promise<HttpResponseOk<MerchantBackend.Tips.TipCreateConfirmation>> => { const res = await request<MerchantBackend.Tips.TipCreateConfirmation>( - `${url}/private/tips`, + `/private/tips`, { - method: "post", - token, + method: "POST", data, }, ); @@ -94,9 +78,8 @@ export function useReservesAPI(): ReserveMutateAPI { }; const deleteReserve = async (pub: string): Promise<HttpResponse<void>> => { - const res = await request<void>(`${url}/private/reserves/${pub}`, { - method: "delete", - token, + const res = await request<void>(`/private/reserves/${pub}`, { + method: "DELETE", }); //evict reserve list query @@ -123,17 +106,12 @@ export interface ReserveMutateAPI { } export function useInstanceReserves(): HttpResponse<MerchantBackend.Tips.TippingReserveStatus> { - 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 }; + const { fetcher } = useBackendInstanceRequest(); const { data, error, isValidating } = useSWR< HttpResponseOk<MerchantBackend.Tips.TippingReserveStatus>, HttpError - >([`/private/reserves`, token, url], fetcher); + >([`/private/reserves`], fetcher); if (isValidating) return { loading: true, data: data?.data }; if (data) return data; @@ -144,15 +122,12 @@ export function useInstanceReserves(): HttpResponse<MerchantBackend.Tips.Tipping export function useReserveDetails( reserveId: string, ): HttpResponse<MerchantBackend.Tips.ReserveDetail> { - const { url: baseUrl } = useBackendContext(); - const { token, id: instanceId, admin } = useInstanceContext(); - - const url = !admin ? baseUrl : `${baseUrl}/instances/${instanceId}`; + const { reserveDetailFetcher } = useBackendInstanceRequest(); const { data, error, isValidating } = useSWR< HttpResponseOk<MerchantBackend.Tips.ReserveDetail>, HttpError - >([`/private/reserves/${reserveId}`, token, url], reserveDetailFetcher, { + >([`/private/reserves/${reserveId}`], reserveDetailFetcher, { refreshInterval: 0, refreshWhenHidden: false, revalidateOnFocus: false, @@ -169,15 +144,12 @@ export function useReserveDetails( export function useTipDetails( tipId: string, ): HttpResponse<MerchantBackend.Tips.TipDetails> { - const { url: baseUrl } = useBackendContext(); - const { token, id: instanceId, admin } = useInstanceContext(); - - const url = !admin ? baseUrl : `${baseUrl}/instances/${instanceId}`; + const { tipsDetailFetcher } = useBackendInstanceRequest(); const { data, error, isValidating } = useSWR< HttpResponseOk<MerchantBackend.Tips.TipDetails>, HttpError - >([`/private/tips/${tipId}`, token, url], tipsDetailFetcher, { + >([`/private/tips/${tipId}`], tipsDetailFetcher, { refreshInterval: 0, refreshWhenHidden: false, revalidateOnFocus: false, @@ -190,29 +162,3 @@ export function useTipDetails( if (error) return error; return { loading: true }; } - -function reserveDetailFetcher<T>( - url: string, - token: string, - backend: string, -): Promise<HttpResponseOk<T>> { - return request<T>(`${backend}${url}`, { - token, - params: { - tips: "yes", - }, - }); -} - -function tipsDetailFetcher<T>( - url: string, - token: string, - backend: string, -): Promise<HttpResponseOk<T>> { - return request<T>(`${backend}${url}`, { - token, - params: { - pickups: "yes", - }, - }); -} |