"use client"; import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { toast } from "sonner"; import { useTenantId } from "@/hooks/useTenantId"; import { experienceApi } from "@/modules/experience/services/experience-api"; import { ExperiencePageLoader, ExperiencePageError } from "@/modules/experience/pages/shared"; import { ExperienceBreadcrumbs } from "@/modules/experience/components/ExperienceBreadcrumbs"; import { PageHeader, Card, CardContent, Badge, FormField, Select } from "@/components/ds"; /** Static catalog of published actions for display — bind flags via metadata_json when API allows. */ const PUBLISHED_ACTIONS_CATALOG = [ { key: "view", label: "مشاهده", description: "دسترسی عمومی به محتوا" }, { key: "share", label: "اشتراک‌گذاری", description: "لینک اشتراک" }, { key: "embed", label: "جاسازی", description: "ویجت embed" }, { key: "subscribe", label: "عضویت", description: "خبرنامه / follow" }, { key: "form_submit", label: "ارسال فرم", description: "ثبت form submission" }, ]; export const PublishedActionsPage = function ExperiencePublishedActions() { const { tenantId } = useTenantId(); const [resourceType, setResourceType] = useState("page"); const [resourceId, setResourceId] = useState(""); const [flags, setFlags] = useState>({}); const pagesQ = useQuery({ queryKey: ["experience", tenantId, "pages-for-actions"], queryFn: () => experienceApi.pages.list(tenantId!), enabled: !!tenantId, }); const resourceQ = useQuery({ queryKey: ["experience", tenantId, "resource-actions", resourceType, resourceId], queryFn: async () => { if (resourceType === "page") return experienceApi.pages.get(tenantId!, resourceId); return experienceApi.sites.get(tenantId!, resourceId); }, enabled: !!tenantId && !!resourceId, }); if (!tenantId || pagesQ.isLoading) return ; if (pagesQ.error) return pagesQ.refetch()} />; const meta = (resourceQ.data?.metadata_json ?? resourceQ.data?.content_shell ?? {}) as Record; const actionFlags = (meta.published_actions ?? {}) as Record; return (
{PUBLISHED_ACTIONS_CATALOG.map((a) => { const enabled = flags[a.key] ?? actionFlags[a.key] ?? false; return (

{a.label}

{a.description}

{ setFlags((f) => ({ ...f, [a.key]: e.target.checked })); toast.info("ذخیره metadata_json از طریق PATCH منبع — FE-11.5 حداقلی"); }} className="h-4 w-4 accent-[var(--experience-accent)]" />
); })}
{resourceId ? publish_id موقت: {resourceId} : null}
); }; export default PublishedActionsPage;