// Supabase adapter. It stays inert until HD_ENV.supabase contains real project values.
(function setupSupabase() {
  const env = window.HD_ENV || {};
  const config = env.supabase || {};
  const configured = Boolean(config.url && config.anonKey);

  const fallback = {
    configured: false,
    status: "idle",
    reason: configured ? "Supabase SDK unavailable" : "Supabase config missing",
    client: null,
    config: {
      url: config.url || "",
    },
  };

  if (!configured || !window.supabase || !window.supabase.createClient) {
    window.HDSupabase = fallback;
    return;
  }

  try {
    window.HDSupabase = {
      ...fallback,
      status: "connecting",
      reason: "Connecting to Supabase",
    };

    const client = window.supabase.createClient(config.url, config.anonKey, {
      auth: {
        persistSession: true,
        autoRefreshToken: true,
        detectSessionInUrl: true,
      },
      global: {
        headers: {
          "x-application-name": "harbordock",
        },
      },
    });

    window.HDSupabase = {
      configured: true,
      status: "ready",
      reason: "Supabase connected",
      client,
      config: {
        url: config.url,
      },
    };

    window.dispatchEvent(new CustomEvent("hd-supabase-ready", { detail: window.HDSupabase }));
  } catch (error) {
    window.HDSupabase = {
      ...fallback,
      status: "error",
      reason: error && error.message ? error.message : "Supabase initialization failed",
    };
    console.warn("HarborDock Supabase initialization skipped:", window.HDSupabase.reason);
  }
})();
