origin_sdk/protocol/
groups.rs

1use 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}