use serde::{Deserialize, Serialize};
use super::web_app_info::WebAppInfo;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct MenuButtonCommandsData {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct MenuButtonWebAppData {
pub text: String,
pub web_app: WebAppInfo,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct MenuButtonDefaultData {}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
#[non_exhaustive]
pub enum MenuButton {
Commands(MenuButtonCommandsData),
WebApp(MenuButtonWebAppData),
Default(MenuButtonDefaultData),
}
impl MenuButton {
pub fn commands() -> Self {
Self::Commands(MenuButtonCommandsData {})
}
pub fn web_app(text: impl Into<String>, web_app: WebAppInfo) -> Self {
Self::WebApp(MenuButtonWebAppData {
text: text.into(),
web_app,
})
}
pub fn default_button() -> Self {
Self::Default(MenuButtonDefaultData {})
}
}