"use client"; import { useState, useActionState, useEffect } from "react"; import { createUser, updateUser, deleteUser, UserActionState } from "@/app/actions/users"; import { User, UserPlus, Edit2, Trash2, X, Save, ShieldAlert } from "lucide-react"; type UserType = { id: number; username: string; createdAt: Date; updatedAt: Date; }; export default function UsersClient({ initialUsers }: { initialUsers: UserType[] }) { const [users, setUsers] = useState(initialUsers); const [isEditing, setIsEditing] = useState(false); const [editingUser, setEditingUser] = useState(null); // Update state when initialUsers change useEffect(() => { setUsers(initialUsers); }, [initialUsers]); const [createState, createAction, isCreating] = useActionState( createUser, null ); const [updateState, updateAction, isUpdating] = useActionState( updateUser, null ); const handleDelete = async (id: number) => { if (confirm("Bu kullanıcıyı silmek istediğinize emin misiniz?")) { const result = await deleteUser(id); if (result?.success) { setUsers(users.filter(u => u.id !== id)); } else { alert(result?.message || "Bir hata oluştu."); } } }; const handleEditClick = (user: UserType) => { setEditingUser(user); setIsEditing(true); }; const handleAddNew = () => { setEditingUser(null); setIsEditing(true); }; const handleCancel = () => { setIsEditing(false); setEditingUser(null); }; // Check state to close modal on success useEffect(() => { if (createState?.success || updateState?.success) { setIsEditing(false); setEditingUser(null); } }, [createState, updateState]); return (
{/* List Section */} {!isEditing && (

Yönetici Hesapları

{(createState?.message || updateState?.message) && (
{createState?.message || updateState?.message}
)}
{users.map((user) => (
{user.username} Oluşturulma: {new Date(user.createdAt).toLocaleDateString('tr-TR')}
))} {users.length === 0 && (

Kullanıcı bulunamadı.

)}
)} {/* Form Section */} {isEditing && (

{editingUser ? : } {editingUser ? "Kullanıcıyı Düzenle" : "Yeni Kullanıcı Ekle"}

{editingUser && }
{editingUser && (

Şifreyi değiştirmek istemiyorsanız boş bırakın.

)}
{(createState?.message || updateState?.message) && (
{createState?.message || updateState?.message}
)}
)}
); }