2023-06-23 11:58:51 +00:00
|
|
|
import { devlog, makeRequest } from "@frontend/kitui";
|
2023-07-13 18:59:23 +00:00
|
|
|
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;
|
2023-07-13 18:59:23 +00:00
|
|
|
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();
|
|
|
|
|
2023-07-13 18:59:23 +00:00
|
|
|
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]);
|
2023-07-13 18:59:23 +00:00
|
|
|
}
|