44 lines
1.6 KiB
TypeScript
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 };
|
|
}
|