package routing

import "strings"

type HumanMentionRecipient struct {
	UserID   string
	MemberID string
}

type MentionContext struct {
	ChannelType       string
	ParentChannelID   string
	ParentChannelType string
	ParentMessageID   string
}

type ThreadAccess struct {
	ThreadType  string
	ReplyThread *ReplyThreadTarget
}

type ReplyThreadTarget struct {
	ParentChannelID string
	ParentMessageID string
}

func HumanMentionRecipientMemberIDs(recipients []HumanMentionRecipient) []string {
	memberIDs := make([]string, 0, len(recipients))
	for _, recipient := range recipients {
		memberID := strings.TrimSpace(recipient.MemberID)
		if memberID == "" {
			continue
		}
		memberIDs = append(memberIDs, memberID)
	}
	return memberIDs
}

func MentionContextForTarget(target ThreadAccess) MentionContext {
	if target.ReplyThread != nil {
		return MentionContext{
			ChannelType:       "thread",
			ParentChannelID:   strings.TrimSpace(target.ReplyThread.ParentChannelID),
			ParentChannelType: target.ThreadType,
			ParentMessageID:   strings.TrimSpace(target.ReplyThread.ParentMessageID),
		}
	}
	return MentionContext{ChannelType: target.ThreadType}
}
