import { action } from "@ember/object";
import { inject as service } from "@ember/service";
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";

export default class WizardSubscriptionStatus extends Component {
  @service siteSettings;
  @service subscription;
  @tracked supplierId = null;
  @tracked authorized = false;
  @tracked unauthorizing = false;
  basePath = "/admin/plugins/subscription-client/suppliers";

  constructor() {
    super(...arguments);
    ajax(`${this.basePath}`)
      .then((result) => {
        this.supplierId = result.suppliers[0].id;
        this.authorized = result.suppliers[0].authorized;
      })
      .finally(() => {
        this.subscription.retrieveSubscriptionStatus();
      });
  }

  @action
  authorize() {
    window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}&final_landing_path=/admin/wizards/wizard`;
  }

  @action
  deauthorize() {
    this.unauthorizing = true;

    ajax(`${this.basePath}/authorize`, {
      type: "DELETE",
      data: {
        supplier_id: this.supplierId,
      },
    })
      .then((result) => {
        this.supplierId = result.supplier.id;
        this.authorized = !(result.supplier.authorized_at === null);
      })
      .finally(() => {
        this.unauthorizing = false;
        this.subscription.retrieveSubscriptionStatus();
      })
      .catch(popupAjaxError);
  }
}