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_read;
|
||||
pub mod save;
|
||||
pub mod block;
|
||||
|
|
|
@ -366,3 +366,12 @@ pub struct ListPostLikes {
|
|||
pub struct ListPostLikesResponse {
|
||||
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;
|
||||
#[cfg(feature = "full")]
|
||||
use ts_rs::TS;
|
||||
use lemmy_db_schema::source::post_keyword_block::PostKeywordBlock;
|
||||
|
||||
#[skip_serializing_none]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq, Hash)]
|
||||
|
@ -479,6 +480,7 @@ pub struct MyUserInfo {
|
|||
pub community_blocks: Vec<Community>,
|
||||
pub instance_blocks: Vec<Instance>,
|
||||
pub person_blocks: Vec<Person>,
|
||||
pub post_keyword_blocks: Vec<PostKeywordBlock>,
|
||||
pub discussion_languages: Vec<LanguageId>,
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ use lemmy_db_schema::source::{
|
|||
instance_block::InstanceBlock,
|
||||
person_block::PersonBlock,
|
||||
};
|
||||
use lemmy_db_schema::source::post_keyword_block::PostKeywordBlock;
|
||||
use lemmy_db_views::structs::LocalUserView;
|
||||
use lemmy_db_views_actor::structs::{CommunityFollowerView, CommunityModeratorView};
|
||||
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 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 => (
|
||||
|pool| CommunityFollowerView::for_person(pool, person_id),
|
||||
|pool| CommunityBlock::for_person(pool, person_id),
|
||||
|pool| InstanceBlock::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| LocalUserLanguage::read(pool, local_user_id)
|
||||
))
|
||||
|
@ -40,6 +42,7 @@ pub async fn get_my_user(
|
|||
community_blocks,
|
||||
instance_blocks,
|
||||
person_blocks,
|
||||
post_keyword_blocks,
|
||||
discussion_languages,
|
||||
}))
|
||||
}
|
||||
|
|
|
@ -89,6 +89,7 @@ use lemmy_api::{
|
|||
},
|
||||
sitemap::get_sitemap,
|
||||
};
|
||||
use lemmy_api::post::block::user_block_keyword_for_posts;
|
||||
use lemmy_api_crud::{
|
||||
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/resolve", put().to(resolve_post_report))
|
||||
.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
|
||||
.service(
|
||||
|
|
|
@ -98,6 +98,7 @@ use lemmy_api::{
|
|||
},
|
||||
sitemap::get_sitemap,
|
||||
};
|
||||
use lemmy_api::post::block::user_block_keyword_for_posts;
|
||||
use lemmy_api_crud::{
|
||||
comment::{
|
||||
create::create_comment,
|
||||
|
@ -320,7 +321,8 @@ pub fn config(cfg: &mut ServiceConfig, rate_limit: &RateLimitCell) {
|
|||
scope("/block")
|
||||
.route("/person", post().to(user_block_person))
|
||||
.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
|
||||
|
|
Loading…
Reference in a new issue