From 8f21d2cf4031f2b7b8a4a759507d34c0ff11800e Mon Sep 17 00:00:00 2001 From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com> Date: Tue, 4 Jul 2023 12:13:54 -0500 Subject: [PATCH] DEV: Convert second-factor-edit modals to component-based API (#22367) This PR converts the following modals: - `second-factor-edit-security-key` - `second-factor-edit` to make use of the new component-based API --- .../modal/second-factor-edit-security-key.hbs | 26 ++++++++++++ .../modal/second-factor-edit-security-key.js | 31 ++++++++++++++ .../components/modal/second-factor-edit.hbs | 24 +++++++++++ .../components/modal/second-factor-edit.js | 33 +++++++++++++++ .../controllers/preferences/second-factor.js | 40 +++++++++---------- .../second-factor-edit-security-key.js | 24 ----------- .../app/controllers/second-factor-edit.js | 30 -------------- .../modal/second-factor-edit-security-key.hbs | 18 --------- .../templates/modal/second-factor-edit.hbs | 16 -------- 9 files changed, 134 insertions(+), 108 deletions(-) create mode 100644 app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.hbs create mode 100644 app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.js create mode 100644 app/assets/javascripts/discourse/app/components/modal/second-factor-edit.hbs create mode 100644 app/assets/javascripts/discourse/app/components/modal/second-factor-edit.js delete mode 100644 app/assets/javascripts/discourse/app/controllers/second-factor-edit-security-key.js delete mode 100644 app/assets/javascripts/discourse/app/controllers/second-factor-edit.js delete mode 100644 app/assets/javascripts/discourse/app/templates/modal/second-factor-edit-security-key.hbs delete mode 100644 app/assets/javascripts/discourse/app/templates/modal/second-factor-edit.hbs diff --git a/app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.hbs b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.hbs new file mode 100644 index 00000000000..09bef461f1c --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.hbs @@ -0,0 +1,26 @@ + + <:body> +
+
+ + +
+
+ + <:footer> + + +
\ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.js b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.js new file mode 100644 index 00000000000..441b72ed4a4 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit-security-key.js @@ -0,0 +1,31 @@ +import Component from "@glimmer/component"; +import { action } from "@ember/object"; +import { tracked } from "@glimmer/tracking"; + +export default class SecondFactorEditSecurityKey extends Component { + @tracked loading = false; + + @action + editSecurityKey() { + this.loading = true; + this.args.model.user + .updateSecurityKey( + this.args.model.securityKey.id, + this.args.model.securityKey.name, + false + ) + .then((response) => { + if (response.error) { + return; + } + this.args.model.markDirty(); + }) + .catch((error) => { + this.args.model.onError(error); + }) + .finally(() => { + this.loading = false; + this.args.closeModal(); + }); + } +} diff --git a/app/assets/javascripts/discourse/app/components/modal/second-factor-edit.hbs b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit.hbs new file mode 100644 index 00000000000..c3d9f5ad6f1 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit.hbs @@ -0,0 +1,24 @@ + + <:body> +
+ + +
+ + <:footer> + + +
\ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/components/modal/second-factor-edit.js b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit.js new file mode 100644 index 00000000000..be3ec5c5cce --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/modal/second-factor-edit.js @@ -0,0 +1,33 @@ +import Component from "@glimmer/component"; +import { action } from "@ember/object"; +import { tracked } from "@glimmer/tracking"; + +export default class SecondFactorEdit extends Component { + @tracked loading = false; + + @action + editSecondFactor() { + this.loading = true; + this.args.model.user + .updateSecondFactor( + this.args.model.secondFactor.id, + this.args.model.secondFactor.name, + false, + this.args.model.secondFactor.method + ) + .then((response) => { + if (response.error) { + return; + } + this.args.model.markDirty(); + }) + .catch((error) => { + this.args.closeModal(); + this.args.model.onError(error); + }) + .finally(() => { + this.loading = false; + this.args.closeModal(); + }); + } +} diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js b/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js index e6907e57941..cd441155297 100644 --- a/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js +++ b/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js @@ -12,6 +12,8 @@ import showModal from "discourse/lib/show-modal"; import { inject as service } from "@ember/service"; import SecondFactorConfirmPhrase from "discourse/components/dialog-messages/second-factor-confirm-phrase"; import SecondFactorAddSecurityKey from "discourse/components/modal/second-factor-add-security-key"; +import SecondFactorEditSecurityKey from "discourse/components/modal/second-factor-edit-security-key"; +import SecondFactorEdit from "discourse/components/modal/second-factor-edit"; export default Controller.extend(CanCheckEmails, { dialog: service(), @@ -284,30 +286,28 @@ export default Controller.extend(CanCheckEmails, { this.loadSecondFactors(); }, - editSecurityKey(security_key) { - const controller = showModal("second-factor-edit-security-key", { - model: security_key, - title: "user.second_factor.security_key.edit", - }); - controller.setProperties({ - user: this.model, - onClose: () => this.loadSecondFactors(), - markDirty: () => this.markDirty(), - onError: (e) => this.handleError(e), + async editSecurityKey(security_key) { + await this.modal.show(SecondFactorEditSecurityKey, { + model: { + securityKey: security_key, + user: this.model, + markDirty: () => this.markDirty(), + onError: (e) => this.handleError(e), + }, }); + this.loadSecondFactors(); }, - editSecondFactor(second_factor) { - const controller = showModal("second-factor-edit", { - model: second_factor, - title: "user.second_factor.edit_title", - }); - controller.setProperties({ - user: this.model, - onClose: () => this.loadSecondFactors(), - markDirty: () => this.markDirty(), - onError: (e) => this.handleError(e), + async editSecondFactor(second_factor) { + await this.modal.show(SecondFactorEdit, { + model: { + secondFactor: second_factor, + user: this.model, + markDirty: () => this.markDirty(), + onError: (e) => this.handleError(e), + }, }); + this.loadSecondFactors(); }, editSecondFactorBackup() { diff --git a/app/assets/javascripts/discourse/app/controllers/second-factor-edit-security-key.js b/app/assets/javascripts/discourse/app/controllers/second-factor-edit-security-key.js deleted file mode 100644 index 5660441c412..00000000000 --- a/app/assets/javascripts/discourse/app/controllers/second-factor-edit-security-key.js +++ /dev/null @@ -1,24 +0,0 @@ -import Controller from "@ember/controller"; -import ModalFunctionality from "discourse/mixins/modal-functionality"; - -export default Controller.extend(ModalFunctionality, { - actions: { - editSecurityKey() { - this.user - .updateSecurityKey(this.model.id, this.model.name, false) - .then((response) => { - if (response.error) { - return; - } - this.markDirty(); - }) - .catch((error) => { - this.onError(error); - }) - .finally(() => { - this.set("loading", false); - this.send("closeModal"); - }); - }, - }, -}); diff --git a/app/assets/javascripts/discourse/app/controllers/second-factor-edit.js b/app/assets/javascripts/discourse/app/controllers/second-factor-edit.js deleted file mode 100644 index 88eaedd6459..00000000000 --- a/app/assets/javascripts/discourse/app/controllers/second-factor-edit.js +++ /dev/null @@ -1,30 +0,0 @@ -import Controller from "@ember/controller"; -import ModalFunctionality from "discourse/mixins/modal-functionality"; - -export default Controller.extend(ModalFunctionality, { - actions: { - editSecondFactor() { - this.user - .updateSecondFactor( - this.model.id, - this.model.name, - false, - this.model.method - ) - .then((response) => { - if (response.error) { - return; - } - this.markDirty(); - }) - .catch((error) => { - this.send("closeModal"); - this.onError(error); - }) - .finally(() => { - this.set("loading", false); - this.send("closeModal"); - }); - }, - }, -}); diff --git a/app/assets/javascripts/discourse/app/templates/modal/second-factor-edit-security-key.hbs b/app/assets/javascripts/discourse/app/templates/modal/second-factor-edit-security-key.hbs deleted file mode 100644 index 0dd55115418..00000000000 --- a/app/assets/javascripts/discourse/app/templates/modal/second-factor-edit-security-key.hbs +++ /dev/null @@ -1,18 +0,0 @@ - -
-
- - -
-
-
- - \ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/templates/modal/second-factor-edit.hbs b/app/assets/javascripts/discourse/app/templates/modal/second-factor-edit.hbs deleted file mode 100644 index 1b53501d6e2..00000000000 --- a/app/assets/javascripts/discourse/app/templates/modal/second-factor-edit.hbs +++ /dev/null @@ -1,16 +0,0 @@ - -
- - -
-
- - \ No newline at end of file