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",