use jacquard_api::app_bsky::actor::PreferencesItem;
use jacquard_api::app_bsky::actor::get_preferences::{GetPreferences, GetPreferencesOutput};
use jacquard_api::app_bsky::actor::put_preferences::PutPreferences;
use jacquard_common::IntoStatic;
pub struct PreferencesUpdate;
impl super::VecUpdate for PreferencesUpdate {
type GetRequest = GetPreferences;
type PutRequest = PutPreferences<'static>;
type Item = PreferencesItem<'static>;
fn build_get() -> Self::GetRequest {
GetPreferences
}
fn extract_vec<'s>(
output: GetPreferencesOutput<'s>,
) -> Vec<<Self::Item as IntoStatic>::Output> {
output
.preferences
.into_iter()
.map(|p| p.into_static())
.collect()
}
fn build_put(items: Vec<<Self::Item as IntoStatic>::Output>) -> Self::PutRequest {
PutPreferences::new().preferences(items).build()
}
fn matches<'s>(a: &'s Self::Item, b: &'s Self::Item) -> bool {
std::mem::discriminant(a) == std::mem::discriminant(b)
}
}