From 62c30e0b5f28a862357a3e2548deec499c2995f0 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Mon, 22 Jan 2024 12:14:10 +0100 Subject: [PATCH] DEV: Convert activation-email-form to gjs (#25343) --- .../app/components/activation-email-form.gjs | 21 ++++++++++++ .../app/components/activation-email-form.hbs | 6 ---- .../app/components/activation-email-form.js | 9 ----- .../app/components/modal/activation-edit.js | 8 ++--- .../controllers/account-created-edit-email.js | 34 ++++++++++++------- .../templates/account-created/edit-email.hbs | 9 +++-- .../tests/acceptance/account-created-test.js | 11 ++---- .../tests/acceptance/sign-in-test.js | 23 ++++--------- 8 files changed, 62 insertions(+), 59 deletions(-) create mode 100644 app/assets/javascripts/discourse/app/components/activation-email-form.gjs delete mode 100644 app/assets/javascripts/discourse/app/components/activation-email-form.hbs delete mode 100644 app/assets/javascripts/discourse/app/components/activation-email-form.js diff --git a/app/assets/javascripts/discourse/app/components/activation-email-form.gjs b/app/assets/javascripts/discourse/app/components/activation-email-form.gjs new file mode 100644 index 00000000000..01c672e7dfb --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/activation-email-form.gjs @@ -0,0 +1,21 @@ +import Component from "@glimmer/component"; +import { on } from "@ember/modifier"; +import { action } from "@ember/object"; +import i18n from "discourse-common/helpers/i18n"; + +export default class ActivationEmailForm extends Component { + @action + newEmailChanged(event) { + this.args.updateNewEmail(event.target.value); + } + + +} diff --git a/app/assets/javascripts/discourse/app/components/activation-email-form.hbs b/app/assets/javascripts/discourse/app/components/activation-email-form.hbs deleted file mode 100644 index 14bc86e2b01..00000000000 --- a/app/assets/javascripts/discourse/app/components/activation-email-form.hbs +++ /dev/null @@ -1,6 +0,0 @@ -

{{i18n "login.provide_new_email"}}

- \ No newline at end of file diff --git a/app/assets/javascripts/discourse/app/components/activation-email-form.js b/app/assets/javascripts/discourse/app/components/activation-email-form.js deleted file mode 100644 index f4f958c898a..00000000000 --- a/app/assets/javascripts/discourse/app/components/activation-email-form.js +++ /dev/null @@ -1,9 +0,0 @@ -import Component from "@glimmer/component"; -import { action } from "@ember/object"; - -export default class ActivationEmailForm extends Component { - @action - newEmailChanged(value) { - this.args.updateNewEmail?.(value); - } -} diff --git a/app/assets/javascripts/discourse/app/components/modal/activation-edit.js b/app/assets/javascripts/discourse/app/components/modal/activation-edit.js index 5568a192668..2b4fdce5c01 100644 --- a/app/assets/javascripts/discourse/app/components/modal/activation-edit.js +++ b/app/assets/javascripts/discourse/app/components/modal/activation-edit.js @@ -23,11 +23,11 @@ export default class ActivationEdit extends Component { await changeEmail({ username: this.login?.loginName, password: this.login?.loginPassword, - email: this.args.model.newEmail, + email: this.newEmail, }); this.modal.show(ActivationResent, { - model: { currentEmail: this.args.model.newEmail }, + model: { currentEmail: this.newEmail }, }); } catch (e) { this.flash = extractError(e); @@ -35,7 +35,7 @@ export default class ActivationEdit extends Component { } @action - updateNewEmail(e) { - this.newEmail = e.target.value; + updateNewEmail(email) { + this.newEmail = email; } } diff --git a/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js b/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js index 0365f07441d..4280f2fdde3 100644 --- a/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js +++ b/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js @@ -1,4 +1,5 @@ import Controller from "@ember/controller"; +import { action } from "@ember/object"; import { inject as service } from "@ember/service"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { changeEmail } from "discourse/lib/user-activation"; @@ -6,6 +7,7 @@ import discourseComputed from "discourse-common/utils/decorators"; export default Controller.extend({ router: service(), + accountCreated: null, newEmail: null, @@ -14,19 +16,25 @@ export default Controller.extend({ return newEmail === currentEmail; }, - actions: { - changeEmail() { - const email = this.newEmail; - changeEmail({ email }) - .then(() => { - this.set("accountCreated.email", email); - this.router.transitionTo("account-created.resent"); - }) - .catch(popupAjaxError); - }, + @action + updateNewEmail(email) { + this.set("newEmail", email); + }, - cancel() { - this.router.transitionTo("account-created.index"); - }, + @action + async changeEmail() { + try { + await changeEmail({ email: this.newEmail }); + + this.set("accountCreated.email", this.newEmail); + this.router.transitionTo("account-created.resent"); + } catch (e) { + popupAjaxError(e); + } + }, + + @action + cancel() { + this.router.transitionTo("account-created.index"); }, }); diff --git a/app/assets/javascripts/discourse/app/templates/account-created/edit-email.hbs b/app/assets/javascripts/discourse/app/templates/account-created/edit-email.hbs index 3630068b740..396cf1b5797 100644 --- a/app/assets/javascripts/discourse/app/templates/account-created/edit-email.hbs +++ b/app/assets/javascripts/discourse/app/templates/account-created/edit-email.hbs @@ -1,13 +1,16 @@
- +
- +
\ No newline at end of file diff --git a/app/assets/javascripts/discourse/tests/acceptance/account-created-test.js b/app/assets/javascripts/discourse/tests/acceptance/account-created-test.js index c840aece400..dc2d179d5de 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/account-created-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/account-created-test.js @@ -76,19 +76,14 @@ acceptance("Account Created", function () { }); await visit("/u/account-created"); - await click(".activation-controls .edit-email"); - - assert.ok(exists(".activation-controls .btn-primary:disabled")); + assert.dom(".activation-controls .btn-primary").isDisabled(); await fillIn(".activate-new-email", "newemail@example.com"); - - assert.notOk(exists(".activation-controls .btn-primary:disabled")); + assert.dom(".activation-controls .btn-primary").isNotDisabled(); await click(".activation-controls .btn-primary"); - assert.strictEqual(currentRouteName(), "account-created.resent"); - const email = query(".account-created b").innerText; - assert.strictEqual(email, "newemail@example.com"); + assert.dom(".account-created b").hasText("newemail@example.com"); }); }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/sign-in-test.js b/app/assets/javascripts/discourse/tests/acceptance/sign-in-test.js index 6fb1e57f197..fefe3110c40 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/sign-in-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/sign-in-test.js @@ -2,7 +2,6 @@ import { click, fillIn, visit } from "@ember/test-helpers"; import { test } from "qunit"; import { acceptance, - count, exists, query, } from "discourse/tests/helpers/qunit-helpers"; @@ -68,28 +67,20 @@ acceptance("Signing In", function () { test("sign in - not activated - edit email", async function (assert) { await visit("/"); await click("header .login-button"); - assert.ok(exists(".login-modal"), "it shows the login modal"); + assert.dom(".login-modal").exists("it shows the login modal"); await fillIn("#login-account-name", "eviltrout"); await fillIn("#login-account-password", "not-activated-edit"); await click(".d-modal__footer .btn-primary"); await click(".d-modal__footer button.edit-email"); - assert.strictEqual( - query(".activate-new-email").value, - "current@example.com" - ); - assert.strictEqual( - count(".d-modal__footer .btn-primary:disabled"), - 1, - "must change email" - ); + assert.dom(".activate-new-email").hasValue("current@example.com"); + assert.dom(".d-modal__footer .btn-primary").isDisabled("must change email"); + await fillIn(".activate-new-email", "different@example.com"); - assert.ok(!exists(".d-modal__footer .btn-primary:disabled")); + assert.dom(".d-modal__footer .btn-primary").isNotDisabled(); + await click(".d-modal__footer .btn-primary"); - assert.strictEqual( - query(".d-modal__body b").innerText, - "different@example.com" - ); + assert.dom(".d-modal__body b").hasText("different@example.com"); }); test("second factor", async function (assert) {