'use client' import { useEffect, useState, useCallback } from 'react' import { useVersions, useVersionActions } from '@/application' import { Platform } from '@/domain' import { VersionCard } from '@/presentation/components/version-card' import { UploadModal } from '@/presentation/components/upload-modal' import { EditModal } from '@/presentation/components/edit-modal' import toast from 'react-hot-toast' export default function HomePage() { const { versions, isLoading, error, refetch, setFilter } = useVersions() const { deleteVersion, toggleVersion } = useVersionActions() const [platformFilter, setPlatformFilter] = useState('all') const [showUploadModal, setShowUploadModal] = useState(false) const [editingVersionId, setEditingVersionId] = useState(null) useEffect(() => { setFilter({ platform: platformFilter === 'all' ? undefined : platformFilter }) }, [platformFilter, setFilter]) const handleRefresh = useCallback(() => { refetch() }, [refetch]) const handleDelete = async (id: string) => { if (!confirm('确定要删除这个版本吗?此操作不可恢复。')) { return } try { await deleteVersion(id) toast.success('版本已删除') } catch (err) { toast.error('删除失败') } } const handleToggle = async (id: string, isEnabled: boolean) => { try { await toggleVersion(id, isEnabled) toast.success(isEnabled ? '版本已启用' : '版本已禁用') } catch (err) { toast.error('操作失败') } } const handleUploadSuccess = () => { setShowUploadModal(false) refetch() toast.success('版本上传成功') } const handleEditSuccess = () => { setEditingVersionId(null) refetch() toast.success('版本更新成功') } const filteredVersions = versions return (
{/* Header */}

版本管理

管理移动应用的版本更新

{/* Filters */}
{/* Error State */} {error && (
加载失败:{error}
)} {/* Loading State */} {isLoading && (
)} {/* Version List */} {!isLoading && !error && (
{filteredVersions.length === 0 ? (

暂无版本数据

) : ( filteredVersions.map((version) => ( setEditingVersionId(version.id)} onDelete={() => handleDelete(version.id)} onToggle={(enabled) => handleToggle(version.id, enabled)} /> )) )}
)} {/* Upload Modal */} {showUploadModal && ( setShowUploadModal(false)} onSuccess={handleUploadSuccess} /> )} {/* Edit Modal */} {editingVersionId && ( setEditingVersionId(null)} onSuccess={handleEditSuccess} /> )}
) }