Files
mattermostest/src/main/app/config.ts
Devin Binnie db76a67fb5 Reduce the number of writes to the config (#2498)
* Add some logging, refactor setting config items

* Move active team to setMultiple, reduce serverInfos calls if the data is already the same

* Fix some logging

* Lint fix
2023-01-12 08:46:06 -05:00

90 lines
2.9 KiB
TypeScript

// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {app, ipcMain} from 'electron';
import log, {LogLevel} from 'electron-log';
import {CombinedConfig} from 'types/config';
import {DARK_MODE_CHANGE, EMIT_CONFIGURATION, RELOAD_CONFIGURATION} from 'common/communication';
import Config from 'common/config';
import AutoLauncher from 'main/AutoLauncher';
import {setUnreadBadgeSetting} from 'main/badge';
import {refreshTrayImages} from 'main/tray/tray';
import WindowManager from 'main/windows/windowManager';
import {handleMainWindowIsShown} from './intercom';
import {handleUpdateMenuEvent, setLoggingLevel, updateServerInfos, updateSpellCheckerLocales} from './utils';
let didCheckForAddServerModal = false;
//
// config event handlers
//
export function handleConfigUpdate(newConfig: CombinedConfig) {
if (log.transports.file.level !== newConfig.logLevel) {
log.error('Log level set to:', newConfig.logLevel);
}
if (newConfig.logLevel) {
setLoggingLevel(newConfig.logLevel as LogLevel);
}
log.debug('App.Config.handleConfigUpdate');
log.silly('App.Config.handleConfigUpdate', newConfig);
if (!newConfig) {
return;
}
WindowManager.handleUpdateConfig();
if (app.isReady()) {
WindowManager.sendToRenderer(RELOAD_CONFIGURATION);
}
setUnreadBadgeSetting(newConfig && newConfig.showUnreadBadge);
updateSpellCheckerLocales();
if (newConfig.downloadLocation) {
try {
app.setPath('downloads', newConfig.downloadLocation);
} catch (e) {
log.error(`There was a problem trying to set the default download path: ${e}`);
}
}
if (process.platform === 'win32' || process.platform === 'linux') {
const autoStartTask = newConfig.autostart ? AutoLauncher.enable() : AutoLauncher.disable();
autoStartTask.then(() => {
log.info('config.autostart has been configured:', newConfig.autostart);
}).catch((err) => {
log.error('error:', err);
});
}
if (process.platform === 'win32' && !didCheckForAddServerModal && typeof Config.registryConfigData !== 'undefined') {
didCheckForAddServerModal = true;
updateServerInfos(newConfig.teams);
WindowManager.initializeCurrentServerName();
handleMainWindowIsShown();
}
handleUpdateMenuEvent();
if (newConfig.trayIconTheme) {
refreshTrayImages(newConfig.trayIconTheme);
}
ipcMain.emit(EMIT_CONFIGURATION, true, newConfig);
}
export function handleDarkModeChange(darkMode: boolean) {
log.debug('App.Config.handleDarkModeChange', darkMode);
refreshTrayImages(Config.trayIconTheme);
WindowManager.sendToRenderer(DARK_MODE_CHANGE, darkMode);
WindowManager.updateLoadingScreenDarkMode(darkMode);
ipcMain.emit(EMIT_CONFIGURATION, true, Config.data);
}