Making mark post read fields optional. (#4055)

* Making mark post read fields optional.

* Remove unecessary &

* Fix clippy.

* Addressing PR comments.

* serde(default)

* Revert "serde(default)"

This reverts commit d56afd3075a3baccb2b0eda1cc739406b83963aa.

---------

Co-authored-by: Felix Ableitner <me@nutomic.com>
This commit is contained in:
Dessalines 2023-10-19 20:16:23 -04:00 committed by GitHub
parent cae25486e4
commit 236c7e24fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View file

@ -11,14 +11,21 @@ pub async fn mark_post_as_read(
context: Data<LemmyContext>, context: Data<LemmyContext>,
local_user_view: LocalUserView, local_user_view: LocalUserView,
) -> Result<Json<SuccessResponse>, LemmyError> { ) -> Result<Json<SuccessResponse>, LemmyError> {
let mut post_ids = data.post_ids.iter().cloned().collect::<HashSet<_>>(); let mut post_ids = HashSet::new();
post_ids.insert(data.post_id); if let Some(post_ids_) = &data.post_ids {
let person_id = local_user_view.person.id; post_ids.extend(post_ids_.iter().cloned());
}
if let Some(post_id) = data.post_id {
post_ids.insert(post_id);
}
if post_ids.len() > MAX_API_PARAM_ELEMENTS { if post_ids.len() > MAX_API_PARAM_ELEMENTS {
Err(LemmyErrorType::TooManyItems)?; Err(LemmyErrorType::TooManyItems)?;
} }
let person_id = local_user_view.person.id;
// Mark the post as read / unread // Mark the post as read / unread
if data.read { if data.read {
PostRead::mark_as_read(&mut context.pool(), post_ids, person_id) PostRead::mark_as_read(&mut context.pool(), post_ids, person_id)

View file

@ -135,14 +135,15 @@ pub struct RemovePost {
pub reason: Option<String>, pub reason: Option<String>,
} }
#[skip_serializing_none]
#[derive(Debug, Serialize, Deserialize, Clone, Default)] #[derive(Debug, Serialize, Deserialize, Clone, Default)]
#[cfg_attr(feature = "full", derive(TS))] #[cfg_attr(feature = "full", derive(TS))]
#[cfg_attr(feature = "full", ts(export))] #[cfg_attr(feature = "full", ts(export))]
/// Mark a post as read. /// Mark a post as read.
pub struct MarkPostAsRead { pub struct MarkPostAsRead {
/// TODO: deprecated, send `post_ids` instead /// TODO: deprecated, send `post_ids` instead
pub post_id: PostId, pub post_id: Option<PostId>,
pub post_ids: Vec<PostId>, pub post_ids: Option<Vec<PostId>>,
pub read: bool, pub read: bool,
} }