From 331c8630c3785f8aaebbf0bb24bf6703d9c52651 Mon Sep 17 00:00:00 2001 From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com> Date: Fri, 8 Dec 2023 15:25:05 -0700 Subject: [PATCH] DEV: Upgrade modal to Component API (#186) - Upgrade modal to Component API - Co-locate templates --- .../components/campaign-banner.hbs | 0 .../components/create-coupon-form.hbs | 0 .../components/login-required.hbs | 0 .../modal/admin-cancel-subscription.gjs | 38 ++++++++++ .../components/payment-options.hbs | 0 .../components/payment-plan.hbs | 0 .../components/product-item.hbs | 0 .../components/product-list.hbs | 0 .../components/subscribe-card.hbs | 0 ...s-discourse-subscriptions-subscriptions.js | 71 +++++++++++++------ ...s-discourse-subscriptions-subscriptions.js | 25 ------- .../modal/admin-cancel-subscription.hbs | 27 ------- 12 files changed, 87 insertions(+), 74 deletions(-) rename assets/javascripts/discourse/{templates => }/components/campaign-banner.hbs (100%) rename assets/javascripts/discourse/{templates => }/components/create-coupon-form.hbs (100%) rename assets/javascripts/discourse/{templates => }/components/login-required.hbs (100%) create mode 100644 assets/javascripts/discourse/components/modal/admin-cancel-subscription.gjs rename assets/javascripts/discourse/{templates => }/components/payment-options.hbs (100%) rename assets/javascripts/discourse/{templates => }/components/payment-plan.hbs (100%) rename assets/javascripts/discourse/{templates => }/components/product-item.hbs (100%) rename assets/javascripts/discourse/{templates => }/components/product-list.hbs (100%) rename assets/javascripts/discourse/{templates => }/components/subscribe-card.hbs (100%) delete mode 100644 assets/javascripts/discourse/templates/modal/admin-cancel-subscription.hbs diff --git a/assets/javascripts/discourse/templates/components/campaign-banner.hbs b/assets/javascripts/discourse/components/campaign-banner.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/campaign-banner.hbs rename to assets/javascripts/discourse/components/campaign-banner.hbs diff --git a/assets/javascripts/discourse/templates/components/create-coupon-form.hbs b/assets/javascripts/discourse/components/create-coupon-form.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/create-coupon-form.hbs rename to assets/javascripts/discourse/components/create-coupon-form.hbs diff --git a/assets/javascripts/discourse/templates/components/login-required.hbs b/assets/javascripts/discourse/components/login-required.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/login-required.hbs rename to assets/javascripts/discourse/components/login-required.hbs diff --git a/assets/javascripts/discourse/components/modal/admin-cancel-subscription.gjs b/assets/javascripts/discourse/components/modal/admin-cancel-subscription.gjs new file mode 100644 index 0000000..b7f39af --- /dev/null +++ b/assets/javascripts/discourse/components/modal/admin-cancel-subscription.gjs @@ -0,0 +1,38 @@ +import DButton from "discourse/components/d-button"; +import DModal from "discourse/components/d-modal"; +import Component from "@glimmer/component"; +import { fn, hash } from "@ember/helper"; +import i18n from "discourse-common/helpers/i18n"; +import { Input } from "@ember/component"; +import { tracked } from "@glimmer/tracking"; + +export default class AdminCancelSubscription extends Component { + @tracked refund; + + +} diff --git a/assets/javascripts/discourse/templates/components/payment-options.hbs b/assets/javascripts/discourse/components/payment-options.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/payment-options.hbs rename to assets/javascripts/discourse/components/payment-options.hbs diff --git a/assets/javascripts/discourse/templates/components/payment-plan.hbs b/assets/javascripts/discourse/components/payment-plan.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/payment-plan.hbs rename to assets/javascripts/discourse/components/payment-plan.hbs diff --git a/assets/javascripts/discourse/templates/components/product-item.hbs b/assets/javascripts/discourse/components/product-item.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/product-item.hbs rename to assets/javascripts/discourse/components/product-item.hbs diff --git a/assets/javascripts/discourse/templates/components/product-list.hbs b/assets/javascripts/discourse/components/product-list.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/product-list.hbs rename to assets/javascripts/discourse/components/product-list.hbs diff --git a/assets/javascripts/discourse/templates/components/subscribe-card.hbs b/assets/javascripts/discourse/components/subscribe-card.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/subscribe-card.hbs rename to assets/javascripts/discourse/components/subscribe-card.hbs diff --git a/assets/javascripts/discourse/controllers/admin-plugins-discourse-subscriptions-subscriptions.js b/assets/javascripts/discourse/controllers/admin-plugins-discourse-subscriptions-subscriptions.js index 541ef9f..d2b3f87 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-discourse-subscriptions-subscriptions.js +++ b/assets/javascripts/discourse/controllers/admin-plugins-discourse-subscriptions-subscriptions.js @@ -1,30 +1,57 @@ -import AdminSubscription from "discourse/plugins/discourse-subscriptions/discourse/models/admin-subscription"; +import AdminCancelSubscription from "../components/modal/admin-cancel-subscription"; +import AdminSubscription from "../models/admin-subscription"; import Controller from "@ember/controller"; -import showModal from "discourse/lib/show-modal"; +import { action } from "@ember/object"; +import { inject as service } from "@ember/service"; +import I18n from "discourse-i18n"; export default Controller.extend({ + modal: service(), + dialog: service(), loading: false, - actions: { - showCancelModal(subscription) { - showModal("admin-cancel-subscription", { - model: subscription, + @action + showCancelModal(subscription) { + this.modal.show(AdminCancelSubscription, { + model: { + subscription, + cancelSubscription: this.cancelSubscription, + }, + }); + }, + + @action + loadMore() { + if (!this.loading && this.model.has_more) { + this.set("loading", true); + + return AdminSubscription.loadMore(this.model.last_record).then( + (result) => { + const updated = this.model.data.concat(result.data); + this.set("model", result); + this.set("model.data", updated); + this.set("loading", false); + } + ); + } + }, + + @action + cancelSubscription(model) { + const subscription = model.subscription; + const refund = model.refund; + subscription.set("loading", true); + subscription + .destroy(refund) + .then((result) => { + subscription.set("status", result.status); + this.dialog.alert(I18n.t("discourse_subscriptions.admin.canceled")); + }) + .catch((data) => + this.dialog.alert(data.jqXHR.responseJSON.errors.join("\n")) + ) + .finally(() => { + subscription.set("loading", false); }); - }, - - loadMore() { - if (!this.loading && this.model.has_more) { - this.set("loading", true); - - return AdminSubscription.loadMore(this.model.last_record).then( - (result) => { - const updated = this.model.data.concat(result.data); - this.set("model", result); - this.set("model.data", updated); - this.set("loading", false); - } - ); - } - }, }, }); diff --git a/assets/javascripts/discourse/routes/admin-plugins-discourse-subscriptions-subscriptions.js b/assets/javascripts/discourse/routes/admin-plugins-discourse-subscriptions-subscriptions.js index f190037..5ff4b10 100644 --- a/assets/javascripts/discourse/routes/admin-plugins-discourse-subscriptions-subscriptions.js +++ b/assets/javascripts/discourse/routes/admin-plugins-discourse-subscriptions-subscriptions.js @@ -1,33 +1,8 @@ -import I18n from "I18n"; import Route from "@ember/routing/route"; import AdminSubscription from "discourse/plugins/discourse-subscriptions/discourse/models/admin-subscription"; -import { action } from "@ember/object"; -import { inject as service } from "@ember/service"; export default Route.extend({ - dialog: service(), model() { return AdminSubscription.find(); }, - - @action - cancelSubscription(model) { - const subscription = model.subscription; - const refund = model.refund; - subscription.set("loading", true); - subscription - .destroy(refund) - .then((result) => { - subscription.set("status", result.status); - this.send("closeModal"); - this.dialog.alert(I18n.t("discourse_subscriptions.admin.canceled")); - }) - .catch((data) => - this.dialog.alert(data.jqXHR.responseJSON.errors.join("\n")) - ) - .finally(() => { - subscription.set("loading", false); - this.refresh(); - }); - }, }); diff --git a/assets/javascripts/discourse/templates/modal/admin-cancel-subscription.hbs b/assets/javascripts/discourse/templates/modal/admin-cancel-subscription.hbs deleted file mode 100644 index bfac168..0000000 --- a/assets/javascripts/discourse/templates/modal/admin-cancel-subscription.hbs +++ /dev/null @@ -1,27 +0,0 @@ -
- - - {{i18n "discourse_subscriptions.admin.ask_refund"}} - - - -
\ No newline at end of file