From 5fbce985a844af43bee3afeb01bb7c5f674b6c3c Mon Sep 17 00:00:00 2001
From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com>
Date: Tue, 18 Jul 2023 12:31:32 -0500
Subject: [PATCH] DEV: Convert create-invite-bulk modal to component-based API
(#22549)
This PR converts the `create-invite-bulk` modal to make use of the new component-based API
---
.../app/components/create-invite-uploader.hbs | 1 +
.../app/components/create-invite-uploader.js | 6 +++
.../components/modal/create-invite-bulk.hbs | 41 +++++++++++++++++++
.../app/controllers/create-invite-bulk.js | 24 -----------
.../app/controllers/user-invited-show.js | 4 +-
.../discourse/app/mixins/uppy-upload.js | 11 +++--
.../templates/modal/create-invite-bulk.hbs | 40 ------------------
7 files changed, 59 insertions(+), 68 deletions(-)
create mode 100644 app/assets/javascripts/discourse/app/components/modal/create-invite-bulk.hbs
delete mode 100644 app/assets/javascripts/discourse/app/controllers/create-invite-bulk.js
delete mode 100644 app/assets/javascripts/discourse/app/templates/modal/create-invite-bulk.hbs
diff --git a/app/assets/javascripts/discourse/app/components/create-invite-uploader.hbs b/app/assets/javascripts/discourse/app/components/create-invite-uploader.hbs
index 39521928255..698c898d6e8 100644
--- a/app/assets/javascripts/discourse/app/components/create-invite-uploader.hbs
+++ b/app/assets/javascripts/discourse/app/components/create-invite-uploader.hbs
@@ -7,4 +7,5 @@
submitDisabled=this.submitDisabled
startUpload=(action "startUpload")
)
+ this.setElement
}}
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/create-invite-uploader.js b/app/assets/javascripts/discourse/app/components/create-invite-uploader.js
index 17d29e01d4e..dea920d2c92 100644
--- a/app/assets/javascripts/discourse/app/components/create-invite-uploader.js
+++ b/app/assets/javascripts/discourse/app/components/create-invite-uploader.js
@@ -29,4 +29,10 @@ export default Component.extend(UppyUploadMixin, {
startUpload() {
this._startUpload();
},
+
+ @action
+ setElement(element) {
+ this.set("fileInputEl", element);
+ this._initialize();
+ },
});
diff --git a/app/assets/javascripts/discourse/app/components/modal/create-invite-bulk.hbs b/app/assets/javascripts/discourse/app/components/modal/create-invite-bulk.hbs
new file mode 100644
index 00000000000..2db39f4a6f1
--- /dev/null
+++ b/app/assets/javascripts/discourse/app/components/modal/create-invite-bulk.hbs
@@ -0,0 +1,41 @@
+
+
+ <:body>
+ {{#if uploader.uploaded}}
+ {{i18n "user.invited.bulk_invite.success"}}
+ {{else}}
+ {{html-safe (i18n "user.invited.bulk_invite.instructions")}}
+
+ {{/if}}
+
+ <:footer>
+ {{#unless uploader.uploaded}}
+
+ {{/unless}}
+
+
+
+
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/controllers/create-invite-bulk.js b/app/assets/javascripts/discourse/app/controllers/create-invite-bulk.js
deleted file mode 100644
index 0ebeb099924..00000000000
--- a/app/assets/javascripts/discourse/app/controllers/create-invite-bulk.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import Controller from "@ember/controller";
-import { action } from "@ember/object";
-import ModalFunctionality from "discourse/mixins/modal-functionality";
-
-export default Controller.extend(ModalFunctionality, {
- data: null,
-
- onShow() {
- this.set("data", null);
- },
-
- onClose() {
- if (this.data) {
- this.data.abort();
- this.set("data", null);
- }
- },
-
- @action
- submit(data) {
- this.set("data", data);
- data.submit();
- },
-});
diff --git a/app/assets/javascripts/discourse/app/controllers/user-invited-show.js b/app/assets/javascripts/discourse/app/controllers/user-invited-show.js
index 603306a5594..28ab7321568 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-invited-show.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-invited-show.js
@@ -11,9 +11,11 @@ import showModal from "discourse/lib/show-modal";
import Invite from "discourse/models/invite";
import I18n from "I18n";
import { inject as service } from "@ember/service";
+import CreateInviteBulk from "discourse/components/modal/create-invite-bulk";
export default Controller.extend({
dialog: service(),
+ modal: service(),
user: null,
model: null,
filter: null,
@@ -77,7 +79,7 @@ export default Controller.extend({
@action
createInviteCsv() {
- showModal("create-invite-bulk");
+ this.modal.show(CreateInviteBulk);
},
@action
diff --git a/app/assets/javascripts/discourse/app/mixins/uppy-upload.js b/app/assets/javascripts/discourse/app/mixins/uppy-upload.js
index 11cf44a1919..c4fc2056c81 100644
--- a/app/assets/javascripts/discourse/app/mixins/uppy-upload.js
+++ b/app/assets/javascripts/discourse/app/mixins/uppy-upload.js
@@ -35,6 +35,7 @@ export default Mixin.create(UppyS3Multipart, ExtendableUploader, {
id: null,
uploadRootPath: "/uploads",
fileInputSelector: ".hidden-upload-field",
+ autoFindInput: true,
uploadDone() {
warn("You should implement `uploadDone`", {
@@ -68,9 +69,13 @@ export default Mixin.create(UppyS3Multipart, ExtendableUploader, {
@on("didInsertElement")
_initialize() {
- this.setProperties({
- fileInputEl: this.element.querySelector(this.fileInputSelector),
- });
+ if (this.autoFindInput) {
+ this.setProperties({
+ fileInputEl: this.element.querySelector(this.fileInputSelector),
+ });
+ } else if (!this.fileInputEl) {
+ return;
+ }
this.set("allowMultipleFiles", this.fileInputEl.multiple);
this.set("inProgressUploads", []);
diff --git a/app/assets/javascripts/discourse/app/templates/modal/create-invite-bulk.hbs b/app/assets/javascripts/discourse/app/templates/modal/create-invite-bulk.hbs
deleted file mode 100644
index de91eda4a0a..00000000000
--- a/app/assets/javascripts/discourse/app/templates/modal/create-invite-bulk.hbs
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
- {{#if status.uploaded}}
- {{i18n "user.invited.bulk_invite.success"}}
- {{else}}
- {{html-safe (i18n "user.invited.bulk_invite.instructions")}}
-
-
- {{/if}}
-
-
-
-
\ No newline at end of file