import { useState } from "react"; import { useGalleryStore } from "../store"; /** * Album list plus a create-new-album form. The host decides what picking * means — the bulk bar adds the current selection; a newly created album is * picked immediately. */ export function AlbumPicker({ onPick }: { onPick: (albumId: number) => Promise | void }) { const albums = useGalleryStore((state) => state.albums); const createAlbum = useGalleryStore((state) => state.createAlbum); const [creating, setCreating] = useState(false); const [newAlbumName, setNewAlbumName] = useState(""); const handleCreate = async () => { const name = newAlbumName.trim(); if (!name || creating) return; setCreating(true); try { const album = await createAlbum(name); setNewAlbumName(""); await onPick(album.id); } finally { setCreating(false); } }; return ( <>
{albums.length === 0 ? (

No albums yet — create one below.

) : ( albums.map((album) => ( )) )}
{ event.preventDefault(); void handleCreate(); }} > setNewAlbumName(event.target.value)} disabled={creating} />
); }