diff --git a/components/app.js b/components/app.js index 920cb90..6f0e856 100644 --- a/components/app.js +++ b/components/app.js @@ -118,8 +118,6 @@ export default class App extends Component { receipts = new Map(); buffer = createRef(); composer = createRef(); - lastServerID = 0; - lastBufferID = 0; switchToChannel = null; constructor(props) { @@ -413,22 +411,17 @@ export default class App extends Component { } connect(params) { - this.lastServerID++; - var serverID = this.lastServerID; - + var serverID = null; this.setState((state) => { - var servers = new Map(state.servers); - servers.set(serverID, { - id: serverID, - status: ServerStatus.CONNECTING, - isupport: new Map(), - }); - return { servers }; + var update; + [serverID, update] = State.createServer(state); + return update; }); this.setState({ connectParams: params }); var client = new Client(fillConnectParams(params)); this.clients.set(serverID, client); + this.setServerState(serverID, { status: client.status }); client.addEventListener("status", () => { this.setServerState(serverID, { status: client.status }); diff --git a/state.js b/state.js index 60b13c5..50c87e5 100644 --- a/state.js +++ b/state.js @@ -134,6 +134,7 @@ function insertMessage(list, msg) { return list; } +var lastServerID = 0; var lastBufferID = 0; export const State = { @@ -208,6 +209,18 @@ export const State = { throw new Error("Invalid buffer ID type: " + (typeof id)); } }, + createServer(state) { + lastServerID++; + var id = lastServerID; + + var servers = new Map(state.servers); + servers.set(id, { + id, + status: ServerStatus.DISCONNECTED, + isupport: new Map(), + }); + return [id, { servers }]; + }, createBuffer(state, name, serverID, client) { var buf = State.getBuffer(state, { server: serverID, name }); if (buf) {