aboutsummaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts
diff options
context:
space:
mode:
authorChristian Blättler <blatc2@bfh.ch>2024-05-07 18:12:20 +0200
committerChristian Blättler <blatc2@bfh.ch>2024-05-07 18:12:20 +0200
commit04447178039569db4da0fd60c819e9fe1bc1df20 (patch)
tree2a93ecf076ddc63218cb676fb7cea1dd9ad31881 /packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts
parent7b3157df9746d12f712e6a4604eccc8ed6b7d0c3 (diff)
downloadwallet-core-04447178039569db4da0fd60c819e9fe1bc1df20.tar.xz
update token families code to allign with new standards
Diffstat (limited to 'packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts')
-rw-r--r--packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts140
1 files changed, 46 insertions, 94 deletions
diff --git a/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts b/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts
index 0266fe536..62f364972 100644
--- a/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts
+++ b/packages/merchant-backoffice-ui/src/hooks/tokenfamily.ts
@@ -13,114 +13,66 @@
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
- import {
- HttpResponse,
- HttpResponseOk,
- RequestError,
-} from "@gnu-taler/web-util/browser";
import { MerchantBackend } from "../declaration.js";
-import { useBackendInstanceRequest, useMatchMutate } from "./backend.js";
+import { useSessionContext } from "../context/session.js";
// FIX default import https://github.com/microsoft/TypeScript/issues/49189
-import _useSWR, { SWRHook, useSWRConfig } from "swr";
+import _useSWR, { SWRHook } from "swr";
+import { AccessToken, TalerHttpError, TalerMerchantManagementResultByMethod } from "@gnu-taler/taler-util";
const useSWR = _useSWR as unknown as SWRHook;
-export interface TokenFamilyAPI {
- createTokenFamily: (
- data: MerchantBackend.TokenFamilies.TokenFamilyAddDetail,
- ) => Promise<void>;
- updateTokenFamily: (
- slug: string,
- data: MerchantBackend.TokenFamilies.TokenFamilyPatchDetail,
- ) => Promise<void>;
- deleteTokenFamily: (slug: string) => Promise<void>;
-}
-
-export function useTokenFamilyAPI(): TokenFamilyAPI {
- const mutateAll = useMatchMutate();
- const { mutate } = useSWRConfig();
-
- const { request } = useBackendInstanceRequest();
+export function useInstanceTokenFamilies() {
+ const { state: session, lib: { instance } } = useSessionContext();
- const createTokenFamily = async (
- data: MerchantBackend.TokenFamilies.TokenFamilyAddDetail,
- ): Promise<void> => {
- const res = await request(`/private/tokenfamilies`, {
- method: "POST",
- data,
- });
+ // const [offset, setOffset] = useState<number | undefined>();
- return await mutateAll(/.*"\/private\/tokenfamilies.*/);
- };
-
- const updateTokenFamily = async (
- tokenFamilySlug: string,
- data: MerchantBackend.TokenFamilies.TokenFamilyPatchDetail,
- ): Promise<void> => {
- const r = await request(`/private/tokenfamilies/${tokenFamilySlug}`, {
- method: "PATCH",
- data,
+ async function fetcher([token, bid]: [AccessToken, number]) {
+ return await instance.listTokenFamilies(token, {
+ // limit: PAGINATED_LIST_REQUEST,
+ // offset: bid === undefined ? undefined: String(bid),
+ // order: "dec",
});
+ }
- return await mutateAll(/.*"\/private\/tokenfamilies.*/);
- };
+ const { data, error } = useSWR<
+ TalerMerchantManagementResultByMethod<"listTokenFamilies">,
+ TalerHttpError
+ >([session.token, "offset", "listTokenFamilies"], fetcher);
- const deleteTokenFamily = async (tokenFamilySlug: string): Promise<void> => {
- await request(`/private/tokenfamilies/${tokenFamilySlug}`, {
- method: "DELETE",
- });
- await mutate([`/private/tokenfamilies`]);
- };
+ if (error) return error;
+ if (data === undefined) return undefined;
+ if (data.type !== "ok") return data;
- return { createTokenFamily, updateTokenFamily, deleteTokenFamily };
+ return data;
}
-export function useInstanceTokenFamilies(): HttpResponse<
- (MerchantBackend.TokenFamilies.TokenFamilyEntry)[],
- MerchantBackend.ErrorDetail
-> {
- const { fetcher, multiFetcher } = useBackendInstanceRequest();
-
- const { data: list, error: listError } = useSWR<
- HttpResponseOk<MerchantBackend.TokenFamilies.TokenFamilySummaryResponse>,
- RequestError<MerchantBackend.ErrorDetail>
- >([`/private/tokenfamilies`], fetcher, {
- refreshInterval: 0,
- refreshWhenHidden: false,
- revalidateOnFocus: false,
- revalidateOnReconnect: false,
- refreshWhenOffline: false,
- });
-
- if (listError) return listError.cause;
-
- if (list) {
- return { ok: true, data: list.data.token_families };
+export function useTokenFamilyDetails(tokenFamilySlug: string) {
+ const { state: session } = useSessionContext();
+ const { lib: { instance } } = useSessionContext();
+
+ async function fetcher([slug, token]: [string, AccessToken]) {
+ return await instance.getTokenFamilyDetails(token, slug);
}
- return { loading: true };
+
+ const { data, error } = useSWR<
+ TalerMerchantManagementResultByMethod<"getTokenFamilyDetails">,
+ TalerHttpError
+ >([tokenFamilySlug, session.token, "getTokenFamilyDetails"], fetcher);
+
+ if (error) return error;
+ if (data === undefined) return undefined;
+ if (data.type !== "ok") return data;
+
+ return data;
}
-export function useTokenFamilyDetails(
- tokenFamilySlug: string,
-): HttpResponse<
- MerchantBackend.TokenFamilies.TokenFamilyDetail,
- MerchantBackend.ErrorDetail
-> {
- const { fetcher } = useBackendInstanceRequest();
-
- const { data, error, isValidating } = useSWR<
- HttpResponseOk<MerchantBackend.TokenFamilies.TokenFamilyDetail>,
- RequestError<MerchantBackend.ErrorDetail>
- >([`/private/tokenfamilies/${tokenFamilySlug}`], fetcher, {
- refreshInterval: 0,
- refreshWhenHidden: false,
- revalidateOnFocus: false,
- revalidateOnReconnect: false,
- refreshWhenOffline: false,
- });
-
- if (isValidating) return { loading: true, data: data?.data };
- if (data) return data;
- if (error) return error.cause;
- return { loading: true };
+export interface TokenFamilyAPI {
+ createTokenFamily: (
+ data: MerchantBackend.TokenFamilies.TokenFamilyAddDetail,
+ ) => Promise<void>;
+ updateTokenFamily: (
+ slug: string,
+ data: MerchantBackend.TokenFamilies.TokenFamilyPatchDetail,
+ ) => Promise<void>;
+ deleteTokenFamily: (slug: string) => Promise<void>;
}