From 66346ce9cc4b465be8272216c75f3ad082efff18 Mon Sep 17 00:00:00 2001 From: Kiran Niranjan Date: Mon, 25 Mar 2024 14:30:59 +0530 Subject: [PATCH] SDA-4507 (Add validation for copying old global config file) (#2116) * SDA-4507 - Add validation for copying old global config file * SDA-4507 - Read from default after copying global config * SDA-4507 - Force welcome screen in user config url is not configured correctly --- spec/plistHandler.spec.ts | 1 + src/app/config-handler.ts | 18 ++++++++++--- src/app/plist-handler.ts | 54 +++++++++++++++++++++++++++------------ src/app/window-handler.ts | 19 ++++++++++---- 4 files changed, 67 insertions(+), 25 deletions(-) diff --git a/spec/plistHandler.spec.ts b/spec/plistHandler.spec.ts index ead59140..d6d966ae 100644 --- a/spec/plistHandler.spec.ts +++ b/spec/plistHandler.spec.ts @@ -50,6 +50,7 @@ describe('Plist Handler', () => { userDataPath: undefined, whitelistUrl: undefined, chromeFlags: undefined, + latestAutoUpdateChannelEnabled: undefined, }); }); }); diff --git a/src/app/config-handler.ts b/src/app/config-handler.ts index 1be3d17b..b7ec2250 100644 --- a/src/app/config-handler.ts +++ b/src/app/config-handler.ts @@ -724,10 +724,10 @@ class Config { /** * Overwrites the global config file with the backed up config file */ - public copyGlobalConfig(settings: IConfig) { + public copyGlobalConfig(settings: IConfig, appGlobalConfig: IConfig) { try { if (settings) { - setPlistFromPreviousSettings(settings); + setPlistFromPreviousSettings(settings, appGlobalConfig); fs.unlinkSync(this.tempGlobalConfigFilePath); } } catch (e) { @@ -813,7 +813,19 @@ class Config { this.tempGlobalConfigFilePath, this.globalConfig, ); - this.copyGlobalConfig(this.globalConfig as IConfig); + + let appGlobalConfigData = {} as IConfig; + if (fs.existsSync(this.globalConfigPath)) { + appGlobalConfigData = this.parseConfigData( + fs.readFileSync(this.globalConfigPath, 'utf8'), + ) as IConfig; + } + this.copyGlobalConfig( + this.globalConfig as IConfig, + appGlobalConfigData, + ); + // After everything is set from previous SDA version + this.globalConfig = getAllUserDefaults(); return; } if (!this.installVariant || this.installVariant === '') { diff --git a/src/app/plist-handler.ts b/src/app/plist-handler.ts index 24a1ba92..ba60796f 100644 --- a/src/app/plist-handler.ts +++ b/src/app/plist-handler.ts @@ -34,6 +34,7 @@ const GENERAL_SETTINGS = { userDataPath: 'string', chromeFlags: 'string', betaAutoUpdateChannelEnabled: 'boolean', + latestAutoUpdateChannelEnabled: 'boolean', }; const NOTIFICATION_SETTINGS = { @@ -97,30 +98,49 @@ export const getAllUserDefaults = (): IConfig => { return settings; }; -export const setPlistFromPreviousSettings = (settings: IConfig) => { +export const setPlistFromPreviousSettings = ( + settings: any, + appGlobalConfig: IConfig, +) => { Object.keys(GENERAL_SETTINGS).map((key) => { - systemPreferences.setUserDefault(key, GENERAL_SETTINGS[key], settings[key]); + let value = settings?.[key]; + if (value === undefined) { + if (appGlobalConfig?.[key] === undefined) { + return; + } + value = appGlobalConfig[key]; + } + systemPreferences.setUserDefault(key, GENERAL_SETTINGS[key], value); }); Object.keys(NOTIFICATION_SETTINGS).map((key) => { - systemPreferences.setUserDefault( - key, - NOTIFICATION_SETTINGS[key], - settings.notificationSettings[key], - ); + let value = settings?.notificationSettings?.[key]; + if (value === undefined) { + if (appGlobalConfig?.notificationSettings?.[key] === undefined) { + return; + } + value = appGlobalConfig.notificationSettings[key]; + } + systemPreferences.setUserDefault(key, NOTIFICATION_SETTINGS[key], value); }); Object.keys(CUSTOM_FLAGS).map((key) => { - systemPreferences.setUserDefault( - key, - CUSTOM_FLAGS[key], - settings.customFlags[key], - ); + let value = settings?.customFlags?.[key]; + if (value === undefined) { + if (appGlobalConfig?.customFlags?.[key] === undefined) { + return; + } + value = appGlobalConfig.customFlags[key]; + } + systemPreferences.setUserDefault(key, CUSTOM_FLAGS[key], value); }); Object.keys(PERMISSIONS).map((key) => { - systemPreferences.setUserDefault( - key, - PERMISSIONS[key], - settings.permissions[key], - ); + let value = settings?.permissions?.[key]; + if (value === undefined) { + if (appGlobalConfig?.permissions?.[key] === undefined) { + return; + } + value = appGlobalConfig.permissions[key]; + } + systemPreferences.setUserDefault(key, PERMISSIONS[key], value); }); systemPreferences.setUserDefault('installVariant', 'string', getGuid()); }; diff --git a/src/app/window-handler.ts b/src/app/window-handler.ts index 0bd809ef..9a7bd95f 100644 --- a/src/app/window-handler.ts +++ b/src/app/window-handler.ts @@ -287,6 +287,13 @@ export class WindowHandler { (this.globalConfig.url.includes(this.defaultUrl) && config.isFirstTimeLaunch()) || !!this.config.enableBrowserLogin; + // Force welcome screen if pod url is not configured correctly + if ( + !!this.userConfig.url && + this.userConfig.url.includes(this.defaultUrl) + ) { + this.shouldShowWelcomeScreen = true; + } this.windowOpts = { ...this.getWindowOpts( @@ -596,11 +603,13 @@ export class WindowHandler { if (this.mainWebContents && !this.mainWebContents.isDestroyed()) { // Load welcome screen if (this.shouldShowWelcomeScreen && !this.didShowWelcomeScreen) { - const podUrl = this.userConfig.url - ? this.userConfig.url - : !this.globalConfig.url.includes(this.defaultUrl) - ? this.globalConfig.url - : undefined; + const podUrl = + this.userConfig.url && + !this.userConfig.url.includes(this.defaultUrl) + ? this.userConfig.url + : !this.globalConfig.url.includes(this.defaultUrl) + ? this.globalConfig.url + : undefined; this.mainWebContents.send('page-load-welcome', { locale: i18n.getLocale(), resources: i18n.loadedResources,