From 0db03b684d78151ab0fd27bc8f5fcc77c89d9611 Mon Sep 17 00:00:00 2001 From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com> Date: Tue, 25 Jul 2023 16:11:32 -0500 Subject: [PATCH] DEV: Convert `delete-posts-confirmation` modal to component-based API (#22700) --- .../modal/delete-posts-confirmation.hbs | 36 ++++++++++++++ .../modal/delete-posts-confirmation.js | 18 +++++++ .../addon/controllers/admin-user-index.js | 7 +-- .../modals/admin-delete-posts-confirmation.js | 49 ------------------- .../modal/admin-delete-posts-confirmation.hbs | 32 ------------ .../discourse/app/services/modal.js | 1 - 6 files changed, 58 insertions(+), 85 deletions(-) create mode 100644 app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.hbs create mode 100644 app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.js delete mode 100644 app/assets/javascripts/admin/addon/controllers/modals/admin-delete-posts-confirmation.js delete mode 100644 app/assets/javascripts/admin/addon/templates/modal/admin-delete-posts-confirmation.hbs diff --git a/app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.hbs b/app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.hbs new file mode 100644 index 00000000000..8d8680d9b62 --- /dev/null +++ b/app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.hbs @@ -0,0 +1,36 @@ + + <:body> +

{{html-safe + (i18n + "admin.user.delete_posts.confirmation.description" + username=@model.user.username + post_count=@model.user.post_count + text=this.text + ) + }}

+ + + <:footer> + + + +
\ No newline at end of file diff --git a/app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.js b/app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.js new file mode 100644 index 00000000000..62d8dadfe35 --- /dev/null +++ b/app/assets/javascripts/admin/addon/components/modal/delete-posts-confirmation.js @@ -0,0 +1,18 @@ +import Component from "@glimmer/component"; +import { tracked } from "@glimmer/tracking"; +import I18n from "I18n"; + +export default class DeletePostsConfirmation extends Component { + @tracked value; + + get text() { + return I18n.t("admin.user.delete_posts.confirmation.text", { + username: this.args.model.user.username, + post_count: this.args.model.user.post_count, + }); + } + + get deleteDisabled() { + return !this.value || this.text !== this.value; + } +} diff --git a/app/assets/javascripts/admin/addon/controllers/admin-user-index.js b/app/assets/javascripts/admin/addon/controllers/admin-user-index.js index 8de9af05d51..b9cc4c247fc 100644 --- a/app/assets/javascripts/admin/addon/controllers/admin-user-index.js +++ b/app/assets/javascripts/admin/addon/controllers/admin-user-index.js @@ -13,6 +13,7 @@ import getURL from "discourse-common/lib/get-url"; import { htmlSafe } from "@ember/template"; import { extractError, popupAjaxError } from "discourse/lib/ajax-error"; import showModal from "discourse/lib/show-modal"; +import DeletePostsConfirmationModal from "../components/modal/delete-posts-confirmation"; export default class AdminUserIndexController extends Controller.extend( CanCheckEmails @@ -20,6 +21,7 @@ export default class AdminUserIndexController extends Controller.extend( @service router; @service dialog; @service adminTools; + @service modal; originalPrimaryGroupId = null; customGroupIdsBuffer = null; @@ -619,9 +621,8 @@ export default class AdminUserIndexController extends Controller.extend( @action showDeletePostsConfirmation() { - showModal("admin-delete-posts-confirmation", { - admin: true, - model: this.model, + this.modal.show(DeletePostsConfirmationModal, { + model: { user: this.model, deleteAllPosts: this.deleteAllPosts }, }); } diff --git a/app/assets/javascripts/admin/addon/controllers/modals/admin-delete-posts-confirmation.js b/app/assets/javascripts/admin/addon/controllers/modals/admin-delete-posts-confirmation.js deleted file mode 100644 index b07fa7f7830..00000000000 --- a/app/assets/javascripts/admin/addon/controllers/modals/admin-delete-posts-confirmation.js +++ /dev/null @@ -1,49 +0,0 @@ -import { alias } from "@ember/object/computed"; -import Controller, { inject as controller } from "@ember/controller"; -import I18n from "I18n"; -import ModalFunctionality from "discourse/mixins/modal-functionality"; -import { action } from "@ember/object"; -import discourseComputed from "discourse-common/utils/decorators"; - -export default class AdminDeletePostsConfirmationController extends Controller.extend( - ModalFunctionality -) { - @controller adminUserIndex; - - @alias("model.username") username; - @alias("model.post_count") postCount; - - onShow() { - this.set("value", null); - } - - @discourseComputed("username", "postCount") - text(username, postCount) { - return I18n.t(`admin.user.delete_posts.confirmation.text`, { - username, - postCount, - }); - } - - @discourseComputed("username") - deleteButtonText(username) { - return I18n.t(`admin.user.delete_posts.confirmation.delete`, { - username, - }); - } - - @discourseComputed("value", "text") - deleteDisabled(value, text) { - return !value || text !== value; - } - - @action - confirm() { - this.adminUserIndex.send("deleteAllPosts"); - } - - @action - close() { - this.send("closeModal"); - } -} diff --git a/app/assets/javascripts/admin/addon/templates/modal/admin-delete-posts-confirmation.hbs b/app/assets/javascripts/admin/addon/templates/modal/admin-delete-posts-confirmation.hbs deleted file mode 100644 index 96349c3704f..00000000000 --- a/app/assets/javascripts/admin/addon/templates/modal/admin-delete-posts-confirmation.hbs +++ /dev/null @@ -1,32 +0,0 @@ -
- -

{{html-safe - (i18n - "admin.user.delete_posts.confirmation.description" - username=this.username - post_count=this.postCount - text=this.text - ) - }}

- -
- - -
\ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/services/modal.js b/app/assets/javascripts/discourse/app/services/modal.js index 252600fc323..6b25397d620 100644 --- a/app/assets/javascripts/discourse/app/services/modal.js +++ b/app/assets/javascripts/discourse/app/services/modal.js @@ -55,7 +55,6 @@ const KNOWN_LEGACY_MODALS = [ "topic-summary", "user-status", "admin-add-upload", - "admin-delete-posts-confirmation", "admin-merge-users-prompt", "admin-start-backup", "admin-watched-word-test",