import { FC, useCallback } from "react"; import { DialogTitle, DialogContent, Dialog, DialogHeader, Form, Button, } from '@marzneshin/components'; import { useTranslation } from 'react-i18next'; import { DATA_LIMIT_METRIC, UserMutationType, useUsersCreationMutation, useUsersUpdateMutation } from "@marzneshin/features/users"; import { UserSchema } from "./schema"; import { UsernameField, NoteField, ServicesField, } from "./fields"; import { useMutationDialog } from "@marzneshin/hooks"; import { DataLimitFields, ExpirationMethodFields } from "./sections"; interface UsersMutationDialogProps { entity: UserMutationType | null; open: boolean; onOpenChange: (state: boolean) => void; } export const UsersMutationDialog: FC = ({ entity, open, onOpenChange, }) => { const { t } = useTranslation(); const getDefaultValues = useCallback((): UserMutationType => ({ services: [], data_limit: 1, expire: null, username: '', data_limit_reset_strategy: 'no_reset', status: 'active', note: '', on_hold_expire_duration: 0, on_hold_timeout: undefined, }), []); const { form, handleSubmit } = useMutationDialog({ entity, onOpenChange, createMutation: useUsersCreationMutation(), updateMutation: useUsersUpdateMutation(), schema: UserSchema, getDefaultValue: getDefaultValues, loadFormtter: (d) => ({ ...d, data_limit: (d.data_limit ? d.data_limit : 0) / DATA_LIMIT_METRIC }) }) return ( {entity ? t('page.users.dialogs.edition.title') : t('page.users.dialogs.creation.title')}
); };