From: Luna <46259660+LunaticHacker@users.noreply.github.com> Date: Tue, 12 Oct 2021 17:01:49 +0000 (+0530) Subject: ui changes for marking comment as read on reply (#454) X-Git-Url: http://these/git/readmes/%7B%60%24%7BarchiveTodayUrl%7D/static/%7Bthis.state.post.url%7D?a=commitdiff_plain;h=73af3fd9ee90924c59b91c97a5dedec6d7e6aaf4;p=lemmy-ui.git ui changes for marking comment as read on reply (#454) * ui changes for marking comment as read on reply * refactor --- diff --git a/src/shared/components/person/inbox.tsx b/src/shared/components/person/inbox.tsx index 05b75ec..be9c327 100644 --- a/src/shared/components/person/inbox.tsx +++ b/src/shared/components/person/inbox.tsx @@ -736,6 +736,37 @@ export class Inbox extends Component { data.comment_view.creator.id == UserService.Instance.myUserInfo.local_user_view.person.id ) { + // If youre in the unread view, just remove it from the list + if (this.state.unreadOrAll == UnreadOrAll.Unread) { + this.state.replies = this.state.replies.filter( + r => r.comment.id !== data.comment_view.comment.parent_id + ); + this.state.mentions = this.state.mentions.filter( + m => m.comment.id !== data.comment_view.comment.parent_id + ); + this.state.combined = this.state.combined.filter(r => { + if (this.isMention(r.view)) + return r.view.comment.id !== data.comment_view.comment.parent_id; + else return r.id !== data.comment_view.comment.parent_id; + }); + } else { + let mention_found = this.state.mentions.find( + i => i.comment.id == data.comment_view.comment.parent_id + ); + if (mention_found) { + mention_found.person_mention.read = true; + } + let reply_found = this.state.replies.find( + i => i.comment.id == data.comment_view.comment.parent_id + ); + if (reply_found) { + reply_found.comment.read = true; + } + this.state.combined = this.buildCombined(); + } + this.sendUnreadCount(); + this.setState(this.state); + setupTippy(); // TODO this seems wrong, you should be using form_id toast(i18n.t("reply_sent")); } @@ -794,4 +825,8 @@ export class Inbox extends Component { ).length ); } + + isMention(view: any): view is PersonMentionView { + return (view as PersonMentionView).person_mention !== undefined; + } }