React = require 'react' _ = require 'underscore' {RetinaImg} = require 'nylas-component-kit' {EdgehillAPI, Utils} = require 'nylas-exports' OnboardingActions = require './onboarding-actions' NylasApiEnvironmentStore = require './nylas-api-environment-store' Providers = require './account-types' url = require 'url' class AccountChoosePage extends React.Component @displayName: "AccountChoosePage" constructor: (@props) -> @state = email: "" provider: "" environment: NylasApiEnvironmentStore.getEnvironment() componentDidMount: -> @_usub = NylasApiEnvironmentStore.listen => @setState environment: NylasApiEnvironmentStore.getEnvironment() componentWillUnmount: -> @_usub?() render: => closeType = if @props.pageData.addingAccount then "close" else "quit"
atom[closeType]() }>
Select your email provider
{@_renderProviders()}
_renderProviders: -> return Providers.map (provider) =>
@_onChooseProvider(provider)}>
{provider.displayName}
_renderError: -> if @state.error
{@state.error}
else
_onEmailChange: (event) => @setState email: event.target.value _onChooseProvider: (provider) => if provider.name is 'gmail' # Show the "Sign in to Gmail" prompt for a moment before actually bouncing # to Gmail. (400msec animation + 200msec to read) _.delay => @_onBounceToGmail(provider) , 600 OnboardingActions.moveToPage("account-settings", {provider}) _onBounceToGmail: (provider) => provider.clientKey = Utils.generateTempId()[6..]+'-'+Utils.generateTempId()[6..] shell = require 'shell' googleUrl = url.format({ protocol: 'https' host: 'accounts.google.com/o/oauth2/auth' query: response_type: 'code' state: provider.clientKey client_id: '372024217839-cdsnrrqfr4d6b4gmlqepd7v0n0l0ip9q.apps.googleusercontent.com' redirect_uri: "#{EdgehillAPI.APIRoot}/oauth/google/callback" access_type: 'offline' scope: 'https://www.googleapis.com/auth/userinfo.email \ https://www.googleapis.com/auth/userinfo.profile \ https://mail.google.com/ \ https://www.google.com/m8/feeds \ https://www.googleapis.com/auth/calendar' approval_prompt: 'force' }) shell.openExternal(googleUrl) _environmentComponent: => return
unless atom.inDevMode()
_onEnvChange: (event) => OnboardingActions.changeAPIEnvironment(event.target.value) module.exports = AccountChoosePage