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