mirror of
https://codeberg.org/emersion/gamja
synced 2025-03-13 07:48:37 +01:00
Fix close() for bouncer networks
This commit is contained in:
parent
5165df718f
commit
94fba920cd
@ -810,16 +810,43 @@ export default class App extends Component {
|
|||||||
|
|
||||||
switch (buf.type) {
|
switch (buf.type) {
|
||||||
case BufferType.SERVER:
|
case BufferType.SERVER:
|
||||||
this.setState({
|
this.setState((state) => {
|
||||||
buffers: new Map(),
|
var buffers = new Map(state.buffers);
|
||||||
activeBuffer: null,
|
for (var [id, b] of state.buffers) {
|
||||||
|
if (b.network === buf.network) {
|
||||||
|
buffers.delete(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var activeBuffer = state.activeBuffer;
|
||||||
|
if (activeBuffer && state.buffers.get(activeBuffer).network === buf.network) {
|
||||||
|
if (buffers.size > 0) {
|
||||||
|
activeBuffer = buffers.keys().next().value;
|
||||||
|
} else {
|
||||||
|
activeBuffer = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { buffers, activeBuffer };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var client = this.clients.get(buf.network);
|
||||||
|
var disconnectAll = client && !client.params.bouncerNetwork && client.enabledCaps["soju.im/bouncer-networks"];
|
||||||
|
|
||||||
this.disconnect(buf.network);
|
this.disconnect(buf.network);
|
||||||
|
|
||||||
this.setState((state) => {
|
this.setState((state) => {
|
||||||
var networks = new Map(state.networks);
|
var networks = new Map(state.networks);
|
||||||
networks.delete(buf.network);
|
networks.delete(buf.network);
|
||||||
return { networks };
|
return { networks };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (disconnectAll) {
|
||||||
|
for (var netID of this.clients.keys()) {
|
||||||
|
this.close({ network: netID, name: SERVER_BUFFER });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: only clear local storage if this network is stored there
|
// TODO: only clear local storage if this network is stored there
|
||||||
if (buf.network == 1 && window.localStorage) {
|
if (buf.network == 1 && window.localStorage) {
|
||||||
localStorage.removeItem("autoconnect");
|
localStorage.removeItem("autoconnect");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user