Handle kick, rename server to network
This commit is contained in:
parent
a33157ff84
commit
6985dd16da
65 changed files with 2650 additions and 2179 deletions
|
@ -23,9 +23,9 @@ export const getSelectedMessages = createSelector(
|
|||
getSelectedTab,
|
||||
getMessages,
|
||||
(tab, messages) => {
|
||||
const target = tab.name || tab.server;
|
||||
if (has(messages, [tab.server, target])) {
|
||||
return messages[tab.server][target];
|
||||
const target = tab.name || tab.network;
|
||||
if (has(messages, [tab.network, target])) {
|
||||
return messages[tab.network][target];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
@ -39,12 +39,12 @@ export const getHasMoreMessages = createSelector(
|
|||
}
|
||||
);
|
||||
|
||||
function init(state, server, tab) {
|
||||
if (!state[server]) {
|
||||
state[server] = {};
|
||||
function init(state, network, tab) {
|
||||
if (!state[network]) {
|
||||
state[network] = {};
|
||||
}
|
||||
if (!state[server][tab]) {
|
||||
state[server][tab] = [];
|
||||
if (!state[network][tab]) {
|
||||
state[network][tab] = [];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,6 +117,13 @@ function renderEvents(events) {
|
|||
|
||||
return [renderNick(oldNick), ' changed nick to ', renderNick(newNick)];
|
||||
}
|
||||
|
||||
if (first.type === 'kick') {
|
||||
const [kicked, by] = first.params;
|
||||
|
||||
return [renderNick(by), ' kicked ', renderNick(kicked)];
|
||||
}
|
||||
|
||||
if (first.type === 'topic') {
|
||||
const [nick, newTopic] = first.params;
|
||||
const topic = colorify(linkify(newTopic));
|
||||
|
@ -176,14 +183,14 @@ let nextID = 0;
|
|||
function initMessage(
|
||||
state,
|
||||
message,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
wrapWidth,
|
||||
charWidth,
|
||||
windowWidth,
|
||||
prepend
|
||||
) {
|
||||
const messages = state[server][tab];
|
||||
const messages = state[network][tab];
|
||||
|
||||
if (messages.length > 0 && !prepend) {
|
||||
const lastMessage = messages[messages.length - 1];
|
||||
|
@ -280,7 +287,7 @@ function isSameDay(d1, d2) {
|
|||
function reducerPrependMessages(
|
||||
state,
|
||||
messages,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
wrapWidth,
|
||||
charWidth,
|
||||
|
@ -293,7 +300,7 @@ function reducerPrependMessages(
|
|||
initMessage(
|
||||
state,
|
||||
message,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
wrapWidth,
|
||||
charWidth,
|
||||
|
@ -307,7 +314,7 @@ function reducerPrependMessages(
|
|||
msgs.push(message);
|
||||
}
|
||||
|
||||
const m = state[server][tab];
|
||||
const m = state[network][tab];
|
||||
|
||||
if (m.length > 0) {
|
||||
const lastNewMessage = msgs[msgs.length - 1];
|
||||
|
@ -323,8 +330,8 @@ function reducerPrependMessages(
|
|||
m.unshift(...msgs);
|
||||
}
|
||||
|
||||
function reducerAddMessage(message, server, tab, state) {
|
||||
const messages = state[server][tab];
|
||||
function reducerAddMessage(message, network, tab, state) {
|
||||
const messages = state[network][tab];
|
||||
|
||||
if (messages.length > 0) {
|
||||
const lastMessage = messages[messages.length - 1];
|
||||
|
@ -341,34 +348,34 @@ export default createReducer(
|
|||
{
|
||||
[actions.ADD_MESSAGE](
|
||||
state,
|
||||
{ server, tab, message, wrapWidth, charWidth, windowWidth }
|
||||
{ network, tab, message, wrapWidth, charWidth, windowWidth }
|
||||
) {
|
||||
init(state, server, tab);
|
||||
init(state, network, tab);
|
||||
|
||||
const shouldAdd = initMessage(
|
||||
state,
|
||||
message,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
wrapWidth,
|
||||
charWidth,
|
||||
windowWidth
|
||||
);
|
||||
if (shouldAdd) {
|
||||
reducerAddMessage(message, server, tab, state);
|
||||
reducerAddMessage(message, network, tab, state);
|
||||
}
|
||||
},
|
||||
|
||||
[actions.ADD_MESSAGES](
|
||||
state,
|
||||
{ server, tab, messages, prepend, wrapWidth, charWidth, windowWidth }
|
||||
{ network, tab, messages, prepend, wrapWidth, charWidth, windowWidth }
|
||||
) {
|
||||
if (prepend) {
|
||||
init(state, server, tab);
|
||||
init(state, network, tab);
|
||||
reducerPrependMessages(
|
||||
state,
|
||||
messages,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
wrapWidth,
|
||||
charWidth,
|
||||
|
@ -376,45 +383,45 @@ export default createReducer(
|
|||
);
|
||||
} else {
|
||||
if (!messages[0].tab) {
|
||||
init(state, server, tab);
|
||||
init(state, network, tab);
|
||||
}
|
||||
|
||||
messages.forEach(message => {
|
||||
if (message.tab) {
|
||||
init(state, server, message.tab);
|
||||
init(state, network, message.tab);
|
||||
}
|
||||
|
||||
const shouldAdd = initMessage(
|
||||
state,
|
||||
message,
|
||||
server,
|
||||
network,
|
||||
message.tab || tab,
|
||||
wrapWidth,
|
||||
charWidth,
|
||||
windowWidth
|
||||
);
|
||||
if (shouldAdd) {
|
||||
reducerAddMessage(message, server, message.tab || tab, state);
|
||||
reducerAddMessage(message, network, message.tab || tab, state);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
[actions.DISCONNECT](state, { server }) {
|
||||
delete state[server];
|
||||
[actions.DISCONNECT](state, { network }) {
|
||||
delete state[network];
|
||||
},
|
||||
|
||||
[actions.PART](state, { server, channels }) {
|
||||
channels.forEach(channel => delete state[server][channel]);
|
||||
[actions.PART](state, { network, channels }) {
|
||||
channels.forEach(channel => delete state[network][channel]);
|
||||
},
|
||||
|
||||
[actions.CLOSE_PRIVATE_CHAT](state, { server, nick }) {
|
||||
delete state[server][nick];
|
||||
[actions.CLOSE_PRIVATE_CHAT](state, { network, nick }) {
|
||||
delete state[network][nick];
|
||||
},
|
||||
|
||||
[actions.socket.CHANNEL_FORWARD](state, { server, old }) {
|
||||
if (state[server]) {
|
||||
delete state[server][old];
|
||||
[actions.socket.CHANNEL_FORWARD](state, { network, old }) {
|
||||
if (state[network]) {
|
||||
delete state[network][old];
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -422,9 +429,9 @@ export default createReducer(
|
|||
state,
|
||||
{ wrapWidth, charWidth, windowWidth }
|
||||
) {
|
||||
Object.keys(state).forEach(server =>
|
||||
Object.keys(state[server]).forEach(target =>
|
||||
state[server][target].forEach(message => {
|
||||
Object.keys(state).forEach(network =>
|
||||
Object.keys(state[network]).forEach(target =>
|
||||
state[network][target].forEach(message => {
|
||||
if (message.type === 'date') {
|
||||
return;
|
||||
}
|
||||
|
@ -441,7 +448,7 @@ export default createReducer(
|
|||
);
|
||||
},
|
||||
|
||||
[actions.socket.SERVERS](state, { data }) {
|
||||
[actions.socket.NETWORKS](state, { data }) {
|
||||
if (data) {
|
||||
data.forEach(({ host }) => {
|
||||
state[host] = {};
|
||||
|
@ -451,9 +458,9 @@ export default createReducer(
|
|||
}
|
||||
);
|
||||
|
||||
export function getMessageTab(server, to) {
|
||||
export function getMessageTab(network, to) {
|
||||
if (!to || to === '*' || (!isChannel(to) && to.indexOf('.') !== -1)) {
|
||||
return server;
|
||||
return network;
|
||||
}
|
||||
return to;
|
||||
}
|
||||
|
@ -474,7 +481,7 @@ export function fetchMessages() {
|
|||
socket: {
|
||||
type: 'fetch_messages',
|
||||
data: {
|
||||
server: tab.server,
|
||||
network: tab.network,
|
||||
channel: tab.name,
|
||||
next: first.id
|
||||
}
|
||||
|
@ -484,10 +491,10 @@ export function fetchMessages() {
|
|||
};
|
||||
}
|
||||
|
||||
export function addFetchedMessages(server, tab) {
|
||||
export function addFetchedMessages(network, tab) {
|
||||
return {
|
||||
type: actions.ADD_FETCHED_MESSAGES,
|
||||
server,
|
||||
network,
|
||||
tab
|
||||
};
|
||||
}
|
||||
|
@ -501,17 +508,17 @@ export function updateMessageHeight(wrapWidth, charWidth, windowWidth) {
|
|||
};
|
||||
}
|
||||
|
||||
export function sendMessage(content, to, server) {
|
||||
export function sendMessage(content, to, network) {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
const { wrapWidth, charWidth, windowWidth } = getApp(state);
|
||||
|
||||
dispatch({
|
||||
type: actions.ADD_MESSAGE,
|
||||
server,
|
||||
network,
|
||||
tab: to,
|
||||
message: {
|
||||
from: state.servers[server].nick,
|
||||
from: state.networks[network].nick,
|
||||
content
|
||||
},
|
||||
wrapWidth,
|
||||
|
@ -519,21 +526,21 @@ export function sendMessage(content, to, server) {
|
|||
windowWidth,
|
||||
socket: {
|
||||
type: 'message',
|
||||
data: { content, to, server }
|
||||
data: { content, to, network }
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function addMessage(message, server, to) {
|
||||
const tab = getMessageTab(server, to);
|
||||
export function addMessage(message, network, to) {
|
||||
const tab = getMessageTab(network, to);
|
||||
|
||||
return (dispatch, getState) => {
|
||||
const { wrapWidth, charWidth, windowWidth } = getApp(getState());
|
||||
|
||||
dispatch({
|
||||
type: actions.ADD_MESSAGE,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
message,
|
||||
wrapWidth,
|
||||
|
@ -543,8 +550,8 @@ export function addMessage(message, server, to) {
|
|||
};
|
||||
}
|
||||
|
||||
export function addMessages(messages, server, to, prepend, next) {
|
||||
const tab = getMessageTab(server, to);
|
||||
export function addMessages(messages, network, to, prepend, next) {
|
||||
const tab = getMessageTab(network, to);
|
||||
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
|
@ -558,7 +565,7 @@ export function addMessages(messages, server, to, prepend, next) {
|
|||
|
||||
dispatch({
|
||||
type: actions.ADD_MESSAGES,
|
||||
server,
|
||||
network,
|
||||
tab,
|
||||
messages,
|
||||
prepend,
|
||||
|
@ -569,7 +576,7 @@ export function addMessages(messages, server, to, prepend, next) {
|
|||
};
|
||||
}
|
||||
|
||||
export function addEvent(server, tab, type, ...params) {
|
||||
export function addEvent(network, tab, type, ...params) {
|
||||
return addMessage(
|
||||
{
|
||||
type: 'info',
|
||||
|
@ -581,12 +588,12 @@ export function addEvent(server, tab, type, ...params) {
|
|||
}
|
||||
]
|
||||
},
|
||||
server,
|
||||
network,
|
||||
tab
|
||||
);
|
||||
}
|
||||
|
||||
export function broadcastEvent(server, channels, type, ...params) {
|
||||
export function broadcastEvent(network, channels, type, ...params) {
|
||||
const now = unix();
|
||||
|
||||
return addMessages(
|
||||
|
@ -601,29 +608,29 @@ export function broadcastEvent(server, channels, type, ...params) {
|
|||
}
|
||||
]
|
||||
})),
|
||||
server
|
||||
network
|
||||
);
|
||||
}
|
||||
|
||||
export function broadcast(message, server, channels) {
|
||||
export function broadcast(message, network, channels) {
|
||||
return addMessages(
|
||||
channels.map(channel => ({
|
||||
tab: channel,
|
||||
content: message,
|
||||
type: 'info'
|
||||
})),
|
||||
server
|
||||
network
|
||||
);
|
||||
}
|
||||
|
||||
export function print(message, server, channel, type) {
|
||||
export function print(message, network, channel, type) {
|
||||
if (Array.isArray(message)) {
|
||||
return addMessages(
|
||||
message.map(line => ({
|
||||
content: line,
|
||||
type
|
||||
})),
|
||||
server,
|
||||
network,
|
||||
channel
|
||||
);
|
||||
}
|
||||
|
@ -633,32 +640,32 @@ export function print(message, server, channel, type) {
|
|||
content: message,
|
||||
type
|
||||
},
|
||||
server,
|
||||
network,
|
||||
channel
|
||||
);
|
||||
}
|
||||
|
||||
export function inform(message, server, channel) {
|
||||
return print(message, server, channel, 'info');
|
||||
export function inform(message, network, channel) {
|
||||
return print(message, network, channel, 'info');
|
||||
}
|
||||
|
||||
export function runCommand(command, channel, server) {
|
||||
export function runCommand(command, channel, network) {
|
||||
return {
|
||||
type: actions.COMMAND,
|
||||
command,
|
||||
channel,
|
||||
server
|
||||
network
|
||||
};
|
||||
}
|
||||
|
||||
export function raw(message, server) {
|
||||
export function raw(message, network) {
|
||||
return {
|
||||
type: actions.RAW,
|
||||
message,
|
||||
server,
|
||||
network,
|
||||
socket: {
|
||||
type: 'raw',
|
||||
data: { message, server }
|
||||
data: { message, network }
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue