From 64dfb88ddfc9ed7db98445235cab98b19d2c2f95 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Thu, 18 Jul 2024 18:48:14 +0300 Subject: [PATCH] Fix marking muted messages as read/unread --- app/controllers/messages_controller.rb | 8 ++++++-- test/controllers/messages_controller_test.rb | 21 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index e4d6c70d9..658c43483 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -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" diff --git a/test/controllers/messages_controller_test.rb b/test/controllers/messages_controller_test.rb index 3f19b5819..b39aed77b 100644 --- a/test/controllers/messages_controller_test.rb +++ b/test/controllers/messages_controller_test.rb @@ -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 -- 2.39.5