Show last IRC connection error in status tab, log IRC connection errors

This commit is contained in:
Ken-Håvard Lieng 2017-07-02 03:31:00 +02:00
parent 786d8013b9
commit 18aff3ded6
19 changed files with 294 additions and 189 deletions

View file

@ -4,11 +4,16 @@ import createReducer from 'util/createReducer';
import { getSelectedTab, updateSelection } from './tab';
import * as actions from './actions';
const Status = Record({
connected: false,
error: null
});
const Server = Record({
nick: '',
editedNick: null,
name: '',
connected: false
status: new Status()
});
export const getServers = state => state.servers;
@ -31,6 +36,12 @@ export const getCurrentServerName = createSelector(
(servers, tab) => servers.getIn([tab.server, 'name'])
);
export const getCurrentServerStatus = createSelector(
getServers,
getSelectedTab,
(servers, tab) => servers.getIn([tab.server, 'status'])
);
export default createReducer(Map(), {
[actions.CONNECT](state, { host, nick, options }) {
if (!state.has(host)) {
@ -81,27 +92,27 @@ export default createReducer(Map(), {
return state.withMutations(s => {
data.forEach(server => {
server.status = new Status(server.status);
s.set(server.host, new Server(server));
});
});
},
[actions.socket.CONNECTION_UPDATE](state, action) {
return state.withMutations(s =>
Object.keys(action).forEach(server => {
if (s.has(server)) {
s.setIn([server, 'connected'], action[server]);
}
})
);
if (state.has(action.server)) {
return state.setIn([action.server, 'status'], new Status(action));
}
return state;
}
});
export function connect(server, nick, options) {
let host = server;
let port;
const i = server.indexOf(':');
if (i > 0) {
host = server.slice(0, i);
port = server.slice(i + 1);
}
return {
@ -112,7 +123,8 @@ export function connect(server, nick, options) {
socket: {
type: 'connect',
data: {
server,
host,
port,
nick,
username: options.username || nick,
password: options.password,