package fanout

import (
	"context"
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/store/message"
)

type scopeReplyThreadRootPreloader struct {
	messages *message.Store
}

// NewScopeReplyThreadRootPreloader adapts the scope API service into the live
// human-message fanout path so daemon wakes can include visible thread-root
// context.
func NewScopeReplyThreadRootPreloader(messages *message.Store) ReplyThreadRootPreloader {
	if messages == nil {
		return nil
	}
	return scopeReplyThreadRootPreloader{messages: messages}
}

func (preloader scopeReplyThreadRootPreloader) PreloadReplyThreadRootForRecipient(ctx context.Context, workspaceID string, recipient message.AgentRecipient, msg message.ReceiveMessage) (message.ReceiveMessage, error) {
	if preloader.messages == nil || strings.TrimSpace(recipient.AgentMemberID) == "" {
		return msg, nil
	}
	return message.NewScopeAPIService(preloader.messages).PreloadReplyThreadRootMetadata(
		ctx,
		workspaceID,
		strings.TrimSpace(recipient.AgentMemberID),
		message.ScopeActorAgent,
		msg,
	)
}
