1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-07-15 11:48:05 +00:00

Check if a user is allow to create posts on another user's page

This commit is contained in:
2020-06-01 16:57:14 +02:00
parent 637408c626
commit f9a8cd4e82
4 changed files with 65 additions and 4 deletions

@ -4,7 +4,7 @@
use serde::Serialize;
use crate::data::user::{User, UserPageStatus, UserID};
use crate::helpers::{friends_helper, custom_emojies_helper, background_image_helper, likes_helper};
use crate::helpers::{friends_helper, custom_emojies_helper, background_image_helper, likes_helper, user_helper};
use crate::data::error::ResultBoxError;
use crate::utils::user_data_utils::user_data_url;
use crate::data::user::AccountImageVisibility::{EVERYONE, COMUNIC_USERS};
@ -40,6 +40,7 @@ struct APIAdvancedInfo {
number_friends: usize,
pageLikes: usize,
user_page_like: bool,
can_post_texts: bool,
}
impl APIUserInfo {
@ -65,15 +66,16 @@ impl APIUserInfo {
/// Get advanced user information
pub fn new_advanced_info(user_id: Option<UserID>, info: &User) -> ResultBoxError<APIUserInfo> {
let mut user = APIUserInfo::new(user_id, info)?;
let curr_user_id = user_id.unwrap_or(0);
let signed_in = user_id.is_some();
// Check if we can return the number of friends of the user
let number_friends = if info.public_friends_list || user_id.unwrap_or(0) == info.id {
let number_friends = if info.public_friends_list || curr_user_id == info.id {
friends_helper::count_friends(info.id)?
} else { 0 };
let likes_page = if signed_in {
likes_helper::is_liking(user_id.unwrap(), info.id as u64, LikeType::USER)?
likes_helper::is_liking(curr_user_id, info.id as u64, LikeType::USER)?
} else { false };
// Set advanced user information
@ -88,6 +90,7 @@ impl APIUserInfo {
number_friends,
pageLikes: likes_helper::count(info.id as u64, LikeType::USER)?,
user_page_like: likes_page,
can_post_texts: user_helper::can_create_posts(curr_user_id, info.id)?
});
Ok(user)