diff --git a/crates/apub/src/lib.rs b/crates/apub/src/lib.rs index 64cfa0f83..8fd8588b8 100644 --- a/crates/apub/src/lib.rs +++ b/crates/apub/src/lib.rs @@ -40,7 +40,7 @@ fn local_instance(context: &LemmyContext) -> &'static LocalInstance { .debug(context.settings().federation.debug) // TODO No idea why, but you can't pass context.settings() to the verify_url_function closure // without the value getting captured. - .verify_url_function(|url| check_apub_id_valid(url, &SETTINGS.to_owned())) + .verify_url_function(|url| check_apub_id_valid(url, &SETTINGS)) .build() .expect("configure federation"); LocalInstance::new( diff --git a/crates/db_schema/src/impls/local_user_language.rs b/crates/db_schema/src/impls/local_user_language.rs index 107a8ed03..d38a08691 100644 --- a/crates/db_schema/src/impls/local_user_language.rs +++ b/crates/db_schema/src/impls/local_user_language.rs @@ -15,9 +15,6 @@ impl LocalUserLanguage { ) -> Result<(), Error> { use crate::schema::local_user_language::dsl::*; - // Clear the current user languages - delete(local_user_language.filter(local_user_id.eq(for_local_user_id))).execute(conn)?; - // If no language is given, read all languages let lang_ids = language_ids.unwrap_or( Language::read_all(conn)? @@ -26,15 +23,20 @@ impl LocalUserLanguage { .collect(), ); - for l in lang_ids { - let form = LocalUserLanguageForm { - local_user_id: for_local_user_id, - language_id: l, - }; - insert_into(local_user_language) - .values(form) - .get_result::(conn)?; - } - Ok(()) + conn.build_transaction().read_write().run(|| { + // Clear the current user languages + delete(local_user_language.filter(local_user_id.eq(for_local_user_id))).execute(conn)?; + + for l in lang_ids { + let form = LocalUserLanguageForm { + local_user_id: for_local_user_id, + language_id: l, + }; + insert_into(local_user_language) + .values(form) + .get_result::(conn)?; + } + Ok(()) + }) } }