'use client'; import { useState, useEffect } from 'react'; import { PackageName, CreatePackageData, UpdatePackageData } from '@/types/package'; import { XMarkIcon, PhotoIcon, DocumentTextIcon } from '@heroicons/react/24/outline'; interface PackageFormProps { package?: PackageName | null; onSubmit: (data: CreatePackageData | UpdatePackageData) => Promise; onCancel: () => void; isLoading: boolean; } export default function PackageForm({ package: pkg, onSubmit, onCancel, isLoading }: PackageFormProps) { const [formData, setFormData] = useState({ name: '', title: '', v1_identifier: '', myket_access_token: '', cafe_config_id: null, web_app_url: '', tries: 0, }); const [avatarFile, setAvatarFile] = useState(null); const [firebaseFile, setFirebaseFile] = useState(null); const [avatarPreview, setAvatarPreview] = useState(null); useEffect(() => { if (pkg) { setFormData({ name: pkg.name || '', title: pkg.title || '', v1_identifier: pkg.v1_identifier || '', myket_access_token: pkg.myket_access_token || '', cafe_config_id: pkg.cafe_config_id, web_app_url: pkg.web_app_url || '', tries: pkg.tries || 0, }); if (pkg.image && typeof pkg.image === 'string') { setAvatarPreview(pkg.image); } } }, [pkg]); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value === '' ? null : value, })); }; const handleNumberChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value === '' ? null : parseInt(value, 10), })); }; const handleAvatarChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { setAvatarFile(file); setFormData(prev => ({ ...prev, avatar: file })); // Create preview const reader = new FileReader(); reader.onloadend = () => { setAvatarPreview(reader.result as string); }; reader.readAsDataURL(file); } }; const handleFirebaseChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { setFirebaseFile(file); setFormData(prev => ({ ...prev, firebase_json: file })); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); await onSubmit(formData); }; const removeAvatar = () => { setAvatarFile(null); setAvatarPreview(null); setFormData(prev => ({ ...prev, avatar: null })); }; return (
{/* Name */}
{/* Title */}
{/* Avatar */}
{avatarPreview && ( )}
{avatarPreview && (
Preview
)}
{/* V1 Identifier */}
{/* Myket Access Token */}
{/* Cafe Config ID */}
{/* Web App URL */}
{/* Tries */}
{/* Firebase JSON */}
{firebaseFile && (

فایل انتخاب شده: {firebaseFile.name}

)}
{/* Form Actions */}
); }