From 44b1f28cb6b0f3be326dbeba18a2105e3f3026b0 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 8 Jul 2020 18:39:24 +0200 Subject: [PATCH] Handle QUIT messages --- components/app.js | 19 ++++++++++++++++++- components/buffer.js | 5 +++++ 2 files changed, 23 insertions(+), 1 deletion(-) 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`