diff --git a/src/main/main.ts b/src/main/main.ts index e9da130e..38df03ee 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -558,6 +558,7 @@ function handleNewServerModal() { teams.push(newTeam); config.set('teams', teams); updateServerInfos([newTeam]); + WindowManager.switchServer(newTeam.name, true); }).catch((e) => { // e is undefined for user cancellation if (e) { diff --git a/src/main/views/viewManager.ts b/src/main/views/viewManager.ts index dc5a18c3..6c177c2d 100644 --- a/src/main/views/viewManager.ts +++ b/src/main/views/viewManager.ts @@ -145,9 +145,9 @@ export class ViewManager { showInitial = () => { if (this.configServers.length) { - const element = this.configServers.find((e) => e.order === this.lastActiveServer || 0); + const element = this.configServers.find((e) => e.order === this.lastActiveServer) || this.configServers.find((e) => e.order === 0); if (element && element.tabs.length) { - let tab = element.tabs.find((tab) => tab.order === element.lastActiveTab || 0); + let tab = element.tabs.find((tab) => tab.order === element.lastActiveTab) || element.tabs.find((tab) => tab.order === 0); if (!tab?.isOpen) { const openTabs = element.tabs.filter((tab) => tab.isOpen); tab = openTabs.find((e) => e.order === 0) || openTabs[0]; diff --git a/src/main/windows/windowManager.ts b/src/main/windows/windowManager.ts index 5b66e79d..e97df7ba 100644 --- a/src/main/windows/windowManager.ts +++ b/src/main/windows/windowManager.ts @@ -357,7 +357,7 @@ function initializeViewManager() { } } -export function switchServer(serverName: string) { +export function switchServer(serverName: string, waitForViewToExist = false) { showMainWindow(); const server = status.config?.teams.find((team) => team.name === serverName); if (!server) { @@ -371,7 +371,16 @@ export function switchServer(serverName: string) { nextTab = openTabs.find((e) => e.order === 0) || openTabs[0]; } const tabViewName = getTabViewName(serverName, nextTab.name); - status.viewManager?.showByName(tabViewName); + if (waitForViewToExist) { + const timeout = setInterval(() => { + if (status.viewManager?.views.has(tabViewName)) { + status.viewManager?.showByName(tabViewName); + clearTimeout(timeout); + } + }, 100); + } else { + status.viewManager?.showByName(tabViewName); + } ipcMain.emit(UPDATE_SHORTCUT_MENU); } diff --git a/src/renderer/components/MainPage.tsx b/src/renderer/components/MainPage.tsx index b81db468..f5d10df0 100644 --- a/src/renderer/components/MainPage.tsx +++ b/src/renderer/components/MainPage.tsx @@ -102,8 +102,8 @@ export default class MainPage extends React.PureComponent { this.topBar = React.createRef(); this.threeDotMenu = React.createRef(); - const firstServer = this.props.teams.find((team) => team.order === this.props.lastActiveTeam || 0); - let firstTab = firstServer?.tabs.find((tab) => tab.order === firstServer.lastActiveTab || 0); + const firstServer = this.props.teams.find((team) => team.order === this.props.lastActiveTeam) || this.props.teams.find((team) => team.order === 0); + let firstTab = firstServer?.tabs.find((tab) => tab.order === firstServer.lastActiveTab) || firstServer?.tabs.find((tab) => tab.order === 0); if (!firstTab?.isOpen) { const openTabs = firstServer?.tabs.filter((tab) => tab.isOpen) || []; firstTab = openTabs?.find((e) => e.order === 0) || openTabs[0];