import { useEffect, useState } from "react"; import { api } from "../api"; import { useConfirm } from "../confirm"; import { useAuth } from "../auth"; import Icon from "../components/Icon"; /** * Shops / Bezugsquellen: verwaltbare Liste für „gekauft bei“ an Gegenständen. * Am Artikel ist die Auswahl optional (unbekannt / mehrere Herkünfte = leer). */ export default function Shops() { const confirm = useConfirm(); const { isAdmin } = useAuth(); const [shops, setShops] = useState([]); const [form, setForm] = useState({ name: "", website: "" }); const [error, setError] = useState(null); async function load() { try { setShops(await api.listShops()); } catch (err) { setError(err.message); } } useEffect(() => { load(); }, []); async function add(e) { e.preventDefault(); setError(null); try { await api.createShop({ name: form.name, website: form.website || null }); setForm({ name: "", website: "" }); load(); } catch (err) { setError(err.message); } } async function patch(shop, body) { setError(null); try { await api.updateShop(shop.id, body); load(); } catch (err) { setError(err.message); } } async function remove(shop) { const hinweis = shop.product_count ? ` ${shop.product_count} Artikel verlieren die Bezugsquelle, bleiben aber erhalten.` : ""; const ok = await confirm({ title: `Shop „${shop.name}“ löschen?`, message: `Die Liste ist nur eine Auswahlhilfe.${hinweis}`, confirmLabel: "Löschen", danger: true, }); if (!ok) return; try { await api.deleteShop(shop.id); load(); } catch (err) { setError(err.message); } } return (

Shops

Bezugsquellen für „gekauft bei“ an Gegenständen – einmal anlegen, überall auswählbar.
{error &&
{error}
}
{isAdmin && (
)}
); }