"use client"; import Link from "next/link"; import { trpc } from "@/lib/trpc"; function statusLabel(status: string) { if (status === "accepted") return "übernommen"; if (status === "rejected") return "abgelehnt"; if (status === "pending") return "in Prüfung"; return status; } export default function AktivitaetsfeedPage() { const utils = trpc.useUtils(); const feedQuery = trpc.health.adminActivityFeed.useQuery(); const reviewStoreChange = trpc.health.reviewStoreChangeRequest.useMutation({ onSuccess: async () => { await utils.health.adminActivityFeed.invalidate(); await utils.health.listStores.invalidate(); }, }); const items = feedQuery.data ?? []; return (

Admin

Activity Feed

Eingereichte Rezeptvorschläge, Marktänderungen und weitere prüfpflichtige Aktionen an einem Ort.

{items.map((item) => (

{item.type === "recipe_submission" ? "Rezeptvorschlag" : "Marktänderung"}

{item.title}

{item.actorName}{item.actorEmail ? ` · ${item.actorEmail}` : ""}

{item.detail}

{statusLabel(item.status)}

{new Date(item.createdAt).toLocaleString("de-DE")}

Öffnen {item.type === "store_change" && item.status === "pending" ? ( <> ) : null}
))} {!items.length && !feedQuery.isLoading ? (

Aktuell gibt es keine Einträge.

) : null}
); }