package inline

import (
	"github.com/gotd/td/tg"
)

// GameResultBuilder is game result option builder.
type GameResultBuilder struct {
	result *tg.InputBotInlineResultGame
	msg    MessageOption
}

func (b *GameResultBuilder) apply(r *resultPageBuilder) error {
	m, err := b.msg.apply()
	if err != nil {
		return err
	}

	t := tg.InputBotInlineResultGame{
		ID:        b.result.ID,
		ShortName: b.result.ShortName,
	}
	if t.ID == "" {
		t.ID, err = r.generateID()
		if err != nil {
			return err
		}
	}

	t.SendMessage = m
	r.results = append(r.results, &t)
	return nil
}

// ID sets ID of result.
// Should not be empty, so if id is not provided, random will be used.
func (b *GameResultBuilder) ID(id string) *GameResultBuilder {
	b.result.ID = id
	return b
}

// Game creates game result option builder.
func Game(shortName string, msg MessageOption) *GameResultBuilder {
	return &GameResultBuilder{
		result: &tg.InputBotInlineResultGame{
			ShortName: shortName,
		},
		msg: msg,
	}
}
