origin_sdk/protocol/
friends.rs1use serde::{Deserialize, Serialize};
2
3use crate::protocol::presence::Presence;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct AddRecentPlayers {
7 #[serde(rename = "@UserId")]
8 pub user_id: u64,
9 #[serde(rename = "Player")]
10 pub player: Vec<u64>,
11}
12
13#[derive(Debug, Serialize, Deserialize)]
14pub struct Friend {
15 #[serde(rename = "@UserId")]
16 pub user_id: u64,
17 #[serde(rename = "@PersonaId")]
18 pub persona_id: u64,
19 #[serde(rename = "@Persona")]
20 pub persona: String,
21 #[serde(rename = "@AvatarId")]
22 pub avatar_id: String,
23 #[serde(rename = "@Group")]
24 pub group: String,
25 #[serde(rename = "@GroupId")]
26 pub group_id: String,
27 #[serde(rename = "@Presence")]
28 pub presence: Presence,
29 #[serde(rename = "@State")]
30 pub state: FriendState,
31 #[serde(rename = "@TitleId")]
32 pub title_id: String,
33 #[serde(rename = "@Title")]
34 pub title: String,
35 #[serde(rename = "@MultiplayerId")]
36 pub multiplayer_id: String,
37 #[serde(rename = "@RichPresence")]
38 pub rich_presence: String,
39 #[serde(rename = "@GamePresence")]
40 pub game_presence: String,
41}
42
43#[derive(Debug, Serialize, Deserialize)]
44pub enum FriendState {
45 #[serde(rename = "UNKNOWN")]
46 Unknown,
47 #[serde(rename = "NONE")]
48 None,
49 #[serde(rename = "MUTUAL")]
50 Mutual,
51 #[serde(rename = "INVITED")]
52 Invited,
53 #[serde(rename = "DECLINED")]
54 Declined,
55 #[serde(rename = "REQUEST")]
56 Request,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct FriendStatus {
61 #[serde(rename = "@FriendId")]
62 pub friend_id: u64,
63 #[serde(rename = "@State")]
64 pub state: FriendState,
65}
66
67#[derive(Debug, Serialize, Deserialize)]
68pub struct FriendsEvent {
69 #[serde(rename = "@value")]
70 pub value: i32,
71}
72
73#[derive(Debug, Serialize, Deserialize)]
74pub struct QueryAreFriends {
75 #[serde(rename = "@UserId")]
76 pub user_id: u64,
77 #[serde(rename = "Friends", default)]
78 pub friends: Vec<u64>,
79}
80
81#[derive(Debug, Serialize, Deserialize)]
82pub struct QueryAreFriendsResponse {
83 #[serde(rename = "FriendStatus", default)]
84 pub users: Vec<FriendStatus>,
85}
86
87#[derive(Debug, Serialize, Deserialize)]
88pub struct QueryFriends {
89 #[serde(rename = "@UserId")]
90 pub user_id: u64,
91}
92
93#[derive(Debug, Serialize, Deserialize)]
94pub struct QueryFriendsResponse {
95 #[serde(rename = "Friend", default)]
96 pub friends: Vec<Friend>,
97}
98
99#[derive(Debug, Serialize, Deserialize)]
100pub struct RemoveFriend {
101 #[serde(rename = "@UserId")]
102 pub user_id: u64,
103 #[serde(rename = "@UserToRemove")]
104 pub user_to_remove: u64,
105}
106
107#[derive(Debug, Serialize, Deserialize)]
108pub struct RequestFriend {
109 #[serde(rename = "@UserId")]
110 pub user_id: u64,
111 #[serde(rename = "@UserToAdd")]
112 pub user_to_add: u64,
113}