mirror of
https://github.com/LemmyNet/lemmy.git
synced 2025-01-03 16:51:35 +00:00
created corresponding api functions
This commit is contained in:
parent
924b76a6e6
commit
c4e83912e1
7 changed files with 47 additions and 3 deletions
25
crates/api/src/post/block.rs
Normal file
25
crates/api/src/post/block.rs
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
use lemmy_api_common::{post::{BlockKeywordForPost}, context::LemmyContext, SuccessResponse};
|
||||||
|
use lemmy_db_views::structs::LocalUserView;
|
||||||
|
use activitypub_federation::config::Data;
|
||||||
|
use actix_web::web::Json;
|
||||||
|
use lemmy_utils::error::LemmyResult;
|
||||||
|
use lemmy_db_schema::source::post_keyword_block::{PostKeywordBlock, PostKeywordBlockForm};
|
||||||
|
|
||||||
|
pub async fn user_block_keyword_for_posts(
|
||||||
|
data: Json<BlockKeywordForPost>,
|
||||||
|
context: Data<LemmyContext>,
|
||||||
|
local_user_view: LocalUserView
|
||||||
|
) -> LemmyResult<Json<SuccessResponse>>{
|
||||||
|
|
||||||
|
let person_id = local_user_view.person.id;
|
||||||
|
let post_block_keyword_form = PostKeywordBlockForm {
|
||||||
|
person_id,
|
||||||
|
keyword: data.keyword.clone(),
|
||||||
|
};
|
||||||
|
if(data.block){
|
||||||
|
PostKeywordBlock::block_keyword(&mut context.pool(), &post_block_keyword_form).await?;
|
||||||
|
} else {
|
||||||
|
PostKeywordBlock::unblock_keyword(&mut context.pool(), &post_block_keyword_form).await?;
|
||||||
|
}
|
||||||
|
Ok(Json(SuccessResponse::default()))
|
||||||
|
}
|
|
@ -7,3 +7,4 @@ pub mod lock;
|
||||||
pub mod mark_many_read;
|
pub mod mark_many_read;
|
||||||
pub mod mark_read;
|
pub mod mark_read;
|
||||||
pub mod save;
|
pub mod save;
|
||||||
|
pub mod block;
|
||||||
|
|
|
@ -366,3 +366,12 @@ pub struct ListPostLikes {
|
||||||
pub struct ListPostLikesResponse {
|
pub struct ListPostLikesResponse {
|
||||||
pub post_likes: Vec<VoteView>,
|
pub post_likes: Vec<VoteView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug,Serialize,Deserialize,Clone)]
|
||||||
|
#[cfg_attr(feature = "full", derive(TS))]
|
||||||
|
#[cfg_attr(feature = "full", ts(export))]
|
||||||
|
pub struct BlockKeywordForPost {
|
||||||
|
pub keyword: String,
|
||||||
|
pub block : bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ use serde::{Deserialize, Serialize};
|
||||||
use serde_with::skip_serializing_none;
|
use serde_with::skip_serializing_none;
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
use ts_rs::TS;
|
use ts_rs::TS;
|
||||||
|
use lemmy_db_schema::source::post_keyword_block::PostKeywordBlock;
|
||||||
|
|
||||||
#[skip_serializing_none]
|
#[skip_serializing_none]
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)]
|
||||||
|
@ -479,6 +480,7 @@ pub struct MyUserInfo {
|
||||||
pub community_blocks: Vec<Community>,
|
pub community_blocks: Vec<Community>,
|
||||||
pub instance_blocks: Vec<Instance>,
|
pub instance_blocks: Vec<Instance>,
|
||||||
pub person_blocks: Vec<Person>,
|
pub person_blocks: Vec<Person>,
|
||||||
|
pub post_keyword_blocks: Vec<PostKeywordBlock>,
|
||||||
pub discussion_languages: Vec<LanguageId>,
|
pub discussion_languages: Vec<LanguageId>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ use lemmy_db_schema::source::{
|
||||||
instance_block::InstanceBlock,
|
instance_block::InstanceBlock,
|
||||||
person_block::PersonBlock,
|
person_block::PersonBlock,
|
||||||
};
|
};
|
||||||
|
use lemmy_db_schema::source::post_keyword_block::PostKeywordBlock;
|
||||||
use lemmy_db_views::structs::LocalUserView;
|
use lemmy_db_views::structs::LocalUserView;
|
||||||
use lemmy_db_views_actor::structs::{CommunityFollowerView, CommunityModeratorView};
|
use lemmy_db_views_actor::structs::{CommunityFollowerView, CommunityModeratorView};
|
||||||
use lemmy_utils::error::{LemmyErrorExt, LemmyErrorType, LemmyResult};
|
use lemmy_utils::error::{LemmyErrorExt, LemmyErrorType, LemmyResult};
|
||||||
|
@ -22,12 +23,13 @@ pub async fn get_my_user(
|
||||||
let local_user_id = local_user_view.local_user.id;
|
let local_user_id = local_user_view.local_user.id;
|
||||||
let pool = &mut context.pool();
|
let pool = &mut context.pool();
|
||||||
|
|
||||||
let (follows, community_blocks, instance_blocks, person_blocks, moderates, discussion_languages) =
|
let (follows, community_blocks, instance_blocks, person_blocks, post_keyword_blocks, moderates, discussion_languages) =
|
||||||
lemmy_db_schema::try_join_with_pool!(pool => (
|
lemmy_db_schema::try_join_with_pool!(pool => (
|
||||||
|pool| CommunityFollowerView::for_person(pool, person_id),
|
|pool| CommunityFollowerView::for_person(pool, person_id),
|
||||||
|pool| CommunityBlock::for_person(pool, person_id),
|
|pool| CommunityBlock::for_person(pool, person_id),
|
||||||
|pool| InstanceBlock::for_person(pool, person_id),
|
|pool| InstanceBlock::for_person(pool, person_id),
|
||||||
|pool| PersonBlock::for_person(pool, person_id),
|
|pool| PersonBlock::for_person(pool, person_id),
|
||||||
|
|pool| PostKeywordBlock::for_person(pool, person_id),
|
||||||
|pool| CommunityModeratorView::for_person(pool, person_id, Some(&local_user_view.local_user)),
|
|pool| CommunityModeratorView::for_person(pool, person_id, Some(&local_user_view.local_user)),
|
||||||
|pool| LocalUserLanguage::read(pool, local_user_id)
|
|pool| LocalUserLanguage::read(pool, local_user_id)
|
||||||
))
|
))
|
||||||
|
@ -40,6 +42,7 @@ pub async fn get_my_user(
|
||||||
community_blocks,
|
community_blocks,
|
||||||
instance_blocks,
|
instance_blocks,
|
||||||
person_blocks,
|
person_blocks,
|
||||||
|
post_keyword_blocks,
|
||||||
discussion_languages,
|
discussion_languages,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,7 @@ use lemmy_api::{
|
||||||
},
|
},
|
||||||
sitemap::get_sitemap,
|
sitemap::get_sitemap,
|
||||||
};
|
};
|
||||||
|
use lemmy_api::post::block::user_block_keyword_for_posts;
|
||||||
use lemmy_api_crud::{
|
use lemmy_api_crud::{
|
||||||
comment::{
|
comment::{
|
||||||
create::create_comment,
|
create::create_comment,
|
||||||
|
@ -223,7 +224,8 @@ pub fn config(cfg: &mut ServiceConfig, rate_limit: &RateLimitCell) {
|
||||||
.route("/report", post().to(create_post_report))
|
.route("/report", post().to(create_post_report))
|
||||||
.route("/report/resolve", put().to(resolve_post_report))
|
.route("/report/resolve", put().to(resolve_post_report))
|
||||||
.route("/report/list", get().to(list_post_reports))
|
.route("/report/list", get().to(list_post_reports))
|
||||||
.route("/site_metadata", get().to(get_link_metadata)),
|
.route("/site_metadata", get().to(get_link_metadata))
|
||||||
|
.route("/block",post().to(user_block_keyword_for_posts)),
|
||||||
)
|
)
|
||||||
// Comment
|
// Comment
|
||||||
.service(
|
.service(
|
||||||
|
|
|
@ -98,6 +98,7 @@ use lemmy_api::{
|
||||||
},
|
},
|
||||||
sitemap::get_sitemap,
|
sitemap::get_sitemap,
|
||||||
};
|
};
|
||||||
|
use lemmy_api::post::block::user_block_keyword_for_posts;
|
||||||
use lemmy_api_crud::{
|
use lemmy_api_crud::{
|
||||||
comment::{
|
comment::{
|
||||||
create::create_comment,
|
create::create_comment,
|
||||||
|
@ -320,7 +321,8 @@ pub fn config(cfg: &mut ServiceConfig, rate_limit: &RateLimitCell) {
|
||||||
scope("/block")
|
scope("/block")
|
||||||
.route("/person", post().to(user_block_person))
|
.route("/person", post().to(user_block_person))
|
||||||
.route("/community", post().to(user_block_community))
|
.route("/community", post().to(user_block_community))
|
||||||
.route("/instance", post().to(user_block_instance)),
|
.route("/instance", post().to(user_block_instance))
|
||||||
|
.route("/post",get().to(user_block_keyword_for_posts)),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
// User actions
|
// User actions
|
||||||
|
|
Loading…
Reference in a new issue