2015-05-20 08:14:44 +02:00

64 lines
1.2 KiB
JavaScript

var Reflux = require('reflux');
var Immutable = require('immutable');
var _ = require('lodash');
var actions = require('../actions/server');
var tabActions = require('../actions/tab');
var servers = Immutable.Map();
var Server = Immutable.Record({
nick: null,
name: null
});
var serverStore = Reflux.createStore({
init() {
this.listenToMany(actions);
},
connect(server, nick, opts) {
var i = server.indexOf(':');
if (i > 0) {
server = server.slice(0, i);
}
servers = servers.set(server, new Server({
nick: nick,
name: opts.name || server
}));
this.trigger(servers);
tabActions.select(server);
},
disconnect(server) {
servers = servers.delete(server);
this.trigger(servers);
},
setNick(nick, server) {
servers = servers.update(server, s => s.set('nick', nick));
this.trigger(servers);
},
load(storedServers) {
_.each(storedServers, function(server) {
servers = servers.set(server.address, new Server(server));
});
this.trigger(servers);
},
getNick(server) {
return servers.getIn([server, 'nick']);
},
getName(server) {
return servers.getIn([server, 'name']);
},
getState() {
return servers;
}
});
module.exports = serverStore;