gitscope
← marzneshin / v0.7.3 / dashboard/src/modules/users/components/dialogs/mutation/sections/expiration-method/use-expiration-method-tabs.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/mutation/sections/expiration-method/use-expiration-method-tabs.ts · TypeScript
Blame Raw
 1import { UserMutationType, ExpireStrategy } from "@marzneshin/modules/users";
 2import { useState, useEffect } from "react";
 3import { useFormContext } from "react-hook-form";
 4import { strategies } from "./expiration-method.strategy"
 5
 6
 7export const useExpirationMethodTabs = (entity: UserMutationType | null) => {
 8    const form = useFormContext();
 9
10    const [
11        selectedExpirationMethodTab,
12        setSelectedExpirationMethodTab
13    ] = useState<ExpireStrategy>(entity ? entity.expire_strategy : 'fixed_date');
14    useEffect(() => {
15        strategies[selectedExpirationMethodTab as ExpireStrategy].apply(form);
16        // eslint-disable-next-line react-hooks/exhaustive-deps
17    }, [selectedExpirationMethodTab]);
18
19    const handleTabChange = (value: string) => {
20        setSelectedExpirationMethodTab(value as ExpireStrategy);
21    };
22
23    return {
24        selectedExpirationMethodTab,
25        setSelectedExpirationMethodTab,
26        handleTabChange,
27    };
28};