From a1fd30f4f589ce74f2cf3a34d8127b036310d01a Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Sat, 1 Oct 2016 01:43:58 -0700 Subject: [PATCH] cache mui theme after it is generated --- src/renderer/main.js | 1 + src/renderer/pages/app.js | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/renderer/main.js b/src/renderer/main.js index ec7b6bf7..a48344b5 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -40,6 +40,7 @@ const telemetry = require('./lib/telemetry') const sound = require('./lib/sound') const TorrentPlayer = require('./lib/torrent-player') +// Perf optimization: Needed immediately, so do not lazy load it below const TorrentListController = require('./controllers/torrent-list-controller') // Required by Material UI -- adds `onTouchTap` event diff --git a/src/renderer/pages/app.js b/src/renderer/pages/app.js index d44e4137..5d9ec807 100644 --- a/src/renderer/pages/app.js +++ b/src/renderer/pages/app.js @@ -7,6 +7,8 @@ const getMuiTheme = require('material-ui/styles/getMuiTheme').default const MuiThemeProvider = require('material-ui/styles/MuiThemeProvider').default const Header = require('../components/header') + +// Perf optimization: Needed immediately, so do not lazy load it below const TorrentListPage = require('./torrent-list-page') const Views = { @@ -38,6 +40,9 @@ darkBaseTheme.palette.accent1Color = colors.redA200 darkBaseTheme.palette.accent2Color = colors.redA400 darkBaseTheme.palette.accent3Color = colors.redA100 +let darkMuiTheme +let lightMuiTheme + class App extends React.Component { render () { const state = this.props.state @@ -57,8 +62,12 @@ class App extends React.Component { if (state.window.isFocused) cls.push('is-focused') if (hideControls) cls.push('hide-video-controls') - const vdom = ( - + if (!darkMuiTheme) { + darkMuiTheme = getMuiTheme(darkBaseTheme) + } + + return ( +
{this.getErrorPopover()} @@ -67,8 +76,6 @@ class App extends React.Component {
) - - return vdom } getErrorPopover () { @@ -93,13 +100,16 @@ class App extends React.Component { const state = this.props.state if (!state.modal) return - const lightBaseTheme = require('material-ui/styles/baseThemes/lightBaseTheme').default - lightBaseTheme.fontFamily = fontFamily - lightBaseTheme.userAgent = false + if (!lightMuiTheme) { + const lightBaseTheme = require('material-ui/styles/baseThemes/lightBaseTheme').default + lightBaseTheme.fontFamily = fontFamily + lightBaseTheme.userAgent = false + lightMuiTheme = getMuiTheme(lightBaseTheme) + } const ModalContents = Modals[state.modal.id]() return ( - +