origin_sdk/protocol/
groups.rs1use serde::{Deserialize, Serialize};
2
3use crate::protocol::friends::Friend;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct CreateGroup {
7 #[serde(rename = "@UserId")]
8 pub user_id: u64,
9 #[serde(rename = "@GroupName")]
10 pub group_name: String,
11 #[serde(rename = "@GroupType")]
12 pub group_type: GroupType,
13}
14
15#[derive(Debug, Serialize, Deserialize)]
16pub struct EnterGroup {
17 #[serde(rename = "@UserId")]
18 pub user_id: u64,
19 #[serde(rename = "@GroupId")]
20 pub group_id: String,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub struct GetGroupInfo {
25 #[serde(rename = "@UserId")]
26 pub user_id: u64,
27 #[serde(rename = "@GroupId")]
28 pub group_id: String,
29}
30
31#[derive(Debug, Serialize, Deserialize)]
32pub struct GroupEnterEvent {
33 #[serde(rename = "GroupInfo")]
34 pub group_info: GroupInfo,
35}
36
37#[derive(Debug, Serialize, Deserialize)]
38pub struct GroupEvent {
39 #[serde(rename = "Friend", default)]
40 pub members: Vec<Friend>,
41}
42
43#[derive(Debug, Serialize, Deserialize)]
44pub struct GroupInfo {
45 #[serde(rename = "@GroupName")]
46 pub group_name: String,
47 #[serde(rename = "@GroupId")]
48 pub group_id: String,
49 #[serde(rename = "@GroupType")]
50 pub group_type: GroupType,
51 #[serde(rename = "@CanInviteNewMembers")]
52 pub can_invite_new_members: bool,
53 #[serde(rename = "@CanRemoveMembers")]
54 pub can_remove_members: bool,
55 #[serde(rename = "@CanSendGameInvites")]
56 pub can_send_game_invites: bool,
57 #[serde(
58 rename = "@MaxGroupSize",
59 default = "GroupInfo::default_max_group_size"
60 )]
61 pub max_group_size: i32,
62}
63
64impl GroupInfo {
65 #[must_use]
66 pub fn default_max_group_size() -> i32 {
67 16i32
68 }
69}
70
71#[derive(Debug, Serialize, Deserialize)]
72pub struct GroupLeaveEvent {
73 #[serde(rename = "@GroupId")]
74 pub group_id: String,
75}
76
77#[derive(Debug, Serialize, Deserialize)]
78pub enum GroupType {
79 #[serde(rename = "PUBLIC")]
80 Public,
81 #[serde(rename = "PRIVATE")]
82 Private,
83}
84
85#[derive(Debug, Serialize, Deserialize)]
86pub struct LeaveGroup {
87 #[serde(rename = "@UserId")]
88 pub user_id: u64,
89}
90
91#[derive(Debug, Serialize, Deserialize)]
92pub struct QueryGroup {
93 #[serde(rename = "@UserId")]
94 pub user_id: u64,
95 #[serde(rename = "@GroupId")]
96 pub group_id: String,
97}
98
99#[derive(Debug, Serialize, Deserialize)]
100pub struct QueryGroupResponse {
101 #[serde(rename = "Friend", default)]
102 pub members: Vec<Friend>,
103}
104
105#[derive(Debug, Serialize, Deserialize)]
106pub struct RemoveUsersFromGroup {
107 #[serde(rename = "@UserId")]
108 pub user_id: u64,
109 #[serde(rename = "FriendId", default)]
110 pub friend_id: Vec<u64>,
111}