diff --git a/src/browser/components/MainPage.jsx b/src/browser/components/MainPage.jsx index 83689b91..8c4aa4bb 100644 --- a/src/browser/components/MainPage.jsx +++ b/src/browser/components/MainPage.jsx @@ -38,7 +38,8 @@ const MainPage = React.createClass({ propTypes: { disablewebsecurity: React.PropTypes.bool.isRequired, onUnreadCountChange: React.PropTypes.func.isRequired, - teams: React.PropTypes.array.isRequired + teams: React.PropTypes.array.isRequired, + onTeamConfigChange: React.PropTypes.func.isRequired }, getInitialState() { @@ -319,6 +320,7 @@ const MainPage = React.createClass({ }); this.props.teams.push(newTeam); this.render(); + this.props.onTeamConfigChange(this.props.teams); }} /> ); diff --git a/src/browser/config/AppConfig.js b/src/browser/config/AppConfig.js index 06496970..c235db5c 100644 --- a/src/browser/config/AppConfig.js +++ b/src/browser/config/AppConfig.js @@ -1,12 +1,22 @@ const settings = require('../../common/settings'); const {remote} = require('electron'); -var config; -try { - const configFile = remote.app.getPath('userData') + '/config.json'; - config = settings.readFileSync(configFile); -} catch (e) { - config = {}; +class AppConfig { + constructor(file) { + this.fileName = file; + try { + this.data = settings.readFileSync(file); + } catch (e) { + this.data = { + teams: [] + }; + } + } + + set(key, value) { + this.data[key] = value; + settings.writeFileSync(this.fileName, this.data); + } } -module.exports = config; +module.exports = new AppConfig(remote.app.getPath('userData') + '/config.json'); diff --git a/src/browser/index.jsx b/src/browser/index.jsx index 1c051744..18a7476a 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -14,7 +14,7 @@ const badge = require('./js/badge'); remote.getCurrentWindow().removeAllListeners('focus'); -if (AppConfig.teams.length === 0) { +if (AppConfig.data.teams.length === 0) { window.location = 'settings.html'; } @@ -33,7 +33,7 @@ function showUnreadBadgeWindows(unreadCount, mentionCount) { if (mentionCount > 0) { const dataURL = badge.createDataURL(mentionCount.toString()); sendBadge(dataURL, 'You have unread mentions (' + mentionCount + ')'); - } else if (unreadCount > 0 && config.showUnreadBadge) { + } else if (unreadCount > 0 && AppConfig.data.showUnreadBadge) { const dataURL = badge.createDataURL('•'); sendBadge(dataURL, 'You have unread channels (' + unreadCount + ')'); } else { @@ -44,7 +44,7 @@ function showUnreadBadgeWindows(unreadCount, mentionCount) { function showUnreadBadgeOSX(unreadCount, mentionCount) { if (mentionCount > 0) { remote.app.dock.setBadge(mentionCount.toString()); - } else if (unreadCount > 0 && config.showUnreadBadge) { + } else if (unreadCount > 0 && AppConfig.data.showUnreadBadge) { remote.app.dock.setBadge('•'); } else { remote.app.dock.setBadge(''); @@ -82,11 +82,16 @@ function showUnreadBadge(unreadCount, mentionCount) { } } +function teamConfigChange(teams) { + AppConfig.set('teams', teams); +} + ReactDOM.render( , document.getElementById('content') );