Fix marking muted messages as read/unread

This commit is contained in:
Anton Khorev 2024-07-18 18:48:14 +03:00
parent 6bf3b453f9
commit 64dfb88ddf
2 changed files with 27 additions and 2 deletions

View file

@ -117,7 +117,7 @@ class MessagesController < ApplicationController
# Set the message as being read or unread.
def mark
@message = current_user.messages.find(params[:message_id])
@message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
if params[:mark] == "unread"
message_read = false
notice = t ".as_unread"
@ -128,7 +128,11 @@ class MessagesController < ApplicationController
@message.message_read = message_read
if @message.save
flash[:notice] = notice
redirect_to inbox_messages_path, :status => :see_other
if @message.muted?
redirect_to muted_messages_path, :status => :see_other
else
redirect_to inbox_messages_path, :status => :see_other
end
end
rescue ActiveRecord::RecordNotFound
@title = t "messages.no_such_message.title"

View file

@ -423,6 +423,27 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
assert_template "no_such_message"
end
##
# test the mark action for messages from muted users
def test_mark_muted
sender_user = create(:user)
recipient_user = create(:user)
create(:user_mute, :owner => recipient_user, :subject => sender_user)
message = create(:message, :unread, :sender => sender_user, :recipient => recipient_user)
session_for(recipient_user)
# Check that the marking a message read works
post message_mark_path(message, :mark => "read")
assert_redirected_to muted_messages_path
assert Message.find(message.id).message_read
# Check that the marking a message unread works
post message_mark_path(message, :mark => "unread")
assert_redirected_to muted_messages_path
assert_not Message.find(message.id).message_read
end
##
# test the destroy action
def test_destroy