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