import { meshkeeApiBase, websiteDomain } from "@/lib/config"; export async function meshkeeGet(path: string, fallback: T, revalidate = 60): Promise { try { const response = await fetch(`${meshkeeApiBase}${path}`, { next: { revalidate }, }); if (!response.ok) return fallback; return (await response.json()) as T; } catch { return fallback; } } export function tenantPath(suffix: string) { return `/tenants/${encodeURIComponent(websiteDomain)}${suffix}`; } type Tenant = { id: number | string; nameFa?: string; name?: string; domain?: string }; export async function getTenant() { return meshkeeGet(`/tenants/${encodeURIComponent(websiteDomain)}`, null); } export async function getBusinessId() { const tenant = await getTenant(); return tenant?.id != null ? String(tenant.id) : ""; } /** Full sanitized `` HTML from business-info. */ export type BusinessMetaTag = { html: string; }; /** Parse a single `` tag into React attribute props for the document head. */ export function parseMetaTagHtml(html: string): Record | null { const match = html.trim().match(/^]*)\/?\s*>$/i); if (!match) return null; const attrs: Record = {}; const attrRe = /([:\w.-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g; let found: RegExpExecArray | null; while ((found = attrRe.exec(match[1]))) { const key = found[1].toLowerCase(); if (key === "/") continue; attrs[key] = found[2] ?? found[3] ?? found[4] ?? ""; } return Object.keys(attrs).length > 0 ? attrs : null; } export type BusinessTrustBadge = { kind: "enamad" | "samandehi"; embedHtml: string; }; export type BusinessInfo = { metaTags?: BusinessMetaTag[]; trustBadges?: BusinessTrustBadge[]; }; export async function getBusinessInfo() { return meshkeeGet(tenantPath("/website/business-info"), null); }