From fa7eae5b338cdbabf7498688b3f96742da9bc59a Mon Sep 17 00:00:00 2001 From: Yoshihiro Sugi Date: Thu, 11 Jul 2024 17:58:20 +0900 Subject: [PATCH] fix: Fix BskyAgent::moderator (#199) --- bsky-sdk/src/agent.rs | 45 +++++++++++++++++++++----------------- bsky-sdk/src/moderation.rs | 2 +- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/bsky-sdk/src/agent.rs b/bsky-sdk/src/agent.rs index 70f13e37..8b95bf77 100644 --- a/bsky-sdk/src/agent.rs +++ b/bsky-sdk/src/agent.rs @@ -218,26 +218,31 @@ where } /// Make a [`Moderator`] instance with the provided [`Preferences`]. pub async fn moderator(&self, preferences: &Preferences) -> Result { - let output = self - .api - .app - .bsky - .labeler - .get_services( - atrium_api::app::bsky::labeler::get_services::ParametersData { - detailed: Some(true), - dids: preferences - .moderation_prefs - .labelers - .iter() - .map(|labeler| labeler.did.clone()) - .collect(), - } - .into(), - ) - .await?; - let mut label_defs = HashMap::with_capacity(output.views.len()); - for labeler in &output.views { + let views = if preferences.moderation_prefs.labelers.is_empty() { + Vec::new() + } else { + self.api + .app + .bsky + .labeler + .get_services( + atrium_api::app::bsky::labeler::get_services::ParametersData { + detailed: Some(true), + dids: preferences + .moderation_prefs + .labelers + .iter() + .map(|labeler| labeler.did.clone()) + .collect(), + } + .into(), + ) + .await? + .data + .views + }; + let mut label_defs = HashMap::with_capacity(views.len()); + for labeler in &views { let Union::Refs(atrium_api::app::bsky::labeler::get_services::OutputViewsItem::AppBskyLabelerDefsLabelerViewDetailed(labeler_view)) = labeler else { continue; }; diff --git a/bsky-sdk/src/moderation.rs b/bsky-sdk/src/moderation.rs index 2168df7c..e6fe2696 100644 --- a/bsky-sdk/src/moderation.rs +++ b/bsky-sdk/src/moderation.rs @@ -16,7 +16,7 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; /// A moderator for the different kinds of content on the Bluesky network. -#[derive(Debug, Clone, Serialize, Deserialize)] +#[derive(Debug, Default, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Moderator { user_did: Option,