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:
parent
7b19cf48a4
commit
800f5ceb6a
3 changed files with 44 additions and 13 deletions
11
state.js
11
state.js
|
@ -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];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue