import DiscourseURL from "discourse/lib/url";
import { withPluginApi } from "discourse/lib/plugin-api";
import CustomWizardNotice from "../models/custom-wizard-notice";
import { A } from "@ember/array";

export default {
  name: "custom-wizard-edits",
  initialize(container) {
    const siteSettings = container.lookup("site-settings:main");

    if (!siteSettings.custom_wizard_enabled) {
      return;
    }

    const existing = DiscourseURL.routeTo;
    DiscourseURL.routeTo = function (path, opts) {
      if (path && path.indexOf("/w/") > -1) {
        return (window.location = path);
      }
      return existing.apply(this, [path, opts]);
    };

    withPluginApi("0.8.36", (api) => {
      api.modifyClass("route:admin-dashboard", {
        afterModel() {
          return CustomWizardNotice.list().then((result) => {
            if (result && result.length) {
              this.set(
                "notices",
                A(result.map((n) => CustomWizardNotice.create(n)))
              );
            }
          });
        },

        setupController(controller) {
          if (this.notices) {
            let pluginStatusConnectionError = this.notices.filter(
              (n) => n.type === "plugin_status_connection_error"
            )[0];
            let pluginStatusWarning = this.notices.filter(
              (n) => n.type === "plugin_status_warning"
            )[0];

            if (pluginStatusConnectionError || pluginStatusWarning) {
              controller.set(
                "customWizardImportantNotice",
                pluginStatusConnectionError || pluginStatusWarning
              );
            }
          }

          this._super(...arguments);
        },
      });
    });
  },
};