Ensure counters are up to date when rendering inbox/notifications views
This commit is contained in:
parent
ece64669a1
commit
5a3f65e39a
|
@ -3,8 +3,6 @@
|
|||
class InboxController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
|
||||
after_action :mark_inbox_entries_as_read, only: %i[show]
|
||||
|
||||
def show # rubocop:disable Metrics/MethodLength
|
||||
find_author
|
||||
find_inbox_entries
|
||||
|
@ -19,14 +17,11 @@ class InboxController < ApplicationController
|
|||
@delete_id = find_delete_id
|
||||
@disabled = true if @inbox.empty?
|
||||
|
||||
respond_to do |format|
|
||||
format.html { render "show" }
|
||||
format.turbo_stream do
|
||||
render "show", layout: false, status: :see_other
|
||||
mark_inbox_entries_as_read
|
||||
|
||||
# rubocop disabled as just flipping a flag doesn't need to have validations to be run
|
||||
@inbox.update_all(new: false) # rubocop:disable Rails/SkipsModelValidations
|
||||
end
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.turbo_stream
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -85,8 +80,8 @@ class InboxController < ApplicationController
|
|||
# rubocop:disable Rails/SkipsModelValidations
|
||||
def mark_inbox_entries_as_read
|
||||
# using .dup to not modify @inbox -- useful in tests
|
||||
@inbox&.dup&.update_all(new: false)
|
||||
current_user.touch(:inbox_updated_at)
|
||||
updated = @inbox&.dup&.update_all(new: false)
|
||||
current_user.touch(:inbox_updated_at) if updated.positive?
|
||||
end
|
||||
# rubocop:enable Rails/SkipsModelValidations
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
class NotificationsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
|
||||
after_action :mark_notifications_as_read, only: %i[index]
|
||||
|
||||
TYPE_MAPPINGS = {
|
||||
"answer" => Notification::QuestionAnswered.name,
|
||||
"comment" => Notification::Commented.name,
|
||||
|
@ -18,6 +16,7 @@ class NotificationsController < ApplicationController
|
|||
@notifications = cursored_notifications_for(type: @type, last_id: params[:last_id])
|
||||
paginate_notifications
|
||||
@counters = count_unread_by_type
|
||||
mark_notifications_as_read
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
|
@ -52,8 +51,8 @@ class NotificationsController < ApplicationController
|
|||
# rubocop:disable Rails/SkipsModelValidations
|
||||
def mark_notifications_as_read
|
||||
# using .dup to not modify @notifications -- useful in tests
|
||||
@notifications&.dup&.update_all(new: false)
|
||||
current_user.touch(:notifications_updated_at)
|
||||
updated = @notifications&.dup&.update_all(new: false)
|
||||
current_user.touch(:notifications_updated_at) if updated.positive?
|
||||
end
|
||||
# rubocop:enable Rails/SkipsModelValidations
|
||||
|
||||
|
|
Loading…
Reference in New Issue