Parakeet is a Rust-based Bluesky AppServer aiming to implement most of the functionality required to support the Bluesky client
appview atproto bluesky rust appserver
66
fork

Configure Feed

Select the types of activity you want to include in your feed.

clippy

Mia bc019eb8 cc0eb694

+8 -10
+5 -1
consumer/src/db/copy.rs
··· 160 160 161 161 for (at_uri, cid, post) in data { 162 162 let record = serde_json::to_value(&post).unwrap(); 163 - let (mentions, tags) = post.facets.as_ref().map(|v| extract_mentions_and_tags(&v)).unzip(); 163 + let (mentions, tags) = post 164 + .facets 165 + .as_ref() 166 + .map(|v| extract_mentions_and_tags(v)) 167 + .unzip(); 164 168 let facets = post.facets.and_then(|v| serde_json::to_value(v).ok()); 165 169 let embed = post.embed.as_ref().map(|v| v.as_str()); 166 170 let embed_subtype = post.embed.as_ref().and_then(|v| v.subtype());
+2 -8
consumer/src/db/record.rs
··· 325 325 let (mentions, tags) = rec 326 326 .facets 327 327 .as_ref() 328 - .map(|v| extract_mentions_and_tags(&v)) 328 + .map(|v| extract_mentions_and_tags(v)) 329 329 .unzip(); 330 330 let facets = rec.facets.and_then(|v| serde_json::to_value(v).ok()); 331 331 let (parent_uri, parent_cid) = strongref_to_parts(rec.reply.as_ref().map(|v| &v.parent)); ··· 509 509 false => Utc::now(), 510 510 }; 511 511 512 - if detached.contains(post) { 513 - true 514 - } else if rules.contains(PG_DISABLE_RULE) && compare_date > effective { 515 - true 516 - } else { 517 - false 518 - } 512 + detached.contains(post) || (rules.contains(PG_DISABLE_RULE) && compare_date > effective) 519 513 } else { 520 514 false 521 515 }
+1 -1
consumer/src/utils.rs
··· 43 43 44 44 pub fn extract_mentions_and_tags(from: &[FacetMain]) -> (Vec<String>, Vec<String>) { 45 45 let (mentions, tags) = from 46 - .into_iter() 46 + .iter() 47 47 .flat_map(|v| { 48 48 v.features.iter().map(|facet| match facet { 49 49 FacetOuter::Bsky(Facet::Mention { did }) => (Some(did), None),