/* global React */
/* Pamp — data layer. Thin wrapper around window.PampSupabase so screens
   can call window.SB.adminGetReports(tok) etc., and centralizes the
   handful of cross-cutting fetchers (workspace branding, etc.). */

const SB = window.PampSupabase;
window.SB = SB;

/* ── Pre-auth workspace branding ──────────────────────── */
async function fetchWorkspaceBranding() {
  try {
    const { data, error } = await SB.client
      .from("workspace_branding")
      .select("*")
      .limit(1)
      .maybeSingle();
    if (error || !data) return null;
    return {
      logoUrl: data.workspace_logo || data.logo_url || null,
      agencyName: data.agency_name || data.workspaceName || data.platform_name || "Pamp",
    };
  } catch (_) {
    return null;
  }
}

/* ── Role → portal-route mapping ──────────────────────── */
function portalForRole(role) {
  if (role === "admin") return "admin";
  if (role === "vendor" || role === "business") return "vendor";
  return "user";
}

/* ── Apply admin session globally ─────────────────────── */
async function bootstrapSession() {
  const sess = await SB.getSession();
  if (!sess) return null;
  try {
    const profile = await SB.getProfileWithToken(sess.user.id, sess.access_token);
    return { profile, accessToken: sess.access_token, user: sess.user };
  } catch (_) {
    return { profile: null, accessToken: sess.access_token, user: sess.user };
  }
}

window.PampData = {
  fetchWorkspaceBranding,
  portalForRole,
  bootstrapSession,
};
