← marzneshin
/
v0.3.1
/
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};