mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 09:34:04 +00:00 
			
		
		
		
	Can respond to a friendship request
This commit is contained in:
		@@ -100,4 +100,20 @@ pub fn cancel_request(r: &mut HttpRequestHandler) -> RequestResult {
 | 
				
			|||||||
    // TODO : delete related notifications
 | 
					    // TODO : delete related notifications
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    r.success("Friendship request removed!")
 | 
					    r.success("Friendship request removed!")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Respond to a friendship request
 | 
				
			||||||
 | 
					pub fn respond_request(r: &mut HttpRequestHandler) -> RequestResult {
 | 
				
			||||||
 | 
					    let friend_id = r.post_user_id("friendID")?;
 | 
				
			||||||
 | 
					    let accept = r.post_bool("accept")?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if !friends_helper::sent_request(&friend_id, r.user_id_ref()?)? {
 | 
				
			||||||
 | 
					        r.forbidden("No friendship request was sent by this user!".to_string())?;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    friends_helper::respond_request(r.user_id_ref()?, &friend_id, accept)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO : create a notification
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    r.set_response("Response to the friendship request successfully saved!")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -101,6 +101,8 @@ pub fn get_routes() -> Vec<Route> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        Route::post("/friends/removeRequest", Box::new(friends_controller::cancel_request)),
 | 
					        Route::post("/friends/removeRequest", Box::new(friends_controller::cancel_request)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Route::post("/friends/respondRequest", Box::new(friends_controller::respond_request)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Conversations controller
 | 
					        // Conversations controller
 | 
				
			||||||
        Route::post("/conversations/create", Box::new(conversations_controller::create)),
 | 
					        Route::post("/conversations/create", Box::new(conversations_controller::create)),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -384,6 +384,14 @@ impl HttpRequestHandler {
 | 
				
			|||||||
        self.user_id_opt().unwrap_or(UserID::invalid())
 | 
					        self.user_id_opt().unwrap_or(UserID::invalid())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Get user ID as a reference
 | 
				
			||||||
 | 
					    pub fn user_id_ref(&self) -> ResultBoxError<&UserID> {
 | 
				
			||||||
 | 
					        match self.curr_user_id.as_ref() {
 | 
				
			||||||
 | 
					            Some(s) => Ok(s),
 | 
				
			||||||
 | 
					            None => Err(ExecError::boxed_new("Could not get required user ID!"))
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Get an email included in the request
 | 
					    /// Get an email included in the request
 | 
				
			||||||
    pub fn post_email(&mut self, name: &str) -> ResultBoxError<String> {
 | 
					    pub fn post_email(&mut self, name: &str) -> ResultBoxError<String> {
 | 
				
			||||||
        let mail = self.post_string(name)?;
 | 
					        let mail = self.post_string(name)?;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -89,6 +89,28 @@ pub fn sent_request(user_id: &UserID, target_user: &UserID) -> ResultBoxError<bo
 | 
				
			|||||||
        .map(|f| f > 0)
 | 
					        .map(|f| f > 0)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Respond to a friendship request
 | 
				
			||||||
 | 
					pub fn respond_request(user_id: &UserID, friend_id: &UserID, accept: bool) -> ResultBoxError {
 | 
				
			||||||
 | 
					    // Delete the request
 | 
				
			||||||
 | 
					    remove_request(friend_id, user_id)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if accept {
 | 
				
			||||||
 | 
					        database::InsertQuery::new(FRIENDS_TABLE)
 | 
				
			||||||
 | 
					            .add_user_id("ID_personne", user_id)
 | 
				
			||||||
 | 
					            .add_user_id("ID_amis", friend_id)
 | 
				
			||||||
 | 
					            .add_legacy_bool("actif", true)
 | 
				
			||||||
 | 
					            .insert_drop_result()?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        database::InsertQuery::new(FRIENDS_TABLE)
 | 
				
			||||||
 | 
					            .add_user_id("ID_personne", friend_id)
 | 
				
			||||||
 | 
					            .add_user_id("ID_amis", user_id)
 | 
				
			||||||
 | 
					            .add_legacy_bool("actif", true)
 | 
				
			||||||
 | 
					            .insert_drop_result()?;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Ok(())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Check out whether two users are friend or not
 | 
					/// Check out whether two users are friend or not
 | 
				
			||||||
pub fn are_friend(user_one: &UserID, user_two: &UserID) -> ResultBoxError<bool> {
 | 
					pub fn are_friend(user_one: &UserID, user_two: &UserID) -> ResultBoxError<bool> {
 | 
				
			||||||
    Ok(database::count(QueryInfo::new(FRIENDS_TABLE)
 | 
					    Ok(database::count(QueryInfo::new(FRIENDS_TABLE)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user