feat: support for blocking other users
This commit is contained in:
parent
58c77072ed
commit
c401ca54a2
|
@ -2,7 +2,7 @@ use lemmy_api_common::{
|
|||
lemmy_db_schema::{newtypes::PersonId, CommentSortType},
|
||||
person::{
|
||||
GetPersonDetails, GetPersonDetailsResponse, GetPersonMentions, GetPersonMentionsResponse,
|
||||
GetReplies, GetRepliesResponse, MarkAllAsRead
|
||||
GetReplies, GetRepliesResponse, MarkAllAsRead, BlockPersonResponse, BlockPerson,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -24,6 +24,19 @@ pub fn get_user(
|
|||
super::get("/user", ¶ms)
|
||||
}
|
||||
|
||||
pub fn block_user(
|
||||
person_id: PersonId,
|
||||
block: bool,
|
||||
) -> std::result::Result<BlockPersonResponse, reqwest::Error> {
|
||||
let params = BlockPerson {
|
||||
person_id,
|
||||
block,
|
||||
auth: settings::get_current_account().jwt.unwrap(),
|
||||
};
|
||||
|
||||
super::post("/user/block", ¶ms)
|
||||
}
|
||||
|
||||
pub fn default_person() -> GetPersonDetailsResponse {
|
||||
serde_json::from_str(include_str!("../examples/person.json")).unwrap()
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ pub struct ProfilePage {
|
|||
pub enum ProfileInput {
|
||||
FetchPerson(Option<PersonId>),
|
||||
UpdatePerson(GetPersonDetailsResponse, bool),
|
||||
BlockUser,
|
||||
SendMessageRequest,
|
||||
SendMessage(String),
|
||||
}
|
||||
|
@ -77,6 +78,7 @@ impl SimpleComponent for ProfilePage {
|
|||
set_orientation: gtk::Orientation::Horizontal,
|
||||
set_margin_top: 10,
|
||||
set_margin_bottom: 10,
|
||||
set_spacing: 10,
|
||||
set_hexpand: false,
|
||||
set_halign: gtk::Align::Center,
|
||||
|
||||
|
@ -84,10 +86,15 @@ impl SimpleComponent for ProfilePage {
|
|||
#[watch]
|
||||
set_text: &format!("{} posts, {} comments", model.info.person_view.counts.post_count, model.info.person_view.counts.comment_count),
|
||||
},
|
||||
gtk::Button {
|
||||
set_label: "Block",
|
||||
#[watch]
|
||||
set_visible: settings::get_current_account().jwt.is_some() && settings::get_current_account().id != model.info.person_view.person.id.0,
|
||||
connect_clicked => ProfileInput::BlockUser,
|
||||
},
|
||||
gtk::Button {
|
||||
set_label: "Send message",
|
||||
connect_clicked => ProfileInput::SendMessageRequest,
|
||||
set_margin_start: 10,
|
||||
set_visible: settings::get_current_account().jwt.is_some(),
|
||||
}
|
||||
},
|
||||
|
@ -232,6 +239,17 @@ impl SimpleComponent for ProfilePage {
|
|||
}
|
||||
};
|
||||
});
|
||||
},
|
||||
ProfileInput::BlockUser => {
|
||||
let person_id = self.info.person_view.person.id;
|
||||
std::thread::spawn(move || {
|
||||
match api::user::block_user(person_id, true) {
|
||||
Ok(_resp) => {}
|
||||
Err(err) => {
|
||||
println!("{}", err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue