From 504417458f7bc1273ee53834e3d952bbfb0b7017 Mon Sep 17 00:00:00 2001 From: Timothy Quilling Date: Mon, 22 Dec 2025 13:22:02 -0500 Subject: [PATCH] feat: update lexica --- lexica/src/app_bsky/actor.rs | 107 ++++++++++++++++-- lexica/src/app_bsky/graph.rs | 2 +- parakeet/src/entities/converters/profile.rs | 118 +++++++++++++++++++- parakeet/src/entities/core/post.rs | 40 +++++++ parakeet/src/entities/core/starterpack.rs | 83 ++++++++++++++ parakeet/src/xrpc/app_bsky/actor.rs | 113 ++++++++----------- 6 files changed, 386 insertions(+), 77 deletions(-) diff --git a/lexica/src/app_bsky/actor.rs b/lexica/src/app_bsky/actor.rs index 0fffa6c5..e00c0cc8 100644 --- a/lexica/src/app_bsky/actor.rs +++ b/lexica/src/app_bsky/actor.rs @@ -1,6 +1,7 @@ use crate::app_bsky::embed::External; -use crate::app_bsky::graph::ListViewBasic; +use crate::app_bsky::graph::{ListViewBasic, StarterPackViewBasic}; use crate::com_atproto::label::Label; +use crate::StrongRef; use chrono::prelude::*; use serde::{Deserialize, Serialize}; use std::fmt::Display; @@ -21,10 +22,15 @@ pub struct ProfileViewerState { pub following: Option, #[serde(skip_serializing_if = "Option::is_none")] pub followed_by: Option, - // #[serde(skip_serializing_if = "Option::is_none")] - // pub known_followers: Option<()>, - // #[serde(skip_serializing_if = "Option::is_none")] - // pub activity_subscriptions: Option<()>, + #[serde(skip_serializing_if = "Option::is_none")] + pub known_followers: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct KnownFollowers { + pub count: i64, + pub followers: Vec, } #[derive(Clone, Default, Debug, Serialize, Deserialize)] @@ -216,13 +222,13 @@ pub struct ProfileViewDetailed { pub posts_count: i64, #[serde(skip_serializing_if = "Option::is_none")] pub associated: Option, - // #[serde(skip_serializing_if = "Option::is_none")] - // pub joined_via_starter_pack: Option<()>, + #[serde(skip_serializing_if = "Option::is_none")] + pub joined_via_starter_pack: Option, #[serde(skip_serializing_if = "Option::is_none")] pub viewer: Option, pub labels: Vec