112 lines
2.8 KiB
TypeScript
112 lines
2.8 KiB
TypeScript
// @ts-nocheck
|
|
const { app, Menu, dialog } = require("electron");
|
|
const isMac = process.platform === "darwin";
|
|
const { autoUpdater } = require("electron-updater");
|
|
import { compareSemanticVersions } from "./versionDiff";
|
|
|
|
const template: (Electron.MenuItemConstructorOptions | Electron.MenuItem)[] = [
|
|
...(isMac
|
|
? [
|
|
{
|
|
label: app.name,
|
|
submenu: [
|
|
{ role: "about" },
|
|
{
|
|
label: "Check for Updates...",
|
|
click: () =>
|
|
autoUpdater.checkForUpdatesAndNotify().then((e) => {
|
|
if (
|
|
!e ||
|
|
compareSemanticVersions(
|
|
app.getVersion(),
|
|
e.updateInfo.version
|
|
) >= 0
|
|
)
|
|
dialog.showMessageBox({
|
|
message: `There are currently no updates available.`,
|
|
});
|
|
}),
|
|
},
|
|
{ type: "separator" },
|
|
{ role: "services" },
|
|
{ type: "separator" },
|
|
{ role: "hide" },
|
|
{ role: "hideOthers" },
|
|
{ role: "unhide" },
|
|
{ type: "separator" },
|
|
{ role: "quit" },
|
|
],
|
|
},
|
|
]
|
|
: []),
|
|
{
|
|
label: "Edit",
|
|
submenu: [
|
|
{ role: "undo" },
|
|
{ role: "redo" },
|
|
{ type: "separator" },
|
|
{ role: "cut" },
|
|
{ role: "copy" },
|
|
{ role: "paste" },
|
|
...(isMac
|
|
? [
|
|
{ role: "pasteAndMatchStyle" },
|
|
{ role: "delete" },
|
|
{ role: "selectAll" },
|
|
{ type: "separator" },
|
|
{
|
|
label: "Speech",
|
|
submenu: [{ role: "startSpeaking" }, { role: "stopSpeaking" }],
|
|
},
|
|
]
|
|
: [{ role: "delete" }, { type: "separator" }, { role: "selectAll" }]),
|
|
],
|
|
},
|
|
{
|
|
label: "View",
|
|
submenu: [
|
|
{ role: "reload" },
|
|
{ role: "forceReload" },
|
|
{ role: "toggleDevTools" },
|
|
{ type: "separator" },
|
|
{ role: "resetZoom" },
|
|
{ role: "zoomIn" },
|
|
{ role: "zoomOut" },
|
|
{ type: "separator" },
|
|
{ role: "togglefullscreen" },
|
|
],
|
|
},
|
|
{
|
|
label: "Window",
|
|
submenu: [
|
|
{ role: "minimize" },
|
|
{ role: "zoom" },
|
|
...(isMac
|
|
? [
|
|
{ type: "separator" },
|
|
{ role: "front" },
|
|
{ type: "separator" },
|
|
{ role: "window" },
|
|
]
|
|
: [{ role: "close" }]),
|
|
],
|
|
},
|
|
{
|
|
role: "help",
|
|
submenu: [
|
|
{
|
|
label: "Learn More",
|
|
click: async () => {
|
|
const { shell } = require("electron");
|
|
await shell.openExternal("https://jan.ai/");
|
|
},
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
export const setupMenu = () => {
|
|
const menu = Menu.buildFromTemplate(template);
|
|
Menu.setApplicationMenu(menu);
|
|
};
|