Make setBufferState merge the new state with the prev one

This commit is contained in:
Simon Ser 2020-06-24 16:02:56 +02:00
parent 250d1c2ea7
commit 9ff1f164e0
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48

View File

@ -58,13 +58,14 @@ export default class App extends Component {
return;
}
var newBuf = updater(buf);
if (buf === newBuf || !newBuf) {
var updated = updater(buf);
if (buf === updated || !updated) {
return;
}
updated = { ...buf, ...updated };
var buffers = new Map(state.buffers);
buffers.set(name, newBuf);
buffers.set(name, updated);
return { buffers };
}, callback);
}
@ -102,10 +103,7 @@ export default class App extends Component {
this.createBuffer(bufName);
this.setBufferState(bufName, (buf) => {
return {
...buf,
messages: buf.messages.concat(msg),
};
return { messages: buf.messages.concat(msg) };
});
}
@ -154,7 +152,7 @@ export default class App extends Component {
var topic = msg.params[2];
this.setBufferState(channel, (buf) => {
return { ...buf, topic };
return { topic };
});
break;
case irc.RPL_NAMREPLY:
@ -168,7 +166,7 @@ export default class App extends Component {
members.set(member.nick, member.prefix);
});
return { ...buf, members };
return { members };
});
break;
case irc.RPL_ENDOFNAMES:
@ -188,7 +186,7 @@ export default class App extends Component {
this.setBufferState(channel, (buf) => {
var members = new Map(buf.members);
members.set(msg.prefix.name, null);
return { ...buf, members };
return { members };
});
if (msg.prefix.name != this.client.nick) {
this.addMessage(channel, msg);
@ -204,7 +202,7 @@ export default class App extends Component {
this.setBufferState(channel, (buf) => {
var members = new Map(buf.members);
members.delete(msg.prefix.name);
return { ...buf, members };
return { members };
});
this.addMessage(channel, msg);
break;
@ -233,7 +231,7 @@ export default class App extends Component {
var topic = msg.params[1];
this.setBufferState(channel, (buf) => {
return { ...buf, topic };
return { topic };
});
this.addMessage(channel, msg);
break;