diff --git a/src/renderer/controllers/prefs-controller.js b/src/renderer/controllers/prefs-controller.js
index 8d8241c3..e6545e7d 100644
--- a/src/renderer/controllers/prefs-controller.js
+++ b/src/renderer/controllers/prefs-controller.js
@@ -16,45 +16,22 @@ module.exports = class PrefsController {
setup: function (cb) {
// initialize preferences
state.window.title = 'Preferences'
- state.unsaved = Object.assign(state.unsaved || {}, {
- prefs: Object.assign({}, state.saved.prefs)
- })
ipcRenderer.send('setAllowNav', false)
cb()
},
destroy: () => {
ipcRenderer.send('setAllowNav', true)
- this.save()
}
})
}
- // Updates a single property in the UNSAVED prefs
- // For example: updatePreferences('foo.bar', 'baz')
- // Call save() to save to config.json
+ // Updates a single property in the saved prefs
+ // For example: updatePreferences('isFileHandler', true)
update (property, value) {
- const path = property.split('.')
- let obj = this.state.unsaved.prefs
- let i
- for (i = 0; i < path.length - 1; i++) {
- if (typeof obj[path[i]] === 'undefined') {
- obj[path[i]] = {}
- }
- obj = obj[path[i]]
- }
- obj[path[i]] = value
- }
+ if (property === 'isFileHandler') ipcRenderer.send('setDefaultFileHandler', value)
+ else if (property === 'startup') ipcRenderer.send('setStartup', value)
- // All unsaved prefs take effect atomically, and are saved to config.json
- save () {
- const state = this.state
- if (state.unsaved.prefs.isFileHandler !== state.saved.prefs.isFileHandler) {
- ipcRenderer.send('setDefaultFileHandler', state.unsaved.prefs.isFileHandler)
- }
- if (state.unsaved.prefs.startup !== state.saved.prefs.startup) {
- ipcRenderer.send('setStartup', state.unsaved.prefs.startup)
- }
- state.saved.prefs = Object.assign(state.saved.prefs || {}, state.unsaved.prefs)
+ this.state.saved.prefs[property] = value
dispatch('stateSaveImmediate')
dispatch('checkDownloadPath')
}
diff --git a/src/renderer/pages/preferences-page.js b/src/renderer/pages/preferences-page.js
index 9f4006e7..52ebe7ee 100644
--- a/src/renderer/pages/preferences-page.js
+++ b/src/renderer/pages/preferences-page.js
@@ -37,7 +37,7 @@ class PreferencesPage extends React.Component {
}}
onChange={this.handleDownloadPathChange}
title='Download location'
- value={this.props.state.unsaved.prefs.downloadPath} />
+ value={this.props.state.saved.prefs.downloadPath} />
)
}
@@ -51,7 +51,7 @@ class PreferencesPage extends React.Component {
@@ -81,10 +81,10 @@ class PreferencesPage extends React.Component {
}
externalPlayerPathSelector () {
- const playerPath = this.props.state.unsaved.prefs.externalPlayerPath
+ const playerPath = this.props.state.saved.prefs.externalPlayerPath
const playerName = this.props.state.getExternalPlayerName()
- const description = this.props.state.unsaved.prefs.openExternalPlayer
+ const description = this.props.state.saved.prefs.openExternalPlayer
? `Torrent media files will always play in ${playerName}.`
: `Torrent media files will play in ${playerName} if WebTorrent cannot play them.`
@@ -162,7 +162,7 @@ class PreferencesPage extends React.Component {
}
setDefaultAppButton () {
- const isFileHandler = this.props.state.unsaved.prefs.isFileHandler
+ const isFileHandler = this.props.state.saved.prefs.isFileHandler
if (isFileHandler) {
return (
@@ -195,7 +195,7 @@ class PreferencesPage extends React.Component {