import { useState, useEffect, useCallback } from 'react' import { listCollections, createCollection, getCollection } from '../api.js' const VIS_LABELS = { 0: 'Private', 1: 'Public', 2: 'Users only', 3: 'Public' } export default function CollectionsView({ archiveId }) { const [collections, setCollections] = useState([]) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const [selectedColl, setSelectedColl] = useState(null) const [collDetail, setCollDetail] = useState(null) const [detailLoading, setDetailLoading] = useState(false) // Create form const [newName, setNewName] = useState('') const [newSlug, setNewSlug] = useState('') const [newVis, setNewVis] = useState(2) const [creating, setCreating] = useState(false) const [createError, setCreateError] = useState(null) const refresh = useCallback(async () => { if (!archiveId) return setLoading(true) setError(null) try { const cols = await listCollections(archiveId) setCollections(cols) } catch (e) { setError(e.message) } finally { setLoading(false) } }, [archiveId]) useEffect(() => { refresh() }, [refresh]) useEffect(() => { if (!selectedColl) { setCollDetail(null); return } setDetailLoading(true) getCollection(archiveId, selectedColl.collection_uid) .then(d => setCollDetail(d)) .catch(e => setError(e.message)) .finally(() => setDetailLoading(false)) }, [selectedColl, archiveId]) async function handleCreate(e) { e.preventDefault() const name = newName.trim() const slug = newSlug.trim() if (!name || !slug) return setCreating(true) setCreateError(null) try { await createCollection(archiveId, name, slug, newVis) setNewName('') setNewSlug('') setNewVis(2) await refresh() } catch (err) { setCreateError(err.message) } finally { setCreating(false) } } if (!archiveId) return