Files
mattermostest/src/main/developerMode.ts
Devin Binnie 9ecd139abf [MM-62649] Switch DeveloperModeIndicator over to floating-ui (#3294)
* [MM-62649] Switch DeveloperModeIndicator over to floating-ui

* Fix test
2025-01-28 08:04:48 -05:00

70 lines
2.0 KiB
TypeScript

// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {ipcMain} from 'electron';
import isDev from 'electron-is-dev';
import {EventEmitter} from 'events';
import {DEVELOPER_MODE_UPDATED, IS_DEVELOPER_MODE_ENABLED, UPDATE_PATHS} from 'common/communication';
import JsonFileManager from 'common/JsonFileManager';
import {developerModeJson} from 'main/constants';
import type {DeveloperSettings} from 'types/settings';
export class DeveloperMode extends EventEmitter {
private json: JsonFileManager<DeveloperSettings>;
constructor(file: string) {
super();
this.json = new JsonFileManager(file);
ipcMain.handle(IS_DEVELOPER_MODE_ENABLED, this.enabled);
}
enabled = () => process.env.MM_DESKTOP_DEVELOPER_MODE === 'true' || isDev;
toggle = (setting: keyof DeveloperSettings) => {
if (!this.enabled()) {
return;
}
this.json.setValue(setting, !this.json.getValue(setting));
this.emit(DEVELOPER_MODE_UPDATED, {[setting]: this.json.getValue(setting)});
};
get = (setting: keyof DeveloperSettings) => {
if (!this.enabled()) {
return false;
}
return this.json.getValue(setting);
};
switchOff = (
setting: keyof DeveloperSettings,
onStart: () => void,
onStop: () => void,
) => {
if (!this.get(setting)) {
onStart();
}
this.on(DEVELOPER_MODE_UPDATED, (settings: DeveloperSettings) => {
if (typeof settings[setting] !== 'undefined') {
if (settings[setting]) {
onStop();
} else {
onStart();
}
}
});
};
}
let developerMode = new DeveloperMode(developerModeJson);
ipcMain.on(UPDATE_PATHS, () => {
ipcMain.removeHandler(IS_DEVELOPER_MODE_ENABLED);
developerMode = new DeveloperMode(developerModeJson);
});
export default developerMode;