VerifyEmail,
},
post::{
- CreatePost,
CreatePostLike,
CreatePostReport,
DeletePost,
PurgePost,
},
};
-use lemmy_api_crud::PerformCrud;
+use lemmy_api_crud::{post::create::create_post, PerformCrud};
use lemmy_apub::{
api::{
list_comments::list_comments,
},
SendActivity,
};
-use lemmy_utils::rate_limit::RateLimitCell;
+use lemmy_utils::{rate_limit::RateLimitCell, spawn_try_task, SYNCHRONOUS_FEDERATION};
use serde::Deserialize;
pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimitCell) {
web::resource("/post")
.guard(guard::Post())
.wrap(rate_limit.post())
- .route(web::post().to(route_post_crud::<CreatePost>)),
+ .route(web::post().to(create_post)),
)
.service(
web::scope("/post")
+ 'static,
{
let res = data.perform(&context).await?;
- SendActivity::send_activity(&data, &res, &apub_data).await?;
- Ok(HttpResponse::Ok().json(res))
+ let res_clone = res.clone();
+ let fed_task = async move { SendActivity::send_activity(&data, &res_clone, &apub_data).await };
+ if *SYNCHRONOUS_FEDERATION {
+ fed_task.await?;
+ } else {
+ spawn_try_task(fed_task);
+ }
+ Ok(HttpResponse::Ok().json(&res))
}
async fn route_get<'a, Data>(
+ 'static,
{
let res = data.perform(&context).await?;
- SendActivity::send_activity(&data, &res, &apub_data).await?;
- Ok(HttpResponse::Ok().json(res))
+ let res_clone = res.clone();
+ let fed_task = async move { SendActivity::send_activity(&data, &res_clone, &apub_data).await };
+ if *SYNCHRONOUS_FEDERATION {
+ fed_task.await?;
+ } else {
+ spawn_try_task(fed_task);
+ }
+ Ok(HttpResponse::Ok().json(&res))
}
async fn route_get_crud<'a, Data>(