use serde::{Deserialize, Serialize};
#[cfg(not(feature = "std"))]
use alloc::{string::String, vec::Vec};
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct NotificationMessage {
pub sender: String,
pub content: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct NotificationPacket {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub is_cancel: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub is_clearable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub silent: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub time: Option<String>,
pub app_name: String,
pub ticker: String,
pub title: String,
pub text: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub group_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub payload_hash: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub conversation: Option<Vec<NotificationMessage>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub actions: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub request_reply_id: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct NotificationActionPacket {
pub key: String,
pub action: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct NotificationReplyPacket {
pub message: String,
pub request_reply_id: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct NotificationRequestPacket {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub cancel: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub request: Option<bool>,
}