From 33cf7b5b67878ea335a7dba8b7cccd6db358fc65 Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Tue, 14 Aug 2018 18:34:59 -0700 Subject: [PATCH] =?UTF-8?q?Fix=20IMAP/SMTP=20port=20dropdowns=20in=20the?= =?UTF-8?q?=20configuration=20screen=20=E2=80=9Csticking=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/decorators/create-page-for-form.jsx | 19 +++++++----- .../onboarding/lib/onboarding-helpers.es6 | 1 + .../lib/page-account-settings-imap.jsx | 31 +++++++++++-------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/app/internal_packages/onboarding/lib/decorators/create-page-for-form.jsx b/app/internal_packages/onboarding/lib/decorators/create-page-for-form.jsx index 065c209d3..7cb5bc109 100644 --- a/app/internal_packages/onboarding/lib/decorators/create-page-for-form.jsx +++ b/app/internal_packages/onboarding/lib/decorators/create-page-for-form.jsx @@ -63,7 +63,7 @@ const CreatePageForForm = FormComponent => { return errorFieldNames.length === 0 && populated; } - onFieldChange = event => { + onFieldChange = (event, { afterSetState } = {}) => { const next = this.state.account.clone(); let val = event.target.value; @@ -83,13 +83,16 @@ const CreatePageForForm = FormComponent => { const { errorFieldNames, errorMessage, populated } = FormComponent.validateAccount(next); - this.setState({ - account: next, - errorFieldNames, - errorMessage, - populated, - errorStatusCode: null, - }); + this.setState( + { + account: next, + errorFieldNames, + errorMessage, + populated, + errorStatusCode: null, + }, + afterSetState + ); }; onSubmit = () => { diff --git a/app/internal_packages/onboarding/lib/onboarding-helpers.es6 b/app/internal_packages/onboarding/lib/onboarding-helpers.es6 index 18625ccf8..3a41e20ae 100644 --- a/app/internal_packages/onboarding/lib/onboarding-helpers.es6 +++ b/app/internal_packages/onboarding/lib/onboarding-helpers.es6 @@ -38,6 +38,7 @@ function idForAccount(emailAddress, connectionSettings) { function mxRecordsForDomain(domain) { return new Promise((resolve, reject) => { + // timeout here is annoyingly long - 30s? dns.resolveMx(domain, (err, addresses) => { if (err) { resolve([]); diff --git a/app/internal_packages/onboarding/lib/page-account-settings-imap.jsx b/app/internal_packages/onboarding/lib/page-account-settings-imap.jsx index 0fbb910d7..08fc38a32 100644 --- a/app/internal_packages/onboarding/lib/page-account-settings-imap.jsx +++ b/app/internal_packages/onboarding/lib/page-account-settings-imap.jsx @@ -69,19 +69,24 @@ class AccountIMAPSettingsForm extends React.Component { // the standard for that port. Lots of people don't update that field and // are getting confused. const onPortChange = event => { - onFieldChange(event); - if (event.target.value / 1 === 143 && settings.imap_security !== 'none') { - onFieldChange({ target: { value: 'none', id: 'settings.imap_security' } }); - } - if (event.target.value / 1 === 993 && settings.imap_security !== 'SSL / TLS') { - onFieldChange({ target: { value: 'SSL / TLS', id: 'settings.imap_security' } }); - } - if (event.target.value / 1 === 25 && settings.smtp_security !== 'none') { - onFieldChange({ target: { value: 'none', id: 'settings.smtp_security' } }); - } - if (event.target.value / 1 === 587 && settings.smtp_security !== 'STARTTLS') { - onFieldChange({ target: { value: 'STARTTLS', id: 'settings.smtp_security' } }); - } + const port = event.target.value / 1; + + onFieldChange(event, { + afterSetState: () => { + if (port === 143 && settings.imap_security !== 'none') { + onFieldChange({ target: { value: 'none', id: 'settings.imap_security' } }); + } + if (port === 993 && settings.imap_security !== 'SSL / TLS') { + onFieldChange({ target: { value: 'SSL / TLS', id: 'settings.imap_security' } }); + } + if (port === 25 && settings.smtp_security !== 'none') { + onFieldChange({ target: { value: 'none', id: 'settings.smtp_security' } }); + } + if (port === 587 && settings.smtp_security !== 'STARTTLS') { + onFieldChange({ target: { value: 'STARTTLS', id: 'settings.smtp_security' } }); + } + }, + }); }; return (