From 27cde861b63ace5ed7351964c36ab944a3f1be9a Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 4 Sep 2023 14:55:51 +0100 Subject: [PATCH 01/92] wip --- .../wizard-subscription-authorize.js | 24 +++++++++++++++++++ .../discourse/templates/admin-wizards.hbs | 1 + .../wizard-subscription-authorize.hbs | 15 ++++++++++++ assets/stylesheets/common/admin.scss | 4 ++++ config/locales/client.en.yml | 2 ++ plugin.rb | 2 ++ 6 files changed, 48 insertions(+) create mode 100644 assets/javascripts/discourse/components/wizard-subscription-authorize.js create mode 100644 assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js new file mode 100644 index 00000000..4422288c --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -0,0 +1,24 @@ +// import { geoLocationSearch, providerDetails } from "../lib/location-utilities"; +//import { ajax } from "discourse/lib/ajax"; +import { action, set } from "@ember/object"; +// import { equal } from "@ember/object/computed"; +// import { A } from "@ember/array"; +import { inject as service } from "@ember/service"; +import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; +// import I18n from "I18n"; + +export default class WizardSubscriptionAuthorize extends Component { + @service siteSettings; + @tracked supplierId = 1; + + constructor() { + super(...arguments); + + } + + @action + authorize() { + window.location.href = `${basePath}/authorize?supplier_id=${this.supplierId}`; + } +} diff --git a/assets/javascripts/discourse/templates/admin-wizards.hbs b/assets/javascripts/discourse/templates/admin-wizards.hbs index 452193b1..6d6bad5b 100644 --- a/assets/javascripts/discourse/templates/admin-wizards.hbs +++ b/assets/javascripts/discourse/templates/admin-wizards.hbs @@ -18,6 +18,7 @@ }}
+ {{wizard-subscription-authorize}} {{wizard-subscription-badge}} {{wizard-subscription-cta}}
diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs new file mode 100644 index 00000000..996f8865 --- /dev/null +++ b/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs @@ -0,0 +1,15 @@ +
+ {{#if authorized}} + {{conditional-loading-spinner size="small" condition=unauthorizing}} + + {{i18n "admin.wizard.subscription.deauthorize"}} + + {{else}} + {{d-button + icon="id-card" + class="btn-primary" + label="admin.wizard.subscription.authorize" + title="admin.wizard.subscription.authorize" + action=(action "authorize")}} + {{/if}} +
\ No newline at end of file diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index 6a1601d9..6b91a173 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -49,6 +49,10 @@ $error: #ef1700; .btn-pavilion-support { margin-left: 10px; } + + .supplier-authorize .btn-primary { + margin-right: 10px; + } } .wizard-message { diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 98519335..996951a8 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -545,6 +545,8 @@ en: subscription: title: Subscriber Features + authorize: "Authorize Subscription" + deauthorize: "De-authorize Subscription" subscribed: label: Subscribed title: You're subscribed and can use these features diff --git a/plugin.rb b/plugin.rb index 756154bb..cf6bc714 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,6 +8,8 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true +gem "discourse_subscription_client", "0.1.0.pre14", require_name: "discourse_subscription_client" + register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From c2ffa7699bfda95fb20ea248cedc642e6af45f6b Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 8 Sep 2023 10:54:41 +0100 Subject: [PATCH 02/92] wip --- .../discourse/components/wizard-subscription-authorize.js | 7 ++++--- assets/javascripts/discourse/templates/admin-wizards.hbs | 1 - .../templates/components/wizard-subscription-authorize.hbs | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js index 4422288c..60627b12 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -6,19 +6,20 @@ import { action, set } 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 I18n from "I18n"; export default class WizardSubscriptionAuthorize extends Component { @service siteSettings; - @tracked supplierId = 1; + @tracked supplierId = null; constructor() { super(...arguments); - + /admin/plugins/subscription-client/suppliers } @action authorize() { - window.location.href = `${basePath}/authorize?supplier_id=${this.supplierId}`; + window.location.href = `/admin/plugins/subscription-client/authorize?supplier_id=${this.supplierId}`; } } diff --git a/assets/javascripts/discourse/templates/admin-wizards.hbs b/assets/javascripts/discourse/templates/admin-wizards.hbs index 6d6bad5b..ef57db7d 100644 --- a/assets/javascripts/discourse/templates/admin-wizards.hbs +++ b/assets/javascripts/discourse/templates/admin-wizards.hbs @@ -19,7 +19,6 @@
{{wizard-subscription-authorize}} - {{wizard-subscription-badge}} {{wizard-subscription-cta}}
{{/admin-nav}} diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs index 996f8865..e15d078f 100644 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs @@ -12,4 +12,5 @@ title="admin.wizard.subscription.authorize" action=(action "authorize")}} {{/if}} + {{wizard-subscription-badge}} \ No newline at end of file From 3a0ba4589d7c01c02c79099ff7d049511d03de1a Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 8 Sep 2023 19:14:36 +0100 Subject: [PATCH 03/92] wip --- .../discourse/components/wizard-subscription-authorize.js | 8 ++++++-- plugin.rb | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js index 60627b12..b2ac67a4 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -12,14 +12,18 @@ import { ajax } from "discourse/lib/ajax"; export default class WizardSubscriptionAuthorize extends Component { @service siteSettings; @tracked supplierId = null; + @tracked authorized = false; constructor() { super(...arguments); - /admin/plugins/subscription-client/suppliers + ajax("/admin/plugins/subscription-client/suppliers").then((result) => { + this.supplierId = result.suppliers[0].id; + this.authorized = result.suppliers[0].authorized; + }) } @action authorize() { - window.location.href = `/admin/plugins/subscription-client/authorize?supplier_id=${this.supplierId}`; + window.location.href = `/admin/plugins/subscription-client/suppliers/authorize?supplier_id=${this.supplierId}`; } } diff --git a/plugin.rb b/plugin.rb index cf6bc714..57a898a6 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # name: discourse-custom-wizard # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. -# version: 2.4.18 +# version: 2.4.21 # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos # url: https://github.com/paviliondev/discourse-custom-wizard # contact_emails: development@pavilion.tech From f1e3db48a365e7702df47c08184b134268c470c4 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 08:17:52 +0100 Subject: [PATCH 04/92] point to new sub client gem update, add deauthorize action --- .../wizard-subscription-authorize.js | 34 +++++++++++++++---- plugin.rb | 2 +- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js index b2ac67a4..a6b4b553 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -1,22 +1,22 @@ -// import { geoLocationSearch, providerDetails } from "../lib/location-utilities"; -//import { ajax } from "discourse/lib/ajax"; import { action, set } from "@ember/object"; -// import { equal } from "@ember/object/computed"; -// import { A } from "@ember/array"; import { inject as service } from "@ember/service"; import Component from "@glimmer/component"; import { tracked } from "@glimmer/tracking"; import { ajax } from "discourse/lib/ajax"; -// import I18n from "I18n"; +import { popupAjaxError } from "discourse/lib/ajax-error"; export default class WizardSubscriptionAuthorize extends Component { + basePath = "/admin/plugins/subscription-client/suppliers"; + @service siteSettings; + @tracked supplierId = null; @tracked authorized = false; + @tracked unauthorizing = false; constructor() { super(...arguments); - ajax("/admin/plugins/subscription-client/suppliers").then((result) => { + ajax("/admin/plugins/subscription-client/suppliers?final_landing_path%3D%2Fadmin%2Fwizards%2Fwizard").then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }) @@ -24,6 +24,26 @@ export default class WizardSubscriptionAuthorize extends Component { @action authorize() { - window.location.href = `/admin/plugins/subscription-client/suppliers/authorize?supplier_id=${this.supplierId}`; + window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}`; } + + @action + deauthorize() { + this.unauthorizing = true; + + ajax(`${this.basePath}/authorize`, { + type: "DELETE", + data: { + supplier_id: this.supplierId, + }, + }) + .then((result) => { + this.supplierId = result.suppliers[0].id; + this.authorized = result.suppliers[0].authorized; + }) + .finally(() => { + this.unauthorizing = false; + }) + .catch(popupAjaxError); + }; } diff --git a/plugin.rb b/plugin.rb index 57a898a6..6f2c6ccf 100644 --- a/plugin.rb +++ b/plugin.rb @@ -8,7 +8,7 @@ # subscription_url: https://coop.pavilion.tech gem 'liquid', '5.0.1', require: true -gem "discourse_subscription_client", "0.1.0.pre14", require_name: "discourse_subscription_client" +gem "discourse_subscription_client", "0.1.0.pre15", require_name: "discourse_subscription_client" register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' From bcd6f86fc8d0a0eca735979423e741591c21bd2b Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 10:20:22 +0100 Subject: [PATCH 05/92] debug --- .../discourse/components/wizard-subscription-authorize.js | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js index a6b4b553..577739d5 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -38,6 +38,7 @@ export default class WizardSubscriptionAuthorize extends Component { }, }) .then((result) => { + console.log(result); this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }) From 07bed7ec860348e50d2021820de53f472d2ded9b Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 11:02:44 +0100 Subject: [PATCH 06/92] evolve --- .../components/wizard-subscription-authorize.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js index 577739d5..1e8e3c28 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -16,7 +16,7 @@ export default class WizardSubscriptionAuthorize extends Component { constructor() { super(...arguments); - ajax("/admin/plugins/subscription-client/suppliers?final_landing_path%3D%2Fadmin%2Fwizards%2Fwizard").then((result) => { + ajax("/admin/plugins/subscription-client/suppliers").then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }) @@ -24,7 +24,8 @@ export default class WizardSubscriptionAuthorize extends Component { @action authorize() { - window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}`; + window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}&final_landing_path=/admin/wizards/wizard`; + //window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}&final_landing_path%3D%2Fadmin%2Fwizards%2Fwizard`; } @action @@ -39,8 +40,8 @@ export default class WizardSubscriptionAuthorize extends Component { }) .then((result) => { console.log(result); - this.supplierId = result.suppliers[0].id; - this.authorized = result.suppliers[0].authorized; + this.supplierId = result.supplier.id; + this.authorized = !(result.supplier.authorized_at === null); }) .finally(() => { this.unauthorizing = false; From 28f17045c56bd54b06e45059e48c2b274cbd4c63 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 11:22:27 +0100 Subject: [PATCH 07/92] debug --- .../discourse/components/wizard-subscription-authorize.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-authorize.js index 1e8e3c28..fcaa63ab 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-authorize.js @@ -17,6 +17,7 @@ export default class WizardSubscriptionAuthorize extends Component { constructor() { super(...arguments); ajax("/admin/plugins/subscription-client/suppliers").then((result) => { + console.log(result) this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }) @@ -25,7 +26,6 @@ export default class WizardSubscriptionAuthorize extends Component { @action authorize() { window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}&final_landing_path=/admin/wizards/wizard`; - //window.location.href = `${this.basePath}/authorize?supplier_id=${this.supplierId}&final_landing_path%3D%2Fadmin%2Fwizards%2Fwizard`; } @action From b78914e4fdab49c3a317df1f75f832ce08218630 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 14:05:05 +0100 Subject: [PATCH 08/92] evolve --- ...subscription-authorize.js => wizard-subscription-status.js} | 3 ++- assets/javascripts/discourse/templates/admin-wizards.hbs | 3 +-- ...bscription-authorize.hbs => wizard-subscription-status.hbs} | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) rename assets/javascripts/discourse/components/{wizard-subscription-authorize.js => wizard-subscription-status.js} (93%) rename assets/javascripts/discourse/templates/components/{wizard-subscription-authorize.hbs => wizard-subscription-status.hbs} (90%) diff --git a/assets/javascripts/discourse/components/wizard-subscription-authorize.js b/assets/javascripts/discourse/components/wizard-subscription-status.js similarity index 93% rename from assets/javascripts/discourse/components/wizard-subscription-authorize.js rename to assets/javascripts/discourse/components/wizard-subscription-status.js index 577739d5..856319d0 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-authorize.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -5,7 +5,7 @@ import { tracked } from "@glimmer/tracking"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -export default class WizardSubscriptionAuthorize extends Component { +export default class WizardSubscriptionStatus extends Component { basePath = "/admin/plugins/subscription-client/suppliers"; @service siteSettings; @@ -44,6 +44,7 @@ export default class WizardSubscriptionAuthorize extends Component { }) .finally(() => { this.unauthorizing = false; + window.location.reload(); }) .catch(popupAjaxError); }; diff --git a/assets/javascripts/discourse/templates/admin-wizards.hbs b/assets/javascripts/discourse/templates/admin-wizards.hbs index ef57db7d..d650986d 100644 --- a/assets/javascripts/discourse/templates/admin-wizards.hbs +++ b/assets/javascripts/discourse/templates/admin-wizards.hbs @@ -18,8 +18,7 @@ }}
- {{wizard-subscription-authorize}} - {{wizard-subscription-cta}} +
{{/admin-nav}} diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs similarity index 90% rename from assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs rename to assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs index e15d078f..481c9788 100644 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-authorize.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs @@ -12,5 +12,6 @@ title="admin.wizard.subscription.authorize" action=(action "authorize")}} {{/if}} - {{wizard-subscription-badge}} + + \ No newline at end of file From baf533a8f409ce0f977957af7fca11771d812f71 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 14:08:29 +0100 Subject: [PATCH 09/92] clean up --- .../discourse/components/wizard-subscription-status.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index 452b8bd4..bbd2ed35 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -17,7 +17,6 @@ export default class WizardSubscriptionStatus extends Component { constructor() { super(...arguments); ajax("/admin/plugins/subscription-client/suppliers").then((result) => { - console.log(result) this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }) @@ -39,7 +38,6 @@ export default class WizardSubscriptionStatus extends Component { }, }) .then((result) => { - console.log(result); this.supplierId = result.supplier.id; this.authorized = !(result.supplier.authorized_at === null); }) From 437709446e8f8cd52ffcf2bc37f902e982379ee0 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 14:35:50 +0100 Subject: [PATCH 10/92] prettier --- .../components/wizard-subscription-status.js | 14 +++++++------- .../components/wizard-subscription-status.hbs | 11 +++++++++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index bbd2ed35..2d3f528c 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -19,7 +19,7 @@ export default class WizardSubscriptionStatus extends Component { ajax("/admin/plugins/subscription-client/suppliers").then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; - }) + }); } @action @@ -32,11 +32,11 @@ export default class WizardSubscriptionStatus extends Component { this.unauthorizing = true; ajax(`${this.basePath}/authorize`, { - type: "DELETE", - data: { - supplier_id: this.supplierId, - }, - }) + type: "DELETE", + data: { + supplier_id: this.supplierId, + }, + }) .then((result) => { this.supplierId = result.supplier.id; this.authorized = !(result.supplier.authorized_at === null); @@ -46,5 +46,5 @@ export default class WizardSubscriptionStatus extends Component { window.location.reload(); }) .catch(popupAjaxError); - }; + } } diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs index 481c9788..e9941e69 100644 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs @@ -1,7 +1,13 @@
{{#if authorized}} {{conditional-loading-spinner size="small" condition=unauthorizing}} - + {{i18n "admin.wizard.subscription.deauthorize"}} {{else}} @@ -10,7 +16,8 @@ class="btn-primary" label="admin.wizard.subscription.authorize" title="admin.wizard.subscription.authorize" - action=(action "authorize")}} + action=(action "authorize") + }} {{/if}} From 051d1dbcfd457ef13721f4496758f1e67751276e Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 14:38:06 +0100 Subject: [PATCH 11/92] eslint --- .../discourse/components/wizard-subscription-status.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index 2d3f528c..83d2b072 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -1,4 +1,4 @@ -import { action, set } from "@ember/object"; +import { action } from "@ember/object"; import { inject as service } from "@ember/service"; import Component from "@glimmer/component"; import { tracked } from "@glimmer/tracking"; @@ -6,13 +6,11 @@ import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default class WizardSubscriptionStatus extends Component { - basePath = "/admin/plugins/subscription-client/suppliers"; - @service siteSettings; - @tracked supplierId = null; @tracked authorized = false; @tracked unauthorizing = false; + basePath = "/admin/plugins/subscription-client/suppliers"; constructor() { super(...arguments); From 2f206f60c7b3d76dba55cf200a18a8e66323cdaf Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 17:08:03 +0100 Subject: [PATCH 12/92] remove redundant client installed check code --- app/controllers/custom_wizard/admin/admin.rb | 1 - .../components/wizard-subscription-status.js | 2 +- .../javascripts/discourse/mixins/subscription.js.es6 | 11 +++-------- .../javascripts/discourse/routes/admin-wizards.js.es6 | 3 +-- .../custom_wizard/admin/admin_controller_spec.rb | 2 -- test/javascripts/helpers/admin-wizard.js | 3 --- 6 files changed, 5 insertions(+), 17 deletions(-) diff --git a/app/controllers/custom_wizard/admin/admin.rb b/app/controllers/custom_wizard/admin/admin.rb index aa8862b6..cba3ac43 100644 --- a/app/controllers/custom_wizard/admin/admin.rb +++ b/app/controllers/custom_wizard/admin/admin.rb @@ -8,7 +8,6 @@ class CustomWizard::AdminController < ::Admin::AdminController subscribed: subcription.subscribed?, subscription_type: subcription.type, subscription_attributes: CustomWizard::Subscription.attributes, - subscription_client_installed: CustomWizard::Subscription.client_installed? ) end diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index 83d2b072..cdd8eb77 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -14,7 +14,7 @@ export default class WizardSubscriptionStatus extends Component { constructor() { super(...arguments); - ajax("/admin/plugins/subscription-client/suppliers").then((result) => { + ajax(${basePath}).then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }); diff --git a/assets/javascripts/discourse/mixins/subscription.js.es6 b/assets/javascripts/discourse/mixins/subscription.js.es6 index 34276c3f..426b88a6 100644 --- a/assets/javascripts/discourse/mixins/subscription.js.es6 +++ b/assets/javascripts/discourse/mixins/subscription.js.es6 @@ -24,15 +24,10 @@ export default Mixin.create({ communitySubscription: readOnly("adminWizards.communitySubscription"), standardSubscription: readOnly("adminWizards.standardSubscription"), subscriptionAttributes: readOnly("adminWizards.subscriptionAttributes"), - subscriptionClientInstalled: readOnly( - "adminWizards.subscriptionClientInstalled" - ), - @discourseComputed("subscriptionClientInstalled") - subscriptionLink(subscriptionClientInstalled) { - return subscriptionClientInstalled - ? this.subscriptionClientUrl - : this.subscriptionLandingUrl; + @discourseComputed + subscriptionLink() { + return this.subscriptionLandingUrl; }, @discourseComputed("subscriptionType") diff --git a/assets/javascripts/discourse/routes/admin-wizards.js.es6 b/assets/javascripts/discourse/routes/admin-wizards.js.es6 index 1fa786d3..c6e728ed 100644 --- a/assets/javascripts/discourse/routes/admin-wizards.js.es6 +++ b/assets/javascripts/discourse/routes/admin-wizards.js.es6 @@ -10,8 +10,7 @@ export default DiscourseRoute.extend({ controller.setProperties({ subscribed: model.subscribed, subscriptionType: model.subscription_type, - subscriptionAttributes: model.subscription_attributes, - subscriptionClientInstalled: model.subscription_client_installed, + subscriptionAttributes: model.subscription_attributes }); }, diff --git a/spec/requests/custom_wizard/admin/admin_controller_spec.rb b/spec/requests/custom_wizard/admin/admin_controller_spec.rb index 877f4262..6fb4b0d8 100644 --- a/spec/requests/custom_wizard/admin/admin_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/admin_controller_spec.rb @@ -23,7 +23,6 @@ describe CustomWizard::AdminController do get "/admin/wizards.json" expect(response.parsed_body["subscribed"]).to eq(false) expect(response.parsed_body["subscription_attributes"]).to eq(CustomWizard::Subscription.attributes.as_json) - expect(response.parsed_body["subscription_client_installed"]).to eq(true) end end @@ -37,7 +36,6 @@ describe CustomWizard::AdminController do get "/admin/wizards.json" expect(response.parsed_body["subscribed"]).to eq(true) expect(response.parsed_body["subscription_type"]).to eq("standard") - expect(response.parsed_body["subscription_client_installed"]).to eq(true) end end end diff --git a/test/javascripts/helpers/admin-wizard.js b/test/javascripts/helpers/admin-wizard.js index 6c5dd84c..5582384f 100644 --- a/test/javascripts/helpers/admin-wizard.js +++ b/test/javascripts/helpers/admin-wizard.js @@ -224,7 +224,6 @@ const getUnsubscribedAdminWizards = { all: { none: [], standard: [], business: ["*"], community: ["*"] }, }, }, - subscription_client_installed: false, }; const getCustomFields = { custom_fields: [ @@ -478,7 +477,6 @@ const getBusinessAdminWizard = { all: { none: [], standard: [], business: ["*"], community: ["*"] }, }, }, - subscription_client_installed: false, }; const getStandardAdminWizard = { subscribed: true, @@ -589,7 +587,6 @@ const getStandardAdminWizard = { all: { none: [], standard: [], business: ["*"], community: ["*"] }, }, }, - subscription_client_installed: false, }; const getAdminTestingWizard = { id: "this_is_testing_wizard", From 4f887a858ed11e32125b87488fe8f4657b216185 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 20:47:52 +0100 Subject: [PATCH 13/92] fix --- .../discourse/components/wizard-subscription-status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index cdd8eb77..8a756ef1 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -14,7 +14,7 @@ export default class WizardSubscriptionStatus extends Component { constructor() { super(...arguments); - ajax(${basePath}).then((result) => { + ajax(`${basePath}`).then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }); From 4f8ab0b2498db6640474e1b135aec622827f3c7d Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 22 Sep 2023 21:04:42 +0100 Subject: [PATCH 14/92] fix --- .../discourse/components/wizard-subscription-status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index 8a756ef1..ddd5c282 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -14,7 +14,7 @@ export default class WizardSubscriptionStatus extends Component { constructor() { super(...arguments); - ajax(`${basePath}`).then((result) => { + ajax(`${this.basePath}`).then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; }); From b454340263e79228f1c4193d27739442c96fa363 Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 23 Sep 2023 18:30:11 +0100 Subject: [PATCH 15/92] convert subscription mixin to service, colocate glimmer files --- .../components/wizard-mapper-selector.js.es6 | 7 +-- .../components/wizard-subscription-badge.hbs | 26 ++++++++++ .../components/wizard-subscription-badge.js | 29 +++++++++++ .../wizard-subscription-badge.js.es6 | 30 ------------ .../wizard-subscription-container.js.es6 | 11 +++-- .../components/wizard-subscription-cta.hbs | 3 ++ .../components/wizard-subscription-cta.js | 36 ++++++++++++++ .../components/wizard-subscription-cta.js.es6 | 36 -------------- .../wizard-subscription-selector.js.es6 | 11 +++-- .../components/wizard-subscription-status.hbs | 0 .../discourse/mixins/subscription.js.es6 | 48 ------------------- .../discourse/services/subscription.js | 41 ++++++++++++++++ .../components/wizard-subscription-badge.hbs | 24 ---------- .../components/wizard-subscription-cta.hbs | 1 - 14 files changed, 151 insertions(+), 152 deletions(-) create mode 100644 assets/javascripts/discourse/components/wizard-subscription-badge.hbs create mode 100644 assets/javascripts/discourse/components/wizard-subscription-badge.js delete mode 100644 assets/javascripts/discourse/components/wizard-subscription-badge.js.es6 create mode 100644 assets/javascripts/discourse/components/wizard-subscription-cta.hbs create mode 100644 assets/javascripts/discourse/components/wizard-subscription-cta.js delete mode 100644 assets/javascripts/discourse/components/wizard-subscription-cta.js.es6 rename assets/javascripts/discourse/{templates => }/components/wizard-subscription-status.hbs (100%) delete mode 100644 assets/javascripts/discourse/mixins/subscription.js.es6 create mode 100644 assets/javascripts/discourse/services/subscription.js delete mode 100644 assets/javascripts/discourse/templates/components/wizard-subscription-badge.hbs delete mode 100644 assets/javascripts/discourse/templates/components/wizard-subscription-cta.hbs diff --git a/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 b/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 index e19e4917..d1aacfb8 100644 --- a/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 @@ -15,7 +15,7 @@ import { import Component from "@ember/component"; import { bind, later } from "@ember/runloop"; import I18n from "I18n"; -import Subscription from "../mixins/subscription"; +import { inject as service } from "@ember/service"; const customFieldActionMap = { topic: ["create_topic", "send_message"], @@ -27,8 +27,9 @@ const customFieldActionMap = { const values = ["present", "true", "false"]; -export default Component.extend(Subscription, { +export default Component.extend({ classNameBindings: [":mapper-selector", "activeType"], + subscription: service(), showText: computed("activeType", function () { return this.showInput("text"); @@ -130,7 +131,7 @@ export default Component.extend(Subscription, { return this.connector === "is"; }), - @discourseComputed("site.groups", "guestGroup", "subscriptionType") + @discourseComputed("site.groups", "guestGroup", "subscription.subscriptionType") groups(groups, guestGroup, subscriptionType) { let result = groups; if (!guestGroup) { diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs new file mode 100644 index 00000000..62a85ba8 --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -0,0 +1,26 @@ + + + + + {{label}} + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js new file mode 100644 index 00000000..34df9ea4 --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -0,0 +1,29 @@ +import { inject as service } from "@ember/service"; +import { action, computed } from "@ember/object"; +import Component from '@glimmer/component'; +import DiscourseURL from "discourse/lib/url"; +import I18n from "I18n"; + +export default class WizardSubscriptionBadge extends Component { + @service subscription; + + @computed("subscription.subscriptionType") + get i18nKey() { + return `admin.wizard.subscription.type.${this.subscription.subscriptionType ? this.subscription.subscriptionType : "none"}`; + }; + + @computed("i18nKey") + get title() { + return I18n.t(`${this.i18nKey}.title`); + }; + + @computed("i18nKey") + get label() { + return I18n.t(`${this.i18nKey}.label`); + }; + + @action + click() { + DiscourseURL.routeTo(this.subscription.subscriptionLink); + }; +}; diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-badge.js.es6 deleted file mode 100644 index 301c618e..00000000 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js.es6 +++ /dev/null @@ -1,30 +0,0 @@ -import Component from "@ember/component"; -import discourseComputed from "discourse-common/utils/decorators"; -import Subscription from "../mixins/subscription"; -import DiscourseURL from "discourse/lib/url"; -import I18n from "I18n"; - -export default Component.extend(Subscription, { - tagName: "a", - classNameBindings: [":wizard-subscription-badge", "subscriptionType"], - attributeBindings: ["title"], - - @discourseComputed("subscriptionType") - i18nKey(type) { - return `admin.wizard.subscription.type.${type ? type : "none"}`; - }, - - @discourseComputed("i18nKey") - title(i18nKey) { - return I18n.t(`${i18nKey}.title`); - }, - - @discourseComputed("i18nKey") - label(i18nKey) { - return I18n.t(`${i18nKey}.label`); - }, - - click() { - DiscourseURL.routeTo(this.subscriptionLink); - }, -}); diff --git a/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 index 3a1eac9c..8c750519 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 @@ -1,23 +1,24 @@ import Component from "@ember/component"; import discourseComputed from "discourse-common/utils/decorators"; -import Subscription from "../mixins/subscription"; +import { inject as service } from "@ember/service"; -export default Component.extend(Subscription, { +export default Component.extend({ classNameBindings: [":wizard-subscription-container", "subscribed"], + subscription: service(), - @discourseComputed("subscribed") + @discourseComputed("subscription.subscribed") subscribedIcon(subscribed) { return subscribed ? "check" : "times"; }, - @discourseComputed("subscribed") + @discourseComputed("subscription.subscribed") subscribedLabel(subscribed) { return `admin.wizard.subscription.${ subscribed ? "subscribed" : "not_subscribed" }.label`; }, - @discourseComputed("subscribed") + @discourseComputed("subscription.subscribed") subscribedTitle(subscribed) { return `admin.wizard.subscription.${ subscribed ? "subscribed" : "not_subscribed" diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs new file mode 100644 index 00000000..04f5b6a2 --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs @@ -0,0 +1,3 @@ + + {{d-icon icon}}{{label}} + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.js b/assets/javascripts/discourse/components/wizard-subscription-cta.js new file mode 100644 index 00000000..ea4990bd --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.js @@ -0,0 +1,36 @@ + +import { inject as service } from "@ember/service"; +import { action, computed } from "@ember/object"; +import I18n from "I18n"; +import Component from '@glimmer/component'; + +export default class WizardSubscriptionCta extends Component { + @service subscription; + + @computed("subscription.subscribed") + get i18nKey() { + return `admin.wizard.subscription.cta.${ + this.subscription.subscribed ? "subscribed" : "none" + }`; + }; + + @computed("subscription.subscribed") + get icon() { + return this.subscription.subscribed ? "far-life-ring" : "external-link-alt"; + }; + + @computed("i18nKey") + get title() { + return I18n.t(`${this.i18nKey}.title`); + }; + + @computed("i18nKey") + get label() { + return I18n.t(`${this.i18nKey}.label`); + }; + + @action + click() { + window.open(this.subscription.subscriptionCtaLink, "_blank").focus(); + }; +}; diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-cta.js.es6 deleted file mode 100644 index f483fbe8..00000000 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.js.es6 +++ /dev/null @@ -1,36 +0,0 @@ -import Component from "@ember/component"; -import discourseComputed from "discourse-common/utils/decorators"; -import Subscription from "../mixins/subscription"; -import I18n from "I18n"; - -export default Component.extend(Subscription, { - tagName: "a", - classNameBindings: [":btn", ":btn-pavilion-support", "subscriptionType"], - attributeBindings: ["title"], - - @discourseComputed("subscribed") - i18nKey(subscribed) { - return `admin.wizard.subscription.cta.${ - subscribed ? "subscribed" : "none" - }`; - }, - - @discourseComputed("subscribed") - icon(subscribed) { - return subscribed ? "far-life-ring" : "external-link-alt"; - }, - - @discourseComputed("i18nKey") - title(i18nKey) { - return I18n.t(`${i18nKey}.title`); - }, - - @discourseComputed("i18nKey") - label(i18nKey) { - return I18n.t(`${i18nKey}.label`); - }, - - click() { - window.open(this.subscriptionCtaLink, "_blank").focus(); - }, -}); diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 index 351b5782..2c81c34b 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 @@ -1,5 +1,5 @@ import SingleSelectComponent from "select-kit/components/single-select"; -import Subscription from "../mixins/subscription"; +import { inject as service } from "@ember/service"; import { filterValues } from "discourse/plugins/discourse-custom-wizard/discourse/lib/wizard-schema"; import discourseComputed from "discourse-common/utils/decorators"; import I18n from "I18n"; @@ -12,8 +12,9 @@ const nameKey = function (feature, attribute, value) { } }; -export default SingleSelectComponent.extend(Subscription, { +export default SingleSelectComponent.extend({ classNames: ["combo-box", "wizard-subscription-selector"], + subscription: service(), selectKitOptions: { autoFilterable: false, @@ -26,13 +27,13 @@ export default SingleSelectComponent.extend(Subscription, { }, allowedSubscriptionTypes(feature, attribute, value) { - let attributes = this.subscriptionAttributes[feature]; + let attributes = this.subscription.subscriptionAttributes[feature]; if (!attributes || !attributes[attribute]) { return ["none"]; } let allowedTypes = []; Object.keys(attributes[attribute]).forEach((subscriptionType) => { - let values = attributes[attribute][subscriptionType]; + let values = attributes[attribute][subscription.subscriptionType]; if (values[0] === "*" || values.includes(value)) { allowedTypes.push(subscriptionType); } @@ -44,7 +45,7 @@ export default SingleSelectComponent.extend(Subscription, { content(feature, attribute) { return filterValues(this.wizard, feature, attribute) .map((value) => { - let allowedSubscriptionTypes = this.allowedSubscriptionTypes( + let allowedSubscriptionTypes = this.subscription.allowedSubscriptionTypes( feature, attribute, value diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs similarity index 100% rename from assets/javascripts/discourse/templates/components/wizard-subscription-status.hbs rename to assets/javascripts/discourse/components/wizard-subscription-status.hbs diff --git a/assets/javascripts/discourse/mixins/subscription.js.es6 b/assets/javascripts/discourse/mixins/subscription.js.es6 deleted file mode 100644 index 426b88a6..00000000 --- a/assets/javascripts/discourse/mixins/subscription.js.es6 +++ /dev/null @@ -1,48 +0,0 @@ -import Mixin from "@ember/object/mixin"; -import { getOwner } from "discourse-common/lib/get-owner"; -import { readOnly } from "@ember/object/computed"; -import discourseComputed from "discourse-common/utils/decorators"; - -const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech"; -const SUPPORT_MESSAGE = - "https://coop.pavilion.tech/new-message?username=support&title=Custom%20Wizard%20Support"; -const MANAGER_CATEGORY = - "https://discourse.pluginmanager.org/c/discourse-custom-wizard"; - -export default Mixin.create({ - subscriptionLandingUrl: PRODUCT_PAGE, - subscriptionClientUrl: "/admin/plugins/subscription-client", - - @discourseComputed - adminWizards() { - return getOwner(this).lookup("controller:admin-wizards"); - }, - - subscribed: readOnly("adminWizards.subscribed"), - subscriptionType: readOnly("adminWizards.subscriptionType"), - businessSubscription: readOnly("adminWizards.businessSubscription"), - communitySubscription: readOnly("adminWizards.communitySubscription"), - standardSubscription: readOnly("adminWizards.standardSubscription"), - subscriptionAttributes: readOnly("adminWizards.subscriptionAttributes"), - - @discourseComputed - subscriptionLink() { - return this.subscriptionLandingUrl; - }, - - @discourseComputed("subscriptionType") - subscriptionCtaLink(subscriptionType) { - switch (subscriptionType) { - case "none": - return PRODUCT_PAGE; - case "standard": - return SUPPORT_MESSAGE; - case "business": - return SUPPORT_MESSAGE; - case "community": - return MANAGER_CATEGORY; - default: - return PRODUCT_PAGE; - } - }, -}); diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js new file mode 100644 index 00000000..61790c10 --- /dev/null +++ b/assets/javascripts/discourse/services/subscription.js @@ -0,0 +1,41 @@ +import Service from '@ember/service'; +import { getOwner } from "discourse-common/lib/get-owner"; + +const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech"; +const SUPPORT_MESSAGE = + "https://coop.pavilion.tech/new-message?username=support&title=Custom%20Wizard%20Support"; +const MANAGER_CATEGORY = + "https://discourse.pluginmanager.org/c/discourse-custom-wizard"; + +export default class Subscription extends Service { + subscriptionLandingUrl = PRODUCT_PAGE; + subscribed = this.adminWizards.subscribed; + subscriptionType = this.adminWizards.subscriptionType; + businessSubscription = this.adminWizards.businessSubscription; + communitySubscription = this.adminWizards.communitySubscription; + standardSubscription = this.adminWizards.standardSubscription; + subscriptionAttributes = this.adminWizards.subscriptionAttributes; + + get adminWizards() { + return getOwner(this).lookup("controller:admin-wizards"); + }; + + get subscriptionLink() { + return this.subscriptionLandingUrl; + }; + + get subscriptionCtaLink() { + switch (this.subscriptionType) { + case "none": + return PRODUCT_PAGE; + case "standard": + return SUPPORT_MESSAGE; + case "business": + return SUPPORT_MESSAGE; + case "community": + return MANAGER_CATEGORY; + default: + return PRODUCT_PAGE; + } + }; +} \ No newline at end of file diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-badge.hbs deleted file mode 100644 index baba957c..00000000 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-badge.hbs +++ /dev/null @@ -1,24 +0,0 @@ - - - -{{label}} \ No newline at end of file diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-cta.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-cta.hbs deleted file mode 100644 index cb20df2b..00000000 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-cta.hbs +++ /dev/null @@ -1 +0,0 @@ -{{d-icon icon}}{{label}} \ No newline at end of file From d6ca1546685aeaca16113c22a081a3db2ec2847f Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 23 Sep 2023 18:33:18 +0100 Subject: [PATCH 16/92] rename service class --- assets/javascripts/discourse/services/subscription.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 61790c10..9525a928 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -7,7 +7,7 @@ const SUPPORT_MESSAGE = const MANAGER_CATEGORY = "https://discourse.pluginmanager.org/c/discourse-custom-wizard"; -export default class Subscription extends Service { +export default class SubscriptionService extends Service { subscriptionLandingUrl = PRODUCT_PAGE; subscribed = this.adminWizards.subscribed; subscriptionType = this.adminWizards.subscriptionType; From a558e19a543f931da78e619d558277536455daf4 Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 23 Sep 2023 18:38:22 +0100 Subject: [PATCH 17/92] fix variable reference --- .../discourse/components/wizard-subscription-selector.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 index 2c81c34b..ed2b5c33 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 @@ -33,7 +33,7 @@ export default SingleSelectComponent.extend({ } let allowedTypes = []; Object.keys(attributes[attribute]).forEach((subscriptionType) => { - let values = attributes[attribute][subscription.subscriptionType]; + let values = attributes[attribute][subscriptionType]; if (values[0] === "*" || values.includes(value)) { allowedTypes.push(subscriptionType); } From b1fddc33a747e4ff59ade646f1d2763ba21e1c09 Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 23 Sep 2023 22:52:46 +0100 Subject: [PATCH 18/92] evolve service --- .../components/wizard-subscription-status.js | 7 +++- .../discourse/services/subscription.js | 35 +++++++++++++++---- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index ddd5c282..22493f9e 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -7,6 +7,7 @@ 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; @@ -17,6 +18,9 @@ export default class WizardSubscriptionStatus extends Component { ajax(`${this.basePath}`).then((result) => { this.supplierId = result.suppliers[0].id; this.authorized = result.suppliers[0].authorized; + }) + .finally(() => { + this.subscription.retrieveSubscriptionStatus(); }); } @@ -41,7 +45,8 @@ export default class WizardSubscriptionStatus extends Component { }) .finally(() => { this.unauthorizing = false; - window.location.reload(); + this.subscription.retrieveSubscriptionStatus(); + //window.location.reload(); }) .catch(popupAjaxError); } diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 9525a928..606b62f0 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -1,5 +1,9 @@ import Service from '@ember/service'; import { getOwner } from "discourse-common/lib/get-owner"; +import { tracked } from "@glimmer/tracking"; +import { ajax } from "discourse/lib/ajax"; +import { popupAjaxError } from "discourse/lib/ajax-error"; +import { equal } from "@ember/object/computed"; const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech"; const SUPPORT_MESSAGE = @@ -8,13 +12,32 @@ const MANAGER_CATEGORY = "https://discourse.pluginmanager.org/c/discourse-custom-wizard"; export default class SubscriptionService extends Service { + @tracked subscribed = false; + @tracked subscriptionType = ""; + @tracked businessSubscription = false; + @tracked communitySubscription = false; + @tracked standardSubscription = false; + @tracked subscriptionAttributes = {}; subscriptionLandingUrl = PRODUCT_PAGE; - subscribed = this.adminWizards.subscribed; - subscriptionType = this.adminWizards.subscriptionType; - businessSubscription = this.adminWizards.businessSubscription; - communitySubscription = this.adminWizards.communitySubscription; - standardSubscription = this.adminWizards.standardSubscription; - subscriptionAttributes = this.adminWizards.subscriptionAttributes; + + init() { + super.init(...arguments); + debugger; + this.retrieveSubscriptionStatus(); + } + + retrieveSubscriptionStatus() { + ajax("/admin/wizards").then(result => { + this.subscribed = result.subscribed; + this.subscriptionType = result.subscription_type; + this.subscriptionAttributes = result.subscription_attributes; + this.businessSubscription = equal(this.subscriptionType, "business"); + this.communitySubscription = equal(this.subscriptionType, "community"); + this.standardSubscription = equal(this.subscriptionType, "standard"); + }) + .catch(popupAjaxError); + }; + get adminWizards() { return getOwner(this).lookup("controller:admin-wizards"); From eefbe0a1fc391c926e0ab871e4658be541420e39 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 07:43:42 +0100 Subject: [PATCH 19/92] debug --- assets/javascripts/discourse/services/subscription.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 606b62f0..2268dd9c 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -28,6 +28,7 @@ export default class SubscriptionService extends Service { retrieveSubscriptionStatus() { ajax("/admin/wizards").then(result => { + console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; this.subscriptionAttributes = result.subscription_attributes; @@ -38,7 +39,6 @@ export default class SubscriptionService extends Service { .catch(popupAjaxError); }; - get adminWizards() { return getOwner(this).lookup("controller:admin-wizards"); }; From 6a1ead03221ce49dc5f496b178d1a556193eb61c Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 07:45:12 +0100 Subject: [PATCH 20/92] debug --- assets/javascripts/discourse/services/subscription.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 2268dd9c..3d2cad2b 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -22,7 +22,7 @@ export default class SubscriptionService extends Service { init() { super.init(...arguments); - debugger; + console.log("subscription initialisation"); this.retrieveSubscriptionStatus(); } From 26e4267d238e9b3bf8f397671fd3b32c15140063 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 07:56:39 +0100 Subject: [PATCH 21/92] move subscription back-end call --- app/controllers/custom_wizard/admin/subscription.rb | 13 +++++++++++++ .../javascripts/discourse/services/subscription.js | 2 +- config/routes.rb | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 app/controllers/custom_wizard/admin/subscription.rb diff --git a/app/controllers/custom_wizard/admin/subscription.rb b/app/controllers/custom_wizard/admin/subscription.rb new file mode 100644 index 00000000..ae0d8f08 --- /dev/null +++ b/app/controllers/custom_wizard/admin/subscription.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true +class CustomWizard::SubscriptionController < ::Admin::AdminController + before_action :ensure_admin + + def index + subcription = CustomWizard::Subscription.new + render_json_dump( + subscribed: subcription.subscribed?, + subscription_type: subcription.type, + subscription_attributes: CustomWizard::Subscription.attributes, + ) + end +end \ No newline at end of file diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 3d2cad2b..a3cce291 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -27,7 +27,7 @@ export default class SubscriptionService extends Service { } retrieveSubscriptionStatus() { - ajax("/admin/wizards").then(result => { + ajax("/admin/subscription").then(result => { console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; diff --git a/config/routes.rb b/config/routes.rb index 607a87ac..8f865fec 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -14,6 +14,7 @@ Discourse::Application.routes.append do scope module: 'custom_wizard', constraints: AdminConstraint.new do get 'admin/wizards' => 'admin#index' + get 'admin/subscription' => 'subscription#index' get 'admin/wizards/wizard' => 'admin_wizard#index' get 'admin/wizards/wizard/create' => 'admin#index' From f012dc2407d4f4a300876b0a63af62a03ac13131 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 08:25:42 +0100 Subject: [PATCH 22/92] fix file inclusion --- assets/javascripts/discourse/services/subscription.js | 2 +- config/routes.rb | 2 +- plugin.rb | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index a3cce291..6f2972d9 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -27,7 +27,7 @@ export default class SubscriptionService extends Service { } retrieveSubscriptionStatus() { - ajax("/admin/subscription").then(result => { + ajax("admin/wizards/subscription").then(result => { console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; diff --git a/config/routes.rb b/config/routes.rb index 8f865fec..b611916e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -14,7 +14,7 @@ Discourse::Application.routes.append do scope module: 'custom_wizard', constraints: AdminConstraint.new do get 'admin/wizards' => 'admin#index' - get 'admin/subscription' => 'subscription#index' + get 'admin/wizards/subscription' => 'subscription#index' get 'admin/wizards/wizard' => 'admin_wizard#index' get 'admin/wizards/wizard/create' => 'admin#index' diff --git a/plugin.rb b/plugin.rb index 6f2c6ccf..f50e1e8a 100644 --- a/plugin.rb +++ b/plugin.rb @@ -37,6 +37,7 @@ after_initialize do ../lib/custom_wizard/engine.rb ../config/routes.rb ../app/controllers/custom_wizard/admin/admin.rb + ../app/controllers/custom_wizard/admin/subscription.rb ../app/controllers/custom_wizard/admin/wizard.rb ../app/controllers/custom_wizard/admin/submissions.rb ../app/controllers/custom_wizard/admin/api.rb From ca11dacf8eb9110ab13404e453c8dc62b60b5635 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 08:44:27 +0100 Subject: [PATCH 23/92] tweak route --- assets/javascripts/discourse/services/subscription.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 6f2972d9..f4ad7bb2 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -27,7 +27,7 @@ export default class SubscriptionService extends Service { } retrieveSubscriptionStatus() { - ajax("admin/wizards/subscription").then(result => { + ajax("/admin/wizards/subscription").then(result => { console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; From 390f53a8a2c25322c9dcd264c2b338f85d26cff2 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 09:00:28 +0100 Subject: [PATCH 24/92] tweak route --- assets/javascripts/discourse/services/subscription.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index f4ad7bb2..e7ad85e4 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -27,7 +27,7 @@ export default class SubscriptionService extends Service { } retrieveSubscriptionStatus() { - ajax("/admin/wizards/subscription").then(result => { + ajax("/subscription").then(result => { console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; From 0b2e66ba0e5fca75317bbca7d6745b6c8dc45079 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 09:11:37 +0100 Subject: [PATCH 25/92] tweak route --- assets/javascripts/discourse/services/subscription.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index e7ad85e4..f4ad7bb2 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -27,7 +27,7 @@ export default class SubscriptionService extends Service { } retrieveSubscriptionStatus() { - ajax("/subscription").then(result => { + ajax("/admin/wizards/subscription").then(result => { console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; From e43fbd0b50caa7bfd336e377615892648e3d4c39 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:01:08 +0100 Subject: [PATCH 26/92] move subscription container to Glimmer --- .../wizard-subscription-container.hbs | 14 ++++++++++ .../wizard-subscription-container.js | 26 ++++++++++++++++++ .../wizard-subscription-container.js.es6 | 27 ------------------- .../wizard-subscription-container.hbs | 12 --------- 4 files changed, 40 insertions(+), 39 deletions(-) create mode 100644 assets/javascripts/discourse/components/wizard-subscription-container.hbs create mode 100644 assets/javascripts/discourse/components/wizard-subscription-container.js delete mode 100644 assets/javascripts/discourse/components/wizard-subscription-container.js.es6 delete mode 100644 assets/javascripts/discourse/templates/components/wizard-subscription-container.hbs diff --git a/assets/javascripts/discourse/components/wizard-subscription-container.hbs b/assets/javascripts/discourse/components/wizard-subscription-container.hbs new file mode 100644 index 00000000..044b57f6 --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-container.hbs @@ -0,0 +1,14 @@ +
+
+

{{i18n "admin.wizard.subscription.title"}}

+ + + {{d-icon subscribedIcon}} + {{i18n subscribedLabel}} + +
+ +
+ {{yield}} +
+
\ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-container.js b/assets/javascripts/discourse/components/wizard-subscription-container.js new file mode 100644 index 00000000..25cb3973 --- /dev/null +++ b/assets/javascripts/discourse/components/wizard-subscription-container.js @@ -0,0 +1,26 @@ +import Component from '@glimmer/component'; +import { computed } from "@ember/object"; +import { inject as service } from "@ember/service"; + +export default class WizardSubscriptionContainer extends Component { + @service subscription; + + @computed("subscription.subscribed") + get subscribedIcon() { + return this.subscription.subscribed ? "check" : "times"; + }; + + @computed("subscription.subscribed") + get subscribedLabel() { + return `admin.wizard.subscription.${ + this.subscription.subscribed ? "subscribed" : "not_subscribed" + }.label`; + }; + + @computed("subscription.subscribed") + get subscribedTitle() { + return `admin.wizard.subscription.${ + this.subscription.subscribed ? "subscribed" : "not_subscribed" + }.title`; + }; +}; diff --git a/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 deleted file mode 100644 index 8c750519..00000000 --- a/assets/javascripts/discourse/components/wizard-subscription-container.js.es6 +++ /dev/null @@ -1,27 +0,0 @@ -import Component from "@ember/component"; -import discourseComputed from "discourse-common/utils/decorators"; -import { inject as service } from "@ember/service"; - -export default Component.extend({ - classNameBindings: [":wizard-subscription-container", "subscribed"], - subscription: service(), - - @discourseComputed("subscription.subscribed") - subscribedIcon(subscribed) { - return subscribed ? "check" : "times"; - }, - - @discourseComputed("subscription.subscribed") - subscribedLabel(subscribed) { - return `admin.wizard.subscription.${ - subscribed ? "subscribed" : "not_subscribed" - }.label`; - }, - - @discourseComputed("subscription.subscribed") - subscribedTitle(subscribed) { - return `admin.wizard.subscription.${ - subscribed ? "subscribed" : "not_subscribed" - }.title`; - }, -}); diff --git a/assets/javascripts/discourse/templates/components/wizard-subscription-container.hbs b/assets/javascripts/discourse/templates/components/wizard-subscription-container.hbs deleted file mode 100644 index b8031bfe..00000000 --- a/assets/javascripts/discourse/templates/components/wizard-subscription-container.hbs +++ /dev/null @@ -1,12 +0,0 @@ -
-

{{i18n "admin.wizard.subscription.title"}}

- - - {{d-icon subscribedIcon}} - {{i18n subscribedLabel}} - -
- -
- {{yield}} -
\ No newline at end of file From 7f245d6a59b8239554f67de02b7c31acd94c897e Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:02:52 +0100 Subject: [PATCH 27/92] fix spelling mistake --- app/controllers/custom_wizard/admin/subscription.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/custom_wizard/admin/subscription.rb b/app/controllers/custom_wizard/admin/subscription.rb index ae0d8f08..9fc3921c 100644 --- a/app/controllers/custom_wizard/admin/subscription.rb +++ b/app/controllers/custom_wizard/admin/subscription.rb @@ -3,10 +3,10 @@ class CustomWizard::SubscriptionController < ::Admin::AdminController before_action :ensure_admin def index - subcription = CustomWizard::Subscription.new + subscription = CustomWizard::Subscription.new render_json_dump( - subscribed: subcription.subscribed?, - subscription_type: subcription.type, + subscribed: subscription.subscribed?, + subscription_type: subscription.type, subscription_attributes: CustomWizard::Subscription.attributes, ) end From a8af37b3347b5763b70fb42010f8f833536e931e Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:03:38 +0100 Subject: [PATCH 28/92] remove redundant sub client check --- lib/custom_wizard/subscription.rb | 34 +++++++++++++------------------ 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index ee72b7f8..4c4d841d 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -105,24 +105,22 @@ class CustomWizard::Subscription :product_slug def initialize - if CustomWizard::Subscription.client_installed? - result = DiscourseSubscriptionClient.find_subscriptions("discourse-custom-wizard") + result = DiscourseSubscriptionClient.find_subscriptions("discourse-custom-wizard") - if result&.any? - ids_and_slugs = result.subscriptions.map do |subscription| - { - id: subscription.product_id, - slug: result.products[subscription.product_id] - } - end - - id_and_slug = ids_and_slugs.sort do |a, b| - PRODUCT_HIERARCHY.index(b[:slug]) - PRODUCT_HIERARCHY.index(a[:slug]) - end.first - - @product_id = id_and_slug[:id] - @product_slug = id_and_slug[:slug] + if result&.any? + ids_and_slugs = result.subscriptions.map do |subscription| + { + id: subscription.product_id, + slug: result.products[subscription.product_id] + } end + + id_and_slug = ids_and_slugs.sort do |a, b| + PRODUCT_HIERARCHY.index(b[:slug]) - PRODUCT_HIERARCHY.index(a[:slug]) + end.first + + @product_id = id_and_slug[:id] + @product_slug = id_and_slug[:slug] end @product_slug ||= ENV["CUSTOM_WIZARD_PRODUCT_SLUG"] @@ -176,10 +174,6 @@ class CustomWizard::Subscription product_slug === "community" end - def self.client_installed? - defined?(DiscourseSubscriptionClient) == 'constant' && DiscourseSubscriptionClient.class == Module - end - def self.subscribed? new.subscribed? end From f97d15ac421904713bb4e21065ce7b6439af68dc Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:19:07 +0100 Subject: [PATCH 29/92] debug --- .../discourse/components/wizard-subscription-selector.js.es6 | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 index ed2b5c33..fb9a8638 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 @@ -43,6 +43,7 @@ export default SingleSelectComponent.extend({ @discourseComputed("feature", "attribute", "wizard.allowGuests") content(feature, attribute) { + debugger; return filterValues(this.wizard, feature, attribute) .map((value) => { let allowedSubscriptionTypes = this.subscription.allowedSubscriptionTypes( From dd7f2a7e52417ec4001dba1bc94a29194d54152f Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:31:42 +0100 Subject: [PATCH 30/92] attempted fix --- .../discourse/components/wizard-subscription-selector.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 index fb9a8638..f9b14175 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 @@ -46,7 +46,7 @@ export default SingleSelectComponent.extend({ debugger; return filterValues(this.wizard, feature, attribute) .map((value) => { - let allowedSubscriptionTypes = this.subscription.allowedSubscriptionTypes( + let allowedSubscriptionTypes = this.get("subscription.allowedSubscriptionTypes")( feature, attribute, value From 9cc65d24b526f3450b969cdf0d3b70c663765588 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:46:00 +0100 Subject: [PATCH 31/92] revert --- .../discourse/components/wizard-subscription-selector.js.es6 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 index f9b14175..445a7e37 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 @@ -43,10 +43,9 @@ export default SingleSelectComponent.extend({ @discourseComputed("feature", "attribute", "wizard.allowGuests") content(feature, attribute) { - debugger; return filterValues(this.wizard, feature, attribute) .map((value) => { - let allowedSubscriptionTypes = this.get("subscription.allowedSubscriptionTypes")( + let allowedSubscriptionTypes = this.allowedSubscriptionTypes( feature, attribute, value From 5192e08893b45d620a5497643f87295ae7a6e7d3 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 10:58:59 +0100 Subject: [PATCH 32/92] change copy for deauthorize label --- config/locales/client.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 996951a8..be2df09d 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -546,7 +546,7 @@ en: subscription: title: Subscriber Features authorize: "Authorize Subscription" - deauthorize: "De-authorize Subscription" + deauthorize: "deauthorize Subscription" subscribed: label: Subscribed title: You're subscribed and can use these features From 73e8b0a7fc3bccbd349ea17365345a8d1c178385 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 11:55:48 +0100 Subject: [PATCH 33/92] remove debugging --- assets/javascripts/discourse/services/subscription.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index f4ad7bb2..ee4c7f5a 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -22,13 +22,11 @@ export default class SubscriptionService extends Service { init() { super.init(...arguments); - console.log("subscription initialisation"); this.retrieveSubscriptionStatus(); } retrieveSubscriptionStatus() { ajax("/admin/wizards/subscription").then(result => { - console.log(result) this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; this.subscriptionAttributes = result.subscription_attributes; From d5bd3c3c47a230930a1fb6b9fad54a55dd04d3d4 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 11:58:20 +0100 Subject: [PATCH 34/92] prettier --- .../components/wizard-mapper-selector.js.es6 | 6 +- .../components/wizard-subscription-badge.hbs | 6 +- .../components/wizard-subscription-badge.js | 18 +++-- .../wizard-subscription-container.hbs | 5 +- .../wizard-subscription-container.js | 10 +-- .../components/wizard-subscription-cta.hbs | 6 +- .../components/wizard-subscription-cta.js | 15 ++-- .../components/wizard-subscription-status.js | 15 ++-- .../discourse/routes/admin-wizards.js.es6 | 2 +- .../discourse/services/subscription.js | 73 ++++++++++--------- 10 files changed, 88 insertions(+), 68 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 b/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 index d1aacfb8..8a9e1a6b 100644 --- a/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-mapper-selector.js.es6 @@ -131,7 +131,11 @@ export default Component.extend({ return this.connector === "is"; }), - @discourseComputed("site.groups", "guestGroup", "subscription.subscriptionType") + @discourseComputed( + "site.groups", + "guestGroup", + "subscription.subscriptionType" + ) groups(groups, guestGroup, subscriptionType) { let result = groups; if (!guestGroup) { diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 62a85ba8..6a258385 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -1,4 +1,8 @@ - + +

{{i18n "admin.wizard.subscription.title"}}

diff --git a/assets/javascripts/discourse/components/wizard-subscription-container.js b/assets/javascripts/discourse/components/wizard-subscription-container.js index 25cb3973..060d7af6 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-container.js +++ b/assets/javascripts/discourse/components/wizard-subscription-container.js @@ -1,4 +1,4 @@ -import Component from '@glimmer/component'; +import Component from "@glimmer/component"; import { computed } from "@ember/object"; import { inject as service } from "@ember/service"; @@ -8,19 +8,19 @@ export default class WizardSubscriptionContainer extends Component { @computed("subscription.subscribed") get subscribedIcon() { return this.subscription.subscribed ? "check" : "times"; - }; + } @computed("subscription.subscribed") get subscribedLabel() { return `admin.wizard.subscription.${ this.subscription.subscribed ? "subscribed" : "not_subscribed" }.label`; - }; + } @computed("subscription.subscribed") get subscribedTitle() { return `admin.wizard.subscription.${ this.subscription.subscribed ? "subscribed" : "not_subscribed" }.title`; - }; -}; + } +} diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs index 04f5b6a2..cfaecc03 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs @@ -1,3 +1,7 @@ -
+ {{d-icon icon}}{{label}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.js b/assets/javascripts/discourse/components/wizard-subscription-cta.js index ea4990bd..1c9edfe1 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.js +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.js @@ -1,8 +1,7 @@ - import { inject as service } from "@ember/service"; import { action, computed } from "@ember/object"; import I18n from "I18n"; -import Component from '@glimmer/component'; +import Component from "@glimmer/component"; export default class WizardSubscriptionCta extends Component { @service subscription; @@ -12,25 +11,25 @@ export default class WizardSubscriptionCta extends Component { return `admin.wizard.subscription.cta.${ this.subscription.subscribed ? "subscribed" : "none" }`; - }; + } @computed("subscription.subscribed") get icon() { return this.subscription.subscribed ? "far-life-ring" : "external-link-alt"; - }; + } @computed("i18nKey") get title() { return I18n.t(`${this.i18nKey}.title`); - }; + } @computed("i18nKey") get label() { return I18n.t(`${this.i18nKey}.label`); - }; + } @action click() { window.open(this.subscription.subscriptionCtaLink, "_blank").focus(); - }; -}; + } +} diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index 22493f9e..43c2cd9b 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -15,13 +15,14 @@ export default class WizardSubscriptionStatus extends Component { constructor() { super(...arguments); - ajax(`${this.basePath}`).then((result) => { - this.supplierId = result.suppliers[0].id; - this.authorized = result.suppliers[0].authorized; - }) - .finally(() => { - this.subscription.retrieveSubscriptionStatus(); - }); + ajax(`${this.basePath}`) + .then((result) => { + this.supplierId = result.suppliers[0].id; + this.authorized = result.suppliers[0].authorized; + }) + .finally(() => { + this.subscription.retrieveSubscriptionStatus(); + }); } @action diff --git a/assets/javascripts/discourse/routes/admin-wizards.js.es6 b/assets/javascripts/discourse/routes/admin-wizards.js.es6 index c6e728ed..0a704434 100644 --- a/assets/javascripts/discourse/routes/admin-wizards.js.es6 +++ b/assets/javascripts/discourse/routes/admin-wizards.js.es6 @@ -10,7 +10,7 @@ export default DiscourseRoute.extend({ controller.setProperties({ subscribed: model.subscribed, subscriptionType: model.subscription_type, - subscriptionAttributes: model.subscription_attributes + subscriptionAttributes: model.subscription_attributes, }); }, diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index ee4c7f5a..25424f47 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -1,4 +1,4 @@ -import Service from '@ember/service'; +import Service from "@ember/service"; import { getOwner } from "discourse-common/lib/get-owner"; import { tracked } from "@glimmer/tracking"; import { ajax } from "discourse/lib/ajax"; @@ -12,21 +12,22 @@ const MANAGER_CATEGORY = "https://discourse.pluginmanager.org/c/discourse-custom-wizard"; export default class SubscriptionService extends Service { - @tracked subscribed = false; - @tracked subscriptionType = ""; - @tracked businessSubscription = false; - @tracked communitySubscription = false; - @tracked standardSubscription = false; - @tracked subscriptionAttributes = {}; - subscriptionLandingUrl = PRODUCT_PAGE; + @tracked subscribed = false; + @tracked subscriptionType = ""; + @tracked businessSubscription = false; + @tracked communitySubscription = false; + @tracked standardSubscription = false; + @tracked subscriptionAttributes = {}; + subscriptionLandingUrl = PRODUCT_PAGE; - init() { - super.init(...arguments); - this.retrieveSubscriptionStatus(); - } + init() { + super.init(...arguments); + this.retrieveSubscriptionStatus(); + } - retrieveSubscriptionStatus() { - ajax("/admin/wizards/subscription").then(result => { + retrieveSubscriptionStatus() { + ajax("/admin/wizards/subscription") + .then((result) => { this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; this.subscriptionAttributes = result.subscription_attributes; @@ -35,28 +36,28 @@ export default class SubscriptionService extends Service { this.standardSubscription = equal(this.subscriptionType, "standard"); }) .catch(popupAjaxError); - }; + } - get adminWizards() { - return getOwner(this).lookup("controller:admin-wizards"); - }; + get adminWizards() { + return getOwner(this).lookup("controller:admin-wizards"); + } - get subscriptionLink() { - return this.subscriptionLandingUrl; - }; + get subscriptionLink() { + return this.subscriptionLandingUrl; + } - get subscriptionCtaLink() { - switch (this.subscriptionType) { - case "none": - return PRODUCT_PAGE; - case "standard": - return SUPPORT_MESSAGE; - case "business": - return SUPPORT_MESSAGE; - case "community": - return MANAGER_CATEGORY; - default: - return PRODUCT_PAGE; - } - }; -} \ No newline at end of file + get subscriptionCtaLink() { + switch (this.subscriptionType) { + case "none": + return PRODUCT_PAGE; + case "standard": + return SUPPORT_MESSAGE; + case "business": + return SUPPORT_MESSAGE; + case "community": + return MANAGER_CATEGORY; + default: + return PRODUCT_PAGE; + } + } +} From db7d9c14bc63c5a331b7853429c214521c4c15c1 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:05:07 +0100 Subject: [PATCH 35/92] strip out redundant code from admin wizards route and controller --- .../discourse/controllers/admin-wizards.js.es6 | 13 ++++++++----- .../discourse/routes/admin-wizards.js.es6 | 13 ------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/assets/javascripts/discourse/controllers/admin-wizards.js.es6 b/assets/javascripts/discourse/controllers/admin-wizards.js.es6 index 518893b6..ded14b91 100644 --- a/assets/javascripts/discourse/controllers/admin-wizards.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-wizards.js.es6 @@ -1,9 +1,12 @@ import Controller from "@ember/controller"; -import { equal, or } from "@ember/object/computed"; +import { or } from "@ember/object/computed"; +import { inject as service } from "@ember/service"; export default Controller.extend({ - businessSubscription: equal("subscriptionType", "business"), - communitySubscription: equal("subscriptionType", "community"), - standardSubscription: equal("subscriptionType", "standard"), - showApi: or("businessSubscription", "communitySubscription"), + subscription: service(), + + showApi: or( + "subscription.businessSubscription", + "subscription.communitySubscription" + ), }); diff --git a/assets/javascripts/discourse/routes/admin-wizards.js.es6 b/assets/javascripts/discourse/routes/admin-wizards.js.es6 index 0a704434..6fc0d178 100644 --- a/assets/javascripts/discourse/routes/admin-wizards.js.es6 +++ b/assets/javascripts/discourse/routes/admin-wizards.js.es6 @@ -1,19 +1,6 @@ import DiscourseRoute from "discourse/routes/discourse"; -import { ajax } from "discourse/lib/ajax"; export default DiscourseRoute.extend({ - model() { - return ajax("/admin/wizards"); - }, - - setupController(controller, model) { - controller.setProperties({ - subscribed: model.subscribed, - subscriptionType: model.subscription_type, - subscriptionAttributes: model.subscription_attributes, - }); - }, - afterModel(model, transition) { if (transition.targetName === "adminWizards.index") { this.transitionTo("adminWizardsWizard"); From 56181f65f4ffac36f52da351e70c294ea6f664d3 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:16:41 +0100 Subject: [PATCH 36/92] linting --- .../discourse/components/modal/admin-wizards-columns.js | 6 ++++-- .../discourse/components/modal/next-session-scheduled.js | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/modal/admin-wizards-columns.js b/assets/javascripts/discourse/components/modal/admin-wizards-columns.js index d4da771e..8204f6c3 100644 --- a/assets/javascripts/discourse/components/modal/admin-wizards-columns.js +++ b/assets/javascripts/discourse/components/modal/admin-wizards-columns.js @@ -5,11 +5,13 @@ import I18n from "I18n"; export default class AdminWizardsColumnComponent extends Component { title = I18n.t("admin.wizard.edit_columns"); - @action save() { + @action + save() { this.args.closeModal(); } - @action resetToDefault() { + @action + resetToDefault() { this.args.model.reset(); } } diff --git a/assets/javascripts/discourse/components/modal/next-session-scheduled.js b/assets/javascripts/discourse/components/modal/next-session-scheduled.js index 446237f0..e5b719f8 100644 --- a/assets/javascripts/discourse/components/modal/next-session-scheduled.js +++ b/assets/javascripts/discourse/components/modal/next-session-scheduled.js @@ -18,13 +18,15 @@ export default class NextSessionScheduledComponent extends Component { return moment().isAfter(this.bufferedDateTime); } - @action submit() { + @action + submit() { const dateTime = this.bufferedDateTime; this.args.model.update(moment(dateTime).utc().toISOString()); this.args.closeModal(); } - @action dateTimeChanged(dateTime) { + @action + dateTimeChanged(dateTime) { this.bufferedDateTime = dateTime; } } From 18001bebc1dd38a0667050e4a034541aa2339ee1 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:20:57 +0100 Subject: [PATCH 37/92] rubocop --- app/controllers/custom_wizard/admin/subscription.rb | 2 +- lib/custom_wizard/subscription.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/custom_wizard/admin/subscription.rb b/app/controllers/custom_wizard/admin/subscription.rb index 9fc3921c..141b283a 100644 --- a/app/controllers/custom_wizard/admin/subscription.rb +++ b/app/controllers/custom_wizard/admin/subscription.rb @@ -10,4 +10,4 @@ class CustomWizard::SubscriptionController < ::Admin::AdminController subscription_attributes: CustomWizard::Subscription.attributes, ) end -end \ No newline at end of file +end diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index 4c4d841d..14737f06 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -155,7 +155,7 @@ class CustomWizard::Subscription return :none unless subscribed? return :business if business? return :standard if standard? - return :community if community? + :community if community? end def subscribed? From 885fdd12150aad59701ac61f7128e8c0d4663dd1 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:26:26 +0100 Subject: [PATCH 38/92] remove redundant controller link --- assets/javascripts/discourse/services/subscription.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 25424f47..f029210a 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -38,10 +38,6 @@ export default class SubscriptionService extends Service { .catch(popupAjaxError); } - get adminWizards() { - return getOwner(this).lookup("controller:admin-wizards"); - } - get subscriptionLink() { return this.subscriptionLandingUrl; } From 0399cff6a54fe51d8cb112c85fe1838f1833de47 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:27:28 +0100 Subject: [PATCH 39/92] remove redundant import --- assets/javascripts/discourse/services/subscription.js | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index f029210a..fe9ba715 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -1,5 +1,4 @@ import Service from "@ember/service"; -import { getOwner } from "discourse-common/lib/get-owner"; import { tracked } from "@glimmer/tracking"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; From 74a96af6227b6a87679c4637735dbabeb1bd76a1 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:38:13 +0100 Subject: [PATCH 40/92] linting --- .../discourse/components/wizard-subscription-badge.hbs | 4 ++-- .../discourse/components/wizard-subscription-status.hbs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 6a258385..d2811cb6 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -1,4 +1,4 @@ - {{label}} - \ No newline at end of file + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index e9941e69..a184af09 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -1,7 +1,7 @@
{{#if authorized}} {{conditional-loading-spinner size="small" condition=unauthorizing}} - {{i18n "admin.wizard.subscription.deauthorize"}} - + {{else}} {{d-button icon="id-card" From c89dbbb7a8493cacab9c338d946b45e703bc9655 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:43:20 +0100 Subject: [PATCH 41/92] linting --- .../discourse/components/wizard-subscription-badge.hbs | 3 ++- .../discourse/components/wizard-subscription-cta.hbs | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index d2811cb6..f05004df 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -1,7 +1,8 @@ \ No newline at end of file From 1fdd78bc7e757129841626a78da0ea0a25005195 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:52:42 +0100 Subject: [PATCH 42/92] convert buttons to DButton --- .../components/wizard-subscription-badge.hbs | 9 ++++---- .../components/wizard-subscription-cta.hbs | 9 ++++---- .../components/wizard-subscription-status.hbs | 21 +++++++++---------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index f05004df..bd4e7d96 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -1,8 +1,7 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs index 86b2188c..0224518c 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs @@ -1,8 +1,7 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index a184af09..98d06df2 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -1,23 +1,22 @@
{{#if authorized}} {{conditional-loading-spinner size="small" condition=unauthorizing}} - {{else}} - {{d-button - icon="id-card" + {{/if}} From 648b976ee06fee8e9c32beebcba490f123dd487e Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 12:54:05 +0100 Subject: [PATCH 43/92] fix button close --- .../discourse/components/wizard-subscription-status.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index 98d06df2..b8ff7187 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -8,7 +8,7 @@ @action={{this.deauthorize}} > {{i18n "admin.wizard.subscription.deauthorize"}} - + {{else}} Date: Sun, 24 Sep 2023 13:01:46 +0100 Subject: [PATCH 44/92] simplify buttons --- .../discourse/components/wizard-subscription-badge.hbs | 3 ++- .../discourse/components/wizard-subscription-badge.js | 2 +- .../discourse/components/wizard-subscription-cta.hbs | 6 +++--- .../discourse/components/wizard-subscription-cta.js | 5 ++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index bd4e7d96..8d86d4d7 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -2,6 +2,7 @@ @action={{this.click}} class="wizard-subscription-badge {{this.subscription.subscriptionType}}" @title={{this.title}} + > - {{label}} + {{this.label}} \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index 02cc479e..fdee6e64 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -18,7 +18,7 @@ export default class WizardSubscriptionBadge extends Component { @computed("i18nKey") get title() { - return I18n.t(`${this.i18nKey}.title`); + return `${this.i18nKey}.title`; } @computed("i18nKey") diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs index 0224518c..83783aac 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.hbs @@ -2,6 +2,6 @@ @action={{this.click}} class="btn btn-pavilion-support {{this.subscription.subscriptionType}}" @title={{this.title}} -> - {{d-icon icon}}{{label}} - \ No newline at end of file + @label={{this.label}} + @icon="{{this.icon}}" +/> \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-cta.js b/assets/javascripts/discourse/components/wizard-subscription-cta.js index 1c9edfe1..47b2f382 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-cta.js +++ b/assets/javascripts/discourse/components/wizard-subscription-cta.js @@ -1,6 +1,5 @@ import { inject as service } from "@ember/service"; import { action, computed } from "@ember/object"; -import I18n from "I18n"; import Component from "@glimmer/component"; export default class WizardSubscriptionCta extends Component { @@ -20,12 +19,12 @@ export default class WizardSubscriptionCta extends Component { @computed("i18nKey") get title() { - return I18n.t(`${this.i18nKey}.title`); + return `${this.i18nKey}.title`; } @computed("i18nKey") get label() { - return I18n.t(`${this.i18nKey}.label`); + return `${this.i18nKey}.label`; } @action From 0ad8616239ebed3e5d1d80afc5dabfb87a5068d3 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 13:10:24 +0100 Subject: [PATCH 45/92] linting --- .../discourse/components/wizard-subscription-badge.hbs | 1 - .../discourse/components/wizard-subscription-cta.hbs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 8d86d4d7..31048eab 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -2,7 +2,6 @@ @action={{this.click}} class="wizard-subscription-badge {{this.subscription.subscriptionType}}" @title={{this.title}} - > \ No newline at end of file From 2c109c54f5c8faaef98fd9b703457aa31ffdaccd Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 17:16:40 +0100 Subject: [PATCH 46/92] update front-end tests --- .../acceptance/admin-wizards-business-subscription-test.js | 2 +- .../acceptance/admin-wizards-standard-subscription-test.js | 2 +- test/javascripts/acceptance/admin-wizards-unsuscribed-test.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index a3edc9bc..ac0ef279 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -28,7 +28,7 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { server.get("/admin/wizards/custom-fields", () => { return helper.response(getCustomFields); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getBusinessAdminWizard); }); server.get("/admin/wizards/api", () => { diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index 364ee26f..790bf5d9 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -28,7 +28,7 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { server.get("/admin/wizards/custom-fields", () => { return helper.response(getCustomFields); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getStandardAdminWizard); }); server.get("/admin/wizards/api", () => { diff --git a/test/javascripts/acceptance/admin-wizards-unsuscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsuscribed-test.js index 52d70e69..2948c2e8 100644 --- a/test/javascripts/acceptance/admin-wizards-unsuscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsuscribed-test.js @@ -30,7 +30,7 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { server.get("/admin/wizards/custom-fields", () => { return helper.response(getCustomFields); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getUnsubscribedAdminWizards); }); server.get("/admin/wizards/api", () => { From 8407227f53e13f75fc57499e766cc0c05777f3a1 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 17:18:40 +0100 Subject: [PATCH 47/92] update back-end tests --- spec/requests/custom_wizard/admin/admin_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/requests/custom_wizard/admin/admin_controller_spec.rb b/spec/requests/custom_wizard/admin/admin_controller_spec.rb index 6fb4b0d8..f132d475 100644 --- a/spec/requests/custom_wizard/admin/admin_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/admin_controller_spec.rb @@ -20,7 +20,7 @@ describe CustomWizard::AdminController do end it "returns the right subscription details" do - get "/admin/wizards.json" + get "/admin/wizards/subscription.json" expect(response.parsed_body["subscribed"]).to eq(false) expect(response.parsed_body["subscription_attributes"]).to eq(CustomWizard::Subscription.attributes.as_json) end @@ -33,7 +33,7 @@ describe CustomWizard::AdminController do end it "returns the right subscription details" do - get "/admin/wizards.json" + get "/admin/wizards/subscription.json" expect(response.parsed_body["subscribed"]).to eq(true) expect(response.parsed_body["subscription_type"]).to eq("standard") end From 43ad5785e1df152ae9eb896704f1adc3dd8973fd Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 17:35:20 +0100 Subject: [PATCH 48/92] update FE tests --- .../acceptance/admin-custom-fields-unsubscribed-test.js | 2 +- test/javascripts/acceptance/admin-logs-test.js | 2 +- test/javascripts/acceptance/admin-manager-test.js | 2 +- test/javascripts/acceptance/admin-submissions-test.js | 2 +- test/javascripts/acceptance/admin-wizards-api-test.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js b/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js index fbfa2314..4a305344 100644 --- a/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js @@ -24,7 +24,7 @@ acceptance("Admin | Custom Fields Unsubscribed", function (needs) { server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getUnsubscribedAdminWizards); }); server.get("/admin/wizards/custom-fields", () => { diff --git a/test/javascripts/acceptance/admin-logs-test.js b/test/javascripts/acceptance/admin-logs-test.js index c888a55a..d3489dee 100644 --- a/test/javascripts/acceptance/admin-logs-test.js +++ b/test/javascripts/acceptance/admin-logs-test.js @@ -23,7 +23,7 @@ acceptance("Admin | Logs", function (needs) { server.get("/admin/wizards/logs/this_is_testing_wizard", () => { return helper.response(getWizardTestingLog); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getUnsubscribedAdminWizards); }); server.get("/admin/wizards/wizard", () => { diff --git a/test/javascripts/acceptance/admin-manager-test.js b/test/javascripts/acceptance/admin-manager-test.js index 4ce1c0bf..92bb2c43 100644 --- a/test/javascripts/acceptance/admin-manager-test.js +++ b/test/javascripts/acceptance/admin-manager-test.js @@ -18,7 +18,7 @@ acceptance("Admin | Manager", function (needs) { server.get("/admin/wizards/manager/this_is_testing_wizard", () => { return helper.response(getWizardTestingLog); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getUnsubscribedAdminWizards); }); server.get("/admin/wizards/wizard", () => { diff --git a/test/javascripts/acceptance/admin-submissions-test.js b/test/javascripts/acceptance/admin-submissions-test.js index 50635a37..cd616634 100644 --- a/test/javascripts/acceptance/admin-submissions-test.js +++ b/test/javascripts/acceptance/admin-submissions-test.js @@ -28,7 +28,7 @@ acceptance("Admin | Submissions", function (needs) { server.get("/admin/wizards/submissions/another_wizard", () => { return helper.response(getAnotherWizardSubmission); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getUnsubscribedAdminWizards); }); server.get("/admin/wizards/wizard", () => { diff --git a/test/javascripts/acceptance/admin-wizards-api-test.js b/test/javascripts/acceptance/admin-wizards-api-test.js index 80fb1014..ff59e65f 100644 --- a/test/javascripts/acceptance/admin-wizards-api-test.js +++ b/test/javascripts/acceptance/admin-wizards-api-test.js @@ -21,7 +21,7 @@ acceptance("Admin | API tab", function (needs) { server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); }); - server.get("/admin/wizards", () => { + server.get("/admin/wizards/subscription", () => { return helper.response(getBusinessAdminWizard); }); server.get("/admin/wizards/custom-fields", () => { From 45db2270ec08e77ae4ca09c5c3ada73cde6f1a54 Mon Sep 17 00:00:00 2001 From: merefield Date: Sun, 24 Sep 2023 18:22:39 +0100 Subject: [PATCH 49/92] add FE get suppliers stub --- test/javascripts/acceptance/admin-submissions-test.js | 3 +++ test/javascripts/helpers/admin-wizard.js | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/test/javascripts/acceptance/admin-submissions-test.js b/test/javascripts/acceptance/admin-submissions-test.js index cd616634..767e190c 100644 --- a/test/javascripts/acceptance/admin-submissions-test.js +++ b/test/javascripts/acceptance/admin-submissions-test.js @@ -34,6 +34,9 @@ acceptance("Admin | Submissions", function (needs) { server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); test("View submissions fields tab and content", async (assert) => { await visit("/admin/wizards/submissions"); diff --git a/test/javascripts/helpers/admin-wizard.js b/test/javascripts/helpers/admin-wizard.js index 5582384f..7585b956 100644 --- a/test/javascripts/helpers/admin-wizard.js +++ b/test/javascripts/helpers/admin-wizard.js @@ -914,6 +914,15 @@ const putNewApi = { log: [], }, }; +const getSuppliers = { + "suppliers": [ + { "id": 1, + "name": "Pavilion", + "authorized": false, + "authorized_at": null, + "user": null } + ] +}; export { getWizard, getUnsubscribedAdminWizards, @@ -928,4 +937,5 @@ export { putNewApi, getAnotherWizardSubmission, getUniqueWizard, + getSuppliers, }; From 80fcddc45fd9361c5d72bacdcee4d01e0ae4d880 Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 25 Sep 2023 15:41:01 +0100 Subject: [PATCH 50/92] fix front end tests --- .../components/wizard-subscription-selector.js.es6 | 3 +-- .../javascripts/discourse/services/subscription.js | 7 +++---- .../admin-custom-fields-unsubscribed-test.js | 5 ++++- test/javascripts/acceptance/admin-logs-test.js | 4 ++++ test/javascripts/acceptance/admin-manager-test.js | 4 ++++ .../acceptance/admin-submissions-test.js | 1 + .../acceptance/admin-wizards-api-test.js | 4 ++++ .../admin-wizards-business-subscription-test.js | 4 ++++ .../admin-wizards-standard-subscription-test.js | 4 ++++ ...-test.js => admin-wizards-unsubscribed-test.js} | 4 ++++ test/javascripts/helpers/admin-wizard.js | 14 +++++++++----- 11 files changed, 42 insertions(+), 12 deletions(-) rename test/javascripts/acceptance/{admin-wizards-unsuscribed-test.js => admin-wizards-unsubscribed-test.js} (99%) diff --git a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 index 445a7e37..b7203c30 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 +++ b/assets/javascripts/discourse/components/wizard-subscription-selector.js.es6 @@ -60,10 +60,9 @@ export default SingleSelectComponent.extend({ name: I18n.t(nameKey(feature, attribute, value)), subscriptionRequired, }; - if (subscriptionRequired) { let subscribed = allowedSubscriptionTypes.includes( - this.subscriptionType + this.subscription.subscriptionType ); let selectorKey = subscribed ? "subscribed" : "not_subscribed"; let selectorLabel = `admin.wizard.subscription.${selectorKey}.selector`; diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index fe9ba715..801f5e0f 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -2,7 +2,6 @@ import Service from "@ember/service"; import { tracked } from "@glimmer/tracking"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import { equal } from "@ember/object/computed"; const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech"; const SUPPORT_MESSAGE = @@ -30,9 +29,9 @@ export default class SubscriptionService extends Service { this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; this.subscriptionAttributes = result.subscription_attributes; - this.businessSubscription = equal(this.subscriptionType, "business"); - this.communitySubscription = equal(this.subscriptionType, "community"); - this.standardSubscription = equal(this.subscriptionType, "standard"); + this.businessSubscription = this.subscriptionType === "business"; + this.communitySubscription = this.subscriptionType === "community"; + this.standardSubscription = this.subscriptionType === "standard"; }) .catch(popupAjaxError); } diff --git a/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js b/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js index 4a305344..c84bff45 100644 --- a/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js @@ -10,6 +10,7 @@ import { getCustomFields, getUnsubscribedAdminWizards, getWizard, + getSuppliers, } from "../helpers/admin-wizard"; import { Promise } from "rsvp"; @@ -19,7 +20,6 @@ acceptance("Admin | Custom Fields Unsubscribed", function (needs) { custom_wizard_enabled: true, available_locales: JSON.stringify([{ name: "English", value: "en" }]), }); - needs.pretender((server, helper) => { server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); @@ -36,6 +36,9 @@ acceptance("Admin | Custom Fields Unsubscribed", function (needs) { server.delete("/admin/wizards/custom-fields/topic_custom_field", () => { return helper.response({ success: "OK" }); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); async function selectTypeAndSerializerAndFillInName( diff --git a/test/javascripts/acceptance/admin-logs-test.js b/test/javascripts/acceptance/admin-logs-test.js index d3489dee..c6a52073 100644 --- a/test/javascripts/acceptance/admin-logs-test.js +++ b/test/javascripts/acceptance/admin-logs-test.js @@ -6,6 +6,7 @@ import { getUnsubscribedAdminWizards, getWizard, getWizardTestingLog, + getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Logs", function (needs) { @@ -29,6 +30,9 @@ acceptance("Admin | Logs", function (needs) { server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); test("viewing logs fields tab", async (assert) => { await visit("/admin/wizards/logs"); diff --git a/test/javascripts/acceptance/admin-manager-test.js b/test/javascripts/acceptance/admin-manager-test.js index 92bb2c43..29cb2e93 100644 --- a/test/javascripts/acceptance/admin-manager-test.js +++ b/test/javascripts/acceptance/admin-manager-test.js @@ -5,6 +5,7 @@ import { getUnsubscribedAdminWizards, getWizard, getWizardTestingLog, + getSuppliers, } from "../helpers/admin-wizard"; import { Promise } from "rsvp"; @@ -33,6 +34,9 @@ acceptance("Admin | Manager", function (needs) { failures: [], }); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); async function waitForDestructionAndResetMessage() { await waitUntil( diff --git a/test/javascripts/acceptance/admin-submissions-test.js b/test/javascripts/acceptance/admin-submissions-test.js index 767e190c..dd0c3ce2 100644 --- a/test/javascripts/acceptance/admin-submissions-test.js +++ b/test/javascripts/acceptance/admin-submissions-test.js @@ -7,6 +7,7 @@ import { getUnsubscribedAdminWizards, getWizard, getWizardSubmissions, + getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Submissions", function (needs) { diff --git a/test/javascripts/acceptance/admin-wizards-api-test.js b/test/javascripts/acceptance/admin-wizards-api-test.js index ff59e65f..21256b8d 100644 --- a/test/javascripts/acceptance/admin-wizards-api-test.js +++ b/test/javascripts/acceptance/admin-wizards-api-test.js @@ -8,6 +8,7 @@ import { getNewApi, getWizard, putNewApi, + getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | API tab", function (needs) { @@ -45,6 +46,9 @@ acceptance("Admin | API tab", function (needs) { server.get("/admin/wizards/api/new_api", () => { return helper.response(getNewApi); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); test("Visit API tab and fill data", async function (assert) { diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index ac0ef279..0fd885a6 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -12,6 +12,7 @@ import { getCreatedWizard, getCustomFields, getWizard, + getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Custom Wizard Business Subscription", function (needs) { @@ -49,6 +50,9 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { server.get("/admin/wizards/wizard/new_wizard_for_testing", () => { return helper.response(getCreatedWizard); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); test("Displaying all tabs including API", async (assert) => { diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index 790bf5d9..bd506ded 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -12,6 +12,7 @@ import { getCustomFields, getStandardAdminWizard, getWizard, + getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { @@ -49,6 +50,9 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { server.get("/admin/wizards/wizard/new_wizard_for_testing", () => { return helper.response(getCreatedWizard); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); test("Displaying all tabs except API", async (assert) => { diff --git a/test/javascripts/acceptance/admin-wizards-unsuscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js similarity index 99% rename from test/javascripts/acceptance/admin-wizards-unsuscribed-test.js rename to test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index 2948c2e8..127c4f57 100644 --- a/test/javascripts/acceptance/admin-wizards-unsuscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -14,6 +14,7 @@ import { getUniqueWizard, getUnsubscribedAdminWizards, getWizard, + getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { @@ -54,6 +55,9 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { server.get("/admin/wizards/wizard/unique_wizard", () => { return helper.response(getUniqueWizard); }); + server.get("/admin/plugins/subscription-client/suppliers", () => { + return helper.response(getSuppliers); + }); }); async function appendText(selector, text) { diff --git a/test/javascripts/helpers/admin-wizard.js b/test/javascripts/helpers/admin-wizard.js index 7585b956..03e7d495 100644 --- a/test/javascripts/helpers/admin-wizard.js +++ b/test/javascripts/helpers/admin-wizard.js @@ -914,15 +914,19 @@ const putNewApi = { log: [], }, }; + const getSuppliers = { "suppliers": [ - { "id": 1, - "name": "Pavilion", - "authorized": false, - "authorized_at": null, - "user": null } + { + "id": 1, + "name": "Pavilion", + "authorized": false, + "authorized_at": null, + "user": null + } ] }; + export { getWizard, getUnsubscribedAdminWizards, From ea02e538825b72fb4bce6fe2756324154497b913 Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 25 Sep 2023 16:07:41 +0100 Subject: [PATCH 51/92] prettier --- .../acceptance/admin-custom-fields-unsubscribed-test.js | 3 ++- test/javascripts/acceptance/admin-logs-test.js | 2 +- test/javascripts/acceptance/admin-manager-test.js | 2 +- test/javascripts/acceptance/admin-submissions-test.js | 2 +- test/javascripts/acceptance/admin-wizards-api-test.js | 2 +- .../acceptance/admin-wizards-business-subscription-test.js | 2 +- .../acceptance/admin-wizards-standard-subscription-test.js | 2 +- test/javascripts/acceptance/admin-wizards-unsubscribed-test.js | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js b/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js index c84bff45..80e80773 100644 --- a/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-custom-fields-unsubscribed-test.js @@ -8,9 +8,9 @@ import { click, fillIn, findAll, visit, waitUntil } from "@ember/test-helpers"; import selectKit from "discourse/tests/helpers/select-kit-helper"; import { getCustomFields, + getSuppliers, getUnsubscribedAdminWizards, getWizard, - getSuppliers, } from "../helpers/admin-wizard"; import { Promise } from "rsvp"; @@ -20,6 +20,7 @@ acceptance("Admin | Custom Fields Unsubscribed", function (needs) { custom_wizard_enabled: true, available_locales: JSON.stringify([{ name: "English", value: "en" }]), }); + needs.pretender((server, helper) => { server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); diff --git a/test/javascripts/acceptance/admin-logs-test.js b/test/javascripts/acceptance/admin-logs-test.js index c6a52073..0b82e93a 100644 --- a/test/javascripts/acceptance/admin-logs-test.js +++ b/test/javascripts/acceptance/admin-logs-test.js @@ -3,10 +3,10 @@ import { test } from "qunit"; import { click, findAll, visit } from "@ember/test-helpers"; import selectKit from "discourse/tests/helpers/select-kit-helper"; import { + getSuppliers, getUnsubscribedAdminWizards, getWizard, getWizardTestingLog, - getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Logs", function (needs) { diff --git a/test/javascripts/acceptance/admin-manager-test.js b/test/javascripts/acceptance/admin-manager-test.js index 29cb2e93..a50c9820 100644 --- a/test/javascripts/acceptance/admin-manager-test.js +++ b/test/javascripts/acceptance/admin-manager-test.js @@ -2,10 +2,10 @@ import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; import { test } from "qunit"; import { click, find, findAll, visit, waitUntil } from "@ember/test-helpers"; import { + getSuppliers, getUnsubscribedAdminWizards, getWizard, getWizardTestingLog, - getSuppliers, } from "../helpers/admin-wizard"; import { Promise } from "rsvp"; diff --git a/test/javascripts/acceptance/admin-submissions-test.js b/test/javascripts/acceptance/admin-submissions-test.js index dd0c3ce2..828decb7 100644 --- a/test/javascripts/acceptance/admin-submissions-test.js +++ b/test/javascripts/acceptance/admin-submissions-test.js @@ -4,10 +4,10 @@ import { click, findAll, visit } from "@ember/test-helpers"; import selectKit from "discourse/tests/helpers/select-kit-helper"; import { getAnotherWizardSubmission, + getSuppliers, getUnsubscribedAdminWizards, getWizard, getWizardSubmissions, - getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Submissions", function (needs) { diff --git a/test/javascripts/acceptance/admin-wizards-api-test.js b/test/javascripts/acceptance/admin-wizards-api-test.js index 21256b8d..d3afc1f8 100644 --- a/test/javascripts/acceptance/admin-wizards-api-test.js +++ b/test/javascripts/acceptance/admin-wizards-api-test.js @@ -6,9 +6,9 @@ import { getBusinessAdminWizard, getCustomFields, getNewApi, + getSuppliers, getWizard, putNewApi, - getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | API tab", function (needs) { diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index 0fd885a6..fd722563 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -11,8 +11,8 @@ import { getBusinessAdminWizard, getCreatedWizard, getCustomFields, - getWizard, getSuppliers, + getWizard, } from "../helpers/admin-wizard"; acceptance("Admin | Custom Wizard Business Subscription", function (needs) { diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index bd506ded..0f62d518 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -11,8 +11,8 @@ import { getCreatedWizard, getCustomFields, getStandardAdminWizard, - getWizard, getSuppliers, + getWizard, } from "../helpers/admin-wizard"; acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { diff --git a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index 127c4f57..43c7d3fa 100644 --- a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -11,10 +11,10 @@ import { getAdminTestingWizard, getCreatedWizard, getCustomFields, + getSuppliers, getUniqueWizard, getUnsubscribedAdminWizards, getWizard, - getSuppliers, } from "../helpers/admin-wizard"; acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { From c5d80037616bf1c786327e6785b0c68677246973 Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 25 Sep 2023 16:10:15 +0100 Subject: [PATCH 52/92] prettier --- test/javascripts/helpers/admin-wizard.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/javascripts/helpers/admin-wizard.js b/test/javascripts/helpers/admin-wizard.js index 03e7d495..3c9627f0 100644 --- a/test/javascripts/helpers/admin-wizard.js +++ b/test/javascripts/helpers/admin-wizard.js @@ -916,15 +916,15 @@ const putNewApi = { }; const getSuppliers = { - "suppliers": [ + suppliers: [ { - "id": 1, - "name": "Pavilion", - "authorized": false, - "authorized_at": null, - "user": null - } - ] + id: 1, + name: "Pavilion", + authorized: false, + authorized_at: null, + user: null, + }, + ], }; export { From 1a32862fd1e857f4b4d4396be72e30b7fceae2ff Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 25 Sep 2023 17:00:39 +0100 Subject: [PATCH 53/92] namespace fix --- lib/custom_wizard/subscription.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index 14737f06..68c07df6 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -1,4 +1,6 @@ # frozen_string_literal: true +require "discourse_subscription_client" + class CustomWizard::Subscription PRODUCT_HIERARCHY = %w[ community @@ -105,7 +107,7 @@ class CustomWizard::Subscription :product_slug def initialize - result = DiscourseSubscriptionClient.find_subscriptions("discourse-custom-wizard") + result = ::DiscourseSubscriptionClient.find_subscriptions("discourse-custom-wizard") if result&.any? ids_and_slugs = result.subscriptions.map do |subscription| From 6aa68ebd5fbf4a6df9db122b4ce3338f0193ce0d Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 10:07:57 +0100 Subject: [PATCH 54/92] overcome inheritance that was forcing table look up on tests --- .../custom_wizard/subscription_spec.rb | 37 ++----------------- spec/fixtures/subscription_client.rb | 6 +-- 2 files changed, 6 insertions(+), 37 deletions(-) diff --git a/spec/components/custom_wizard/subscription_spec.rb b/spec/components/custom_wizard/subscription_spec.rb index 239233ef..6a0ee09c 100644 --- a/spec/components/custom_wizard/subscription_spec.rb +++ b/spec/components/custom_wizard/subscription_spec.rb @@ -13,43 +13,11 @@ describe CustomWizard::Subscription do } } - after do - undefine_client_classes - end - - it "detects the subscription client" do - undefine_client_classes - expect(described_class.client_installed?).to eq(false) - end - - context "without a subscription client" do - it "is not subscribed" do - expect(described_class.subscribed?).to eq(false) - end - - it "has none type" do - subscription = described_class.new - expect(subscription.type).to eq(:none) - end - - it "non subscriber features are included" do - expect(described_class.includes?(:wizard, :after_signup, true)).to eq(true) - end - - it "subscriber features are not included" do - expect(described_class.includes?(:wizard, :permitted, {})).to eq(false) - end - end - - context "with subscription client" do + context "with subscription client gem" do before do define_client_classes end - it "detects the subscription client" do - expect(described_class.client_installed?).to eq(true) - end - context "without a subscription" do before do DiscourseSubscriptionClient.stubs(:find_subscriptions).returns(nil) @@ -69,11 +37,12 @@ describe CustomWizard::Subscription do end context "with subscriptions" do + def get_subscription_result(product_ids) result = DiscourseSubscriptionClient::Subscriptions::Result.new result.supplier = SubscriptionClientSupplier.new(product_slugs) result.resource = SubscriptionClientResource.new - result.subscriptions = product_ids.map { |product_id| SubscriptionClientSubscription.new(product_id) } + result.subscriptions = product_ids.map { |product_id| ::SubscriptionClientSubscription.new(product_id) } result.products = product_slugs result end diff --git a/spec/fixtures/subscription_client.rb b/spec/fixtures/subscription_client.rb index acadbe8f..03b88101 100644 --- a/spec/fixtures/subscription_client.rb +++ b/spec/fixtures/subscription_client.rb @@ -5,7 +5,7 @@ module DiscourseSubscriptionClient end end -class SubscriptionClientSupplier +SubscriptionClientSupplier = Class.new Object do attr_reader :product_slugs def initialize(product_slugs) @@ -13,10 +13,10 @@ class SubscriptionClientSupplier end end -class SubscriptionClientResource +SubscriptionClientResource = Class.new Object do end -class SubscriptionClientSubscription +SubscriptionClientSubscription = Class.new Object do attr_reader :product_id def initialize(product_id) From c0082b82b98af71db53b58d5c7ef5c59609edc8c Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 12:13:45 +0100 Subject: [PATCH 55/92] instantiate mocked up interface for more tests --- spec/plugin_helper.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/plugin_helper.rb b/spec/plugin_helper.rb index 53b7173c..23e1f2f3 100644 --- a/spec/plugin_helper.rb +++ b/spec/plugin_helper.rb @@ -9,11 +9,13 @@ def get_wizard_fixture(path) end def enable_subscription(type) + define_client_classes CustomWizard::Subscription.stubs("#{type}?".to_sym).returns(true) CustomWizard::Subscription.any_instance.stubs("#{type}?".to_sym).returns(true) end def disable_subscriptions + define_client_classes %w[ standard business From 4422badf6a652bd8ab921c12d03c2ceca4a7a615 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 12:27:49 +0100 Subject: [PATCH 56/92] locale changes --- .../discourse/components/wizard-subscription-status.hbs | 6 +++--- config/locales/client.en.yml | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index b8ff7187..91985321 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -3,7 +3,7 @@ {{conditional-loading-spinner size="small" condition=unauthorizing}} @@ -13,8 +13,8 @@ {{/if}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index be2df09d..c2faf566 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -545,8 +545,12 @@ en: subscription: title: Subscriber Features - authorize: "Authorize Subscription" - deauthorize: "deauthorize Subscription" + authorize: + label: "Authorize" + title: “Authorize your subscription on this site” + deauthorize: + label: "deauthorize" + title: “Deauthorize your subscription on this site” subscribed: label: Subscribed title: You're subscribed and can use these features From da2a56adc611488ee1f082c4cb1493a921e5e3dd Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 13:47:22 +0100 Subject: [PATCH 57/92] specs: ensure sub client code is mocked out --- app/controllers/custom_wizard/admin/admin.rb | 16 ++++++++-------- spec/components/custom_wizard/action_spec.rb | 1 + spec/components/custom_wizard/builder_spec.rb | 1 + .../custom_wizard/custom_field_spec.rb | 1 + spec/components/custom_wizard/submission_spec.rb | 1 + .../custom_wizard/subscription_spec.rb | 2 +- spec/components/custom_wizard/template_spec.rb | 1 + .../custom_wizard/template_validator_spec.rb | 4 ++++ .../custom_wizard/update_validator_spec.rb | 1 + spec/components/custom_wizard/wizard_spec.rb | 1 + spec/extensions/custom_field_extensions_spec.rb | 1 + spec/extensions/extra_locales_controller_spec.rb | 1 + spec/extensions/guardian_extension_spec.rb | 1 + spec/extensions/invites_controller_spec.rb | 1 + spec/extensions/users_controller_spec.rb | 1 + .../custom_wizard/admin/api_controller_spec.rb | 1 + .../admin/custom_fields_controller_spec.rb | 1 + .../custom_wizard/admin/logs_controller_spec.rb | 1 + .../admin/manager_controller_spec.rb | 1 + ...r_spec.rb => subscription_controller_spec.rb} | 0 .../admin/wizard_controller_spec.rb | 3 +-- .../custom_wizard/application_controller_spec.rb | 1 + .../custom_field_extensions_spec.rb | 1 + .../custom_wizard/steps_controller_spec.rb | 1 + .../custom_wizard/wizard_controller_spec.rb | 1 + .../basic_wizard_serializer_spec.rb | 4 ++++ .../custom_field_serializer_spec.rb | 4 ++++ .../custom_wizard/submission_serializer_spec.rb | 1 + .../wizard_field_serializer_spec.rb | 1 + .../custom_wizard/wizard_serializer_spec.rb | 1 + .../custom_wizard/wizard_step_serializer_spec.rb | 1 + 31 files changed, 46 insertions(+), 11 deletions(-) rename spec/requests/custom_wizard/admin/{admin_controller_spec.rb => subscription_controller_spec.rb} (100%) diff --git a/app/controllers/custom_wizard/admin/admin.rb b/app/controllers/custom_wizard/admin/admin.rb index cba3ac43..832d23d2 100644 --- a/app/controllers/custom_wizard/admin/admin.rb +++ b/app/controllers/custom_wizard/admin/admin.rb @@ -2,14 +2,14 @@ class CustomWizard::AdminController < ::Admin::AdminController before_action :ensure_admin - def index - subcription = CustomWizard::Subscription.new - render_json_dump( - subscribed: subcription.subscribed?, - subscription_type: subcription.type, - subscription_attributes: CustomWizard::Subscription.attributes, - ) - end + # def index + # subcription = CustomWizard::Subscription.new + # render_json_dump( + # subscribed: subcription.subscribed?, + # subscription_type: subcription.type, + # subscription_attributes: CustomWizard::Subscription.attributes, + # ) + # end private diff --git a/spec/components/custom_wizard/action_spec.rb b/spec/components/custom_wizard/action_spec.rb index c450582d..3f3bf877 100644 --- a/spec/components/custom_wizard/action_spec.rb +++ b/spec/components/custom_wizard/action_spec.rb @@ -42,6 +42,7 @@ describe CustomWizard::Action do } before do + define_client_classes Group.refresh_automatic_group!(:trust_level_2) update_template(wizard_template) end diff --git a/spec/components/custom_wizard/builder_spec.rb b/spec/components/custom_wizard/builder_spec.rb index 1e55b203..19728e55 100644 --- a/spec/components/custom_wizard/builder_spec.rb +++ b/spec/components/custom_wizard/builder_spec.rb @@ -29,6 +29,7 @@ describe CustomWizard::Builder do } before do + define_client_classes Group.refresh_automatic_group!(:trust_level_3) CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') diff --git a/spec/components/custom_wizard/custom_field_spec.rb b/spec/components/custom_wizard/custom_field_spec.rb index 4b8d43e2..eb14d620 100644 --- a/spec/components/custom_wizard/custom_field_spec.rb +++ b/spec/components/custom_wizard/custom_field_spec.rb @@ -5,6 +5,7 @@ describe CustomWizard::CustomField do let(:custom_field_subscription_json) { get_wizard_fixture("custom_field/subscription_custom_fields") } before do + define_client_classes CustomWizard::CustomField.invalidate_cache end diff --git a/spec/components/custom_wizard/submission_spec.rb b/spec/components/custom_wizard/submission_spec.rb index d0e0c986..2b07b021 100644 --- a/spec/components/custom_wizard/submission_spec.rb +++ b/spec/components/custom_wizard/submission_spec.rb @@ -7,6 +7,7 @@ describe CustomWizard::Submission do let(:guest_id) { CustomWizard::Wizard.generate_guest_id } before do + define_client_classes CustomWizard::Template.save(template_json, skip_jobs: true) @wizard = CustomWizard::Wizard.create(template_json["id"], user) described_class.new(@wizard, step_1_field_1: "I am user submission").save diff --git a/spec/components/custom_wizard/subscription_spec.rb b/spec/components/custom_wizard/subscription_spec.rb index 6a0ee09c..5ce2a515 100644 --- a/spec/components/custom_wizard/subscription_spec.rb +++ b/spec/components/custom_wizard/subscription_spec.rb @@ -13,7 +13,7 @@ describe CustomWizard::Subscription do } } - context "with subscription client gem" do + context "with subscription client gem mocked out" do before do define_client_classes end diff --git a/spec/components/custom_wizard/template_spec.rb b/spec/components/custom_wizard/template_spec.rb index 76b229dc..8a997dd7 100644 --- a/spec/components/custom_wizard/template_spec.rb +++ b/spec/components/custom_wizard/template_spec.rb @@ -7,6 +7,7 @@ describe CustomWizard::Template do fab!(:upload) { Fabricate(:upload) } before do + define_client_classes CustomWizard::Template.save(template_json, skip_jobs: true) end diff --git a/spec/components/custom_wizard/template_validator_spec.rb b/spec/components/custom_wizard/template_validator_spec.rb index fe61be91..02b33db5 100644 --- a/spec/components/custom_wizard/template_validator_spec.rb +++ b/spec/components/custom_wizard/template_validator_spec.rb @@ -39,6 +39,10 @@ describe CustomWizard::TemplateValidator do expect(validator.errors.first.message).to eq("Liquid syntax error in #{object_id}: #{message}") end + before do + define_client_classes + end + it "validates valid templates" do expect( CustomWizard::TemplateValidator.new(template).perform diff --git a/spec/components/custom_wizard/update_validator_spec.rb b/spec/components/custom_wizard/update_validator_spec.rb index 7caa1784..7967dfbc 100644 --- a/spec/components/custom_wizard/update_validator_spec.rb +++ b/spec/components/custom_wizard/update_validator_spec.rb @@ -6,6 +6,7 @@ describe CustomWizard::UpdateValidator do let(:url_field) { get_wizard_fixture("field/url") } before do + define_client_classes CustomWizard::Template.save(template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/components/custom_wizard/wizard_spec.rb b/spec/components/custom_wizard/wizard_spec.rb index 3483d211..390d5f68 100644 --- a/spec/components/custom_wizard/wizard_spec.rb +++ b/spec/components/custom_wizard/wizard_spec.rb @@ -10,6 +10,7 @@ describe CustomWizard::Wizard do let(:step_json) { get_wizard_fixture("step/step") } before do + define_client_classes Group.refresh_automatic_group!(:trust_level_3) @permitted_template = template_json.dup @permitted_template["permitted"] = permitted_json["permitted"] diff --git a/spec/extensions/custom_field_extensions_spec.rb b/spec/extensions/custom_field_extensions_spec.rb index b0088972..b1ddebe6 100644 --- a/spec/extensions/custom_field_extensions_spec.rb +++ b/spec/extensions/custom_field_extensions_spec.rb @@ -11,6 +11,7 @@ describe "custom field extensions" do let(:subscription_custom_field_json) { get_wizard_fixture("custom_field/subscription_custom_fields") } before do + define_client_classes custom_field_json['custom_fields'].each do |field_json| custom_field = CustomWizard::CustomField.new(nil, field_json) custom_field.save diff --git a/spec/extensions/extra_locales_controller_spec.rb b/spec/extensions/extra_locales_controller_spec.rb index 1be62f36..55a24036 100644 --- a/spec/extensions/extra_locales_controller_spec.rb +++ b/spec/extensions/extra_locales_controller_spec.rb @@ -7,6 +7,7 @@ describe ExtraLocalesControllerCustomWizard, type: :request do let(:permitted) { get_wizard_fixture("wizard/permitted") } before do + define_client_classes CustomWizard::Template.save(template, skip_jobs: true) end diff --git a/spec/extensions/guardian_extension_spec.rb b/spec/extensions/guardian_extension_spec.rb index ddfeb9ef..0380f816 100644 --- a/spec/extensions/guardian_extension_spec.rb +++ b/spec/extensions/guardian_extension_spec.rb @@ -33,6 +33,7 @@ describe ::Guardian do end before do + define_client_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/extensions/invites_controller_spec.rb b/spec/extensions/invites_controller_spec.rb index 99c3b402..59d815b3 100644 --- a/spec/extensions/invites_controller_spec.rb +++ b/spec/extensions/invites_controller_spec.rb @@ -6,6 +6,7 @@ describe InvitesControllerCustomWizard, type: :request do let(:template) { get_wizard_fixture("wizard") } before do + define_client_classes @controller = InvitesController.new end diff --git a/spec/extensions/users_controller_spec.rb b/spec/extensions/users_controller_spec.rb index a28dc08e..b80b0c10 100644 --- a/spec/extensions/users_controller_spec.rb +++ b/spec/extensions/users_controller_spec.rb @@ -4,6 +4,7 @@ describe CustomWizardUsersController, type: :request do let(:template) { get_wizard_fixture("wizard") } before do + define_client_classes @controller = UsersController.new end diff --git a/spec/requests/custom_wizard/admin/api_controller_spec.rb b/spec/requests/custom_wizard/admin/api_controller_spec.rb index f95681f8..ea68b86d 100644 --- a/spec/requests/custom_wizard/admin/api_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/api_controller_spec.rb @@ -5,6 +5,7 @@ describe CustomWizard::AdminApiController do let(:api_json) { get_wizard_fixture("api/api") } before do + define_client_classes sign_in(admin_user) end diff --git a/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb b/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb index 7aef791c..f77c772b 100644 --- a/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb @@ -5,6 +5,7 @@ describe CustomWizard::AdminCustomFieldsController do let(:custom_field_json) { get_wizard_fixture("custom_field/custom_fields") } before do + define_client_classes custom_field_json['custom_fields'].each do |field_json| CustomWizard::CustomField.new(nil, field_json).save end diff --git a/spec/requests/custom_wizard/admin/logs_controller_spec.rb b/spec/requests/custom_wizard/admin/logs_controller_spec.rb index b67907a4..eaab8a8f 100644 --- a/spec/requests/custom_wizard/admin/logs_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/logs_controller_spec.rb @@ -5,6 +5,7 @@ describe CustomWizard::AdminLogsController do let(:template) { get_wizard_fixture("wizard") } before do + define_client_classes ["first", "second", "third"].each_with_index do |key, index| temp = template.dup temp["id"] = "#{key}_test_wizard" diff --git a/spec/requests/custom_wizard/admin/manager_controller_spec.rb b/spec/requests/custom_wizard/admin/manager_controller_spec.rb index c5282db6..5c26fa94 100644 --- a/spec/requests/custom_wizard/admin/manager_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/manager_controller_spec.rb @@ -5,6 +5,7 @@ describe CustomWizard::AdminManagerController do let(:template) { get_wizard_fixture("wizard") } before do + define_client_classes sign_in(admin_user) template_2 = template.dup diff --git a/spec/requests/custom_wizard/admin/admin_controller_spec.rb b/spec/requests/custom_wizard/admin/subscription_controller_spec.rb similarity index 100% rename from spec/requests/custom_wizard/admin/admin_controller_spec.rb rename to spec/requests/custom_wizard/admin/subscription_controller_spec.rb diff --git a/spec/requests/custom_wizard/admin/wizard_controller_spec.rb b/spec/requests/custom_wizard/admin/wizard_controller_spec.rb index c94007e2..9690fbc7 100644 --- a/spec/requests/custom_wizard/admin/wizard_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/wizard_controller_spec.rb @@ -8,9 +8,8 @@ describe CustomWizard::AdminWizardController do let(:category) { Fabricate(:category, custom_fields: { create_topic_wizard: template['name'].parameterize(separator: "_") }) } before do - CustomWizard::Template.save(template, skip_jobs: true) enable_subscription("standard") - + CustomWizard::Template.save(template, skip_jobs: true) template_2 = template.dup template_2["id"] = 'super_mega_fun_wizard_2' template_2["permitted"] = template_2['permitted'] diff --git a/spec/requests/custom_wizard/application_controller_spec.rb b/spec/requests/custom_wizard/application_controller_spec.rb index 1eb1b857..97c44d2c 100644 --- a/spec/requests/custom_wizard/application_controller_spec.rb +++ b/spec/requests/custom_wizard/application_controller_spec.rb @@ -5,6 +5,7 @@ describe ApplicationController do let(:wizard_template) { get_wizard_fixture("wizard") } before do + define_client_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/requests/custom_wizard/custom_field_extensions_spec.rb b/spec/requests/custom_wizard/custom_field_extensions_spec.rb index 44556ef1..4530f00b 100644 --- a/spec/requests/custom_wizard/custom_field_extensions_spec.rb +++ b/spec/requests/custom_wizard/custom_field_extensions_spec.rb @@ -10,6 +10,7 @@ describe "custom field extensions" do let(:subscription_custom_field_json) { get_wizard_fixture("custom_field/subscription_custom_fields") } before do + define_client_classes custom_field_json['custom_fields'].each do |field_json| custom_field = CustomWizard::CustomField.new(nil, field_json) custom_field.save diff --git a/spec/requests/custom_wizard/steps_controller_spec.rb b/spec/requests/custom_wizard/steps_controller_spec.rb index 4d8b96eb..54a7e49b 100644 --- a/spec/requests/custom_wizard/steps_controller_spec.rb +++ b/spec/requests/custom_wizard/steps_controller_spec.rb @@ -11,6 +11,7 @@ describe CustomWizard::StepsController do let(:guests_permitted) { get_wizard_fixture("wizard/guests_permitted") } before do + define_client_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) end diff --git a/spec/requests/custom_wizard/wizard_controller_spec.rb b/spec/requests/custom_wizard/wizard_controller_spec.rb index 93ec196b..5be10a81 100644 --- a/spec/requests/custom_wizard/wizard_controller_spec.rb +++ b/spec/requests/custom_wizard/wizard_controller_spec.rb @@ -6,6 +6,7 @@ describe CustomWizard::WizardController do let(:permitted_json) { get_wizard_fixture("wizard/permitted") } before do + define_client_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find("super_mega_fun_wizard") end diff --git a/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb b/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb index 4a2f353a..8df4f4d3 100644 --- a/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb +++ b/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb @@ -4,6 +4,10 @@ describe CustomWizard::BasicWizardSerializer do fab!(:user) { Fabricate(:user) } let(:template) { get_wizard_fixture("wizard") } + before do + define_client_classes + end + it 'should return basic wizard attributes' do CustomWizard::Template.save(template, skip_jobs: true) json = CustomWizard::BasicWizardSerializer.new( diff --git a/spec/serializers/custom_wizard/custom_field_serializer_spec.rb b/spec/serializers/custom_wizard/custom_field_serializer_spec.rb index 1da62245..068ad894 100644 --- a/spec/serializers/custom_wizard/custom_field_serializer_spec.rb +++ b/spec/serializers/custom_wizard/custom_field_serializer_spec.rb @@ -4,6 +4,10 @@ describe CustomWizard::CustomFieldSerializer do fab!(:user) { Fabricate(:user) } let(:custom_field_json) { get_wizard_fixture("custom_field/custom_fields") } + before do + define_client_classes + end + it 'should return custom field attributes' do custom_field_json['custom_fields'].each do |field_json| CustomWizard::CustomField.new(nil, field_json).save diff --git a/spec/serializers/custom_wizard/submission_serializer_spec.rb b/spec/serializers/custom_wizard/submission_serializer_spec.rb index 2fa000e8..9161d33d 100644 --- a/spec/serializers/custom_wizard/submission_serializer_spec.rb +++ b/spec/serializers/custom_wizard/submission_serializer_spec.rb @@ -13,6 +13,7 @@ describe CustomWizard::SubmissionSerializer do } before do + define_client_classes CustomWizard::Template.save(template_json, skip_jobs: true) wizard = CustomWizard::Wizard.create(template_json["id"], user1) diff --git a/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb b/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb index 0568f898..97b94304 100644 --- a/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb +++ b/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb @@ -5,6 +5,7 @@ describe CustomWizard::FieldSerializer do let(:template) { get_wizard_fixture("wizard") } before do + define_client_classes CustomWizard::Template.save(template, skip_jobs: true) @wizard = CustomWizard::Builder.new("super_mega_fun_wizard", user).build end diff --git a/spec/serializers/custom_wizard/wizard_serializer_spec.rb b/spec/serializers/custom_wizard/wizard_serializer_spec.rb index aa1d82f2..844a370e 100644 --- a/spec/serializers/custom_wizard/wizard_serializer_spec.rb +++ b/spec/serializers/custom_wizard/wizard_serializer_spec.rb @@ -8,6 +8,7 @@ describe CustomWizard::WizardSerializer do let(:advanced_fields) { get_wizard_fixture("field/advanced_types") } before do + define_client_classes CustomWizard::Template.save(template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb b/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb index 2c28479c..cdecb0e9 100644 --- a/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb +++ b/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb @@ -6,6 +6,7 @@ describe CustomWizard::StepSerializer do let(:required_data_json) { get_wizard_fixture("step/required_data") } before do + define_client_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @wizard = CustomWizard::Builder.new("super_mega_fun_wizard", user).build end From 13fb5dc1ea3dcfa443ed0fc099c6381fb3e98d07 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 13:48:18 +0100 Subject: [PATCH 58/92] remove redundant code --- app/controllers/custom_wizard/admin/admin.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/controllers/custom_wizard/admin/admin.rb b/app/controllers/custom_wizard/admin/admin.rb index 832d23d2..2b950b23 100644 --- a/app/controllers/custom_wizard/admin/admin.rb +++ b/app/controllers/custom_wizard/admin/admin.rb @@ -2,15 +2,6 @@ class CustomWizard::AdminController < ::Admin::AdminController before_action :ensure_admin - # def index - # subcription = CustomWizard::Subscription.new - # render_json_dump( - # subscribed: subcription.subscribed?, - # subscription_type: subcription.type, - # subscription_attributes: CustomWizard::Subscription.attributes, - # ) - # end - private def find_wizard From c8263ed6aab6b2cb5d9d6529a1ad2c98327f6acb Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 14:27:24 +0100 Subject: [PATCH 59/92] change name of subscription stubbing method to add clarity of intent --- spec/components/custom_wizard/action_spec.rb | 2 +- spec/components/custom_wizard/builder_spec.rb | 2 +- spec/components/custom_wizard/custom_field_spec.rb | 2 +- spec/components/custom_wizard/submission_spec.rb | 2 +- spec/components/custom_wizard/subscription_spec.rb | 2 +- spec/components/custom_wizard/template_spec.rb | 2 +- spec/components/custom_wizard/template_validator_spec.rb | 2 +- spec/components/custom_wizard/update_validator_spec.rb | 2 +- spec/components/custom_wizard/wizard_spec.rb | 2 +- spec/extensions/custom_field_extensions_spec.rb | 2 +- spec/extensions/extra_locales_controller_spec.rb | 2 +- spec/extensions/guardian_extension_spec.rb | 2 +- spec/extensions/invites_controller_spec.rb | 2 +- spec/extensions/users_controller_spec.rb | 2 +- spec/plugin_helper.rb | 8 ++++---- spec/requests/custom_wizard/admin/api_controller_spec.rb | 2 +- .../custom_wizard/admin/custom_fields_controller_spec.rb | 2 +- spec/requests/custom_wizard/admin/logs_controller_spec.rb | 2 +- .../custom_wizard/admin/manager_controller_spec.rb | 2 +- .../custom_wizard/admin/subscription_controller_spec.rb | 6 +++--- .../requests/custom_wizard/application_controller_spec.rb | 2 +- .../custom_wizard/custom_field_extensions_spec.rb | 2 +- spec/requests/custom_wizard/steps_controller_spec.rb | 2 +- spec/requests/custom_wizard/wizard_controller_spec.rb | 2 +- .../custom_wizard/basic_wizard_serializer_spec.rb | 2 +- .../custom_wizard/custom_field_serializer_spec.rb | 2 +- .../custom_wizard/submission_serializer_spec.rb | 2 +- .../custom_wizard/wizard_field_serializer_spec.rb | 2 +- spec/serializers/custom_wizard/wizard_serializer_spec.rb | 2 +- .../custom_wizard/wizard_step_serializer_spec.rb | 2 +- 30 files changed, 35 insertions(+), 35 deletions(-) diff --git a/spec/components/custom_wizard/action_spec.rb b/spec/components/custom_wizard/action_spec.rb index 3f3bf877..39e74dfa 100644 --- a/spec/components/custom_wizard/action_spec.rb +++ b/spec/components/custom_wizard/action_spec.rb @@ -42,7 +42,7 @@ describe CustomWizard::Action do } before do - define_client_classes + stub_out_subscription_classes Group.refresh_automatic_group!(:trust_level_2) update_template(wizard_template) end diff --git a/spec/components/custom_wizard/builder_spec.rb b/spec/components/custom_wizard/builder_spec.rb index 19728e55..23db81e5 100644 --- a/spec/components/custom_wizard/builder_spec.rb +++ b/spec/components/custom_wizard/builder_spec.rb @@ -29,7 +29,7 @@ describe CustomWizard::Builder do } before do - define_client_classes + stub_out_subscription_classes Group.refresh_automatic_group!(:trust_level_3) CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') diff --git a/spec/components/custom_wizard/custom_field_spec.rb b/spec/components/custom_wizard/custom_field_spec.rb index eb14d620..e25294a0 100644 --- a/spec/components/custom_wizard/custom_field_spec.rb +++ b/spec/components/custom_wizard/custom_field_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::CustomField do let(:custom_field_subscription_json) { get_wizard_fixture("custom_field/subscription_custom_fields") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::CustomField.invalidate_cache end diff --git a/spec/components/custom_wizard/submission_spec.rb b/spec/components/custom_wizard/submission_spec.rb index 2b07b021..54249380 100644 --- a/spec/components/custom_wizard/submission_spec.rb +++ b/spec/components/custom_wizard/submission_spec.rb @@ -7,7 +7,7 @@ describe CustomWizard::Submission do let(:guest_id) { CustomWizard::Wizard.generate_guest_id } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template_json, skip_jobs: true) @wizard = CustomWizard::Wizard.create(template_json["id"], user) described_class.new(@wizard, step_1_field_1: "I am user submission").save diff --git a/spec/components/custom_wizard/subscription_spec.rb b/spec/components/custom_wizard/subscription_spec.rb index 5ce2a515..7272ecf3 100644 --- a/spec/components/custom_wizard/subscription_spec.rb +++ b/spec/components/custom_wizard/subscription_spec.rb @@ -15,7 +15,7 @@ describe CustomWizard::Subscription do context "with subscription client gem mocked out" do before do - define_client_classes + stub_out_subscription_classes end context "without a subscription" do diff --git a/spec/components/custom_wizard/template_spec.rb b/spec/components/custom_wizard/template_spec.rb index 8a997dd7..5c16f3fa 100644 --- a/spec/components/custom_wizard/template_spec.rb +++ b/spec/components/custom_wizard/template_spec.rb @@ -7,7 +7,7 @@ describe CustomWizard::Template do fab!(:upload) { Fabricate(:upload) } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template_json, skip_jobs: true) end diff --git a/spec/components/custom_wizard/template_validator_spec.rb b/spec/components/custom_wizard/template_validator_spec.rb index 02b33db5..83170c34 100644 --- a/spec/components/custom_wizard/template_validator_spec.rb +++ b/spec/components/custom_wizard/template_validator_spec.rb @@ -40,7 +40,7 @@ describe CustomWizard::TemplateValidator do end before do - define_client_classes + stub_out_subscription_classes end it "validates valid templates" do diff --git a/spec/components/custom_wizard/update_validator_spec.rb b/spec/components/custom_wizard/update_validator_spec.rb index 7967dfbc..0cfc7e44 100644 --- a/spec/components/custom_wizard/update_validator_spec.rb +++ b/spec/components/custom_wizard/update_validator_spec.rb @@ -6,7 +6,7 @@ describe CustomWizard::UpdateValidator do let(:url_field) { get_wizard_fixture("field/url") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/components/custom_wizard/wizard_spec.rb b/spec/components/custom_wizard/wizard_spec.rb index 390d5f68..91eb7424 100644 --- a/spec/components/custom_wizard/wizard_spec.rb +++ b/spec/components/custom_wizard/wizard_spec.rb @@ -10,7 +10,7 @@ describe CustomWizard::Wizard do let(:step_json) { get_wizard_fixture("step/step") } before do - define_client_classes + stub_out_subscription_classes Group.refresh_automatic_group!(:trust_level_3) @permitted_template = template_json.dup @permitted_template["permitted"] = permitted_json["permitted"] diff --git a/spec/extensions/custom_field_extensions_spec.rb b/spec/extensions/custom_field_extensions_spec.rb index b1ddebe6..e73099ca 100644 --- a/spec/extensions/custom_field_extensions_spec.rb +++ b/spec/extensions/custom_field_extensions_spec.rb @@ -11,7 +11,7 @@ describe "custom field extensions" do let(:subscription_custom_field_json) { get_wizard_fixture("custom_field/subscription_custom_fields") } before do - define_client_classes + stub_out_subscription_classes custom_field_json['custom_fields'].each do |field_json| custom_field = CustomWizard::CustomField.new(nil, field_json) custom_field.save diff --git a/spec/extensions/extra_locales_controller_spec.rb b/spec/extensions/extra_locales_controller_spec.rb index 55a24036..0590f274 100644 --- a/spec/extensions/extra_locales_controller_spec.rb +++ b/spec/extensions/extra_locales_controller_spec.rb @@ -7,7 +7,7 @@ describe ExtraLocalesControllerCustomWizard, type: :request do let(:permitted) { get_wizard_fixture("wizard/permitted") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template, skip_jobs: true) end diff --git a/spec/extensions/guardian_extension_spec.rb b/spec/extensions/guardian_extension_spec.rb index 0380f816..c35bd04c 100644 --- a/spec/extensions/guardian_extension_spec.rb +++ b/spec/extensions/guardian_extension_spec.rb @@ -33,7 +33,7 @@ describe ::Guardian do end before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/extensions/invites_controller_spec.rb b/spec/extensions/invites_controller_spec.rb index 59d815b3..ff57ae7d 100644 --- a/spec/extensions/invites_controller_spec.rb +++ b/spec/extensions/invites_controller_spec.rb @@ -6,7 +6,7 @@ describe InvitesControllerCustomWizard, type: :request do let(:template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes @controller = InvitesController.new end diff --git a/spec/extensions/users_controller_spec.rb b/spec/extensions/users_controller_spec.rb index b80b0c10..6f9185af 100644 --- a/spec/extensions/users_controller_spec.rb +++ b/spec/extensions/users_controller_spec.rb @@ -4,7 +4,7 @@ describe CustomWizardUsersController, type: :request do let(:template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes @controller = UsersController.new end diff --git a/spec/plugin_helper.rb b/spec/plugin_helper.rb index 23e1f2f3..436fefcd 100644 --- a/spec/plugin_helper.rb +++ b/spec/plugin_helper.rb @@ -9,13 +9,13 @@ def get_wizard_fixture(path) end def enable_subscription(type) - define_client_classes + stub_out_subscription_classes CustomWizard::Subscription.stubs("#{type}?".to_sym).returns(true) CustomWizard::Subscription.any_instance.stubs("#{type}?".to_sym).returns(true) end def disable_subscriptions - define_client_classes + stub_out_subscription_classes %w[ standard business @@ -26,11 +26,11 @@ def disable_subscriptions end end -def undefine_client_classes +def unstub_out_subscription_classes Object.send(:remove_const, :DiscourseSubscriptionClient) if Object.constants.include?(:DiscourseSubscriptionClient) Object.send(:remove_const, :SubscriptionClientSubscription) if Object.constants.include?(:SubscriptionClientSubscription) end -def define_client_classes +def stub_out_subscription_classes load File.expand_path("#{Rails.root}/plugins/discourse-custom-wizard/spec/fixtures/subscription_client.rb", __FILE__) end diff --git a/spec/requests/custom_wizard/admin/api_controller_spec.rb b/spec/requests/custom_wizard/admin/api_controller_spec.rb index ea68b86d..a6e5df7e 100644 --- a/spec/requests/custom_wizard/admin/api_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/api_controller_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::AdminApiController do let(:api_json) { get_wizard_fixture("api/api") } before do - define_client_classes + stub_out_subscription_classes sign_in(admin_user) end diff --git a/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb b/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb index f77c772b..dc6de785 100644 --- a/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/custom_fields_controller_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::AdminCustomFieldsController do let(:custom_field_json) { get_wizard_fixture("custom_field/custom_fields") } before do - define_client_classes + stub_out_subscription_classes custom_field_json['custom_fields'].each do |field_json| CustomWizard::CustomField.new(nil, field_json).save end diff --git a/spec/requests/custom_wizard/admin/logs_controller_spec.rb b/spec/requests/custom_wizard/admin/logs_controller_spec.rb index eaab8a8f..91846d7f 100644 --- a/spec/requests/custom_wizard/admin/logs_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/logs_controller_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::AdminLogsController do let(:template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes ["first", "second", "third"].each_with_index do |key, index| temp = template.dup temp["id"] = "#{key}_test_wizard" diff --git a/spec/requests/custom_wizard/admin/manager_controller_spec.rb b/spec/requests/custom_wizard/admin/manager_controller_spec.rb index 5c26fa94..bbbfafb9 100644 --- a/spec/requests/custom_wizard/admin/manager_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/manager_controller_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::AdminManagerController do let(:template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes sign_in(admin_user) template_2 = template.dup diff --git a/spec/requests/custom_wizard/admin/subscription_controller_spec.rb b/spec/requests/custom_wizard/admin/subscription_controller_spec.rb index f132d475..7be33f32 100644 --- a/spec/requests/custom_wizard/admin/subscription_controller_spec.rb +++ b/spec/requests/custom_wizard/admin/subscription_controller_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -describe CustomWizard::AdminController do +describe CustomWizard::SubscriptionController do fab!(:admin_user) { Fabricate(:user, admin: true) } it "requires an admin" do @@ -16,7 +16,7 @@ describe CustomWizard::AdminController do context "without a subscription" do before do disable_subscriptions - define_client_classes + stub_out_subscription_classes end it "returns the right subscription details" do @@ -29,7 +29,7 @@ describe CustomWizard::AdminController do context "with a subscription" do before do enable_subscription("standard") - define_client_classes + stub_out_subscription_classes end it "returns the right subscription details" do diff --git a/spec/requests/custom_wizard/application_controller_spec.rb b/spec/requests/custom_wizard/application_controller_spec.rb index 97c44d2c..1df3442b 100644 --- a/spec/requests/custom_wizard/application_controller_spec.rb +++ b/spec/requests/custom_wizard/application_controller_spec.rb @@ -5,7 +5,7 @@ describe ApplicationController do let(:wizard_template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/requests/custom_wizard/custom_field_extensions_spec.rb b/spec/requests/custom_wizard/custom_field_extensions_spec.rb index 4530f00b..6b8afedb 100644 --- a/spec/requests/custom_wizard/custom_field_extensions_spec.rb +++ b/spec/requests/custom_wizard/custom_field_extensions_spec.rb @@ -10,7 +10,7 @@ describe "custom field extensions" do let(:subscription_custom_field_json) { get_wizard_fixture("custom_field/subscription_custom_fields") } before do - define_client_classes + stub_out_subscription_classes custom_field_json['custom_fields'].each do |field_json| custom_field = CustomWizard::CustomField.new(nil, field_json) custom_field.save diff --git a/spec/requests/custom_wizard/steps_controller_spec.rb b/spec/requests/custom_wizard/steps_controller_spec.rb index 54a7e49b..953f1149 100644 --- a/spec/requests/custom_wizard/steps_controller_spec.rb +++ b/spec/requests/custom_wizard/steps_controller_spec.rb @@ -11,7 +11,7 @@ describe CustomWizard::StepsController do let(:guests_permitted) { get_wizard_fixture("wizard/guests_permitted") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) end diff --git a/spec/requests/custom_wizard/wizard_controller_spec.rb b/spec/requests/custom_wizard/wizard_controller_spec.rb index 5be10a81..5a073e7d 100644 --- a/spec/requests/custom_wizard/wizard_controller_spec.rb +++ b/spec/requests/custom_wizard/wizard_controller_spec.rb @@ -6,7 +6,7 @@ describe CustomWizard::WizardController do let(:permitted_json) { get_wizard_fixture("wizard/permitted") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @template = CustomWizard::Template.find("super_mega_fun_wizard") end diff --git a/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb b/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb index 8df4f4d3..ea4e4568 100644 --- a/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb +++ b/spec/serializers/custom_wizard/basic_wizard_serializer_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::BasicWizardSerializer do let(:template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes end it 'should return basic wizard attributes' do diff --git a/spec/serializers/custom_wizard/custom_field_serializer_spec.rb b/spec/serializers/custom_wizard/custom_field_serializer_spec.rb index 068ad894..490b4775 100644 --- a/spec/serializers/custom_wizard/custom_field_serializer_spec.rb +++ b/spec/serializers/custom_wizard/custom_field_serializer_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::CustomFieldSerializer do let(:custom_field_json) { get_wizard_fixture("custom_field/custom_fields") } before do - define_client_classes + stub_out_subscription_classes end it 'should return custom field attributes' do diff --git a/spec/serializers/custom_wizard/submission_serializer_spec.rb b/spec/serializers/custom_wizard/submission_serializer_spec.rb index 9161d33d..f810a0aa 100644 --- a/spec/serializers/custom_wizard/submission_serializer_spec.rb +++ b/spec/serializers/custom_wizard/submission_serializer_spec.rb @@ -13,7 +13,7 @@ describe CustomWizard::SubmissionSerializer do } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template_json, skip_jobs: true) wizard = CustomWizard::Wizard.create(template_json["id"], user1) diff --git a/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb b/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb index 97b94304..be883e6b 100644 --- a/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb +++ b/spec/serializers/custom_wizard/wizard_field_serializer_spec.rb @@ -5,7 +5,7 @@ describe CustomWizard::FieldSerializer do let(:template) { get_wizard_fixture("wizard") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template, skip_jobs: true) @wizard = CustomWizard::Builder.new("super_mega_fun_wizard", user).build end diff --git a/spec/serializers/custom_wizard/wizard_serializer_spec.rb b/spec/serializers/custom_wizard/wizard_serializer_spec.rb index 844a370e..3a39827c 100644 --- a/spec/serializers/custom_wizard/wizard_serializer_spec.rb +++ b/spec/serializers/custom_wizard/wizard_serializer_spec.rb @@ -8,7 +8,7 @@ describe CustomWizard::WizardSerializer do let(:advanced_fields) { get_wizard_fixture("field/advanced_types") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(template, skip_jobs: true) @template = CustomWizard::Template.find('super_mega_fun_wizard') end diff --git a/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb b/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb index cdecb0e9..4bcc6718 100644 --- a/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb +++ b/spec/serializers/custom_wizard/wizard_step_serializer_spec.rb @@ -6,7 +6,7 @@ describe CustomWizard::StepSerializer do let(:required_data_json) { get_wizard_fixture("step/required_data") } before do - define_client_classes + stub_out_subscription_classes CustomWizard::Template.save(wizard_template, skip_jobs: true) @wizard = CustomWizard::Builder.new("super_mega_fun_wizard", user).build end From 4007fd9c658665e6af2d28dc03c2f227cfc6cb80 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 15:23:15 +0100 Subject: [PATCH 60/92] fix localisation for deauthorize --- .../discourse/components/wizard-subscription-status.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index 91985321..5d5edad7 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -7,7 +7,7 @@ @disabled={{unauthorizing}} @action={{this.deauthorize}} > - {{i18n "admin.wizard.subscription.deauthorize"}} + {{i18n "admin.wizard.subscription.deauthorize.label"}} {{else}} Date: Thu, 28 Sep 2023 15:51:47 +0100 Subject: [PATCH 61/92] fix title --- .../discourse/components/wizard-subscription-status.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index 5d5edad7..b7d81799 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -3,7 +3,7 @@ {{conditional-loading-spinner size="small" condition=unauthorizing}} From e17f90c5fd09dba50f2620b28f2da604582c60b0 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 16:31:58 +0100 Subject: [PATCH 62/92] fix title --- .../discourse/components/wizard-subscription-status.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index b7d81799..a5c69a1b 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -3,7 +3,7 @@ {{conditional-loading-spinner size="small" condition=unauthorizing}} From fdfccf51e29d51c518bbd7b00772dac94b1b76de Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 17:10:11 +0100 Subject: [PATCH 63/92] fix titles & labels on sub button --- .../discourse/components/wizard-subscription-status.hbs | 8 ++++---- config/locales/client.en.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index a5c69a1b..bfb2652d 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -3,18 +3,18 @@ {{conditional-loading-spinner size="small" condition=unauthorizing}} - {{i18n "admin.wizard.subscription.deauthorize.label"}} + {{i18n admin.wizard.subscription.deauthorize.label}} {{else}} {{/if}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index c2faf566..26450b48 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -546,11 +546,11 @@ en: subscription: title: Subscriber Features authorize: - label: "Authorize" - title: “Authorize your subscription on this site” + label: Authorize + title: Authorize your subscription on this site deauthorize: - label: "deauthorize" - title: “Deauthorize your subscription on this site” + label: deauthorize + title: Deauthorize your subscription on this site subscribed: label: Subscribed title: You're subscribed and can use these features From e120a1a426488fa4e6e72fa8969197c761e5bfc7 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 28 Sep 2023 17:56:27 +0100 Subject: [PATCH 64/92] one more try --- .../discourse/components/wizard-subscription-status.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index bfb2652d..a2c7d3da 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -7,7 +7,7 @@ @disabled={{unauthorizing}} @action={{this.deauthorize}} > - {{i18n admin.wizard.subscription.deauthorize.label}} + {{i18n "admin.wizard.subscription.deauthorize.label"}} {{else}} Date: Fri, 6 Oct 2023 16:30:54 +0100 Subject: [PATCH 65/92] add front end tests for authorisation and subscription status --- ...dmin-wizards-business-subscription-test.js | 20 +++++++++++++++++-- ...dmin-wizards-standard-subscription-test.js | 20 +++++++++++++++++-- .../admin-wizards-unsubscribed-test.js | 16 +++++++++++++++ test/javascripts/helpers/admin-wizard.js | 13 ++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index fd722563..4d1451ff 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -11,7 +11,7 @@ import { getBusinessAdminWizard, getCreatedWizard, getCustomFields, - getSuppliers, + getSuppliersAuthorized, getWizard, } from "../helpers/admin-wizard"; @@ -51,7 +51,7 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { return helper.response(getCreatedWizard); }); server.get("/admin/plugins/subscription-client/suppliers", () => { - return helper.response(getSuppliers); + return helper.response(getSuppliersAuthorized); }); }); @@ -62,6 +62,22 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { assert.equal(count, 6, "There should be 6 admin tabs"); }); + test("shows authorized and subscribed", async(assert) => { + await visit("/admin/wizards"); + assert.notOk( + exists(".supplier-authorize .btn-primary"), + "the authorize button is shown." + ); + assert.strictEqual( + query("button.wizard-subscription-badge span").innerText.trim(), + "Business" + ); + assert.strictEqual( + query("button.btn-pavilion-support span").innerText.trim(), + "Support" + ); + }); + test("creating a new wizard", async (assert) => { await visit("/admin/wizards/wizard"); await click(".admin-wizard-controls button"); diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index 0f62d518..9cf62111 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -11,7 +11,7 @@ import { getCreatedWizard, getCustomFields, getStandardAdminWizard, - getSuppliers, + getSuppliersAuthorized, getWizard, } from "../helpers/admin-wizard"; @@ -51,7 +51,7 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { return helper.response(getCreatedWizard); }); server.get("/admin/plugins/subscription-client/suppliers", () => { - return helper.response(getSuppliers); + return helper.response(getSuppliersAuthorized); }); }); @@ -62,6 +62,22 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { assert.equal(count, 5, "There should be 5 admin tabs"); }); + test("shows authorized and subscribed", async(assert) => { + await visit("/admin/wizards"); + assert.notOk( + exists(".supplier-authorize .btn-primary"), + "the authorize button not shown." + ); + assert.strictEqual( + query("button.wizard-subscription-badge span").innerText.trim(), + "Standard" + ); + assert.strictEqual( + query("button.btn-pavilion-support span").innerText.trim(), + "Support" + ); + }); + test("creating a new wizard", async (assert) => { await visit("/admin/wizards/wizard"); await click(".admin-wizard-controls button"); diff --git a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index 43c7d3fa..657ddde2 100644 --- a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -76,6 +76,22 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { assert.equal(count, 5, "There should be 5 admin tabs"); }); + test("shows unauthorized and unsubscribed", async(assert) => { + await visit("/admin/wizards"); + assert.ok( + exists(".supplier-authorize .btn-primary"), + "the authorize button is shown." + ); + assert.strictEqual( + query("button.wizard-subscription-badge span").innerText.trim(), + "Not Subscribed" + ); + assert.strictEqual( + query("button.btn-pavilion-support span").innerText.trim(), + "Get a Subscription" + ); + }); + test("creating a new wizard", async (assert) => { await visit("/admin/wizards/wizard"); await click(".admin-wizard-controls button"); diff --git a/test/javascripts/helpers/admin-wizard.js b/test/javascripts/helpers/admin-wizard.js index 3c9627f0..79eba3b7 100644 --- a/test/javascripts/helpers/admin-wizard.js +++ b/test/javascripts/helpers/admin-wizard.js @@ -927,6 +927,18 @@ const getSuppliers = { ], }; +const getSuppliersAuthorized = { + suppliers: [ + { + id: 1, + name: "Pavilion", + authorized: true, + authorized_at: null, + user: null, + }, + ], +}; + export { getWizard, getUnsubscribedAdminWizards, @@ -942,4 +954,5 @@ export { getAnotherWizardSubmission, getUniqueWizard, getSuppliers, + getSuppliersAuthorized, }; From 9017871f2e9696fefd95d1e1a870376267393d6c Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 6 Oct 2023 16:37:24 +0100 Subject: [PATCH 66/92] linting --- .../discourse/components/wizard-subscription-status.hbs | 6 +++--- .../acceptance/admin-wizards-business-subscription-test.js | 3 ++- .../acceptance/admin-wizards-standard-subscription-test.js | 3 ++- .../acceptance/admin-wizards-unsubscribed-test.js | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.hbs b/assets/javascripts/discourse/components/wizard-subscription-status.hbs index a2c7d3da..a5c69a1b 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-status.hbs @@ -3,7 +3,7 @@ {{conditional-loading-spinner size="small" condition=unauthorizing}} @@ -13,8 +13,8 @@ {{/if}} diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index 4d1451ff..71f374bf 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -1,5 +1,6 @@ import { acceptance, + exists, query, visible, } from "discourse/tests/helpers/qunit-helpers"; @@ -62,7 +63,7 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { assert.equal(count, 6, "There should be 6 admin tabs"); }); - test("shows authorized and subscribed", async(assert) => { + test("shows authorized and subscribed", async (assert) => { await visit("/admin/wizards"); assert.notOk( exists(".supplier-authorize .btn-primary"), diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index 9cf62111..3fdb1e7a 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -1,5 +1,6 @@ import { acceptance, + exists, query, visible, } from "discourse/tests/helpers/qunit-helpers"; @@ -62,7 +63,7 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { assert.equal(count, 5, "There should be 5 admin tabs"); }); - test("shows authorized and subscribed", async(assert) => { + test("shows authorized and subscribed", async (assert) => { await visit("/admin/wizards"); assert.notOk( exists(".supplier-authorize .btn-primary"), diff --git a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index 657ddde2..973f5b1e 100644 --- a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -76,7 +76,7 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { assert.equal(count, 5, "There should be 5 admin tabs"); }); - test("shows unauthorized and unsubscribed", async(assert) => { + test("shows unauthorized and unsubscribed", async (assert) => { await visit("/admin/wizards"); assert.ok( exists(".supplier-authorize .btn-primary"), From 0fcbcfb6d6361ac44a47c80efb381c14eacf125a Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 7 Oct 2023 08:10:43 +0100 Subject: [PATCH 67/92] css tweak --- assets/stylesheets/common/admin.scss | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index 6b91a173..59545316 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -44,14 +44,16 @@ $error: #ef1700; } .admin-wizards .admin-actions { - display: flex; + .supplier-authorize { + display: inline-flex; - .btn-pavilion-support { - margin-left: 10px; - } + .btn-pavilion-support { + margin-left: 10px; + } - .supplier-authorize .btn-primary { - margin-right: 10px; + .btn-primary { + margin-right: 10px; + } } } From d5d500f0d244ac6612f6dc24688b8d67788b76da Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 7 Oct 2023 08:16:04 +0100 Subject: [PATCH 68/92] bump patch --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index 133284f7..996dbb30 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # name: discourse-custom-wizard # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. -# version: 2.4.26 +# version: 2.4.27 # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos # url: https://github.com/paviliondev/discourse-custom-wizard # contact_emails: development@pavilion.tech From 1824738bd49189d52db7d744cbb8e2742ad325ad Mon Sep 17 00:00:00 2001 From: merefield Date: Sat, 7 Oct 2023 08:53:00 +0100 Subject: [PATCH 69/92] css tweak --- assets/stylesheets/common/admin.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index 59545316..8862592b 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -49,6 +49,9 @@ $error: #ef1700; .btn-pavilion-support { margin-left: 10px; + &:hover { + color: var(--pavilion-secondary); + } } .btn-primary { From 2b867ce678dc5add1eff7c7fca99529eb905c923 Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 9 Oct 2023 13:39:10 +0100 Subject: [PATCH 70/92] FEATURE: add a sub refresh button --- .../components/wizard-subscription-badge.hbs | 16 ++++++- .../components/wizard-subscription-badge.js | 28 +++++++++++ assets/stylesheets/common/admin.scss | 47 ++++++++++++------- config/locales/client.en.yml | 2 + 4 files changed, 75 insertions(+), 18 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 31048eab..fb5becfa 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -27,4 +27,18 @@ {{this.label}} - \ No newline at end of file + + + {{#if this.updating}} + {{loading-spinner size="small"}} + {{else if updateIcon}} + {{d-icon updateIcon}} + {{/if}} + + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index fdee6e64..910e9cb3 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -1,11 +1,17 @@ import { inject as service } from "@ember/service"; import { action, computed } from "@ember/object"; +import { ajax } from "discourse/lib/ajax"; +import { popupAjaxError } from "discourse/lib/ajax-error"; import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; import DiscourseURL from "discourse/lib/url"; import I18n from "I18n"; export default class WizardSubscriptionBadge extends Component { @service subscription; + @tracked updating = false; + @tracked updateIcon = null; + basePath = "/admin/plugins/subscription-client"; @computed("subscription.subscriptionType") get i18nKey() { @@ -30,4 +36,26 @@ export default class WizardSubscriptionBadge extends Component { click() { DiscourseURL.routeTo(this.subscription.subscriptionLink); } + + @action + update() { + this.updating = true; + return ajax(`${this.basePath}/subscriptions`, { + type: "POST", + }) + .then(() => { + if (this.subscription.subscribed) { + this.updateIcon = "check"; + } else { + this.updateIcon = "times"; + } + }) + .catch(popupAjaxError) + .finally(() => { + this.updating = false; + // setTimeout(() => { + // this.updateIcon = null; + // }, 7000); + }); + } } diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index 8862592b..66ab59e1 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -43,23 +43,6 @@ $error: #ef1700; } } -.admin-wizards .admin-actions { - .supplier-authorize { - display: inline-flex; - - .btn-pavilion-support { - margin-left: 10px; - &:hover { - color: var(--pavilion-secondary); - } - } - - .btn-primary { - margin-right: 10px; - } - } -} - .wizard-message { background-color: var(--primary-low); width: 100%; @@ -949,3 +932,33 @@ $error: #ef1700; font-size: 0.75em; } } + +.admin-wizards .admin-actions { + .supplier-authorize { + display: inline-flex; + + .btn-pavilion-support { + margin-left: 10px; + &:hover { + color: var(--pavilion-secondary); + } + } + + .wizard-subscription-badge { + margin-right: 5px; + } + + .loading-container { + svg, + div { + vertical-align: -moz-middle-with-baseline; + vertical-align: -webkit-baseline-middle; + margin-right: 3px; + } + } + + .btn-primary { + margin-right: 5px; + } + } +} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 26450b48..9f468ed3 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -551,6 +551,8 @@ en: deauthorize: label: deauthorize title: Deauthorize your subscription on this site + update: + title: "Update subscription status" subscribed: label: Subscribed title: You're subscribed and can use these features From 06e5b4baae828fefd95bbf9d12c870be738325b9 Mon Sep 17 00:00:00 2001 From: merefield Date: Mon, 9 Oct 2023 14:02:07 +0100 Subject: [PATCH 71/92] try alternative subscription update --- .../components/wizard-subscription-badge.js | 37 ++++++++++--------- .../components/wizard-subscription-status.js | 1 - 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index 910e9cb3..2146e869 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -39,23 +39,24 @@ export default class WizardSubscriptionBadge extends Component { @action update() { - this.updating = true; - return ajax(`${this.basePath}/subscriptions`, { - type: "POST", - }) - .then(() => { - if (this.subscription.subscribed) { - this.updateIcon = "check"; - } else { - this.updateIcon = "times"; - } - }) - .catch(popupAjaxError) - .finally(() => { - this.updating = false; - // setTimeout(() => { - // this.updateIcon = null; - // }, 7000); - }); + this.subscription.retrieveSubscriptionStatus(); + // this.updating = true; + // return ajax(`${this.basePath}/subscriptions`, { + // type: "POST", + // }) + // .then(() => { + // if (this.subscription.subscribed) { + // this.updateIcon = "check"; + // } else { + // this.updateIcon = "times"; + // } + // }) + // .catch(popupAjaxError) + // .finally(() => { + // this.updating = false; + // setTimeout(() => { + // this.updateIcon = null; + // }, 7000); + // }); } } diff --git a/assets/javascripts/discourse/components/wizard-subscription-status.js b/assets/javascripts/discourse/components/wizard-subscription-status.js index 43c2cd9b..e8efc49c 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-status.js +++ b/assets/javascripts/discourse/components/wizard-subscription-status.js @@ -47,7 +47,6 @@ export default class WizardSubscriptionStatus extends Component { .finally(() => { this.unauthorizing = false; this.subscription.retrieveSubscriptionStatus(); - //window.location.reload(); }) .catch(popupAjaxError); } From bd712524c179c9629012917f1fb1f1e3c8876407 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 10:42:44 +0000 Subject: [PATCH 72/92] temp sub update debugging --- assets/javascripts/discourse/services/subscription.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 801f5e0f..b939210e 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -24,8 +24,10 @@ export default class SubscriptionService extends Service { } retrieveSubscriptionStatus() { + debugger; ajax("/admin/wizards/subscription") .then((result) => { + debugger; this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; this.subscriptionAttributes = result.subscription_attributes; From 6be518f0e1eb28477957d74c61e34c7e98c5c390 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 13:33:02 +0000 Subject: [PATCH 73/92] first update local subscriptions before retrieving them --- lib/custom_wizard/subscription.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index 68c07df6..47c7599c 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -107,6 +107,7 @@ class CustomWizard::Subscription :product_slug def initialize + ::DiscourseSubscriptionClient::Subscriptions.update result = ::DiscourseSubscriptionClient.find_subscriptions("discourse-custom-wizard") if result&.any? From 8e2b117321a56f9cf647ce67fe43ad2feaef28ca Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 14:28:54 +0000 Subject: [PATCH 74/92] make subscription update happen asynchronously on FE --- .../components/wizard-subscription-badge.hbs | 1 + .../components/wizard-subscription-badge.js | 31 ++++++------------- .../discourse/services/subscription.js | 22 ++++++------- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index fb5becfa..6ef0c754 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -2,6 +2,7 @@ @action={{this.click}} class="wizard-subscription-badge {{this.subscription.subscriptionType}}" @title={{this.title}} + {{did-insert this.update}} > { - // if (this.subscription.subscribed) { - // this.updateIcon = "check"; - // } else { - // this.updateIcon = "times"; - // } - // }) - // .catch(popupAjaxError) - // .finally(() => { - // this.updating = false; - // setTimeout(() => { - // this.updateIcon = null; - // }, 7000); - // }); + this.updating = true; + this.updateIcon = "check"; + this.subscription.retrieveSubscriptionStatus().finally(() => { + this.updating = false; + setTimeout(() => { + this.updateIcon = null; + }, 5000); + }) } -} +} \ No newline at end of file diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index b939210e..42f2afca 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -23,19 +23,15 @@ export default class SubscriptionService extends Service { this.retrieveSubscriptionStatus(); } - retrieveSubscriptionStatus() { - debugger; - ajax("/admin/wizards/subscription") - .then((result) => { - debugger; - this.subscribed = result.subscribed; - this.subscriptionType = result.subscription_type; - this.subscriptionAttributes = result.subscription_attributes; - this.businessSubscription = this.subscriptionType === "business"; - this.communitySubscription = this.subscriptionType === "community"; - this.standardSubscription = this.subscriptionType === "standard"; - }) - .catch(popupAjaxError); + async retrieveSubscriptionStatus() { + let result = await ajax("/admin/wizards/subscription").catch(popupAjaxError); + + this.subscribed = result.subscribed; + this.subscriptionType = result.subscription_type; + this.subscriptionAttributes = result.subscription_attributes; + this.businessSubscription = this.subscriptionType === "business"; + this.communitySubscription = this.subscriptionType === "community"; + this.standardSubscription = this.subscriptionType === "standard"; } get subscriptionLink() { From f6ce0f53ad557184723ac6aa403fa4fb3e824915 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 14:39:42 +0000 Subject: [PATCH 75/92] linting --- .../discourse/components/wizard-subscription-badge.js | 4 ++-- assets/javascripts/discourse/services/subscription.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index d7c072bc..39b6cf81 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -44,6 +44,6 @@ export default class WizardSubscriptionBadge extends Component { setTimeout(() => { this.updateIcon = null; }, 5000); - }) + }); } -} \ No newline at end of file +} diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 42f2afca..0eaba45d 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -24,7 +24,9 @@ export default class SubscriptionService extends Service { } async retrieveSubscriptionStatus() { - let result = await ajax("/admin/wizards/subscription").catch(popupAjaxError); + let result = await ajax("/admin/wizards/subscription").catch( + popupAjaxError + ); this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; From a82af2e01681e15a61836e3da5cc91aff4ae3d99 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 15:01:27 +0000 Subject: [PATCH 76/92] make init process async --- assets/javascripts/discourse/services/subscription.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 0eaba45d..7ee5454c 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -18,9 +18,9 @@ export default class SubscriptionService extends Service { @tracked subscriptionAttributes = {}; subscriptionLandingUrl = PRODUCT_PAGE; - init() { + async init() { super.init(...arguments); - this.retrieveSubscriptionStatus(); + await this.retrieveSubscriptionStatus(); } async retrieveSubscriptionStatus() { From a58b13e9e4eae8a2288edc726404b1d4f22ab093 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 15:36:21 +0000 Subject: [PATCH 77/92] only run remote sub update retrieve on update action --- app/controllers/custom_wizard/admin/subscription.rb | 7 ++++++- .../components/wizard-subscription-badge.js | 2 +- .../javascripts/discourse/services/subscription.js | 13 +++++++++++++ lib/custom_wizard/subscription.rb | 7 +++++-- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/controllers/custom_wizard/admin/subscription.rb b/app/controllers/custom_wizard/admin/subscription.rb index 141b283a..7b596ec6 100644 --- a/app/controllers/custom_wizard/admin/subscription.rb +++ b/app/controllers/custom_wizard/admin/subscription.rb @@ -3,7 +3,12 @@ class CustomWizard::SubscriptionController < ::Admin::AdminController before_action :ensure_admin def index - subscription = CustomWizard::Subscription.new + if params[:update_from_remote] + subscription = CustomWizard::Subscription.new(true) + else + subscription = CustomWizard::Subscription.new + end + render_json_dump( subscribed: subscription.subscribed?, subscription_type: subscription.type, diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index 39b6cf81..f2115fdb 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -39,7 +39,7 @@ export default class WizardSubscriptionBadge extends Component { update() { this.updating = true; this.updateIcon = "check"; - this.subscription.retrieveSubscriptionStatus().finally(() => { + this.subscription.updateSubscriptionStatus().finally(() => { this.updating = false; setTimeout(() => { this.updateIcon = null; diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 7ee5454c..0a784519 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -36,6 +36,19 @@ export default class SubscriptionService extends Service { this.standardSubscription = this.subscriptionType === "standard"; } + async updateSubscriptionStatus() { + let result = await ajax("/admin/wizards/subscription?update_from_remote=true").catch( + popupAjaxError + ); + + this.subscribed = result.subscribed; + this.subscriptionType = result.subscription_type; + this.subscriptionAttributes = result.subscription_attributes; + this.businessSubscription = this.subscriptionType === "business"; + this.communitySubscription = this.subscriptionType === "community"; + this.standardSubscription = this.subscriptionType === "standard"; + } + get subscriptionLink() { return this.subscriptionLandingUrl; } diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index 47c7599c..8d9d122e 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -106,8 +106,11 @@ class CustomWizard::Subscription attr_accessor :product_id, :product_slug - def initialize - ::DiscourseSubscriptionClient::Subscriptions.update + def initialize(update = false) + if update + ::DiscourseSubscriptionClient::Subscriptions.update + end + result = ::DiscourseSubscriptionClient.find_subscriptions("discourse-custom-wizard") if result&.any? From 4444f48da72747eacb720d7680d3638880f0d375 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 15:41:14 +0000 Subject: [PATCH 78/92] prettier --- assets/javascripts/discourse/services/subscription.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/javascripts/discourse/services/subscription.js b/assets/javascripts/discourse/services/subscription.js index 0a784519..08ea5278 100644 --- a/assets/javascripts/discourse/services/subscription.js +++ b/assets/javascripts/discourse/services/subscription.js @@ -37,9 +37,9 @@ export default class SubscriptionService extends Service { } async updateSubscriptionStatus() { - let result = await ajax("/admin/wizards/subscription?update_from_remote=true").catch( - popupAjaxError - ); + let result = await ajax( + "/admin/wizards/subscription?update_from_remote=true" + ).catch(popupAjaxError); this.subscribed = result.subscribed; this.subscriptionType = result.subscription_type; From a575feca74d79c1496105c534e93f9bcdd21f506 Mon Sep 17 00:00:00 2001 From: merefield Date: Wed, 15 Nov 2023 16:42:53 +0000 Subject: [PATCH 79/92] fix some tests --- .../acceptance/admin-wizards-business-subscription-test.js | 2 +- .../acceptance/admin-wizards-standard-subscription-test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js index 71f374bf..ea8cbac2 100644 --- a/test/javascripts/acceptance/admin-wizards-business-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-business-subscription-test.js @@ -66,7 +66,7 @@ acceptance("Admin | Custom Wizard Business Subscription", function (needs) { test("shows authorized and subscribed", async (assert) => { await visit("/admin/wizards"); assert.notOk( - exists(".supplier-authorize .btn-primary"), + exists(".supplier-authorize .btn-primary:not(.update)"), "the authorize button is shown." ); assert.strictEqual( diff --git a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js index 3fdb1e7a..0670e703 100644 --- a/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js +++ b/test/javascripts/acceptance/admin-wizards-standard-subscription-test.js @@ -66,7 +66,7 @@ acceptance("Admin | Custom Wizard Standard Subscription", function (needs) { test("shows authorized and subscribed", async (assert) => { await visit("/admin/wizards"); assert.notOk( - exists(".supplier-authorize .btn-primary"), + exists(".supplier-authorize .btn-primary:not(.update)"), "the authorize button not shown." ); assert.strictEqual( From df3e5b6494c42089a361bf855a2064423f88bfcc Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 16 Nov 2023 16:32:39 +0000 Subject: [PATCH 80/92] COMPATIBILITY: resolve register unbound deprecation --- .../discourse/helpers/wizard-char-counter.js | 21 ++++++++++++++++ .../helpers/wizard-char-counter.js.es6 | 25 ------------------- 2 files changed, 21 insertions(+), 25 deletions(-) create mode 100644 assets/javascripts/discourse/helpers/wizard-char-counter.js delete mode 100644 assets/javascripts/discourse/helpers/wizard-char-counter.js.es6 diff --git a/assets/javascripts/discourse/helpers/wizard-char-counter.js b/assets/javascripts/discourse/helpers/wizard-char-counter.js new file mode 100644 index 00000000..459792d8 --- /dev/null +++ b/assets/javascripts/discourse/helpers/wizard-char-counter.js @@ -0,0 +1,21 @@ +import I18n from "I18n"; +import Handlebars from "handlebars"; + +export default function wizardCharCounter(body, maxLength) { + let bodyLength = body ? body.length : 0; + let finalString; + + if (maxLength) { + let isOverMax = bodyLength > maxLength ? "true" : "false"; + finalString = `
${bodyLength} / ${I18n.t( + "wizard.x_characters", + { count: parseInt(maxLength, 10) } + )}
`; + } else { + finalString = `
${I18n.t("wizard.x_characters", { + count: parseInt(bodyLength, 10), + })}
`; + } + + return new Handlebars.SafeString(finalString); +}; diff --git a/assets/javascripts/discourse/helpers/wizard-char-counter.js.es6 b/assets/javascripts/discourse/helpers/wizard-char-counter.js.es6 deleted file mode 100644 index 1e194314..00000000 --- a/assets/javascripts/discourse/helpers/wizard-char-counter.js.es6 +++ /dev/null @@ -1,25 +0,0 @@ -import { registerUnbound } from "discourse-common/lib/helpers"; -import I18n from "I18n"; -import Handlebars from "handlebars"; - -export default registerUnbound( - "wizard-char-counter", - function (body, maxLength) { - let bodyLength = body ? body.length : 0; - let finalString; - - if (maxLength) { - let isOverMax = bodyLength > maxLength ? "true" : "false"; - finalString = `
${bodyLength} / ${I18n.t( - "wizard.x_characters", - { count: parseInt(maxLength, 10) } - )}
`; - } else { - finalString = `
${I18n.t("wizard.x_characters", { - count: parseInt(bodyLength, 10), - })}
`; - } - - return new Handlebars.SafeString(finalString); - } -); From ee5ef5574fcf5b06fba77407f6edb2f8cd5f40dd Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 16 Nov 2023 16:33:46 +0000 Subject: [PATCH 81/92] fix a FE test involving altered Composer --- test/javascripts/acceptance/field-test.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/javascripts/acceptance/field-test.js b/test/javascripts/acceptance/field-test.js index f1d97130..627311ad 100644 --- a/test/javascripts/acceptance/field-test.js +++ b/test/javascripts/acceptance/field-test.js @@ -74,11 +74,11 @@ acceptance("Field | Fields", function (needs) { await click( ".wizard-field.composer-field .wizard-field-composer .d-editor button.link" ); - assert.ok(exists(".insert-link.modal-body"), "hyperlink modal visible"); + assert.ok(exists(".d-modal.insert-hyperlink-modal"), "hyperlink modal visible"); - await fillIn(".modal-body .link-url", "google.com"); - await fillIn(".modal-body .link-text", "Google"); - await click(".modal-footer button.btn-primary"); + await fillIn(".d-modal__body.insert-link .inputs .link-url", "google.com"); + await fillIn(".d-modal__body.insert-link .inputs .link-text", "Google"); + await click(".d-modal__footer button.btn-primary"); assert.strictEqual( query(".wizard-field.composer-field .wizard-field-composer textarea") @@ -102,9 +102,9 @@ acceptance("Field | Fields", function (needs) { await click( ".wizard-field.composer-field .wizard-field-composer .d-editor button.link" ); - await fillIn(".modal-body .link-url", "google.com"); - await fillIn(".modal-body .link-text", "Google"); - await click(".modal-footer button.btn-danger"); + await fillIn(".d-modal__body.insert-link .inputs .link-url", "google.com"); + await fillIn(".d-modal__body.insert-link .inputs .link-text", "Google"); + await click(".d-modal__footer button.btn-danger"); assert.strictEqual( query(".wizard-field.composer-field .wizard-field-composer textarea") From a468c2c86851e72369884da2568e677437cba744 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 16 Nov 2023 16:35:54 +0000 Subject: [PATCH 82/92] prettier --- assets/javascripts/discourse/helpers/wizard-char-counter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/javascripts/discourse/helpers/wizard-char-counter.js b/assets/javascripts/discourse/helpers/wizard-char-counter.js index 459792d8..97f7e98b 100644 --- a/assets/javascripts/discourse/helpers/wizard-char-counter.js +++ b/assets/javascripts/discourse/helpers/wizard-char-counter.js @@ -17,5 +17,5 @@ export default function wizardCharCounter(body, maxLength) { })}
`; } - return new Handlebars.SafeString(finalString); -}; + return new Handlebars.SafeString(finalString); +} From d297ccd35b01ff68a4467fcb4c91d415cbd8be68 Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 16 Nov 2023 16:41:54 +0000 Subject: [PATCH 83/92] prettier --- test/javascripts/acceptance/field-test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/javascripts/acceptance/field-test.js b/test/javascripts/acceptance/field-test.js index 627311ad..e9094836 100644 --- a/test/javascripts/acceptance/field-test.js +++ b/test/javascripts/acceptance/field-test.js @@ -74,7 +74,10 @@ acceptance("Field | Fields", function (needs) { await click( ".wizard-field.composer-field .wizard-field-composer .d-editor button.link" ); - assert.ok(exists(".d-modal.insert-hyperlink-modal"), "hyperlink modal visible"); + assert.ok( + exists(".d-modal.insert-hyperlink-modal"), + "hyperlink modal visible" + ); await fillIn(".d-modal__body.insert-link .inputs .link-url", "google.com"); await fillIn(".d-modal__body.insert-link .inputs .link-text", "Google"); From a7d1d5a9fb6df5a9ade2884febc78b5d3729c23c Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 16 Nov 2023 17:57:07 +0000 Subject: [PATCH 84/92] fix more FE tests --- .../admin-wizards-unsubscribed-test.js | 20 ++++++++++--------- test/javascripts/acceptance/field-test.js | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index 973f5b1e..d186440d 100644 --- a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -260,11 +260,11 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { await click( ".wizard-custom-step .wizard-text-editor .d-editor button.link" ); - assert.ok(exists(".insert-link.modal-body"), "hyperlink modal visible"); + assert.ok(exists(".d-modal.insert-hyperlink-modal"), "hyperlink modal visible"); - await fillIn(".modal-body .link-url", "google.com"); - await fillIn(".modal-body .link-text", "Google"); - await click(".modal-footer button.btn-primary"); + await fillIn(".d-modal__body.insert-link .inputs .link-url", "google.com"); + await fillIn(".d-modal__body.insert-link .inputs .link-text", "Google"); + await click(".d-modal__footer button.btn-primary"); let urlText = await query( ".wizard-custom-step .wizard-text-editor .d-editor-preview-wrapper a" ).innerHTML.trim(); @@ -276,24 +276,26 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { await click( ".wizard-custom-step .wizard-text-editor .d-editor button.local-dates" ); + assert.ok( - exists(".discourse-local-dates-create-modal .modal-body"), + exists(".d-modal.discourse-local-dates-create-modal"), "Insert date-time modal visible" ); + assert.ok( !exists( - ".discourse-local-dates-create-modal.modal-body .advanced-options" + ".discourse-local-dates-create-modal .d-modal__body .advanced-options" ), "Advanced mode not visible" ); - await click(".modal-footer button.advanced-mode-btn"); + await click(".d-modal__footer button.advanced-mode-btn"); assert.ok( exists( - ".discourse-local-dates-create-modal .modal-body .advanced-options" + ".discourse-local-dates-create-modal .d-modal__body .advanced-options" ), "Advanced mode is visible" ); - await click(".modal-footer button.btn-primary"); + await click(".d-modal__footer button.btn-primary"); assert.ok( exists( ".wizard-custom-step .wizard-text-editor .d-editor-preview-wrapper span.discourse-local-date" diff --git a/test/javascripts/acceptance/field-test.js b/test/javascripts/acceptance/field-test.js index e9094836..67ef8c38 100644 --- a/test/javascripts/acceptance/field-test.js +++ b/test/javascripts/acceptance/field-test.js @@ -68,7 +68,7 @@ acceptance("Field | Fields", function (needs) { "This is a link to " ); assert.ok( - !exists(".insert-link.modal-body"), + !exists(".d-modal.insert-hyperlink-modal"), "no hyperlink modal by default" ); await click( From 4fd128f47104e43af9656c2a60ed33c0e7e9388c Mon Sep 17 00:00:00 2001 From: merefield Date: Thu, 16 Nov 2023 17:58:35 +0000 Subject: [PATCH 85/92] prettier --- .../acceptance/admin-wizards-unsubscribed-test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js index d186440d..52038d5e 100644 --- a/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js +++ b/test/javascripts/acceptance/admin-wizards-unsubscribed-test.js @@ -260,7 +260,10 @@ acceptance("Admin | Custom Wizard Unsubscribed", function (needs) { await click( ".wizard-custom-step .wizard-text-editor .d-editor button.link" ); - assert.ok(exists(".d-modal.insert-hyperlink-modal"), "hyperlink modal visible"); + assert.ok( + exists(".d-modal.insert-hyperlink-modal"), + "hyperlink modal visible" + ); await fillIn(".d-modal__body.insert-link .inputs .link-url", "google.com"); await fillIn(".d-modal__body.insert-link .inputs .link-text", "Google"); From b0d91ccd3cd93ac752740b1e220311096e4e04fc Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 09:08:56 +0000 Subject: [PATCH 86/92] IMPROVE: move Pavilion icon to dedicated file and implementation standard --- .../components/wizard-subscription-badge.hbs | 24 +------------------ assets/stylesheets/common/admin.scss | 14 ++++++++++- plugin.rb | 1 + svg-icons/plugin-icons.svg | 18 ++++++++++++++ 4 files changed, 33 insertions(+), 24 deletions(-) create mode 100644 svg-icons/plugin-icons.svg diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 6ef0c754..30b79cb5 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -4,29 +4,7 @@ @title={{this.title}} {{did-insert this.update}} > - - - + {{d-icon "pavilion-logo"}} {{this.label}} diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index 66ab59e1..2bcdd0a6 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -938,7 +938,6 @@ $error: #ef1700; display: inline-flex; .btn-pavilion-support { - margin-left: 10px; &:hover { color: var(--pavilion-secondary); } @@ -946,6 +945,19 @@ $error: #ef1700; .wizard-subscription-badge { margin-right: 5px; + svg { + margin-right: 0.45em; + } + &.none { + svg { + color: #919191; + } + } + &.community, &.standard, &.business { + svg { + color: #fff; + } + } } .loading-container { diff --git a/plugin.rb b/plugin.rb index 54a32e0a..99789ebc 100644 --- a/plugin.rb +++ b/plugin.rb @@ -12,6 +12,7 @@ gem "discourse_subscription_client", "0.1.0.pre15", require_name: "discourse_sub gem 'discourse_plugin_statistics', '0.1.0.pre7', require: true register_asset 'stylesheets/common/admin.scss' register_asset 'stylesheets/common/wizard.scss' +register_svg_icon 'pavilion-logo' enabled_site_setting :custom_wizard_enabled diff --git a/svg-icons/plugin-icons.svg b/svg-icons/plugin-icons.svg new file mode 100644 index 00000000..f456dbca --- /dev/null +++ b/svg-icons/plugin-icons.svg @@ -0,0 +1,18 @@ + + + + \ No newline at end of file From cf1e661f5e32aa553c1b952761f6e2f6debaebf0 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 09:10:46 +0000 Subject: [PATCH 87/92] restore client install check --- lib/custom_wizard/subscription.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/custom_wizard/subscription.rb b/lib/custom_wizard/subscription.rb index 8d9d122e..96efe92c 100644 --- a/lib/custom_wizard/subscription.rb +++ b/lib/custom_wizard/subscription.rb @@ -180,6 +180,11 @@ class CustomWizard::Subscription product_slug === "community" end + # TODO candidate for removal once code that depends on it externally is no longer used. + def self.client_installed? + defined?(DiscourseSubscriptionClient) == 'constant' && DiscourseSubscriptionClient.class == Module + end + def self.subscribed? new.subscribed? end From 320ebe30498bcea10cb23642edb4f56d5c415b4e Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 10:00:09 +0000 Subject: [PATCH 88/92] prettier --- assets/stylesheets/common/admin.scss | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index 2bcdd0a6..c4448e2e 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -953,11 +953,13 @@ $error: #ef1700; color: #919191; } } - &.community, &.standard, &.business { + &.community, + &.standard, + &.business { svg { color: #fff; } - } + } } .loading-container { From 591cb9b6aebd2ff13a76e6a80db5e04654fcdf33 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 11:24:46 +0000 Subject: [PATCH 89/92] IMPROVE: utilise button icon to signify update --- .../components/wizard-subscription-badge.hbs | 15 ++++++--------- .../components/wizard-subscription-badge.js | 8 +++----- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 30b79cb5..08853169 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -7,17 +7,14 @@ {{d-icon "pavilion-logo"}} {{this.label}} - - {{#if this.updating}} - {{loading-spinner size="small"}} - {{else if updateIcon}} - {{d-icon updateIcon}} - {{/if}} - \ No newline at end of file +> +{{#if this.updating}} + {{loading-spinner size="small"}} +{{/if}} + \ No newline at end of file diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.js b/assets/javascripts/discourse/components/wizard-subscription-badge.js index f2115fdb..e103c95b 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.js +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.js @@ -8,7 +8,7 @@ import I18n from "I18n"; export default class WizardSubscriptionBadge extends Component { @service subscription; @tracked updating = false; - @tracked updateIcon = null; + @tracked updateIcon = "sync"; basePath = "/admin/plugins/subscription-client"; @computed("subscription.subscriptionType") @@ -38,12 +38,10 @@ export default class WizardSubscriptionBadge extends Component { @action update() { this.updating = true; - this.updateIcon = "check"; + this.updateIcon = null; this.subscription.updateSubscriptionStatus().finally(() => { + this.updateIcon = "sync"; this.updating = false; - setTimeout(() => { - this.updateIcon = null; - }, 5000); }); } } From 812d3d0554407b38227dac6b3baf3dc985684c25 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 11:26:38 +0000 Subject: [PATCH 90/92] prettier --- .../discourse/components/wizard-subscription-badge.hbs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 08853169..999ab404 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -14,7 +14,7 @@ @disabled={{this.updating}} @title="admin.wizard.subscription.update.title" > -{{#if this.updating}} - {{loading-spinner size="small"}} -{{/if}} + {{#if this.updating}} + {{loading-spinner size="small"}} + {{/if}} \ No newline at end of file From fe7b1ecb64818a7c9dd796e895cdad52337221a9 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 12:06:23 +0000 Subject: [PATCH 91/92] formatting tweak to prevent change of update button status disturbing layout --- assets/stylesheets/common/admin.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/stylesheets/common/admin.scss b/assets/stylesheets/common/admin.scss index c4448e2e..f8722c2d 100644 --- a/assets/stylesheets/common/admin.scss +++ b/assets/stylesheets/common/admin.scss @@ -937,6 +937,11 @@ $error: #ef1700; .supplier-authorize { display: inline-flex; + button.update { + width: 40px; + height: 34px; + } + .btn-pavilion-support { &:hover { color: var(--pavilion-secondary); From f3ca0aaf9076d1a1cbae938a4ac30a1206d4b822 Mon Sep 17 00:00:00 2001 From: merefield Date: Fri, 17 Nov 2023 12:50:44 +0000 Subject: [PATCH 92/92] Don't run a remote subsciption status update on every visit to Wizards admin route --- .../discourse/components/wizard-subscription-badge.hbs | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs index 999ab404..dee4724f 100644 --- a/assets/javascripts/discourse/components/wizard-subscription-badge.hbs +++ b/assets/javascripts/discourse/components/wizard-subscription-badge.hbs @@ -2,7 +2,6 @@ @action={{this.click}} class="wizard-subscription-badge {{this.subscription.subscriptionType}}" @title={{this.title}} - {{did-insert this.update}} > {{d-icon "pavilion-logo"}} {{this.label}}