import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { CreateUserRequest, UpdateUserRequest } from "@/lib/features/users/usersSlice"; import { User } from "@/lib/features/auth/authSlice"; import { getAvatarUrl } from "@/lib/utils"; import { useState, useEffect } from "react"; interface UserDialogProps { open: boolean; onOpenChange: (open: boolean) => void; user?: User | null; onSubmit: (data: CreateUserRequest | UpdateUserRequest) => void; isLoading: boolean; } export function UserDialog({ open, onOpenChange, user, onSubmit, isLoading }: UserDialogProps) { const [username, setUsername] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [role, setRole] = useState("user"); const [avatar, setAvatar] = useState(null); const [avatarPreview, setAvatarPreview] = useState(null); useEffect(() => { if (user) { setUsername(user.username); setEmail(user.email); setPassword(""); setRole(user.roles?.[0]?.name || "user"); setAvatar(null); setAvatarPreview(null); } else { setUsername(""); setEmail(""); setPassword(""); setRole("user"); setAvatar(null); setAvatarPreview(null); } }, [user, open]); const onAvatarChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0] || null; setAvatar(file); if (avatarPreview) URL.revokeObjectURL(avatarPreview); setAvatarPreview(file ? URL.createObjectURL(file) : null); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const roles = [role]; if (user) { const updateData: UpdateUserRequest = { id: user.id, username, email, roles }; if (password) updateData.password = password; if (avatar) updateData.avatar = avatar; onSubmit(updateData); } else { const createData: CreateUserRequest = { username, email, password, roles, avatar: avatar || undefined }; onSubmit(createData); } }; return ( {user ? "Kullanıcıyı Düzenle" : "Yeni Kullanıcı Ekle"} {user ? "Kullanıcı bilgilerini güncelleyin." : "Yeni bir kullanıcı oluşturun."}
setUsername(e.target.value)} className="col-span-3" required />
setEmail(e.target.value)} className="col-span-3" required />
setPassword(e.target.value)} className="col-span-3" placeholder={user ? "Değiştirmek için girin" : "Şifre"} required={!user} />
{username?.slice(0, 2).toUpperCase() || "?"}
); }