scinote-web/app/controllers/user_notifications_controller.rb

47 lines
1.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2016-10-03 20:40:15 +08:00
class UserNotificationsController < ApplicationController
prepend_before_action -> { request.env['devise.skip_trackable'] = true }, only: :unseen_counter
2016-10-03 20:40:15 +08:00
def index
page = (params.dig(:page, :number) || 1).to_i
notifications = load_notifications
2016-09-29 20:49:58 +08:00
case params[:tab]
when 'read'
notifications = notifications.where.not(read_at: nil)
when 'unread'
notifications = notifications.where(read_at: nil)
end
notifications = notifications.page(page).per(Constants::INFINITE_SCROLL_LIMIT)
render json: notifications, each_serializer: NotificationSerializer
end
def unseen_counter
render json: {
2023-10-11 19:43:20 +08:00
unseen: load_notifications.where(read_at: nil).size
}
2016-09-29 20:49:58 +08:00
end
def mark_all_read
load_notifications.mark_as_read!
render json: { success: true }
end
def toggle_read
notification = current_user.notifications.find(params[:id])
notification.update(read_at: (params[:mark_as_read] ? DateTime.now : nil))
render json: notification, serializer: NotificationSerializer
end
private
def load_notifications
current_user.notifications
2023-12-12 21:08:42 +08:00
.in_app
.order(created_at: :desc)
2016-09-28 22:03:52 +08:00
end
end