filthy_rich/types/
activity.rs1use std::time::Duration;
2
3use serde_repr::{Deserialize_repr, Serialize_repr};
4
5use crate::types::payloads::{AssetsPayload, ButtonPayload};
6
7#[derive(Default, Clone)]
9pub struct ActivitySpec {
10 pub(crate) name: Option<String>,
11 pub(crate) r#type: Option<ActivityType>,
12 pub(crate) instance: Option<bool>,
13 pub(crate) status_display_type: Option<StatusDisplayType>,
14 pub(crate) details: Option<String>,
15 pub(crate) details_url: Option<String>,
16 pub(crate) state: Option<String>,
17 pub(crate) state_url: Option<String>,
18 pub(crate) assets: Option<AssetsPayload>,
19 pub(crate) buttons: Option<Vec<ButtonPayload>>,
20 pub(crate) duration: Option<Duration>,
21}
22
23#[repr(u8)]
28#[derive(Clone, Debug, Eq, PartialEq, Serialize_repr, Deserialize_repr, Copy)]
29#[serde(into = "u8", try_from = "u8")]
30pub enum ActivityType {
31 Playing = 0,
32 Listening = 2,
33 Watching = 3,
34 Competing = 5,
35}
36
37impl From<ActivityType> for u8 {
38 fn from(value: ActivityType) -> Self {
39 value as u8
40 }
41}
42
43#[repr(u8)]
45#[derive(Clone, Debug, Eq, PartialEq, Copy, Serialize_repr, Deserialize_repr)]
46pub enum StatusDisplayType {
47 Name = 0,
48 State = 1,
49 Details = 2,
50}
51
52impl From<StatusDisplayType> for u8 {
53 fn from(value: StatusDisplayType) -> Self {
54 value as u8
55 }
56}