import React, { useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useTranslation } from '@/hooks/useI18n.tsx'; import { useUser, useUpdateUser, useCreateUser } from '@/hooks/api/useAdminAPI.ts'; import Button from '@/components/ui/Button.tsx'; import Input from '@/components/ui/Input.tsx'; import { Label } from '@/components/ui/Label.tsx'; import { FormField } from '@/components/ui/FormField.tsx'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card.tsx'; import { Switch } from '@/components/ui/Switch.tsx'; import { Combobox } from '@/components/ui/Combobox.tsx'; import { ArrowLeft, Save } from 'lucide-react'; import type { CreateUserRequest, UpdateUserRequest } from '@/services/admin-api.ts'; const UserEditPage = () => { const { t } = useTranslation(); const { id } = useParams<{ id: string }>(); const navigate = useNavigate(); const isNew = id === 'new'; const { data: user } = useUser(isNew ? null : id); const { mutate: updateUser, isPending: isUpdating } = useUpdateUser(); const { mutate: createUser, isPending: isCreating } = useCreateUser(); const [formData, setFormData] = useState(() => ({ name: user?.name ?? '', email: user?.email ?? '', password: '', role: user?.role ?? 'user', })); const [isActive, setIsActive] = useState(() => user?.isActive ?? true); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (isNew) { createUser(formData as CreateUserRequest, { onSuccess: (newUser) => { navigate(`/admin/users/${newUser.id}/edit`); }, }); } else if (id) { updateUser( { id, request: { ...formData, isActive, } as UpdateUserRequest, }, { onSuccess: () => { // Show success message }, } ); } }; return (
{isNew ? t('adminPage.users.newUser') : t('adminPage.users.editUser')} setFormData({ ...formData, name: e.target.value })} required /> setFormData({ ...formData, email: e.target.value })} required disabled={!isNew} /> {isNew && ( setFormData({ ...formData, password: e.target.value } as CreateUserRequest) } required={isNew} minLength={8} />

{t('adminPage.users.passwordHint')}

)} setFormData({ ...formData, role: value })} options={[ { value: 'user', label: t('adminPage.users.user') }, { value: 'admin', label: t('adminPage.users.admin') }, { value: 'content_manager', label: t('adminPage.users.contentManager') }, { value: 'viewer', label: t('adminPage.users.viewer') }, ]} /> {!isNew && (

{t('adminPage.users.activeHint')}

)}
); }; export default UserEditPage;