import { useState, useEffect } from 'react'; import { Trash2, RefreshCw } from 'lucide-react'; import { useAssets } from '@/hooks/useAssets'; import { AssetPreview } from './AssetPreview'; import { Button } from '@/components/ui/button'; import type { Asset } from '@/types'; export function AssetGallery() { const [accountFilter, setAccountFilter] = useState(''); const [typeFilter, setTypeFilter] = useState(''); const [accounts, setAccounts] = useState<{ id: string; name: string }[]>([]); const { assets, loading, remove } = useAssets({ accountId: accountFilter || undefined, type: typeFilter || undefined, }); const [previewAsset, setPreviewAsset] = useState(null); useEffect(() => { fetch('/api/accounts').then((r) => r.json()).then(setAccounts).catch(() => {}); }, []); const handleScan = async () => { await fetch('/api/assets/scan', { method: 'POST' }); window.location.reload(); }; return (
{loading ? (

加载中...

) : assets.length === 0 ? (

暂无资产

点击"扫描"从 output 目录导入

) : (
{assets.map((asset) => (
setPreviewAsset(asset)} > {asset.type === 'image' ? ( ) : (
))}
)}
{previewAsset && setPreviewAsset(null)} />}
); }