mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-11 18:32:20 +08:00
c6354feb41
commit50d0cfb87c
Author: Ben Gotow <bengotow@gmail.com> Date: Fri May 27 14:01:49 2016 -0700 IdentityStore conveniene methods for subscription state commit80c3c7b956
Author: Ben Gotow <bengotow@gmail.com> Date: Fri May 27 12:03:53 2016 -0700 Periodically refresh identity, show expired notice in top bar commit5dc39efe98
Merge:4c4f463
906ea74
Author: Juan Tejada <juans.tejada@gmail.com> Date: Thu May 26 15:17:46 2016 -0700 Merge branch 'bengotow/n1-pro' of github.com:nylas/N1 into bengotow/n1-pro commit4c4f463f4b
Author: Juan Tejada <juans.tejada@gmail.com> Date: Thu May 26 15:16:48 2016 -0700 Hijack links inside email that go to billing site and add SSO to them commit906ea74807
Author: Ben Gotow <bengotow@gmail.com> Date: Thu May 26 12:02:29 2016 -0700 Add custom welcome page for upgrading users commit2ba9aedfe9
Author: Juan Tejada <juans.tejada@gmail.com> Date: Wed May 25 17:27:12 2016 -0700 Add styling to Subscription tab in prefs commit384433a338
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 16:21:18 2016 -0700 Add better style reset, more IdentityStore changes commitc4f9dfb4e4
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 15:29:41 2016 -0700 Add subscription tab commitbd4c25405a
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 14:18:40 2016 -0700 Point to billing-staging for now commit578e808bfc
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 13:30:13 2016 -0700 Rename account helpers > onboarding helpers commitdfea0a9861
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 13:26:46 2016 -0700 A few minor fixes commit7110217fd4
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 12:58:21 2016 -0700 feat(onboarding): Nylas Pro onboarding overhaul Summary: Rip out all invite-related code Enable Templates and Translate by default Scrub packages page, unused code in onboarding pkg Remove resizing New onboarding screens IMAP provider list, validation Call success with response object as well Renaming and tweaks Test Plan: No tests yet Reviewers: evan, juan, jackie Differential Revision: https://phab.nylas.com/D2985 commitdc9ea45ca9
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 12:52:39 2016 -0700 Renaming and tweaks commit5ca4cd31ce
Author: Ben Gotow <bengotow@gmail.com> Date: Wed May 25 11:03:57 2016 -0700 Call success with response object as well commit45f14f9b00
Author: Ben Gotow <bengotow@gmail.com> Date: Tue May 24 18:26:38 2016 -0700 IMAP provider list, validation commitc6ca124e6e
Author: Ben Gotow <bengotow@gmail.com> Date: Sat May 21 11:14:44 2016 -0700 New onboarding screens commitdad918d926
Author: Ben Gotow <bengotow@gmail.com> Date: Thu May 19 16:37:31 2016 -0700 Remove resizing commitecb1a569e2
Author: Ben Gotow <bengotow@gmail.com> Date: Thu May 19 16:36:04 2016 -0700 Scrub packages page, unused code in onboarding pkg commit3e0a44156c
Author: Ben Gotow <bengotow@gmail.com> Date: Thu May 19 16:33:12 2016 -0700 Enable Templates and Translate by default commit0d218bc86f
Author: Ben Gotow <bengotow@gmail.com> Date: Thu May 19 16:30:47 2016 -0700 Rip out all invite-related code
100 lines
3.3 KiB
JavaScript
100 lines
3.3 KiB
JavaScript
import React from 'react';
|
|
import {isValidHost} from './onboarding-helpers';
|
|
import CreatePageForForm from './decorators/create-page-for-form';
|
|
import FormField from './form-field';
|
|
|
|
class AccountIMAPSettingsForm extends React.Component {
|
|
static displayName = 'AccountIMAPSettingsForm';
|
|
|
|
static propTypes = {
|
|
accountInfo: React.PropTypes.object,
|
|
errorFieldNames: React.PropTypes.array,
|
|
submitting: React.PropTypes.bool,
|
|
onConnect: React.PropTypes.func,
|
|
onFieldChange: React.PropTypes.func,
|
|
onFieldKeyPress: React.PropTypes.func,
|
|
};
|
|
|
|
static submitLabel = () => {
|
|
return 'Connect Account';
|
|
}
|
|
|
|
static titleLabel = () => {
|
|
return 'Setup your account';
|
|
}
|
|
|
|
static subtitleLabel = () => {
|
|
return 'Complete the IMAP and SMTP settings below to connect your account.';
|
|
}
|
|
|
|
static validateAccountInfo = (accountInfo) => {
|
|
let errorMessage = null;
|
|
const errorFieldNames = [];
|
|
|
|
for (const type of ['imap', 'smtp']) {
|
|
if (!accountInfo[`${type}_host`] || !accountInfo[`${type}_username`] || !accountInfo[`${type}_password`]) {
|
|
return {errorMessage, errorFieldNames, populated: false};
|
|
}
|
|
if (!isValidHost(accountInfo[`${type}_host`])) {
|
|
errorMessage = "Please provide a valid hostname or IP adddress.";
|
|
errorFieldNames.push(`${type}_host`);
|
|
}
|
|
if (accountInfo[`${type}_host`] === 'imap.gmail.com') {
|
|
errorMessage = "Please link Gmail accounts by choosing 'Google' on the account type screen.";
|
|
errorFieldNames.push(`${type}_host`);
|
|
}
|
|
if (!Number.isInteger(accountInfo[`${type}_port`] / 1)) {
|
|
errorMessage = "Please provide a valid port number.";
|
|
errorFieldNames.push(`${type}_port`);
|
|
}
|
|
}
|
|
|
|
return {errorMessage, errorFieldNames, populated: true};
|
|
}
|
|
|
|
submit() {
|
|
this.props.onConnect();
|
|
}
|
|
|
|
renderFieldsForType(type) {
|
|
const {accountInfo, errorFieldNames, submitting, onFieldKeyPress, onFieldChange} = this.props;
|
|
|
|
return (
|
|
<div>
|
|
<FormField field={`${type}_host`} title={"Server"} {...this.props} />
|
|
<div style={{textAlign: 'left'}}>
|
|
<FormField field={`${type}_port`} title={"Port"} style={{width: 100, marginRight: 20}} {...this.props} />
|
|
<input
|
|
type="checkbox"
|
|
id={`ssl_required`}
|
|
className={(accountInfo.imap_host && errorFieldNames.includes(`ssl_required`)) ? 'error' : ''}
|
|
disabled={submitting}
|
|
checked={accountInfo[`ssl_required`] || false}
|
|
onKeyPress={onFieldKeyPress}
|
|
onChange={onFieldChange}
|
|
/>
|
|
<label forHtml={`ssl_required`} className="checkbox">Require SSL</label>
|
|
</div>
|
|
<FormField field={`${type}_username`} title={"Username"} {...this.props} />
|
|
<FormField field={`${type}_password`} title={"Password"} type="password" {...this.props} />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<div className="twocol">
|
|
<div className="col">
|
|
<div className="col-heading">Incoming Mail (IMAP):</div>
|
|
{this.renderFieldsForType('imap')}
|
|
</div>
|
|
<div className="col">
|
|
<div className="col-heading">Outgoing Mail (SMTP):</div>
|
|
{this.renderFieldsForType('smtp')}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
}
|
|
|
|
export default CreatePageForForm(AccountIMAPSettingsForm);
|