/**
 * Solicita permissão para notificações desktop
 */
export async function requestNotificationPermission(): Promise<NotificationPermission> {
  if (!("Notification" in window)) {
    console.warn("Este navegador não suporta notificações desktop");
    return "denied";
  }

  if (Notification.permission === "granted") {
    return "granted";
  }

  if (Notification.permission !== "denied") {
    return await Notification.requestPermission();
  }

  return Notification.permission;
}

/**
 * Mostra uma notificação desktop
 */
export function showNotification(title: string, options?: NotificationOptions): Notification | null {
  if (!("Notification" in window)) {
    return null;
  }

  if (Notification.permission !== "granted") {
    return null;
  }

  try {
    return new Notification(title, {
      icon: "/favicon.png",
      badge: "/favicon.png",
      ...options,
    });
  } catch (error) {
    console.error("Erro ao exibir notificação:", error);
    return null;
  }
}

/**
 * Toca o som de notificação
 */
export function playNotificationSound() {
  try {
    const audio = new Audio("/sounds/notification.mp3");
    audio.volume = 0.5;
    audio.play().catch((err) => {
      console.warn("Não foi possível reproduzir o som de notificação:", err);
    });
  } catch (error) {
    console.error("Erro ao tocar som de notificação:", error);
  }
}

/**
 * Verifica se o usuário está na aba ativa
 */
export function isTabActive(): boolean {
  return !document.hidden;
}

