package com.walkguide.service;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * FCM Service untuk push notification.
 * Saat ini dalam mode LOG-ONLY agar tidak butuh Firebase credentials dulu.
 * Untuk enable FCM nyata: uncomment bagian Firebase dan tambah dependency Firebase Admin SDK.
 */
@Service
@RequiredArgsConstructor
@Slf4j
public class FcmService {

    public void sendToToken(String fcmToken, String title, String body, Map<String, String> data) {
        if (fcmToken == null || fcmToken.isBlank()) {
            log.warn("[FCM] Token kosong, skip notifikasi: {} - {}", title, body);
            return;
        }
        // LOG ONLY untuk sekarang
        log.info("[FCM] TO={} | TITLE={} | BODY={} | DATA={}", fcmToken, title, body, data);

        // TODO: uncomment ini setelah tambah Firebase Admin SDK ke pom.xml
        // dan taruh google-services-admin.json di src/main/resources/firebase/
        //
        // try {
        //     Message message = Message.builder()
        //             .setToken(fcmToken)
        //             .setNotification(Notification.builder().setTitle(title).setBody(body).build())
        //             .putAllData(data != null ? data : Map.of())
        //             .setAndroidConfig(AndroidConfig.builder()
        //                     .setPriority(AndroidConfig.Priority.HIGH)
        //                     .build())
        //             .build();
        //     String response = FirebaseMessaging.getInstance().send(message);
        //     log.info("[FCM] Sent successfully: {}", response);
        // } catch (FirebaseMessagingException e) {
        //     log.error("[FCM] Failed to send: {}", e.getMessage());
        // }
    }

    public void sendHighPriority(String fcmToken, String title, String body, Map<String, String> data) {
        // SOS dan incoming call pakai ini - sama untuk sekarang
        sendToToken(fcmToken, title, body, data);
    }
}
