From c280c1c52b66fb038e8b01281f58579c8b81ce01 Mon Sep 17 00:00:00 2001 From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com> Date: Thu, 10 Aug 2023 04:31:34 -0500 Subject: [PATCH] DEV: Convert `site-setting-default-categories` modal to component-based API (#22968) --- .../modal/site-setting-default-categories.hbs | 23 +++++++++++++++++ .../modal/site-setting-default-categories.js | 16 ++++++++++++ .../modals/site-setting-default-categories.js | 8 ------ .../admin/addon/mixins/setting-component.js | 25 +++++++++++-------- .../modal/site-setting-default-categories.hbs | 18 ------------- .../app/mixins/modal-update-existing-users.js | 19 -------------- .../discourse/app/services/modal.js | 1 - 7 files changed, 54 insertions(+), 56 deletions(-) create mode 100644 app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.hbs create mode 100644 app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.js delete mode 100644 app/assets/javascripts/admin/addon/controllers/modals/site-setting-default-categories.js delete mode 100644 app/assets/javascripts/admin/addon/templates/modal/site-setting-default-categories.hbs delete mode 100644 app/assets/javascripts/discourse/app/mixins/modal-update-existing-users.js diff --git a/app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.hbs b/app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.hbs new file mode 100644 index 00000000000..d83e9b0e449 --- /dev/null +++ b/app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.hbs @@ -0,0 +1,23 @@ + + <:body> + {{i18n + "admin.site_settings.default_categories.modal_description" + count=@model.siteSetting.count + }} + + <:footer> + + + + \ No newline at end of file diff --git a/app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.js b/app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.js new file mode 100644 index 00000000000..88539f620fb --- /dev/null +++ b/app/assets/javascripts/admin/addon/components/modal/site-setting-default-categories.js @@ -0,0 +1,16 @@ +import Component from "@glimmer/component"; +import { action } from "@ember/object"; + +export default class SiteSettingDefaultCategories extends Component { + @action + updateExistingUsers() { + this.args.model.setUpdateExistingUsers(true); + this.args.closeModal(); + } + + @action + cancel() { + this.args.model.setUpdateExistingUsers(false); + this.args.closeModal(); + } +} diff --git a/app/assets/javascripts/admin/addon/controllers/modals/site-setting-default-categories.js b/app/assets/javascripts/admin/addon/controllers/modals/site-setting-default-categories.js deleted file mode 100644 index e7e970578bd..00000000000 --- a/app/assets/javascripts/admin/addon/controllers/modals/site-setting-default-categories.js +++ /dev/null @@ -1,8 +0,0 @@ -import Controller from "@ember/controller"; -import ModalFunctionality from "discourse/mixins/modal-functionality"; -import ModalUpdateExistingUsers from "discourse/mixins/modal-update-existing-users"; - -export default class SiteSettingDefaultCategoriesController extends Controller.extend( - ModalFunctionality, - ModalUpdateExistingUsers -) {} diff --git a/app/assets/javascripts/admin/addon/mixins/setting-component.js b/app/assets/javascripts/admin/addon/mixins/setting-component.js index f560e36eeb9..455991badf0 100644 --- a/app/assets/javascripts/admin/addon/mixins/setting-component.js +++ b/app/assets/javascripts/admin/addon/mixins/setting-component.js @@ -7,10 +7,11 @@ import { ajax } from "discourse/lib/ajax"; import { categoryLinkHTML } from "discourse/helpers/category-link"; import discourseComputed, { bind } from "discourse-common/utils/decorators"; import { htmlSafe } from "@ember/template"; -import showModal from "discourse/lib/show-modal"; import { warn } from "@ember/debug"; import { action } from "@ember/object"; import { splitString } from "discourse/lib/utilities"; +import { inject as service } from "@ember/service"; +import SiteSettingDefaultCategoriesModal from "../components/modal/site-setting-default-categories"; const CUSTOM_TYPES = [ "bool", @@ -74,6 +75,8 @@ const DEFAULT_USER_PREFERENCES = [ ]; export default Mixin.create({ + modal: service(), + site: service(), attributeBindings: ["setting.setting:data-setting"], classNameBindings: [":row", ":setting", "overridden", "typeClass"], validationMessage: null, @@ -190,22 +193,24 @@ export default Mixin.create({ }); const count = result.user_count; - if (count > 0) { - const controller = showModal("site-setting-default-categories", { - model: { count, key: key.replaceAll("_", " ") }, - admin: true, - }); - - controller.set("onClose", () => { - this.updateExistingUsers = controller.updateExistingUsers; - this.save(); + await this.modal.show(SiteSettingDefaultCategoriesModal, { + model: { + siteSetting: { count, key: key.replaceAll("_", " ") }, + setUpdateExistingUsers: this.setUpdateExistingUsers, + }, }); + this.save(); } else { await this.save(); } }, + @action + setUpdateExistingUsers(value) { + this.updateExistingUsers = value; + }, + @action async save() { try { diff --git a/app/assets/javascripts/admin/addon/templates/modal/site-setting-default-categories.hbs b/app/assets/javascripts/admin/addon/templates/modal/site-setting-default-categories.hbs deleted file mode 100644 index 53a486173af..00000000000 --- a/app/assets/javascripts/admin/addon/templates/modal/site-setting-default-categories.hbs +++ /dev/null @@ -1,18 +0,0 @@ - - {{i18n - "admin.site_settings.default_categories.modal_description" - count=this.model.count - }} - - - \ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/mixins/modal-update-existing-users.js b/app/assets/javascripts/discourse/app/mixins/modal-update-existing-users.js deleted file mode 100644 index 699061545f5..00000000000 --- a/app/assets/javascripts/discourse/app/mixins/modal-update-existing-users.js +++ /dev/null @@ -1,19 +0,0 @@ -import Mixin from "@ember/object/mixin"; - -export default Mixin.create({ - onShow() { - this.set("updateExistingUsers", null); - }, - - actions: { - updateExistingUsers() { - this.set("updateExistingUsers", true); - this.send("closeModal"); - }, - - cancel() { - this.set("updateExistingUsers", false); - this.send("closeModal"); - }, - }, -}); diff --git a/app/assets/javascripts/discourse/app/services/modal.js b/app/assets/javascripts/discourse/app/services/modal.js index 683e63a0cfc..396192afe40 100644 --- a/app/assets/javascripts/discourse/app/services/modal.js +++ b/app/assets/javascripts/discourse/app/services/modal.js @@ -48,7 +48,6 @@ const KNOWN_LEGACY_MODALS = [ "topic-summary", "user-status", "admin-penalize-user", - "site-setting-default-categories", "admin-badge-preview", "admin-edit-badge-groupings", "admin-reseed",