package route

import (
	"log"

	"github.com/pingcap/jira-bot/service"

	"github.com/larksuite/oapi-sdk-go/card"

	larkmodel "github.com/larksuite/oapi-sdk-go/card/model"
	"github.com/larksuite/oapi-sdk-go/core"
	"github.com/larksuite/oapi-sdk-go/core/tools"
	im "github.com/larksuite/oapi-sdk-go/service/im/v1"
	"github.com/pingcap/jira-bot/model"
)

func registerEventHandler() {
	// register message read event handler
	im.SetMessageMessageReadEventHandler(model.GetApp().LarkConf,
		func(ctx *core.Context, event *im.MessageMessageReadEvent) error {
			log.Println(tools.Prettify(event))
			for _, messageId := range event.Event.MessageIdList {
				message := model.Message{MessageId: messageId}
				if err := model.Find(model.GetApp().DB, &message); err != nil {
					log.Println("find messageId err: ", err, messageId)
					continue
				}

				message.NotifyTag = model.NotifyTag
				service.AddLog(&message, model.ReadEvent)
			}
			return nil
		})

	card.SetHandler(model.GetApp().LarkConf, func(ctx *core.Context, card *larkmodel.Card) (interface{}, error) {
		log.Println(ctx.GetRequestID())
		log.Println(tools.Prettify(card))
		return nil, nil
	})
}
