You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.7 KiB

7 years ago
// @flow
import 'env'
7 years ago
import React from 'react'
import Raven from 'raven-js'
import { remote } from 'electron'
7 years ago
import { render } from 'react-dom'
import { AppContainer } from 'react-hot-loader'
import createHistory from 'history/createHashHistory'
7 years ago
import createStore from 'renderer/createStore'
import events from 'renderer/events'
import { fetchAccounts } from 'actions/accounts'
import { fetchSettings } from 'actions/settings'
import { isLocked } from 'reducers/application'
import { getLanguage } from 'reducers/settings'
import db from 'helpers/db'
7 years ago
import App from 'components/App'
import 'styles/global'
const { SENTRY_URL } = process.env
if (__PROD__ && SENTRY_URL) {
Raven.config(SENTRY_URL, { allowSecretKey: true }).install()
window.addEventListener('unhandledrejection', event => Raven.captureException(event.reason))
}
// init db with defaults if needed
db.init('accounts', [])
db.init('settings', {})
7 years ago
const history = createHistory()
const store = createStore(history)
const rootNode = document.getElementById('app')
store.dispatch(fetchSettings())
const state = store.getState() || {}
const language = getLanguage(state)
const locked = isLocked(state)
if (!locked) {
store.dispatch(fetchAccounts())
}
7 years ago
function r(Comp) {
if (rootNode) {
render(<AppContainer>{Comp}</AppContainer>, rootNode)
}
}
r(<App store={store} history={history} language={language} />)
7 years ago
// Only init events on MainWindow
if (remote.getCurrentWindow().name === 'MainWindow') {
events({ store, locked })
}
7 years ago
if (module.hot) {
module.hot.accept('../components/App', () => {
const NewApp = require('../components/App').default // eslint-disable-line global-require
r(<NewApp store={store} history={history} language={language} />)
7 years ago
})
}