bitwarden-estensione-browser/electron/src/services/electronMainMessaging.servi...

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

66 lines
1.9 KiB
TypeScript
Raw Normal View History

import { app, dialog, ipcMain, Menu, MenuItem, nativeTheme } from "electron";
2018-04-26 21:43:59 +02:00
2022-02-22 15:39:11 +01:00
import { MessagingService } from "jslib-common/abstractions/messaging.service";
import { ThemeType } from "jslib-common/enums/themeType";
2022-02-22 15:39:11 +01:00
import { RendererMenuItem } from "../utils";
2018-04-26 21:43:59 +02:00
import { WindowMain } from "../window.main";
export class ElectronMainMessagingService implements MessagingService {
constructor(private windowMain: WindowMain, private onMessage: (message: any) => void) {
ipcMain.handle("appVersion", () => {
return app.getVersion();
});
ipcMain.handle("systemTheme", () => {
return nativeTheme.shouldUseDarkColors ? ThemeType.Dark : ThemeType.Light;
});
ipcMain.handle("showMessageBox", (event, options) => {
return dialog.showMessageBox(options);
});
ipcMain.handle("openContextMenu", (event, options: { menu: RendererMenuItem[] }) => {
return new Promise((resolve) => {
const menu = new Menu();
options.menu.forEach((m, index) => {
menu.append(
new MenuItem({
label: m.label,
type: m.type,
click: () => {
resolve(index);
},
})
);
});
menu.popup({
window: windowMain.win,
callback: () => {
resolve(-1);
2021-12-16 13:36:21 +01:00
},
});
2021-12-16 13:36:21 +01:00
});
});
ipcMain.handle("windowVisible", () => {
return windowMain.win?.isVisible();
2021-12-16 13:36:21 +01:00
});
nativeTheme.on("updated", () => {
windowMain.win?.webContents.send(
"systemThemeUpdated",
nativeTheme.shouldUseDarkColors ? ThemeType.Dark : ThemeType.Light
);
});
}
2018-04-26 21:43:59 +02:00
send(subscriber: string, arg: any = {}) {
const message = Object.assign({}, { command: subscriber }, arg);
this.onMessage(message);
if (this.windowMain.win != null) {
this.windowMain.win.webContents.send("messagingService", message);
}
2021-12-16 13:36:21 +01:00
}
2018-04-26 21:43:59 +02:00
}