X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi%2Fsrc%2Fcommunity%2Ftransfer.rs;h=c63c25750fd66b0a00c9f391b795438776cd7da2;hb=c8063f3267cf2b3622f1fdc69128c6b55feefbbc;hp=10ba1c4fac0f8481c344e64b1e8d136e9d643cf8;hpb=3565ad984a0270c7dd29051a9ff6d15fc5a8ed47;p=lemmy.git diff --git a/crates/api/src/community/transfer.rs b/crates/api/src/community/transfer.rs index 10ba1c4f..c63c2575 100644 --- a/crates/api/src/community/transfer.rs +++ b/crates/api/src/community/transfer.rs @@ -14,7 +14,10 @@ use lemmy_db_schema::{ traits::{Crud, Joinable}, }; use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView}; -use lemmy_utils::{error::LemmyError, location_info}; +use lemmy_utils::{ + error::{LemmyError, LemmyErrorExt, LemmyErrorType}, + location_info, +}; // TODO: we dont do anything for federation here, it should be updated the next time the community // gets fetched. i hope we can get rid of the community creator role soon. @@ -33,13 +36,13 @@ impl Perform for TransferCommunity { // Fetch the community mods let community_id = data.community_id; let mut community_mods = - CommunityModeratorView::for_community(context.pool(), community_id).await?; + CommunityModeratorView::for_community(&mut context.pool(), community_id).await?; // Make sure transferrer is either the top community mod, or an admin if !(is_top_mod(&local_user_view, &community_mods).is_ok() || is_admin(&local_user_view).is_ok()) { - return Err(LemmyError::from_message("not_an_admin")); + return Err(LemmyErrorType::NotAnAdmin)?; } // You have to re-do the community_moderator table, reordering it. @@ -54,7 +57,7 @@ impl Perform for TransferCommunity { // Delete all the mods let community_id = data.community_id; - CommunityModerator::delete_for_community(context.pool(), community_id).await?; + CommunityModerator::delete_for_community(&mut context.pool(), community_id).await?; // TODO: this should probably be a bulk operation // Re-add the mods, in the new order @@ -64,9 +67,9 @@ impl Perform for TransferCommunity { person_id: cmod.moderator.id, }; - CommunityModerator::join(context.pool(), &community_moderator_form) + CommunityModerator::join(&mut context.pool(), &community_moderator_form) .await - .map_err(|e| LemmyError::from_error_message(e, "community_moderator_already_exists"))?; + .with_lemmy_type(LemmyErrorType::CommunityModeratorAlreadyExists)?; } // Mod tables @@ -76,18 +79,19 @@ impl Perform for TransferCommunity { community_id: data.community_id, }; - ModTransferCommunity::create(context.pool(), &form).await?; + ModTransferCommunity::create(&mut context.pool(), &form).await?; let community_id = data.community_id; let person_id = local_user_view.person.id; - let community_view = CommunityView::read(context.pool(), community_id, Some(person_id), None) - .await - .map_err(|e| LemmyError::from_error_message(e, "couldnt_find_community"))?; + let community_view = + CommunityView::read(&mut context.pool(), community_id, Some(person_id), false) + .await + .with_lemmy_type(LemmyErrorType::CouldntFindCommunity)?; let community_id = data.community_id; - let moderators = CommunityModeratorView::for_community(context.pool(), community_id) + let moderators = CommunityModeratorView::for_community(&mut context.pool(), community_id) .await - .map_err(|e| LemmyError::from_error_message(e, "couldnt_find_community"))?; + .with_lemmy_type(LemmyErrorType::CouldntFindCommunity)?; // Return the jwt Ok(GetCommunityResponse {