package matrix

import (
	"fmt"
	"strings"
)

type ViralReplySample struct {
	Author string
	Text   string
}

type ViralPostSample struct {
	Author    string
	LikeCount int
	SearchTag string
	Text      string
	Replies   []ViralReplySample
}

func FormatViralSamples(posts []ViralPostSample) string {
	if len(posts) == 0 {
		return "（尚無海巡樣本，請依研究地圖與標籤發揮）"
	}
	var b strings.Builder
	limit := 8
	if len(posts) < limit {
		limit = len(posts)
	}
	for i := 0; i < limit; i++ {
		post := posts[i]
		b.WriteString(fmt.Sprintf("\n[%d] @%s · %d讚 · 標籤:%s\n", i+1, post.Author, post.LikeCount, post.SearchTag))
		text := strings.TrimSpace(post.Text)
		if len([]rune(text)) > 160 {
			text = string([]rune(text)[:160])
		}
		b.WriteString(text)
		b.WriteString("\n")
		if len(post.Replies) > 0 {
			b.WriteString("  熱門留言：")
			for j, reply := range post.Replies {
				if j >= 3 {
					break
				}
				rt := strings.TrimSpace(reply.Text)
				if len([]rune(rt)) > 60 {
					rt = string([]rune(rt)[:60])
				}
				b.WriteString(fmt.Sprintf("\n  - @%s: %s", reply.Author, rt))
			}
			b.WriteString("\n")
		}
	}
	return strings.TrimSpace(b.String())
}
