diff --git a/components/app.js b/components/app.js index 2f7b12e..be9aae1 100644 --- a/components/app.js +++ b/components/app.js @@ -568,12 +568,6 @@ export default class App extends Component { case "JOIN": var channel = msg.params[0]; - this.createBuffer(serverID, channel); - this.setBufferState({ server: serverID, name: channel }, (buf) => { - var members = new irc.CaseMapMap(buf.members); - members.set(msg.prefix.name, ""); - return { members }; - }); if (!client.isMyNick(msg.prefix.name)) { this.addMessage(serverID, channel, msg); } @@ -585,11 +579,6 @@ export default class App extends Component { case "PART": var channel = msg.params[0]; - this.setBufferState({ server: serverID, name: channel }, (buf) => { - var members = new irc.CaseMapMap(buf.members); - members.delete(msg.prefix.name); - return { members }; - }); this.addMessage(serverID, channel, msg); if (client.isMyNick(msg.prefix.name)) { diff --git a/state.js b/state.js index 1e72464..2360abc 100644 --- a/state.js +++ b/state.js @@ -296,6 +296,28 @@ export const State = { }); } break; + case "JOIN": + var channel = msg.params[0]; + + if (client.isMyNick(msg.prefix.name)) { + var [id, update] = State.createBuffer(state, channel, serverID, client); + state = { ...state, ...update }; + } + + var update = updateBuffer(channel, (buf) => { + var members = new irc.CaseMapMap(buf.members); + members.set(msg.prefix.name, ""); + return { members }; + }); + return { ...state, ...update }; + case "PART": + var channel = msg.params[0]; + + return updateBuffer(channel, (buf) => { + var members = new irc.CaseMapMap(buf.members); + members.delete(msg.prefix.name); + return { members }; + }); case "KICK": var channel = msg.params[0]; var nick = msg.params[1];