Load all components* through a central broker so we can overrride them with different ones

* only one place actually uses it currently
This commit is contained in:
David Baker 2015-06-16 18:18:55 +01:00
parent acaff68748
commit c9a546b73b
2 changed files with 47 additions and 4 deletions

40
src/ComponentBroker.js Normal file
View file

@ -0,0 +1,40 @@
var components = {};
function load(name) {
var types = [
'atoms',
'molecules',
'organisms',
'templates',
'pages'
];
var ex = null;
for (var i = 0; i < types.length; ++i) {
try {
var module = require("./"+types[i]+"/"+name);
components[name] = module;
return module;
} catch (err) {
ex = err;
}
}
throw ex;
};
module.exports = {
get: function(name) {
if (components[name]) return components[name];
components[name] = load(name);
return components[name];
},
set: function(name, module) {
components[name] = module;
}
};
require('./organisms/RoomList');
require('./organisms/RoomView');
require('./molecules/MatrixToolbar');
require('./templates/Login');

View file

@ -1,11 +1,14 @@
var React = require('react');
var ComponentBroker = require('../ComponentBroker');
var RoomList = require('../organisms/RoomList');
var RoomView = require('../organisms/RoomView');
var MatrixToolbar = require('../molecules/MatrixToolbar');
var RoomList = ComponentBroker.get('RoomList');
var RoomView = ComponentBroker.get('RoomView');
var MatrixToolbar = ComponentBroker.get('MatrixToolbar');
var Login = ComponentBroker.get('Login');
// should be atomised
var Loader = require("react-loader");
var Login = require('../templates/Login');
var mxCliPeg = require("../MatrixClientPeg");