# frozen_string_literal: true class Moderation::ReportsController < ApplicationController before_action :authenticate_user! before_action :set_filter_enabled before_action :set_type_options before_action :set_last_reports_visit def index filter = ReportFilter.new(filter_params) @reports = filter.cursored_results(last_id: params[:last_id]) @reports_last_id = @reports.map(&:id).min @more_data_available = filter.cursored_results(last_id: @reports_last_id, size: 1).count.positive? respond_to do |format| format.html format.turbo_stream { render "index", layout: false, status: :see_other } end end private def filter_params params.slice(*ReportFilter::KEYS).permit(*ReportFilter::KEYS) end def set_filter_enabled @filter_enabled = params.slice(*ReportFilter::KEYS) .reject! { |_, value| value.empty? || value.nil? } .values .any? end def set_type_options @type_options = [ [t("voc.all"), ""], [t("activerecord.models.answer.one"), :answer], [t("activerecord.models.comment.one"), :comment], [t("activerecord.models.question.one"), :question], [t("activerecord.models.user.one"), :user] ] end def set_last_reports_visit current_user.last_reports_visit = DateTime.now current_user.save end end