twilight_model/gateway/presence/
activity.rs1use crate::{
2 gateway::presence::{
3 ActivityAssets, ActivityButton, ActivityEmoji, ActivityFlags, ActivityParty,
4 ActivitySecrets, ActivityTimestamps, ActivityType,
5 },
6 id::{marker::ApplicationMarker, Id},
7};
8use serde::{Deserialize, Serialize};
9
10#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
11pub struct Activity {
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub application_id: Option<Id<ApplicationMarker>>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub assets: Option<ActivityAssets>,
16 #[serde(default, skip_serializing_if = "Vec::is_empty")]
17 pub buttons: Vec<ActivityButton>,
18 pub created_at: Option<u64>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub details: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub emoji: Option<ActivityEmoji>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub flags: Option<ActivityFlags>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub id: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub instance: Option<bool>,
31 #[serde(default = "ActivityType::default", rename = "type")]
32 pub kind: ActivityType,
33 pub name: String,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub party: Option<ActivityParty>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub secrets: Option<ActivitySecrets>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub state: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub timestamps: Option<ActivityTimestamps>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub url: Option<String>,
44}
45
46#[cfg(test)]
47mod tests {
48 }