diff --git a/app/main/index.ts b/app/main/index.ts index ff635b622..b3af41aef 100644 --- a/app/main/index.ts +++ b/app/main/index.ts @@ -365,6 +365,7 @@ app.on('ready', () => { }); app.on('before-quit', () => { + mainWindow.webContents.send('save-domains'); isQuitting = true; }); diff --git a/app/renderer/js/main.ts b/app/renderer/js/main.ts index 7452bc659..86aaf17ed 100644 --- a/app/renderer/js/main.ts +++ b/app/renderer/js/main.ts @@ -94,7 +94,7 @@ class ServerManagerView { $fullscreenEscapeKey: string; loading: AnyObject; activeTabIndex: number; - servers: ServerOrFunctionalTab[]; + servers: any[]; tabs: ServerOrFunctionalTab[]; functionalTabs: AnyObject; tabIndex: number; @@ -135,7 +135,7 @@ class ServerManagerView { this.loading = {}; this.activeTabIndex = -1; - this.servers = []; + this.servers = DomainUtil.getDomains(); this.tabs = []; this.presetOrgs = []; this.functionalTabs = {}; @@ -245,18 +245,13 @@ class ServerManagerView { onEnd(): void { const newServers: any[] | ServerOrFunctionalTab[] = []; - const tabMap: any = {}; const tabElements = document.querySelectorAll('#tabs-container .tab'); tabElements.forEach((el, index) => { const oldIndex = Number(el.getAttribute('data-tab-id')) % this.servers.length; - tabMap[index] = oldIndex; - newServers.push(this.servers[index]); + newServers.push(this.servers[oldIndex]); el.setAttribute('data-tab-id', index.toString()); }); - - for (let server = 0; server < newServers.length; ++server) { - DomainUtil.updateDomain(server, newServers[tabMap[server]]); - } + this.servers = newServers; this.reloadView(); } @@ -336,7 +331,7 @@ class ServerManagerView { } } - initTabs(): void { + initTabs(refresh: boolean = false): void { const servers = DomainUtil.getDomains(); this.servers = servers; if (servers.length > 0) { @@ -696,14 +691,14 @@ class ServerManagerView { this.$webviewsContainer.innerHTML = ''; } - reloadView(): void { + reloadView(refresh: boolean = false): void { // Save and remember the index of last active tab so that we can use it later const lastActiveTab = this.tabs[this.activeTabIndex].props.index; ConfigUtil.setConfigItem('lastActiveTab', lastActiveTab); // Destroy the current view and re-initiate it this.destroyView(); - this.initTabs(); + this.initTabs(refresh); this.initServerActions(); } @@ -808,6 +803,12 @@ class ServerManagerView { }); } + ipcRenderer.on('save-domains', () => { + for (let server = 0; server < this.servers.length; ++server) { + DomainUtil.updateDomain(server, this.servers[server]); + } + }); + ipcRenderer.on('open-settings', (event: Event, settingNav: string) => { this.openSettings(settingNav); });