ldc-showroom/composable/useElectron.ts

44 lines
1.6 KiB
TypeScript

import log from "electron-log";
export default function useElectron() {
const isServer = process.server || typeof window === "undefined" || typeof window.require === "undefined";
const isElectron = !isServer && navigator.userAgent.toLowerCase().includes("nuxt-app");
log.info(`isServer ${isServer}`);
log.info(`isElectron ${isElectron}`);
log.info(`userAgent ${navigator.userAgent.toLowerCase()}`);
if (!isElectron || isServer) return { isElectron };
// Initialize electron
const electron = window.require("electron");
// Window title bar actions
// ========================
const titleBarActions = {
minimize: () => electron.ipcRenderer.invoke("titlebar:action", "minimize"),
toggleMaximize: () => electron.ipcRenderer.invoke("titlebar:action", "toggleMaximize"),
isMaximized: () => electron.ipcRenderer.invoke("isMaximized:app", null),
close: () => electron.ipcRenderer.invoke("close:app", null)
};
// Window title bar stats
// ======================
const windowStats = ref({
isMaximized: false,
isFullscreen: false
});
electron.ipcRenderer.on("window:maximizeChanged", (_event, value) => {
windowStats.value.isMaximized = value;
});
electron.ipcRenderer.on("window:fullscreenChanged", (_event, value) => {
windowStats.value.isFullscreen = value;
});
// Get Json Data
const sendSync = (): TypeApp => {
return electron.ipcRenderer.sendSync("get-config", "");
};
// Initialize ipcRenderer
return { isElectron, titleBarActions, windowStats, sendSync };
}