diff --git a/components/app.js b/components/app.js index 779d28d..4a659f2 100644 --- a/components/app.js +++ b/components/app.js @@ -206,7 +206,7 @@ export default class App extends Component { } } - if (msg.prefix.name != this.client.nick && msg.command != "PART") { + if (msg.prefix.name != this.client.nick && (msg.command != "PART" && msg.comand != "QUIT")) { this.createBuffer(bufName); } @@ -342,6 +342,23 @@ export default class App extends Component { }); this.addMessage(channel, msg); break; + case "QUIT": + var affectedBuffers = []; + this.setState((state) => { + var buffers = new Map(state.buffers); + state.buffers.forEach((buf) => { + if (!buf.members.has(msg.prefix.name) && buf.name != msg.prefix.name) { + return; + } + var members = new Map(buf.members); + members.delete(msg.prefix.name); + buffers.set(buf.name, { ...buf, members }); + affectedBuffers.push(buf.name); + }); + return { buffers }; + }); + affectedBuffers.forEach((name) => this.addMessage(name, msg)); + break; case "NICK": var newNick = msg.params[0]; diff --git a/components/buffer.js b/components/buffer.js index eec6687..677a192 100644 --- a/components/buffer.js +++ b/components/buffer.js @@ -71,6 +71,11 @@ function LogLine(props) { ${createNick(msg.prefix.name)} has left `; break; + case "QUIT": + content = html` + ${createNick(msg.prefix.name)} has quit + `; + break; case "NICK": var newNick = msg.params[0]; content = html`