"use client"; import { useCallback, useEffect, useState } from "react"; import Link from "next/link"; import { AuthGuard } from "@/components/AuthGuard"; import { Button, Container } from "@/components/ui"; import { api, ApiError } from "@/lib/api"; import { useMe } from "@/hooks/useMe"; import { evaluateDomainPolicy, loadWorkspaceSnapshot } from "../adapters"; import type { AdapterResult, CommercialWorkspaceSnapshot, DomainPolicyResult } from "../types"; import { DomainPolicyPanel, FeatureLock, PlatformShell } from "../components"; import { CommercialEmptyState } from "../components/CommercialEmptyState"; function DomainsInner() { const { me, loading: meLoading } = useMe(); const [snap, setSnap] = useState | null>(null); const [policy, setPolicy] = useState(null); const [customDomain, setCustomDomain] = useState(""); const [error, setError] = useState(""); const [msg, setMsg] = useState(""); const [busy, setBusy] = useState(false); const load = useCallback(async () => { const s = await loadWorkspaceSnapshot(); setSnap(s); if (s.data) { setPolicy(s.data.domain_policy || null); } else if (me?.current_tenant_id) { const pol = await evaluateDomainPolicy({ tenant_id: me.current_tenant_id }); setPolicy(pol.data); } }, [me?.current_tenant_id]); useEffect(() => { if (meLoading || !me) return; void load(); }, [me, meLoading, load]); const unlocked = Boolean(snap?.data?.custom_domain_unlocked ?? policy?.custom_domain_allowed); const submit = async () => { if (!snap?.data?.tenant_id || !customDomain.trim()) return; setBusy(true); setError(""); setMsg(""); try { if (!unlocked) { setError(policy?.reason || "دامنه اختصاصی بر اساس سیاست قفل است."); setBusy(false); return; } await api.onboarding.updateDomain(snap.data.tenant_id, { custom_domain: customDomain.trim(), }); setMsg("دامنه ثبت شد — تأیید DNS را از وضعیت زیرگیری کنید."); await load(); } catch (err) { setError(err instanceof ApiError ? err.message : "ثبت دامنه ناموفق بود"); } finally { setBusy(false); } }; if (meLoading) { return (

در حال بارگذاری…

); } const ws = snap?.data; return ( {!ws ? ( ) : (

زیردامنه پلتفرم

{ws.slug}.torbatyar.ir

{ws.primary_domain ? (

دامنه اصلی:{" "} {ws.primary_domain}

) : null}
اتصال دامنه اختصاصی قفل است.{" "} ارتقا در Billing
} >

وضعیت دامنه‌ها

{ws.domains.length ? (
    {ws.domains.map((d) => (
  • {d.domain} {d.domain_type} · {d.is_verified ? "verified" : "pending"}
  • ))}
) : ( )}
{error ?

{error}

: null} {msg ?

{msg}

: null} )}
); } export function CommercialDomainsPage() { return ( ); }