use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct WhatsAppTemplateButton {
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "text")]
pub text: String,
#[serde(rename = "url", skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
#[serde(rename = "example", skip_serializing_if = "Option::is_none")]
pub example: Option<Vec<String>>,
#[serde(rename = "phone_number", skip_serializing_if = "Option::is_none")]
pub phone_number: Option<String>,
#[serde(rename = "otp_type", skip_serializing_if = "Option::is_none")]
pub otp_type: Option<OtpType>,
#[serde(rename = "autofill_text", skip_serializing_if = "Option::is_none")]
pub autofill_text: Option<String>,
#[serde(rename = "package_name", skip_serializing_if = "Option::is_none")]
pub package_name: Option<String>,
#[serde(rename = "signature_hash", skip_serializing_if = "Option::is_none")]
pub signature_hash: Option<String>,
#[serde(rename = "flow_id", skip_serializing_if = "Option::is_none")]
pub flow_id: Option<String>,
#[serde(rename = "flow_name", skip_serializing_if = "Option::is_none")]
pub flow_name: Option<String>,
#[serde(rename = "flow_json", skip_serializing_if = "Option::is_none")]
pub flow_json: Option<String>,
#[serde(rename = "flow_action", skip_serializing_if = "Option::is_none")]
pub flow_action: Option<String>,
#[serde(rename = "navigate_screen", skip_serializing_if = "Option::is_none")]
pub navigate_screen: Option<String>,
}
impl WhatsAppTemplateButton {
pub fn new(r#type: Type, text: String) -> WhatsAppTemplateButton {
WhatsAppTemplateButton {
r#type,
text,
url: None,
example: None,
phone_number: None,
otp_type: None,
autofill_text: None,
package_name: None,
signature_hash: None,
flow_id: None,
flow_name: None,
flow_json: None,
flow_action: None,
navigate_screen: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "quick_reply")]
QuickReply,
#[serde(rename = "url")]
Url,
#[serde(rename = "phone_number")]
PhoneNumber,
#[serde(rename = "otp")]
Otp,
#[serde(rename = "flow")]
Flow,
#[serde(rename = "mpm")]
Mpm,
#[serde(rename = "catalog")]
Catalog,
}
impl Default for Type {
fn default() -> Type {
Self::QuickReply
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum OtpType {
#[serde(rename = "copy_code")]
CopyCode,
#[serde(rename = "one_tap")]
OneTap,
#[serde(rename = "zero_tap")]
ZeroTap,
}
impl Default for OtpType {
fn default() -> OtpType {
Self::CopyCode
}
}