package fcm

import (
	"chonho/config"
	"github.com/NaySoftware/go-fcm"
	"sync"
)

type Message struct {
	Title   string
	Message string
}

type FCM struct {
	client *fcm.FcmClient
}

var service *FCM
var serviceOnce sync.Once

func GetInstance() *FCM {
	serviceOnce.Do(func() {
		c := fcm.NewFcmClient(config.FirebaseServerKey)
		service = &FCM{client: c}
	})
	return service
}

func (s *FCM) SendNotify(tokens []string, mes Message, deeplink string) error {

	client := fcm.NewFcmClient(config.FirebaseServerKey)
	data := map[string]string{
		"link": deeplink,
	}

	var NP fcm.NotificationPayload
	NP.Title = mes.Title
	NP.Body = mes.Message

	client.NewFcmRegIdsMsg(tokens, nil)
	client.SetNotificationPayload(&NP)
	client.SetMsgData(&data)

	_, err := client.Send()
	if err == nil {
		return err
	}

	client = nil
	return nil
}
