Keep track of channel join status

This makes us behave better when we receive a self-PART message
from the server.
This commit is contained in:
Simon Ser 2021-11-05 11:49:56 +01:00
parent 7b19cf48a4
commit 800f5ceb6a
3 changed files with 44 additions and 13 deletions

View file

@ -283,6 +283,7 @@ export const State = {
type,
server: serverID,
serverInfo: null, // if server
joined: false, // if channel
topic: null, // if channel
members: new irc.CaseMapMap(null, client.cm), // if channel
messages: [],
@ -406,7 +407,10 @@ export const State = {
update = updateBuffer(channel, (buf) => {
let members = new irc.CaseMapMap(buf.members);
members.set(msg.prefix.name, "");
return { members };
let joined = buf.joined || client.isMyNick(msg.prefix.name);
return { members, joined };
});
state = { ...state, ...update };
@ -434,7 +438,10 @@ export const State = {
return updateBuffer(channel, (buf) => {
let members = new irc.CaseMapMap(buf.members);
members.delete(msg.prefix.name);
return { members };
let joined = buf.joined && !client.isMyNick(msg.prefix.name);
return { members, joined };
});
case "KICK":
channel = msg.params[0];