panda/models/user/
activity.rs

1use crate::models::emoji::Emoji;
2use serde::{Deserialize, Serialize};
3use serde_repr::*;
4
5use std::default::Default;
6
7#[derive(Debug, Deserialize, Serialize, PartialEq, Default)]
8pub struct Activity {
9    pub name: String,
10    #[serde(rename = "type")]
11    pub kind: ActivityKind,
12    pub url: Option<String>,
13    // timestamps: Timestamp,
14    pub application_id: Option<String>,
15    pub details: Option<String>,
16    pub state: Option<String>,
17    pub emoji: Option<Emoji>,
18    pub party: Option<String>,
19    // assets: Assets,
20    // secrets: Secrets,
21    pub instance: Option<bool>,
22    pub flags: Option<u64>,
23}
24
25#[derive(Debug, Deserialize_repr, Serialize_repr, PartialEq)]
26#[repr(u8)]
27pub enum ActivityKind {
28    Game = 0,
29    Streaming = 1,
30    Listening = 2,
31    Custom = 4,
32}
33
34impl Default for ActivityKind {
35    fn default() -> Self {
36        Self::Game
37    }
38}
39
40impl Activity {
41    pub fn new(kind: ActivityKind, name: impl Into<String>) -> Self {
42        Self {
43            name: name.into(),
44            kind,
45            ..Default::default()
46        }
47    }
48}