import { v4 as uuidv4 } from "uuid";

const GUEST_ID_KEY = "guestId";

/**
 * Получает или создает guestId для неавторизованного пользователя
 * guestId генерируется один раз и сохраняется в localStorage
 * @returns UUID v4 строка
 */
export function getOrCreateGuestId(): string {
  // Пытаемся получить существующий guestId
  let guestId = localStorage.getItem(GUEST_ID_KEY);

  // Если нет - генерируем новый UUID v4
  if (!guestId) {
    guestId = uuidv4();
    localStorage.setItem(GUEST_ID_KEY, guestId);
    console.log("Generated new guestId:", guestId);
  } else {
    console.log("Using existing guestId:", guestId);
  }

  return guestId;
}

/**
 * Очищает guestId из localStorage
 * Используется при логине пользователя, если нужно
 */
export function clearGuestId(): void {
  localStorage.removeItem(GUEST_ID_KEY);
  console.log("Cleared guestId from localStorage");
}

/**
 * Получает текущий guestId без создания нового
 * @returns UUID v4 строка или null если не существует
 */
export function getGuestId(): string | null {
  return localStorage.getItem(GUEST_ID_KEY);
}

