import * as Notifications from "expo-notifications"
import { Platform } from "react-native"

// Configurar o comportamento das notificações
Notifications.setNotificationHandler({
  handleNotification: async () => ({
    shouldShowAlert: true,
    shouldPlaySound: true,
    shouldSetBadge: true,
  }),
})

// Função para registrar o dispositivo para notificações push
export async function registerForPushNotificationsAsync() {
  try {
    // Verificar se o dispositivo é um simulador (que não suporta notificações push)
    if (Platform.OS === "android" || Platform.OS === "ios") {
      const { status: existingStatus } = await Notifications.getPermissionsAsync()
      let finalStatus = existingStatus

      // Se não temos permissão, solicitar ao usuário
      if (existingStatus !== "granted") {
        const { status } = await Notifications.requestPermissionsAsync()
        finalStatus = status
      }

      // Se o usuário não concedeu permissão, não podemos registrar
      if (finalStatus !== "granted") {
        console.log("Permissão para notificações não concedida!")
        return
      }

      // Obter o token do dispositivo
      const token = await Notifications.getExpoPushTokenAsync({
        projectId: "your-project-id", // Substitua pelo seu ID de projeto Expo
      }).catch((error) => {
        console.log("Erro ao obter token de notificação:", error)
        return { data: "dummy-token-for-development" }
      })

      console.log("Token de notificação:", token.data)

      // Aqui você normalmente enviaria este token para o seu servidor
      // para poder enviar notificações para este dispositivo específico

      // Configurações específicas para Android
      if (Platform.OS === "android") {
        Notifications.setNotificationChannelAsync("default", {
          name: "default",
          importance: Notifications.AndroidImportance.MAX,
          vibrationPattern: [0, 250, 250, 250],
          lightColor: "#FF231F7C",
        })
      }
    } else {
      console.log("Notificações push não são suportadas nesta plataforma")
    }
  } catch (error) {
    console.error("Erro ao registrar para notificações push:", error)
  }
}

// Função para enviar uma notificação local
export async function scheduleLocalNotification(title, body, data = {}, seconds = 1) {
  try {
    await Notifications.scheduleNotificationAsync({
      content: {
        title,
        body,
        data,
      },
      trigger: { seconds },
    })
  } catch (error) {
    console.error("Erro ao agendar notificação:", error)
  }
}

