feat: Abfüllungs-Archiv und Social-Media-Links auf der Herkunftsseite
Abfüllungen hatten keine Übersichtsseite - die Navigation ging direkt auf /bottling/new, sodass eine angelegte Abfüllung danach nirgends mehr sichtbar war. Neue Seite /bottling listet alle Abfüllungen (Archiv), Klick führt zur bestehenden Detail-/Bearbeiten-Seite. Navigationslink zeigt jetzt auf die Liste statt direkt auf "Neu". Neues Modul site-settings (Singleton-Tabelle SiteSettings) für YouTube-/Instagram-/TikTok-Links, verwaltbar unter Verwaltung > Website (neue Berechtigung site-settings:read/update). Die öffentliche Herkunftsseite (/herkunft/[lot]) zeigt die konfigurierten Links jetzt zusätzlich zur Chargen-Herkunft an - PublicService liefert sie über das bereits oeffentliche /public/batches/:lotNumber mit aus, keine zusaetzliche unauthentifizierte Route noetig. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
1 parent
33fa768062
commit
351f9ef34c
19 files changed
+612
-4
No files matched your search
@@ -3,6 +3,12 @@ export interface PublicApiaryOrigin {
|
||||
location: string | null;
|
||||
}
|
||||
|
||||
export interface PublicSocialLinks {
|
||||
youtube: string | null;
|
||||
instagram: string | null;
|
||||
tiktok: string | null;
|
||||
}
|
||||
|
||||
export interface PublicBatch {
|
||||
lotNumber: string;
|
||||
productName: string | null;
|
||||
@@ -15,4 +21,5 @@ export interface PublicBatch {
|
||||
extractedDate: string | null;
|
||||
harvestDates: string[];
|
||||
apiaries: PublicApiaryOrigin[];
|
||||
socialLinks: PublicSocialLinks;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { apiFetch } from "@/lib/auth/api-client";
|
||||
import { SiteSettings, UpdateSiteSettingsInput } from "./types";
|
||||
|
||||
export function fetchSiteSettings(): Promise<SiteSettings> {
|
||||
return apiFetch<SiteSettings>("/site-settings");
|
||||
}
|
||||
|
||||
export function updateSiteSettings(input: UpdateSiteSettingsInput): Promise<SiteSettings> {
|
||||
return apiFetch<SiteSettings>("/site-settings", {
|
||||
method: "PATCH",
|
||||
body: JSON.stringify(input),
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
export interface SiteSettings {
|
||||
id: string;
|
||||
youtubeUrl: string | null;
|
||||
instagramUrl: string | null;
|
||||
tiktokUrl: string | null;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface UpdateSiteSettingsInput {
|
||||
youtubeUrl?: string;
|
||||
instagramUrl?: string;
|
||||
tiktokUrl?: string;
|
||||
}
|
||||
Reference in new issue
Block a user