gitscope
← marzneshin / v0.4.0 / dashboard/src/features/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/dialogs/mutation/sections/data-limit/use-data-limit.ts · TypeScript
Blame Raw
 1import { useEffect, useState } from "react";
 2import { useFormContext } from "react-hook-form";
 3
 4export const useDataLimit = () => {
 5    const form = useFormContext();
 6    const dataLimit = form.watch("data_limit");
 7
 8    const [isDataLimitEnabled, setIsDataLimitEnabled] = useState(dataLimit !== 0);
 9
10    useEffect(() => {
11        setIsDataLimitEnabled(dataLimit !== 0);
12    }, [dataLimit]);
13
14    useEffect(() => {
15        if (!isDataLimitEnabled) {
16            form.setValue("data_limit", 0);
17            form.setValue("data_limit_reset_strategy", "no_reset");
18        }
19        // eslint-disable-next-line react-hooks/exhaustive-deps
20    }, [isDataLimitEnabled]);
21
22    return { isDataLimitEnabled, setIsDataLimitEnabled };
23};