diff options
Diffstat (limited to 'src/app/(main)/admin/users/UserDeleteForm.tsx')
| -rw-r--r-- | src/app/(main)/admin/users/UserDeleteForm.tsx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/app/(main)/admin/users/UserDeleteForm.tsx b/src/app/(main)/admin/users/UserDeleteForm.tsx new file mode 100644 index 0000000..8f6fd50 --- /dev/null +++ b/src/app/(main)/admin/users/UserDeleteForm.tsx @@ -0,0 +1,41 @@ +import { AlertDialog, Row } from '@umami/react-zen'; +import { useDeleteQuery, useMessages, useModified } from '@/components/hooks'; + +export function UserDeleteForm({ + userId, + username, + onSave, + onClose, +}: { + userId: string; + username: string; + onSave?: () => void; + onClose?: () => void; +}) { + const { messages, labels, formatMessage } = useMessages(); + const { mutateAsync } = useDeleteQuery(`/users/${userId}`); + const { touch } = useModified(); + + const handleConfirm = async () => { + await mutateAsync(null, { + onSuccess: async () => { + touch('users'); + touch(`users:${userId}`); + onSave?.(); + onClose?.(); + }, + }); + }; + + return ( + <AlertDialog + title={formatMessage(labels.delete)} + onConfirm={handleConfirm} + onCancel={onClose} + confirmLabel={formatMessage(labels.delete)} + isDanger + > + <Row gap="1">{formatMessage(messages.confirmDelete, { target: username })}</Row> + </AlertDialog> + ); +} |