/**
 * Cookie utilities for cross-subdomain token storage
 */

/**
 * Set a cookie with domain attribute for cross-subdomain access
 * Uses .lvh.me for local development (lvh.me supports subdomains, unlike localhost)
 */
export const setCookie = (name: string, value: string, days: number = 7) => {
  const expires = new Date();
  expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);

  // Set cookie with domain=.lvh.me for local dev, accessible across all subdomains
  // For localhost, don't set domain attribute - let it default to current host
  const hostname = window.location.hostname;
  const isLocalhost = hostname === 'localhost' || hostname === '127.0.0.1';
  const domainAttr = hostname.includes('lvh.me') ? `;domain=.lvh.me` : isLocalhost ? '' : `;domain=${hostname}`;

  document.cookie = `${name}=${value};expires=${expires.toUTCString()}${domainAttr};path=/;SameSite=Lax`;
};

/**
 * Get a cookie value by name
 */
export const getCookie = (name: string): string | null => {
  const nameEQ = name + '=';
  const ca = document.cookie.split(';');

  for (let i = 0; i < ca.length; i++) {
    let c = ca[i];
    while (c.charAt(0) === ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
  }

  return null;
};

/**
 * Delete a cookie
 */
export const deleteCookie = (name: string) => {
  const hostname = window.location.hostname;
  const isLocalhost = hostname === 'localhost' || hostname === '127.0.0.1';
  const domainAttr = hostname.includes('lvh.me') ? `;domain=.lvh.me` : isLocalhost ? '' : `;domain=${hostname}`;
  document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 UTC${domainAttr};path=/;`;
};
