···11use crate::hydration::StatefulHydrator;
22use crate::xrpc::error::{Error, XrpcResult};
33use crate::xrpc::extract::{AtpAcceptLabelers, AtpAuth};
44-use crate::xrpc::{get_actor_did, get_actor_dids};
44+use crate::xrpc::{check_actor_status, get_actor_did, get_actor_dids};
55use crate::GlobalState;
66use axum::extract::{Query, State};
77use axum::Json;
···2323 let hyd = StatefulHydrator::new(&state.dataloaders, &labelers, maybe_auth);
24242525 let did = get_actor_did(&state.dataloaders, query.actor).await?;
2626+2727+ let mut conn = state.pool.get().await?;
2828+ check_actor_status(&mut conn, &did).await?;
26292730 let maybe_profile = hyd.hydrate_profile_detailed(did).await;
2831
+3-1
parakeet/src/xrpc/app_bsky/feed/feedgen.rs
···11use crate::hydration::StatefulHydrator;
22use crate::xrpc::error::{Error, XrpcResult};
33use crate::xrpc::extract::{AtpAcceptLabelers, AtpAuth};
44-use crate::xrpc::{datetime_cursor, get_actor_did, ActorWithCursorQuery};
44+use crate::xrpc::{check_actor_status, datetime_cursor, get_actor_did, ActorWithCursorQuery};
55use crate::GlobalState;
66use axum::extract::{Query, State};
77use axum::Json;
···2929 let hyd = StatefulHydrator::new(&state.dataloaders, &labelers, maybe_auth);
30303131 let did = get_actor_did(&state.dataloaders, query.actor).await?;
3232+3333+ check_actor_status(&mut conn, &did).await?;
32343335 let limit = query.limit.unwrap_or(50).clamp(1, 100);
3436
+5-1
parakeet/src/xrpc/app_bsky/feed/posts.rs
···22use crate::xrpc::app_bsky::graph::lists::ListWithCursorQuery;
33use crate::xrpc::error::{Error, XrpcResult};
44use crate::xrpc::extract::{AtpAcceptLabelers, AtpAuth};
55-use crate::xrpc::{datetime_cursor, get_actor_did, normalise_at_uri};
55+use crate::xrpc::{check_actor_status, datetime_cursor, get_actor_did, normalise_at_uri};
66use crate::GlobalState;
77use axum::extract::{Query, State};
88use axum::Json;
···65656666 let did = get_actor_did(&state.dataloaders, query.actor.clone()).await?;
67676868+ check_actor_status(&mut conn, &did).await?;
6969+6870 let limit = query.limit.unwrap_or(50).clamp(1, 100);
69717072 let mut posts_query = schema::posts::table
···125127 Ok(Json(FeedRes { cursor, feed }))
126128}
127129130130+// While fixing inactive accounts, i noticed that you can still call this endpoint for a list on an
131131+// inactive account on the public appview - idk if this is correct behaviour, but we're matching it
128132pub async fn get_list_feed(
129133 State(state): State<GlobalState>,
130134 AtpAcceptLabelers(labelers): AtpAcceptLabelers,
+3-1
parakeet/src/xrpc/app_bsky/graph/lists.rs
···11use crate::hydration::StatefulHydrator;
22use crate::xrpc::error::{Error, XrpcResult};
33use crate::xrpc::extract::{AtpAcceptLabelers, AtpAuth};
44-use crate::xrpc::{datetime_cursor, get_actor_did, ActorWithCursorQuery};
44+use crate::xrpc::{check_actor_status, datetime_cursor, get_actor_did, ActorWithCursorQuery};
55use crate::GlobalState;
66use axum::extract::{Query, State};
77use axum::Json;
···3535 let hyd = StatefulHydrator::new(&state.dataloaders, &labelers, maybe_auth);
36363737 let did = get_actor_did(&state.dataloaders, query.actor).await?;
3838+3939+ check_actor_status(&mut conn, &did).await?;
38403941 let limit = query.limit.unwrap_or(50).clamp(1, 100);
4042