Merge pull request #8442 from Flaburgan/mark-like-on-comment-notifications-as-read
Mark Likes on comment notifications as read when visiting a post
This commit is contained in:
commit
80beedfe63
3 changed files with 52 additions and 1 deletions
|
|
@ -81,7 +81,7 @@ We recommend setting up new pods using Ruby 3.3, and updating existing pods to t
|
|||
* Tell users that there is no help in mobile version, allow to switch to desktop [#8407](https://github.com/diaspora/diaspora/pull/8407)
|
||||
* Add Smart App Banner on iOS devices [#8409](https://github.com/diaspora/diaspora/pull/8409)
|
||||
* Add a more detailed modal when reporting a post or a comment [#8035](https://github.com/diaspora/diaspora/pull/8035)
|
||||
* Re-introduce likes on comments [#8203](https://github.com/diaspora/diaspora/pull/8203)
|
||||
* Re-introduce likes on comments [#8203](https://github.com/diaspora/diaspora/pull/8203) [#8442](https://github.com/diaspora/diaspora/pull/8442)
|
||||
* New redesigned registration page [#8285](https://github.com/diaspora/diaspora/pull/8285)
|
||||
* Allow comments to be fetched [#8441](https://github.com/diaspora/diaspora/pull/8441)
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ class PostService
|
|||
return unless user
|
||||
mark_comment_reshare_like_notifications_read(post_id)
|
||||
mark_mention_notifications_read(post_id)
|
||||
mark_like_on_comment_notifications_read(post_id)
|
||||
end
|
||||
|
||||
def destroy(post_id, private_allowed=true)
|
||||
|
|
@ -101,4 +102,10 @@ class PostService
|
|||
.joins("INNER JOIN comments ON mentions_container_id = comments.id AND mentions_container_type = 'Comment'")
|
||||
.where(comments: {commentable_id: post_id, commentable_type: "Post"})
|
||||
end
|
||||
|
||||
def mark_like_on_comment_notifications_read(post_id)
|
||||
Notification.where(recipient_id: user.id, target_type: "Comment",
|
||||
target_id: Comment.where(commentable_id: post_id, author_id: user.person.id),
|
||||
unread: true).update_all(unread: false) # rubocop:disable Rails/SkipsModelValidations
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -168,6 +168,50 @@ describe PostService do
|
|||
expect_any_instance_of(PostService).not_to receive(:mark_mention_notifications_read).with(post.id)
|
||||
PostService.new.mark_user_notifications(post.id)
|
||||
end
|
||||
|
||||
context "for comments" do
|
||||
let(:comment) { post.comments.create(author: alice.person, text: "comment") }
|
||||
|
||||
it "marks a corresponding notifications as read" do
|
||||
FactoryBot.create(:notification, recipient: alice, target: comment, unread: true)
|
||||
FactoryBot.create(:notification, recipient: alice, target: comment, unread: true)
|
||||
|
||||
expect {
|
||||
PostService.new(alice).mark_user_notifications(post.id)
|
||||
}.to change(Notification.where(unread: true), :count).by(-2)
|
||||
end
|
||||
|
||||
it "does not change the update_at date/time for comment notifications" do
|
||||
notification = Timecop.travel(1.minute.ago) do
|
||||
FactoryBot.create(:notification, recipient: alice, target: comment, unread: true)
|
||||
end
|
||||
|
||||
expect {
|
||||
PostService.new(alice).mark_user_notifications(post.id)
|
||||
}.not_to(change { Notification.where(id: notification.id).pluck(:updated_at) })
|
||||
end
|
||||
|
||||
it "does not change other users notifications" do
|
||||
alice_notification = FactoryBot.create(:notification, recipient: alice, target: comment, unread: true)
|
||||
bob_notification = FactoryBot.create(:notification, recipient: bob, target: comment, unread: true)
|
||||
|
||||
PostService.new(alice).mark_user_notifications(post.id)
|
||||
|
||||
expect(Notification.find(alice_notification.id).unread).to be_falsey
|
||||
expect(Notification.find(bob_notification.id).unread).to be_truthy
|
||||
end
|
||||
|
||||
it "marks notifications for all comments on a post as read" do
|
||||
comment2 = post.comments.create(author: alice.person, text: "comment2")
|
||||
|
||||
FactoryBot.create(:notification, recipient: alice, target: comment, unread: true)
|
||||
FactoryBot.create(:notification, recipient: alice, target: comment2, unread: true)
|
||||
|
||||
expect {
|
||||
PostService.new(alice).mark_user_notifications(post.id)
|
||||
}.to change(Notification.where(unread: true), :count).by(-2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#destroy" do
|
||||
|
|
|
|||
Loading…
Reference in a new issue