import Controller from "@ember/controller";
import { INPUT_DELAY } from "discourse-common/config/environment";
import discourseComputed from "discourse-common/utils/decorators";
import discourseDebounce from "discourse-common/lib/debounce";
import { action, get } from "@ember/object";

export default class AdminDashboardReportsController extends Controller {
  filter = null;

  @discourseComputed(
    "model.[]",
    "filter",
    "siteSettings.dashboard_hidden_reports"
  )
  filteredReports(reports, filter) {
    if (filter) {
      filter = filter.toLowerCase();
      reports = reports.filter((report) => {
        return (
          (get(report, "title") || "").toLowerCase().includes(filter) ||
          (get(report, "description") || "").toLowerCase().includes(filter)
        );
      });
    }

    const hiddenReports = (this.siteSettings.dashboard_hidden_reports || "")
      .split("|")
      .filter(Boolean);
    reports = reports.filter((report) => !hiddenReports.includes(report.type));

    return reports;
  }

  @action
  filterReports(filter) {
    discourseDebounce(this, this._performFiltering, filter, INPUT_DELAY);
  }

  _performFiltering(filter) {
    this.set("filter", filter);
  }
}