mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-21 00:45:18 +00:00
Return group information to API
This commit is contained in:
44
src/api_data/group_api.rs
Normal file
44
src/api_data/group_api.rs
Normal file
@ -0,0 +1,44 @@
|
||||
//! # Group information api
|
||||
//!
|
||||
//! @author Pierre Hubert
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::data::error::ResultBoxError;
|
||||
use crate::data::group::Group;
|
||||
use crate::data::user::UserID;
|
||||
use crate::helpers::groups_helper;
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct GroupApi {
|
||||
id: u64,
|
||||
name: String,
|
||||
icon_url: String,
|
||||
number_members: u64,
|
||||
visibility: String,
|
||||
registration_level: String,
|
||||
posts_level: String,
|
||||
virtual_directory: String,
|
||||
membership: String,
|
||||
following: bool,
|
||||
}
|
||||
|
||||
impl GroupApi {
|
||||
/// Construct a new group membership instance
|
||||
pub fn new(g: &Group, user_id: Option<UserID>) -> ResultBoxError<GroupApi> {
|
||||
let membership = groups_helper::get_membership(&g.id, user_id)?;
|
||||
|
||||
Ok(GroupApi {
|
||||
id: g.id.id(),
|
||||
name: g.name.clone(),
|
||||
icon_url: g.get_logo_url(),
|
||||
number_members: groups_helper::count_members(&g.id)? as u64,
|
||||
visibility: g.visibility.to_api(),
|
||||
registration_level: g.registration_level.to_api(),
|
||||
posts_level: g.posts_creation_level.to_api(),
|
||||
virtual_directory: g.virtual_directory.clone().unwrap_or("null".to_string()),
|
||||
|
||||
membership: membership.level.to_api(),
|
||||
following: membership.following,
|
||||
})
|
||||
}
|
||||
}
|
@ -23,4 +23,5 @@ pub mod conversations_refresh_api;
|
||||
pub mod res_count_unread_conversations;
|
||||
pub mod list_unread_conversations_api;
|
||||
pub mod global_search_result_api;
|
||||
pub mod res_create_group;
|
||||
pub mod res_create_group;
|
||||
pub mod group_api;
|
Reference in New Issue
Block a user