X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_views_actor%2Fsrc%2Fcommunity_view.rs;h=2063fb14fb7cf90160aae4d16742036a0ec8f806;hb=7058cfa1cf67e65818e8ce62d9716b1564558734;hp=a7b711b43726c805e6d541200b86889f2b63bc25;hpb=9c1b9ff3cf198d829630d3d4ab0c03985ecc732f;p=lemmy.git diff --git a/crates/db_views_actor/src/community_view.rs b/crates/db_views_actor/src/community_view.rs index a7b711b4..2063fb14 100644 --- a/crates/db_views_actor/src/community_view.rs +++ b/crates/db_views_actor/src/community_view.rs @@ -74,28 +74,29 @@ impl CommunityView { }) } - // TODO: this function is only used by is_mod_or_admin() below, can probably be merged - fn community_mods_and_admins( - conn: &PgConnection, - community_id: CommunityId, - ) -> Result, Error> { - let mut mods_and_admins: Vec = Vec::new(); - mods_and_admins.append( - &mut CommunityModeratorView::for_community(conn, community_id) - .map(|v| v.into_iter().map(|m| m.moderator.id).collect())?, - ); - mods_and_admins.append( - &mut PersonViewSafe::admins(conn).map(|v| v.into_iter().map(|a| a.person.id).collect())?, - ); - Ok(mods_and_admins) - } - pub fn is_mod_or_admin( conn: &PgConnection, person_id: PersonId, community_id: CommunityId, ) -> bool { - Self::community_mods_and_admins(conn, community_id) + let is_mod = CommunityModeratorView::for_community(conn, community_id) + .map(|v| { + v.into_iter() + .map(|m| m.moderator.id) + .collect::>() + }) + .unwrap_or_default() + .contains(&person_id); + if is_mod { + return true; + } + + PersonViewSafe::admins(conn) + .map(|v| { + v.into_iter() + .map(|a| a.person.id) + .collect::>() + }) .unwrap_or_default() .contains(&person_id) }