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);
        }
      });
    });
  },
};