]> git.openstreetmap.org Git - rails.git/commitdiff
Redirect to inbox after marking a message as read/unread disregarding referer
authorAnton Khorev <tony29@yandex.ru>
Sun, 5 May 2024 12:32:47 +0000 (15:32 +0300)
committerAnton Khorev <tony29@yandex.ru>
Sun, 5 May 2024 12:32:47 +0000 (15:32 +0300)
Avoids staying on the message page after the "Mark as unread" button is clicked and immediately reading the message again.

app/controllers/messages_controller.rb
test/controllers/messages_controller_test.rb

index d231fddde32945eff8a7454e3d7a09d37318bfc6..111a31f96ae8cf4b27ce108215368aad5207d78b 100644 (file)
@@ -127,7 +127,7 @@ class MessagesController < ApplicationController
     @message.message_read = message_read
     if @message.save
       flash[:notice] = notice
     @message.message_read = message_read
     if @message.save
       flash[:notice] = notice
-      redirect_back_or_to inbox_messages_path, :status => :see_other
+      redirect_to inbox_messages_path, :status => :see_other
     end
   rescue ActiveRecord::RecordNotFound
     @title = t "messages.no_such_message.title"
     end
   rescue ActiveRecord::RecordNotFound
     @title = t "messages.no_such_message.title"
index 8fc7d35d2df2cbab7b219ea45786420df19546e2..4a48ebbbe291e37e657b1288878ced15382f925f 100644 (file)
@@ -407,14 +407,14 @@ class MessagesControllerTest < ActionDispatch::IntegrationTest
     assert_redirected_to inbox_messages_path
     assert_not Message.find(message.id).message_read
 
     assert_redirected_to inbox_messages_path
     assert_not Message.find(message.id).message_read
 
-    # Check that the marking a message read via XHR works
-    post message_mark_path(:message_id => message, :mark => "read")
-    assert_response :see_other
+    # Check that the marking a message read works and redirects to inbox from the message page
+    post message_mark_path(:message_id => message, :mark => "read"), :headers => { :referer => message_path(message) }
+    assert_redirected_to inbox_messages_path
     assert Message.find(message.id).message_read
 
     assert Message.find(message.id).message_read
 
-    # Check that the marking a message unread via XHR works
-    post message_mark_path(:message_id => message, :mark => "unread")
-    assert_response :see_other
+    # Check that the marking a message unread works and redirects to inbox from the message page
+    post message_mark_path(:message_id => message, :mark => "unread"), :headers => { :referer => message_path(message) }
+    assert_redirected_to inbox_messages_path
     assert_not Message.find(message.id).message_read
 
     # Asking to mark a message with no ID should fail
     assert_not Message.find(message.id).message_read
 
     # Asking to mark a message with no ID should fail