React = require 'react'
PropTypes = require 'prop-types'
path = require 'path'
fs = require 'fs'
_ = require 'underscore'
{RetinaImg, Flexbox, ConfigPropContainer, NewsletterSignup} = require 'nylas-component-kit'
{AccountStore} = require 'nylas-exports'
OnboardingActions = require('./onboarding-actions').default
# NOTE: Temporarily copied from preferences module
class AppearanceModeOption extends React.Component
@propTypes:
mode: PropTypes.string.isRequired
active: PropTypes.bool
onClick: PropTypes.func
render: =>
classname = "appearance-mode"
classname += " active" if @props.active
label = {
'list': 'Reading Pane Off'
'split': 'Reading Pane On'
}[@props.mode]
class InitialPreferencesOptions extends React.Component
@propTypes:
config: PropTypes.object
constructor: (@props) ->
@state =
templates: []
@_loadTemplates()
_loadTemplates: =>
templatesDir = path.join(AppEnv.getLoadSettings().resourcePath, 'keymaps', 'templates')
fs.readdir templatesDir, (err, files) =>
return unless files and files instanceof Array
templates = files.filter (filename) =>
path.extname(filename) is '.cson' or path.extname(filename) is '.json'
templates = templates.map (filename) =>
path.parse(filename).name
@setState(templates: templates)
@_setConfigDefaultsForAccount(templates)
_setConfigDefaultsForAccount: (templates) =>
return unless @props.account
templateWithBasename = (name) =>
_.find templates, (t) -> t.indexOf(name) is 0
if @props.account.provider is 'gmail'
@props.config.set('core.workspace.mode', 'list')
@props.config.set('core.keymapTemplate', templateWithBasename('Gmail'))
else if @props.account.provider is 'eas' or @props.account.provider is 'office365'
@props.config.set('core.workspace.mode', 'split')
@props.config.set('core.keymapTemplate', templateWithBasename('Outlook'))
else
@props.config.set('core.workspace.mode', 'split')
if process.platform is 'darwin'
@props.config.set('core.keymapTemplate', templateWithBasename('Apple Mail'))
else
@props.config.set('core.keymapTemplate', templateWithBasename('Outlook'))
render: =>
return false unless @props.config
Do you prefer a single panel layout (like Gmail)
or a two panel layout?
{['list', 'split'].map (mode) =>
@props.config.set('core.workspace.mode', mode)} />
}
We've picked a set of keyboard shortcuts based on your email
account and platform. You can also pick another set:
class InitialPreferencesPage extends React.Component
@displayName: "InitialPreferencesPage"
constructor:(@props) ->
@state = {account: AccountStore.accounts()[0]}
componentDidMount: =>
@_unlisten = AccountStore.listen(@_onAccountStoreChange)
componentWillUnmount: =>
@_unlisten?()
_onAccountStoreChange: =>
@setState(account: AccountStore.accounts()[0])
render: =>
Welcome to Mailspring
Let's set things up to your liking.
_onFinished: =>
require('electron').ipcRenderer.send('account-setup-successful')
module.exports = InitialPreferencesPage