Merge pull request #1476 from basecamp/mark-all-read

Fix: mark all as read wasn't refreshing in the notifications screen
This commit is contained in:
Jorge Manrubia
2025-11-04 06:14:20 +01:00
committed by GitHub
3 changed files with 23 additions and 2 deletions
@@ -1,5 +1,16 @@
class Notifications::BulkReadingsController < ApplicationController
def create
Current.user.notifications.unread.read_all
if from_tray?
head :ok
else
redirect_to notifications_path
end
end
private
def from_tray?
params[:from_tray]
end
end
+1 -1
View File
@@ -28,7 +28,7 @@
<% end %>
</div>
<%= button_to bulk_reading_path,
<%= button_to bulk_reading_path(from_tray: true),
class: "btn borderless tray__clear-notifications",
title: "Mark all notifications as read",
data: { action: "dialog#close badge#clear", turbo_frame: "notifications" },
@@ -5,11 +5,21 @@ class Notifications::BulkReadingsControllerTest < ActionDispatch::IntegrationTes
sign_in_as :kevin
end
test "create" do
test "create marks all notifications as read" do
assert_changes -> { notifications(:logo_published_kevin).reload.read? }, from: false, to: true do
assert_changes -> { notifications(:layout_commented_kevin).reload.read? }, from: false, to: true do
post bulk_reading_path
end
end
end
test "create redirects to notifications path when not from tray" do
post bulk_reading_path
assert_redirected_to notifications_path
end
test "create returns ok when from tray" do
post bulk_reading_path, params: { from_tray: true }
assert_response :ok
end
end