mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-09-12 23:54:45 +08:00
fix(onboarding): fix IMAP port fields, enter key behavior
Summary: Fix issue where ports were being stored as strings - add a format field for account settings that turns on casting to int when set to `integer`. Change behavior of pressing enter - rather than always submitting, have it move to the next page on multi-page account settings. Test Plan: manual Reviewers: evan, bengotow Reviewed By: bengotow Subscribers: bengotow Differential Revision: https://phab.nylas.com/D2094
This commit is contained in:
parent
88fdfd9a77
commit
7d799b64e8
2 changed files with 16 additions and 2 deletions
|
@ -79,11 +79,16 @@ class AccountSettingsPage extends React.Component
|
||||||
|
|
||||||
_onSettingsChanged: (event) =>
|
_onSettingsChanged: (event) =>
|
||||||
field = event.target.dataset.field
|
field = event.target.dataset.field
|
||||||
|
format = event.target.dataset.format
|
||||||
|
int_formatter = (a) ->
|
||||||
|
i = parseInt(a)
|
||||||
|
if isNaN(i) then "" else i
|
||||||
|
formatter = if format is 'integer' then int_formatter else (a) -> a
|
||||||
settings = @state.settings
|
settings = @state.settings
|
||||||
if event.target.type is 'checkbox'
|
if event.target.type is 'checkbox'
|
||||||
settings[field] = event.target.checked
|
settings[field] = event.target.checked
|
||||||
else
|
else
|
||||||
settings[field] = event.target.value
|
settings[field] = formatter(event.target.value)
|
||||||
@setState({settings})
|
@setState({settings})
|
||||||
|
|
||||||
_onValueChanged: (event) =>
|
_onValueChanged: (event) =>
|
||||||
|
@ -94,7 +99,11 @@ class AccountSettingsPage extends React.Component
|
||||||
|
|
||||||
_onFieldKeyPress: (event) =>
|
_onFieldKeyPress: (event) =>
|
||||||
if event.key in ['Enter', 'Return']
|
if event.key in ['Enter', 'Return']
|
||||||
@_onSubmit()
|
pages = @state.provider.pages || []
|
||||||
|
if pages.length > @state.pageNumber+1
|
||||||
|
@_onNextButton()
|
||||||
|
else
|
||||||
|
@_onSubmit()
|
||||||
|
|
||||||
_renderTitle: =>
|
_renderTitle: =>
|
||||||
if @state.provider.name is 'gmail'
|
if @state.provider.name is 'gmail'
|
||||||
|
@ -129,6 +138,7 @@ class AccountSettingsPage extends React.Component
|
||||||
onChange={@_onValueChanged}
|
onChange={@_onValueChanged}
|
||||||
onKeyPress={@_onFieldKeyPress}
|
onKeyPress={@_onFieldKeyPress}
|
||||||
data-field={field.name}
|
data-field={field.name}
|
||||||
|
data-format={field.format} ? ""
|
||||||
className={errclass}
|
className={errclass}
|
||||||
placeholder={field.placeholder} />
|
placeholder={field.placeholder} />
|
||||||
</label>
|
</label>
|
||||||
|
@ -144,6 +154,7 @@ class AccountSettingsPage extends React.Component
|
||||||
onChange={@_onSettingsChanged}
|
onChange={@_onSettingsChanged}
|
||||||
onKeyPress={@_onFieldKeyPress}
|
onKeyPress={@_onFieldKeyPress}
|
||||||
data-field={field.name}
|
data-field={field.name}
|
||||||
|
data-format={field.format} ? ""
|
||||||
className={field.className ? ""} />
|
className={field.className ? ""} />
|
||||||
{field.label}
|
{field.label}
|
||||||
</label>
|
</label>
|
||||||
|
@ -159,6 +170,7 @@ class AccountSettingsPage extends React.Component
|
||||||
onChange={@_onSettingsChanged}
|
onChange={@_onSettingsChanged}
|
||||||
onKeyPress={@_onFieldKeyPress}
|
onKeyPress={@_onFieldKeyPress}
|
||||||
data-field={field.name}
|
data-field={field.name}
|
||||||
|
data-format={field.format} ? ""
|
||||||
className={errclass+(field.className ? "")}
|
className={errclass+(field.className ? "")}
|
||||||
placeholder={field.placeholder} />
|
placeholder={field.placeholder} />
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -125,6 +125,7 @@ Providers = [
|
||||||
label: 'Port (optional)'
|
label: 'Port (optional)'
|
||||||
className: 'half'
|
className: 'half'
|
||||||
default: 993
|
default: 993
|
||||||
|
format: 'integer'
|
||||||
page: 1
|
page: 1
|
||||||
}, {
|
}, {
|
||||||
name: 'imap_ssl_enabled'
|
name: 'imap_ssl_enabled'
|
||||||
|
@ -157,6 +158,7 @@ Providers = [
|
||||||
placeholder: '587'
|
placeholder: '587'
|
||||||
label: 'Port (optional)'
|
label: 'Port (optional)'
|
||||||
className: 'half'
|
className: 'half'
|
||||||
|
format: 'integer'
|
||||||
default: 587
|
default: 587
|
||||||
page: 2
|
page: 2
|
||||||
}, {
|
}, {
|
||||||
|
|
Loading…
Add table
Reference in a new issue