import { type FC, useMemo } from "react"; import { Separator, DialogTitle, DialogContent, Dialog, DialogHeader, Form, Button, ScrollArea, VStack, } from "@marzneshin/components"; import { useTranslation } from "react-i18next"; import { DATA_LIMIT_METRIC, useUsersCreationMutation, useUsersUpdateMutation, UserSchema, UsernameField, type UserMutationType, } from "@marzneshin/features/users"; import { ServicesField } from "@marzneshin/features/services"; import { NoteField } from "./fields"; import { type MutationDialogProps, useMutationDialog } from "@marzneshin/hooks"; import { DataLimitFields, ExpirationMethodFields } from "./sections"; export const UsersMutationDialog: FC> = ({ entity, onClose, }) => { const { t } = useTranslation(); const defaultValue = useMemo( () => ({ service_ids: [], username: "", data_limit_reset_strategy: "no_reset", note: "", expire_date: "", expire_strategy: "fixed_date", }), [], ); const { open, onOpenChange, form, handleSubmit } = useMutationDialog({ entity, onClose, createMutation: useUsersCreationMutation(), updateMutation: useUsersUpdateMutation(), schema: UserSchema, defaultValue, 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")}
); };