Skip to content

Commit

Permalink
Remove sensible data from frontend config #1
Browse files Browse the repository at this point in the history
  • Loading branch information
plouc committed Jan 15, 2015
1 parent 8647dd8 commit aa65906
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 18 deletions.
5 changes: 5 additions & 0 deletions mozaik.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
var express = require('express');
var app = express();
var _ = require('lodash');
var hub = require('./src/core/hub');
var config = require('./config');

app.use(express.static(__dirname + '/build'));

app.get('/config', function (req, res) {
res.send(_.omit(config, 'api'));
});

var server = app.listen(config.port, function () {
console.log('MOZAÏK listening at http://%s:%s', config.host, config.port);
});
Expand Down
13 changes: 7 additions & 6 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
var React = require('react');
var Mozaik = require('./core/components/Mozaik.jsx');
var React = require('react');
var Mozaik = require('./core/components/Mozaik.jsx');
var ConfigActions = require('./core/actions/ConfigActions');

require('./ext/collected');

var config = require('./../config');

React.render(
<Mozaik config={config} />,
<Mozaik />,
document.getElementById('hotboard')
);
);

ConfigActions.loadConfig();
7 changes: 7 additions & 0 deletions src/core/actions/ConfigActions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
var Reflux = require('reflux');

var ConfigActions = Reflux.createActions([
'loadConfig'
]);

module.exports = ConfigActions;
14 changes: 12 additions & 2 deletions src/core/actions/DashboardActions.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
var Reflux = require('reflux');

var HotBoardActions = Reflux.createActions([
var DashboardActions = Reflux.createActions([
'setDashboards',
'previousDashboard',
'nextDashboard',
'startRotation'
]);

module.exports = HotBoardActions;
DashboardActions.setDashboards.shouldEmit = function (dashboards) {
// starts dashboard rotation if there is more
// than one dashboard configured
if (dashboards.length > 1) {
DashboardActions.startRotation();
}

return true;
};

module.exports = DashboardActions;
4 changes: 2 additions & 2 deletions src/core/components/Dashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ var Dashboard = React.createClass({
},

componentWillMount() {
this.listenTo(DashboardStore, this.onStoreUpdate);
this.listenTo(DashboardStore, this.onDashboardStoreUpdate);
},

onStoreUpdate(index) {
onDashboardStoreUpdate(index) {
this.setState({
isCurrent: index === this.props.dashboard.index
});
Expand Down
33 changes: 25 additions & 8 deletions src/core/components/Mozaik.jsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,42 @@
var React = require('react');
var Reflux = require('reflux');
var _ = require('lodash');
var Dashboard = require('./Dashboard.jsx');
var Timer = require('./Timer.jsx');
var DashboardActions = require('./../actions/DashboardActions');
var ConfigStore = require('./../stores/ConfigStore');

var Mozaik = React.createClass({
componentWillMount() {
DashboardActions.setDashboards(this.props.config.dashboards);
if (this.props.config.dashboards.length > 1) {
DashboardActions.startRotation();
mixins: [Reflux.ListenerMixin],

getInitialState() {
return {
config: null
}
},

componentWillMount() {
this.listenTo(ConfigStore, this.onConfigStoreUpdate);
},

onConfigStoreUpdate(config) {
this.setState({
config: config
});
},

render() {
var dashboardNodes = _.map(this.props.config.dashboards, (dashboard, index) => {
return (<Dashboard key={index} dashboard={dashboard} />);
if (this.state.config === null) {
return null;
}

var dashboardNodes = _.map(this.state.config.dashboards, (dashboard, index) => {
return <Dashboard key={index} dashboard={dashboard} />;
});

var timerNode = null;
if (this.props.config.dashboards.length > 1) {
timerNode = (<Timer />);
if (this.state.config.dashboards.length > 1) {
timerNode = <Timer />;
}

return (
Expand Down
22 changes: 22 additions & 0 deletions src/core/stores/ConfigStore.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
var Reflux = require('reflux');
var ConfigActions = require('./../actions/ConfigActions');
var DashboardActions = require('./../actions/DashboardActions');
var request = require('superagent');

var ConfigStore = Reflux.createStore({
listenables: ConfigActions,

loadConfig() {
request.get('/config')
.end((err, res) => {
var config = res.body;

this.trigger(res.body);

DashboardActions.setDashboards(config.dashboards);
})
;
}
});

module.exports = ConfigStore;

0 comments on commit aa65906

Please sign in to comment.