import { type FC, useState, useMemo } from "react"; import { DialogTitle, DialogContent, Dialog, DialogHeader, Form, Button, ScrollArea, VStack, } from "@marzneshin/components"; import { useTranslation } from "react-i18next"; import { useAdminsCreationMutation, useAdminsUpdateMutation, AdminEditSchema, AdminCreateSchema, AdminType, } from "@marzneshin/features/admins"; import { ServicesField } from "@marzneshin/features/services"; import { UsernameField } from "@marzneshin/features/users"; import { PasswordField, EnabledField, ModifyUsersAccessField, SubscriptionUrlPrefixField, SudoPrivilageField, AllServicesAccessField, } from "./fields"; import { useMutationDialog, MutationDialogProps } from "@marzneshin/hooks"; export const AdminsMutationDialog: FC> = ({ onClose, entity = null, }) => { const { t } = useTranslation(); const defaultValue = useMemo(() => ({ service_ids: [], username: "", is_sudo: false, enabled: true, modify_users_access: true, }), []) const { onOpenChange, open, form, handleSubmit } = useMutationDialog({ entity, onClose, createMutation: useAdminsCreationMutation(), updateMutation: useAdminsUpdateMutation(), schema: entity ? AdminEditSchema : AdminCreateSchema, defaultValue, }); const [change, setChange] = useState(entity === null); if (entity !== null) form.setValue("password", null, { shouldTouch: true, shouldDirty: true, }); return ( {t(entity ? "page.admins.dialogs.edition.title" : "page.admins.dialogs.creation.title")}
); };