···5555 db::delete_delegated_account(&state.db, state.db_backend, account_did).await?;
56565757 // Delete the DPoP session for the target account using the stored api_client_id
5858- if let Some(api_client_id) = stored_api_client_id {
5959- if let Err(e) = crate::oauth::sessions::delete_dpop_session(
5858+ if let Some(api_client_id) = stored_api_client_id
5959+ && let Err(e) = crate::oauth::sessions::delete_dpop_session(
6060 &state.db,
6161 state.db_backend,
6262 &api_client_id,
6363 account_did,
6464 )
6565 .await
6666- {
6767- tracing::warn!(account_did, %e, "failed to clean up DPoP session on unlink");
6868- }
6666+ {
6767+ tracing::warn!(account_did, %e, "failed to clean up DPoP session on unlink");
6968 }
70697170 log_event(
···1010pub mod error;
1111pub mod event_log;
1212pub mod external_auth;
1313+pub mod feature_flags;
1414+pub mod feature_middleware;
1315pub mod jetstream;
1416pub mod labeler;
1517pub mod lexicon;
+36
src/lua/atproto_api.rs
···266266 lua.create_async_function(move |_lua, (space_uri, did): (String, String)| {
267267 let state = state_clone.clone();
268268 async move {
269269+ if !crate::feature_flags::is_enabled(
270270+ &state.db,
271271+ crate::feature_flags::FeatureFlag::SPACES_ENABLED,
272272+ state.db_backend,
273273+ )
274274+ .await
275275+ {
276276+ return Err(mlua::Error::runtime("spaces feature is not enabled"));
277277+ }
269278 let uri = crate::spaces::SpaceUri::parse(&space_uri)
270279 .map_err(|e| mlua::Error::runtime(format!("invalid space URI: {e}")))?;
271280 let space = crate::spaces::db::get_space_by_address(
···298307 lua.create_async_function(move |_lua, (space_uri, did): (String, String)| {
299308 let state = state_clone.clone();
300309 async move {
310310+ if !crate::feature_flags::is_enabled(
311311+ &state.db,
312312+ crate::feature_flags::FeatureFlag::SPACES_ENABLED,
313313+ state.db_backend,
314314+ )
315315+ .await
316316+ {
317317+ return Err(mlua::Error::runtime("spaces feature is not enabled"));
318318+ }
301319 let uri = crate::spaces::SpaceUri::parse(&space_uri)
302320 .map_err(|e| mlua::Error::runtime(format!("invalid space URI: {e}")))?;
303321 let space = crate::spaces::db::get_space_by_address(
···329347 let list_members_fn = lua.create_async_function(move |lua, space_uri: String| {
330348 let state = state_clone.clone();
331349 async move {
350350+ if !crate::feature_flags::is_enabled(
351351+ &state.db,
352352+ crate::feature_flags::FeatureFlag::SPACES_ENABLED,
353353+ state.db_backend,
354354+ )
355355+ .await
356356+ {
357357+ return Err(mlua::Error::runtime("spaces feature is not enabled"));
358358+ }
332359 let uri = crate::spaces::SpaceUri::parse(&space_uri)
333360 .map_err(|e| mlua::Error::runtime(format!("invalid space URI: {e}")))?;
334361 let space = crate::spaces::db::get_space_by_address(
···368395 let query_fn = lua.create_async_function(move |lua, opts: mlua::Table| {
369396 let state = state_clone.clone();
370397 async move {
398398+ if !crate::feature_flags::is_enabled(
399399+ &state.db,
400400+ crate::feature_flags::FeatureFlag::SPACES_ENABLED,
401401+ state.db_backend,
402402+ )
403403+ .await
404404+ {
405405+ return Err(mlua::Error::runtime("spaces feature is not enabled"));
406406+ }
371407 let space_uri: String = opts
372408 .get("space_uri")
373409 .map_err(|_| mlua::Error::runtime("space_uri is required"))?;
+1
src/lua/context.rs
···3232}
33333434/// Set global context variables for a procedure script.
3535+#[allow(clippy::too_many_arguments)]
3536pub fn set_procedure_context(
3637 lua: &Lua,
3738 method: &str,