origin_sdk/protocol/
presence.rs

1use serde::{Deserialize, Serialize};
2
3use crate::protocol::friends::Friend;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct CurrentUserPresenceEvent {
7    #[serde(rename = "@UserId")]
8    pub user_id: u64,
9    #[serde(rename = "@Presence")]
10    pub presence: Presence,
11    #[serde(rename = "@Title")]
12    pub title: String,
13    #[serde(rename = "@TitleId")]
14    pub title_id: String,
15    #[serde(rename = "@MultiplayerId")]
16    pub multiplayer_id: String,
17    #[serde(rename = "@RichPresence")]
18    pub rich_presence: String,
19    #[serde(rename = "@GamePresence")]
20    pub game_presence: String,
21    #[serde(rename = "@SessionId")]
22    pub session_id: String,
23    #[serde(rename = "@Group")]
24    pub group: String,
25    #[serde(rename = "@GroupId")]
26    pub group_id: String,
27}
28
29#[derive(Debug, Serialize, Deserialize)]
30pub struct GetPresence {
31    #[serde(rename = "@UserId")]
32    pub user_id: u64,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct GetPresenceResponse {
37    #[serde(rename = "@UserId")]
38    pub user_id: u64,
39    #[serde(rename = "@Presence")]
40    pub presence: Presence,
41    #[serde(rename = "@Title")]
42    pub title: String,
43    #[serde(rename = "@TitleId")]
44    pub title_id: String,
45    #[serde(rename = "@MultiplayerId")]
46    pub multiplayer_id: String,
47    #[serde(rename = "@RichPresence")]
48    pub rich_presence: String,
49    #[serde(rename = "@GamePresence")]
50    pub game_presence: String,
51    #[serde(rename = "@SessionId")]
52    pub session_id: String,
53    #[serde(rename = "@Group")]
54    pub group: String,
55    #[serde(rename = "@GroupId")]
56    pub group_id: String,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct GetPresenceVisibility {
61    #[serde(rename = "@UserId")]
62    pub user_id: u64,
63}
64
65#[derive(Debug, Serialize, Deserialize)]
66pub struct GetPresenceVisibilityResponse {
67    #[serde(rename = "@Visible")]
68    pub visible: bool,
69}
70
71#[derive(Debug, Serialize, Deserialize)]
72pub struct GoOnline;
73
74#[derive(Debug, Serialize, Deserialize)]
75pub struct OnlineStatusEvent {
76    #[serde(rename = "@isOnline")]
77    pub is_online: bool,
78}
79
80#[derive(Debug, Serialize, Deserialize)]
81pub enum Presence {
82    #[serde(rename = "UNKNOWN")]
83    Unknown,
84    #[serde(rename = "OFFLINE")]
85    Offline,
86    #[serde(rename = "ONLINE")]
87    Online,
88    #[serde(rename = "INGAME")]
89    Ingame,
90    #[serde(rename = "BUSY")]
91    Busy,
92    #[serde(rename = "IDLE")]
93    Idle,
94    #[serde(rename = "JOINABLE")]
95    Joinable,
96    #[serde(rename = "JOINABLE_INVITE_ONLY")]
97    JoinableInviteOnly,
98}
99
100#[derive(Debug, Serialize, Deserialize)]
101pub struct PresenceEvent {
102    #[serde(rename = "@userid")]
103    pub userid: u64,
104}
105
106#[derive(Debug, Serialize, Deserialize)]
107pub struct PresenceVisibilityEvent {
108    #[serde(rename = "@Visible")]
109    pub visible: bool,
110}
111
112#[derive(Debug, Serialize, Deserialize)]
113pub struct QueryPresence {
114    #[serde(rename = "@UserId")]
115    pub user_id: u64,
116    #[serde(rename = "Users", default)]
117    pub users: Vec<u64>,
118}
119
120#[derive(Debug, Serialize, Deserialize)]
121pub struct QueryPresenceResponse {
122    #[serde(rename = "Friend", default)]
123    pub friends: Vec<Friend>,
124}
125
126#[derive(Debug, Serialize, Deserialize)]
127pub struct SetPresence {
128    #[serde(rename = "@UserId")]
129    pub user_id: u64,
130    #[serde(rename = "@Presence")]
131    pub presence: Presence,
132    #[serde(rename = "@RichPresence")]
133    pub rich_presence: String,
134    #[serde(rename = "@GamePresence")]
135    pub game_presence: String,
136    #[serde(rename = "@SessionId")]
137    pub session_id: String,
138}
139
140#[derive(Debug, Serialize, Deserialize)]
141pub struct SetPresenceVisibility {
142    #[serde(rename = "@UserId")]
143    pub user_id: u64,
144    #[serde(rename = "@Visible")]
145    pub visible: bool,
146}