"use client" import * as React from "react" import { useEffect, useState, Suspense } from "react" import { useSession } from "next-auth/react" import { useRouter, useSearchParams } from "next/navigation" import { getColumns } from "./columns" import { DataTable } from "./data-table" import { User } from "@/types/user" import { userService } from "@/services/userService" import { Button } from "@/components/ui/button" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Loader2 } from "lucide-react" function UsersPageContent() { const { data: session, status } = useSession() const router = useRouter() const searchParams = useSearchParams() const [data, setData] = useState([]) const [total, setTotal] = useState(0) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) // Filters const page = Number(searchParams.get("page")) || 1 const perPage = Number(searchParams.get("per_page")) || 20 const soft = searchParams.get("soft") || "" // "", "only", "with" const fetchData = React.useCallback(async () => { if (!session?.user?.accessToken) { setLoading(false) return } setLoading(true) setError(null) try { const response = await userService.getUsers(session.user.accessToken, page, perPage, soft) setData(response.items || []) setTotal(response.total) } catch (error) { console.error("Failed to fetch users:", error) // eslint-disable-next-line @typescript-eslint/no-explicit-any setError((error as any).message || "Kullanıcılar getirilirken bir hata oluştu") setData([]) } finally { setLoading(false) } }, [session, page, perPage, soft]) useEffect(() => { if (status === "loading") return if (status === "unauthenticated" || !session?.user?.accessToken) { setLoading(false) return } fetchData() }, [fetchData, status, session]) const columns = React.useMemo(() => getColumns(fetchData), [fetchData]) const handleFilterChange = (value: string) => { const params = new URLSearchParams(searchParams.toString()) if (value && value !== "active") { params.set("soft", value) } else { params.delete("soft") } params.set("page", "1") router.push(`/admin/users?${params.toString()}`) } const handlePageChange = (newPage: number) => { const params = new URLSearchParams(searchParams.toString()) params.set("page", newPage.toString()) router.push(`/admin/users?${params.toString()}`) } const totalPages = Math.ceil(total / perPage) return (

Kullanıcı Yönetimi

{error && (
Hata: {error}
)} {loading && data.length === 0 ? (
) : ( <> {/* Pagination Controls */}
Sayfa {page} / {totalPages || 1}
)}
) } export default function UsersPage() { return ( }> ) }