front-hub/src/utils/hooks/useCustomTariffs.ts

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-06-23 11:58:51 +00:00
import { devlog, makeRequest } from "@frontend/kitui";
import { ServiceKeyToPrivilegesMap } from "@root/model/privilege";
2023-07-07 13:46:26 +00:00
import { useEffect, useLayoutEffect, useRef } from "react";
2023-06-06 13:13:58 +00:00
export function useCustomTariffs({ onError, onNewUser, url }: {
url: string;
onNewUser: (response: ServiceKeyToPrivilegesMap) => void;
2023-06-06 13:13:58 +00:00
onError: (error: any) => void;
}) {
2023-07-07 13:46:26 +00:00
const onNewUserRef = useRef(onNewUser);
const onErrorRef = useRef(onError);
useLayoutEffect(() => {
onNewUserRef.current = onNewUser;
onErrorRef.current = onError;
});
2023-06-23 11:58:51 +00:00
useEffect(() => {
2023-06-06 13:13:58 +00:00
const controller = new AbortController();
makeRequest<never, ServiceKeyToPrivilegesMap>({
2023-06-06 13:13:58 +00:00
url,
signal: controller.signal,
2023-06-23 11:58:51 +00:00
method: "get",
useToken: true,
2023-06-06 13:13:58 +00:00
}).then(result => {
2023-07-07 13:46:26 +00:00
onNewUserRef.current(result);
2023-06-06 13:13:58 +00:00
}).catch(error => {
devlog("Error fetching custom tariffs", error);
2023-07-07 13:46:26 +00:00
onErrorRef.current(error);
2023-06-06 13:13:58 +00:00
});
return () => controller.abort();
2023-07-07 13:46:26 +00:00
}, [url]);
}