From f4c90b440341208af903e9d422ea826ee7a2d39b Mon Sep 17 00:00:00 2001 From: Mia Date: Fri, 1 Aug 2025 19:17:02 +0100 Subject: [PATCH] lexica bits --- lexica/src/app_bsky/mod.rs | 1 + lexica/src/app_bsky/unspecced.rs | 33 +++++++++++++++++++ .../src/xrpc/app_bsky/unspecced/thread_v2.rs | 5 +-- 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 lexica/src/app_bsky/unspecced.rs diff --git a/lexica/src/app_bsky/mod.rs b/lexica/src/app_bsky/mod.rs index 1ae1b370..f2c87afb 100644 --- a/lexica/src/app_bsky/mod.rs +++ b/lexica/src/app_bsky/mod.rs @@ -6,6 +6,7 @@ pub mod feed; pub mod graph; pub mod labeler; pub mod richtext; +pub mod unspecced; #[derive(Clone, Default, Debug, Serialize)] #[serde(rename_all = "camelCase")] diff --git a/lexica/src/app_bsky/unspecced.rs b/lexica/src/app_bsky/unspecced.rs new file mode 100644 index 00000000..e4b906a6 --- /dev/null +++ b/lexica/src/app_bsky/unspecced.rs @@ -0,0 +1,33 @@ +use crate::app_bsky::feed::{BlockedAuthor, PostView}; +use serde::Serialize; + +#[derive(Clone, Debug, Serialize)] +pub struct ThreadV2Item { + pub uri: String, + pub depth: i32, + pub value: ThreadV2ItemType, +} + +#[derive(Clone, Debug, Serialize)] +#[serde(tag = "$type")] +pub enum ThreadV2ItemType { + #[serde(rename = "app.bsky.unspecced.defs#threadItemPost")] + Post(ThreadItemPost), + #[serde(rename = "app.bsky.unspecced.defs#threadItemNoUnauthenticated")] + NoUnauthenticated {}, + #[serde(rename = "app.bsky.unspecced.defs#threadItemNotFound")] + NotFound {}, + #[serde(rename = "app.bsky.unspecced.defs#threadItemBlocked")] + Blocked { author: BlockedAuthor }, +} + +#[derive(Clone, Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct ThreadItemPost { + pub post: PostView, + pub more_parents: bool, + pub more_replies: i32, + pub op_thread: bool, + pub hidden_by_threadgate: bool, + pub muted_by_viewer: bool, +} diff --git a/parakeet/src/xrpc/app_bsky/unspecced/thread_v2.rs b/parakeet/src/xrpc/app_bsky/unspecced/thread_v2.rs index ce6a350e..1c34924f 100644 --- a/parakeet/src/xrpc/app_bsky/unspecced/thread_v2.rs +++ b/parakeet/src/xrpc/app_bsky/unspecced/thread_v2.rs @@ -7,6 +7,7 @@ use axum::extract::{Query, State}; use axum::Json; use serde::{Deserialize, Serialize}; use lexica::app_bsky::feed::ThreadgateView; +use lexica::app_bsky::unspecced::ThreadV2Item; #[derive(Debug, Default, Deserialize)] #[serde(rename_all = "lowercase")] @@ -33,7 +34,7 @@ pub struct GetPostThreadV2Req { #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] pub struct GetPostThreadV2Res { - pub thread: Vec<()>, + pub thread: Vec, #[serde(skip_serializing_if = "Option::is_none")] pub threadgate: Option, pub has_other_replies: bool, @@ -64,7 +65,7 @@ pub struct GetPostThreadOtherV2Req { #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] pub struct GetPostThreadOtherV2Res { - pub thread: Vec<()>, + pub thread: Vec, } pub async fn get_post_thread_other_v2( -- 2.51.2