sentc_light/group/
mod.rs

1#[cfg(feature = "network")]
2pub mod net;
3
4use sentc_crypto_light::group::prepare_change_rank;
5use sentc_crypto_light::sdk_common::GroupId;
6use sentc_crypto_light::sdk_utils::group::GroupOutDataLight;
7
8use crate::error::SentcError;
9
10pub struct Group
11{
12	group_id: GroupId,
13	parent_group_id: Option<GroupId>,
14	from_parent: bool,
15	created_time: u128,
16	joined_time: u128,
17	rank: i32,
18	is_connected_group: bool,
19	access_by_parent: Option<GroupId>,
20	access_by_group_as_member: Option<GroupId>,
21
22	base_url: String,
23	app_token: String,
24}
25
26impl Group
27{
28	#[allow(clippy::too_many_arguments)]
29	fn new_group(
30		base_url: String,
31		app_token: String,
32		group_id: GroupId,
33		parent_group_id: Option<GroupId>,
34		from_parent: bool,
35		created_time: u128,
36		joined_time: u128,
37		rank: i32,
38		is_connected_group: bool,
39		access_by_parent: Option<GroupId>,
40		access_by_group_as_member: Option<GroupId>,
41	) -> Self
42	{
43		Self {
44			base_url,
45			app_token,
46			group_id,
47			parent_group_id,
48			from_parent,
49			created_time,
50			joined_time,
51			rank,
52			is_connected_group,
53			access_by_parent,
54			access_by_group_as_member,
55		}
56	}
57
58	pub fn from_server(base_url: String, app_token: String, server_data: GroupOutDataLight) -> Self
59	{
60		let parent = server_data.access_by_parent_group.is_some();
61
62		Self::new_group(
63			base_url,
64			app_token,
65			server_data.group_id,
66			server_data.parent_group_id,
67			parent,
68			server_data.created_time,
69			server_data.joined_time,
70			server_data.rank,
71			server_data.is_connected_group,
72			server_data.access_by_parent_group,
73			server_data.access_by_group_as_member,
74		)
75	}
76
77	pub fn get_group_id(&self) -> &str
78	{
79		&self.group_id
80	}
81
82	pub fn get_parent_group_id(&self) -> Option<&GroupId>
83	{
84		self.parent_group_id.as_ref()
85	}
86
87	pub fn get_fetched_from_parent_group(&self) -> bool
88	{
89		self.from_parent
90	}
91
92	pub fn get_rank(&self) -> i32
93	{
94		self.rank
95	}
96
97	pub fn get_access_group_as_member(&self) -> Option<&str>
98	{
99		self.access_by_group_as_member.as_deref()
100	}
101
102	pub fn prepare_update_rank(&self, user_id: &str, new_rank: i32) -> Result<String, SentcError>
103	{
104		Ok(prepare_change_rank(user_id, new_rank, self.rank)?)
105	}
106
107	pub fn get_created_time(&self) -> u128
108	{
109		self.created_time
110	}
111
112	pub fn get_joined_time(&self) -> u128
113	{
114		self.joined_time
115	}
116
117	pub fn is_connected_group(&self) -> bool
118	{
119		self.is_connected_group
120	}
121
122	pub fn access_by_parent_group(&self) -> Option<&GroupId>
123	{
124		self.access_by_parent.as_ref()
125	}
126
127	pub fn access_by_group_as_member(&self) -> Option<&GroupId>
128	{
129		self.access_by_group_as_member.as_ref()
130	}
131}