"use client"; import { useEffect, useState } from "react"; import { Search, Shield, RefreshCw, Copy, Eye, EyeOff } from "lucide-react"; import { AdminLayout } from "@/components/admin/admin-layout"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { useLanguage } from "@/components/language-provider"; interface App { id: string; name: string; client_id: string; client_type: string; redirect_uris: string[]; grant_types: string[]; scopes: string[]; is_active: boolean; created_at: string; } export default function AdminApplicationsPage() { const { lang, dir } = useLanguage(); const [apps, setApps] = useState([]); const [loading, setLoading] = useState(true); const [search, setSearch] = useState(""); const [showSecret, setShowSecret] = useState(null); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { window.location.href = "/login?redirect=/admin/applications"; return; } const fetchData = async () => { const baseURL = process.env.NEXT_PUBLIC_API_URL; const qs = new URLSearchParams(); if (search) qs.set("search", search); try { const res = await fetch(`${baseURL}/applications/?${qs.toString()}`, { headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); setApps(data.results || []); } catch (e) { console.error(e); } finally { setLoading(false); } }; const timer = setTimeout(fetchData, search ? 500 : 0); return () => clearTimeout(timer); }, [search]); const t = (fa: string, en: string) => (lang === "fa" ? fa : en); const copyToClipboard = (text: string) => navigator.clipboard.writeText(text); if (loading) { return (
); } return (

{t("اپلیکیشن\u200cها", "Applications")}

setSearch(e.target.value)} className="w-full pl-12 pr-4 py-2.5 rounded-lg border border-white/10 bg-white/5 text-white focus:outline-none focus:ring-2 focus:ring-brand-500/50" dir={dir} />
{apps.map((app) => ( ))}
{t("نام", "Name")} {t("Client ID", "Client ID")} {t("نوع", "Type")} {t("اسکوپ\u200cها", "Scopes")} {t("وضعیت", "Status")}
{app.name}
{app.client_id.slice(0, 16)}...
{app.client_type}
{app.scopes?.slice(0, 4).map((s) => ( {s} ))}
{app.is_active ? t("فعال", "Active") : t("غیرفعال", "Inactive")}
); }