package com.base.datarecovery.fcm;

import android.annotation.SuppressLint;

import androidx.annotation.NonNull;

import com.base.datarecovery.MyApplication;
import com.base.datarecovery.utils.EventUtils;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

import org.json.JSONException;
import org.json.JSONObject;


@SuppressLint("MissingFirebaseInstanceTokenRefresh")
public class MessagingService extends FirebaseMessagingService {

    private static final String TAG = "MessagingService";

    @Override
    public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        String id = remoteMessage.getMessageId();
        JSONObject ext = new JSONObject();
        try {
            ext.put("getMessageType", remoteMessage.getMessageType());
            ext.put("getData", remoteMessage.getData());
            ext.put("getCollapseKey", remoteMessage.getCollapseKey());
            ext.put("getFrom", remoteMessage.getFrom());
            ext.put("getPriority", remoteMessage.getPriority());
            ext.put("getSenderId", remoteMessage.getSenderId());
            ext.put("getSentTime", remoteMessage.getSentTime());
        } catch (JSONException e) {
            EventUtils.INSTANCE.event("FCM_Received_Error", id, ext, false);
            throw new RuntimeException(e);
        } finally {
        }
        EventUtils.INSTANCE.event("FCM_Received", id, ext, false);

        sendLocalNotification();
    }

    // Consider implementing this method if local notifications are needed
    private void sendLocalNotification() {
        NotificationUtil.INSTANCE.sendNotification(MyApplication.context, "MessagingService");
    }

}