From 9df8f914ff07f532d8de7adfc35d05893f761027 Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:46:32 -0500 Subject: [PATCH] Fixed issues with loading the app from cold when deep linking (#3201) * Fixed issues with loading the app from cold when deep linking * Don't call show() before the window is created on Windows (cherry picked from commit 1fe94eb167cf26ebf23e9c766127f1f18233b804) --- src/main/app/app.ts | 1 - src/main/app/utils.ts | 10 +++++++--- src/main/views/viewManager.ts | 8 +++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/app/app.ts b/src/main/app/app.ts index e8dd4f90e86..a22684b214d 100644 --- a/src/main/app/app.ts +++ b/src/main/app/app.ts @@ -29,7 +29,6 @@ export function handleAppSecondInstance(event: Event, argv: string[]) { // Protocol handler for win32 // argv: An array of the second instance’s (command line / deep linked) arguments - MainWindow.show(); const deeplinkingURL = getDeeplinkingURL(argv); if (deeplinkingURL) { openDeepLink(deeplinkingURL); diff --git a/src/main/app/utils.ts b/src/main/app/utils.ts index c5f7ac41703..34c019056ae 100644 --- a/src/main/app/utils.ts +++ b/src/main/app/utils.ts @@ -8,7 +8,7 @@ import type {BrowserWindow, Rectangle} from 'electron'; import {app, Menu, session, dialog, nativeImage, screen} from 'electron'; import isDev from 'electron-is-dev'; -import {APP_MENU_WILL_CLOSE} from 'common/communication'; +import {APP_MENU_WILL_CLOSE, MAIN_WINDOW_CREATED} from 'common/communication'; import Config from 'common/config'; import JsonFileManager from 'common/JsonFileManager'; import {Logger} from 'common/log'; @@ -38,8 +38,12 @@ const log = new Logger('App.Utils'); export function openDeepLink(deeplinkingUrl: string) { try { - MainWindow.show(); - ViewManager.handleDeepLink(deeplinkingUrl); + if (MainWindow.get()) { + MainWindow.show(); + ViewManager.handleDeepLink(deeplinkingUrl); + } else { + MainWindow.on(MAIN_WINDOW_CREATED, () => ViewManager.handleDeepLink(deeplinkingUrl)); + } } catch (err) { log.error(`There was an error opening the deeplinking url: ${err}`); } diff --git a/src/main/views/viewManager.ts b/src/main/views/viewManager.ts index c2147fac173..61097eeb6fc 100644 --- a/src/main/views/viewManager.ts +++ b/src/main/views/viewManager.ts @@ -100,9 +100,11 @@ export class ViewManager { } private init = () => { - LoadingScreen.show(); - ServerManager.getAllServers().forEach((server) => this.loadServer(server)); - this.showInitial(); + if (ServerManager.hasServers()) { + LoadingScreen.show(); + ServerManager.getAllServers().forEach((server) => this.loadServer(server)); + this.showInitial(); + } }; private handleDeveloperModeUpdated = (json: DeveloperSettings) => {