import Controller from "@ember/controller";
import discourseComputed from "discourse-common/utils/decorators";
import CustomWizardSubscription from "../models/custom-wizard-subscription";
import { alias } from "@ember/object/computed";

export default Controller.extend({
  messageUrl: "https://thepavilion.io/t/3652",
  messageType: "info",
  messageKey: null,
  showSubscription: alias("model.authentication.active"),

  setup() {
    const authentication = this.get("model.authentication");
    const subscription = this.get("model.subscription");
    const subscribed = subscription && subscription.active;
    const authenticated = authentication && authentication.active;

    if (!subscribed) {
      this.set("messageKey", authenticated ? "not_subscribed" : "authorize");
    } else {
      this.set(
        "messageKey",
        !authenticated
          ? "subscription_expiring"
          : subscribed
          ? "subscription_active"
          : "subscription_inactive"
      );
    }
  },

  @discourseComputed("model.server")
  messageOpts(server) {
    return { server };
  },

  actions: {
    unauthorize() {
      this.set("unauthorizing", true);

      CustomWizardPro.unauthorize()
        .then((result) => {
          if (result.success) {
            this.setProperties({
              messageKey: "unauthorized",
              messageType: "warn",
              "model.authentication": null,
              "model.subscription": null,
            });
          } else {
            this.setProperties({
              messageKey: "unauthorize_failed",
              messageType: "error",
            });
          }
        })
        .finally(() => {
          this.set("unauthorizing", false);
        });
    },
  },
});