origin_sdk/protocol/
presence.rs1use 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}