use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Action {
CameraAction(Box<models::CameraAction>),
CameraRollAction(Box<models::CameraRollAction>),
ClipboardAction(Box<models::ClipboardAction>),
DatetimePickerAction(Box<models::DatetimePickerAction>),
LocationAction(Box<models::LocationAction>),
MessageAction(Box<models::MessageAction>),
PostbackAction(Box<models::PostbackAction>),
RichMenuSwitchAction(Box<models::RichMenuSwitchAction>),
UriAction(Box<models::UriAction>),
}
impl Default for Action {
fn default() -> Self {
Self::CameraAction(Box::new(Default::default()))
}
}
impl From<models::CameraAction> for Action {
fn from(value: models::CameraAction) -> Self {
Action::CameraAction(Box::new(value))
}
}
impl From<models::CameraRollAction> for Action {
fn from(value: models::CameraRollAction) -> Self {
Action::CameraRollAction(Box::new(value))
}
}
impl From<models::ClipboardAction> for Action {
fn from(value: models::ClipboardAction) -> Self {
Action::ClipboardAction(Box::new(value))
}
}
impl From<models::DatetimePickerAction> for Action {
fn from(value: models::DatetimePickerAction) -> Self {
Action::DatetimePickerAction(Box::new(value))
}
}
impl From<models::LocationAction> for Action {
fn from(value: models::LocationAction) -> Self {
Action::LocationAction(Box::new(value))
}
}
impl From<models::MessageAction> for Action {
fn from(value: models::MessageAction) -> Self {
Action::MessageAction(Box::new(value))
}
}
impl From<models::PostbackAction> for Action {
fn from(value: models::PostbackAction) -> Self {
Action::PostbackAction(Box::new(value))
}
}
impl From<models::RichMenuSwitchAction> for Action {
fn from(value: models::RichMenuSwitchAction) -> Self {
Action::RichMenuSwitchAction(Box::new(value))
}
}
impl From<models::UriAction> for Action {
fn from(value: models::UriAction) -> Self {
Action::UriAction(Box::new(value))
}
}