Mailspring/internal_packages/onboarding/lib/initial-packages-page.cjsx
Evan Morikawa 488dff0f90 refactor(env): new NylasEnv global
Converted all references of global atom to NylasEnv

Temporary rename atom.io

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.io/temporaryAtomIoReplacement/g'

atom.config to NylasEnv.config

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.config/NylasEnv.config/g'

atom.packages -> NylasEnv.packages

atom.commands -> NylasEnv.commands atom.getLoadSettings

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.commands/NylasEnv.commands/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getLoadSettings/NylasEnv.getLoadSettings/g'

More common atom methods

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.styles/NylasEnv.styles/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.emitError/NylasEnv.emitError/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.inSpecMode/NylasEnv.inSpecMode/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.inDevMode/NylasEnv.inDevMode/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getWindowType/NylasEnv.getWindowType/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.displayWindow/NylasEnv.displayWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.quit/NylasEnv.quit/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.close/NylasEnv.close/g'

More atom method changes

find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.keymaps/NylasEnv.keymaps/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.hide/NylasEnv.hide/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getCurrentWindow/NylasEnv.getCurrentWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.menu/NylasEnv.menu/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getConfigDirPath/NylasEnv.getConfigDirPath/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.isMainWindow/NylasEnv.isMainWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.finishUnload/NylasEnv.finishUnload/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.isWorkWindow/NylasEnv.isWorkWindow/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.showSaveDialog/NylasEnv.showSaveDialog/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.append/NylasEnv.append/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.confirm/NylasEnv.confirm/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.clipboard/NylasEnv.clipboard/g'
find -E . -regex ".*\.(coffee|cjsx|js|md|cmd|es6)" -print0 | xargs -0 sed
-i "" 's/atom.getVersion/NylasEnv.getVersion/g'

More atom renaming

Rename atom methods

More atom methods

Fix grunt config variable

Change atom.cmd to N1.cmd

Rename atom.coffee and atom.js to nylas-env.coffee nylas-env.js

Fix atom global reference in specs manually

Fix atom requires

Change engine from atom to nylas

got rid of global/nylas-env

rename to nylas-win-bootup

Fix onWindowPropsChanged to onWindowPropsReceived

fix nylas-workspace

atom-text-editor to nylas-theme-wrap

atom-text-editor -> nylas-theme-wrap

Replacing atom keyword

AtomWindow -> NylasWindow

Replace Atom -> N1

Rename atom items

nylas.asar -> atom.asar

Remove more atom references

Remove 6to5 references

Remove license exception for atom
2015-11-17 16:41:20 -08:00

108 lines
3.4 KiB
CoffeeScript

React = require 'react'
path = require 'path'
{RetinaImg, ConfigPropContainer} = require 'nylas-component-kit'
{EdgehillAPI} = require 'nylas-exports'
OnboardingActions = require './onboarding-actions'
InitialPackagesStore = require './initial-packages-store'
RunningPackageInstalls = 0
class InstallButton extends React.Component
constructor: (@props) ->
@state =
installed: NylasEnv.packages.resolvePackagePath(@props.package.name)?
installing: false
render: =>
classname = "btn btn-install"
classname += " installing" if @state.installing
classname += " installed" if @state.installed
<div className={classname} onClick={@_onInstall}></div>
_onInstall: =>
return if @state.installing or @state.installed
return unless @props.package.path
RunningPackageInstalls += 1
@setState(installing: true)
NylasEnv.packages.installPackageFromPath @props.package.path, (err) =>
RunningPackageInstalls -= 1
@props.onPackageInstaled()
@setState({
installing: false
installed: NylasEnv.packages.resolvePackagePath(@props.package.name)?
})
class InitialPackagesPage extends React.Component
@displayName: "InitialPackagesPage"
constructor: (@props) ->
@state = @getStateFromStores()
componentDidMount: =>
@unlisten = InitialPackagesStore.listen =>
@setState(@getStateFromStores())
componentWillUnmount: =>
@unlisten?()
getStateFromStores: =>
packages: InitialPackagesStore.starterPackages
error: InitialPackagesStore.lastError
render: =>
<div className="page opaque" style={width:900, height:650}>
<div className="back" onClick={@_onPrevPage}>
<RetinaImg name="onboarding-back.png" mode={RetinaImg.Mode.ContentPreserve}/>
</div>
<h1 style={paddingTop: 60, marginBottom: 20}>Explore plugins</h1>
<p style={paddingBottom: 20}>
Plugins lie at the heart of N1 and give it its powerful features.<br/>
Want to enable a few example plugins now? They'll be installed to <code>~/.nylas</code>
</p>
<div>
{@_renderError()}
{@state.packages.map (item) =>
<div className="initial-package" key={item.name}>
<img src={item.iconPath} style={width:50} />
<div className="install-container">
<InstallButton package={item} onPackageInstaled={@_onPackageInstaled} />
</div>
<div className="name">{item.title}</div>
<div className="description">{item.description}</div>
</div>
}
</div>
<button className="btn btn-large btn-get-started btn-emphasis"
style={marginTop: 15}
onClick={@_onGetStarted}>
{@_renderStartSpinner()}
Start Using N1
</button>
</div>
_renderError: =>
return false unless @state.error
<div className="error">{@state.error.toString()}</div>
_renderStartSpinner: =>
return false unless @state.waitingToGetStarted
<div className="spinner"></div>
_onPrevPage: =>
OnboardingActions.moveToPage('initial-preferences')
_onPackageInstaled: =>
if RunningPackageInstalls is 0 and @state.waitingToGetStarted
@_onGetStarted()
_onGetStarted: =>
if RunningPackageInstalls > 0
@setState(waitingToGetStarted: true)
else
require('ipc').send('account-setup-successful')
module.exports = InitialPackagesPage