'use client'; import { useState, useEffect } from 'react'; import { useAuth } from '@/contexts/AuthContext'; import { packagesApi } from '@/lib/api/packages'; import PackageList from '@/components/admin/packages/PackageList'; import PackageForm from '@/components/admin/packages/PackageForm'; import PageHeader from '@/components/admin/PageHeader'; import ConfirmDialog from '@/components/admin/ConfirmDialog'; import { showToast } from '@/components/Toast'; import { PackageName, CreatePackageData, UpdatePackageData } from '@/types/package'; import { PlusIcon } from '@heroicons/react/24/outline'; export default function PackagesPage() { const { token } = useAuth(); const [packages, setPackages] = useState([]); const [selectedPackage, setSelectedPackage] = useState(null); const [isLoading, setIsLoading] = useState(false); const [isFormVisible, setIsFormVisible] = useState(false); const [error, setError] = useState(null); const [deleteTarget, setDeleteTarget] = useState(null); useEffect(() => { if (token) { loadPackages(); } }, [token]); const loadPackages = async () => { setIsLoading(true); setError(null); try { const data = await packagesApi.getAllPackages(token!); setPackages(data); } catch (err) { setError(err instanceof Error ? err.message : 'خطا در دریافت لیست پکیج‌ها'); } finally { setIsLoading(false); } }; const handleCreate = () => { setSelectedPackage(null); setIsFormVisible(true); }; const handleEdit = (pkg: PackageName) => { setSelectedPackage(pkg); setIsFormVisible(true); }; const handleDelete = (pkg: PackageName) => { setDeleteTarget(pkg); }; const confirmDelete = async () => { if (!deleteTarget) return; const pkg = deleteTarget; setIsLoading(true); setError(null); try { await packagesApi.deletePackage(pkg.name!, token!); showToast('success', 'پکیج با موفقیت حذف شد'); await loadPackages(); } catch (err) { setError(err instanceof Error ? err.message : 'خطا در حذف پکیج'); } finally { setIsLoading(false); setDeleteTarget(null); } }; const handleSubmit = async (data: CreatePackageData | UpdatePackageData) => { setIsLoading(true); setError(null); try { if (selectedPackage) { await packagesApi.updatePackage(selectedPackage.name!, data, token!); showToast('success', 'پکیج با موفقیت به‌روزرسانی شد'); } else { await packagesApi.createPackage(data as CreatePackageData, token!); showToast('success', 'پکیج با موفقیت ایجاد شد'); } await loadPackages(); setIsFormVisible(false); setSelectedPackage(null); } catch (err) { setError(err instanceof Error ? err.message : 'خطا در ذخیره پکیج'); } finally { setIsLoading(false); } }; const handleCancel = () => { setIsFormVisible(false); setSelectedPackage(null); setError(null); }; return (
پکیج جدید ) : undefined } /> {error && (

{error}

)} {isFormVisible ? ( ) : ( )} setDeleteTarget(null)} />
); }