'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 { 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 [success, setSuccess] = useState(null); // Load packages on mount 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 = async (pkg: PackageName) => { if (!confirm(`آیا از حذف پکیج "${pkg.title}" اطمینان دارید؟`)) { return; } setIsLoading(true); setError(null); setSuccess(null); try { await packagesApi.deletePackage(pkg.name!, token!); setSuccess('پکیج با موفقیت حذف شد'); await loadPackages(); } catch (err) { setError(err instanceof Error ? err.message : 'خطا در حذف پکیج'); } finally { setIsLoading(false); } }; const handleSubmit = async (data: CreatePackageData | UpdatePackageData) => { setIsLoading(true); setError(null); setSuccess(null); try { if (selectedPackage) { // Update existing package await packagesApi.updatePackage(selectedPackage.name!, data, token!); setSuccess('پکیج با موفقیت به‌روزرسانی شد'); } else { // Create new package await packagesApi.createPackage(data as CreatePackageData, token!); setSuccess('پکیج با موفقیت ایجاد شد'); } 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); setSuccess(null); }; return (

مدیریت پکیج‌ها

{!isFormVisible && ( )}
{/* Messages */} {error && (

{error}

)} {success && (

{success}

)} {/* Form or List */} {isFormVisible ? ( ) : ( )}
); }