package markup

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

// Row creates keyboard row.
func Row(buttons ...tg.KeyboardButtonClass) tg.KeyboardButtonRow {
	return tg.KeyboardButtonRow{
		Buttons: buttons,
	}
}

// Button creates new plain text button.
func Button(text string) *tg.KeyboardButton {
	return &tg.KeyboardButton{
		Text: text,
	}
}

// URL creates new URL button.
func URL(text, url string) *tg.KeyboardButtonURL {
	return &tg.KeyboardButtonURL{
		Text: text,
		URL:  url,
	}
}

// Callback creates new callback button.
func Callback(text string, data []byte) *tg.KeyboardButtonCallback {
	return &tg.KeyboardButtonCallback{
		Text: text,
		Data: data,
	}
}

// RequestPhone creates button to request a user's phone number.
func RequestPhone(text string) *tg.KeyboardButtonRequestPhone {
	return &tg.KeyboardButtonRequestPhone{
		Text: text,
	}
}

// RequestGeoLocation creates button to request a user's geo location.
func RequestGeoLocation(text string) *tg.KeyboardButtonRequestGeoLocation {
	return &tg.KeyboardButtonRequestGeoLocation{
		Text: text,
	}
}

// SwitchInline creates button to force a user to switch to inline mode.
// Pressing the button will prompt the user to select one of their chats, open that chat and insert the bot‘s username
// and the specified inline query in the input field.
//
// If samePeer set, pressing the button will insert the bot‘s
// username and the specified inline query in the current chat's input field.
func SwitchInline(text, query string, samePeer bool) *tg.KeyboardButtonSwitchInline {
	return &tg.KeyboardButtonSwitchInline{
		SamePeer: samePeer,
		Text:     text,
		Query:    query,
	}
}

// Game creates button to start a game.
func Game(text string) *tg.KeyboardButtonGame {
	return &tg.KeyboardButtonGame{
		Text: text,
	}
}

// Buy creates button to buy a product.
func Buy(text string) *tg.KeyboardButtonBuy {
	return &tg.KeyboardButtonBuy{
		Text: text,
	}
}

// URLAuth creates button to request a user to authorize via URL using Seamless Telegram Login.
func URLAuth(text, url string, buttonID int, fwdText string) *tg.KeyboardButtonURLAuth {
	return &tg.KeyboardButtonURLAuth{
		Text:     text,
		URL:      url,
		ButtonID: buttonID,
		FwdText:  fwdText,
	}
}

// RequestPoll creates button that allows the user to create and send a poll when pressed.
// Available only in private.
func RequestPoll(text string, quiz bool) *tg.KeyboardButtonRequestPoll {
	return &tg.KeyboardButtonRequestPoll{
		Text: text,
		Quiz: quiz,
	}
}
