require("v8-compile-cache"); import {join} from "path"; import {app} from "electron" if (!app.isPackaged) { app.setPath("userData", join(app.getPath("appData"), "Cider")); } import {Store} from "./base/store"; import {AppEvents} from "./base/app"; import {Plugins} from "./base/plugins"; import {BrowserWindow} from "./base/browserwindow"; import {init as Sentry} from "@sentry/electron"; import {RewriteFrames} from "@sentry/integrations"; import {components, ipcMain} from "electron" // Analytics for debugging fun yeah. Sentry({ dsn: "https://68c422bfaaf44dea880b86aad5a820d2@o954055.ingest.sentry.io/6112214", integrations: [ new RewriteFrames({ root: process.cwd(), }), ], }); new Store(); const Cider = new AppEvents(); const CiderPlug = new Plugins(); /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * App Event Handlers * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ app.on("ready", () => { Cider.ready(CiderPlug); console.log("[Cider] Application is Ready. Creating Window.") if (!app.isPackaged) { console.info("[Cider] Running in development mode.") require("vue-devtools").install() } components.whenReady().then(async () => { const bw = new BrowserWindow() const win = await bw.createWindow() app.getGPUInfo("complete").then(gpuInfo => { console.log(gpuInfo) }) console.log("[Cider][Widevine] Status:", components.status()); Cider.bwCreated(); win.on("ready-to-show", () => { console.debug("[Cider] Window is Ready.") CiderPlug.callPlugins("onReady", win); win.show(); }); }); }); /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Renderer Event Handlers * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ ipcMain.handle("renderer-ready", (event) => { CiderPlug.callPlugins("onRendererReady", event); }) ipcMain.on("playbackStateDidChange", (_event, attributes) => { CiderPlug.callPlugins("onPlaybackStateDidChange", attributes); }); ipcMain.on("nowPlayingItemDidChange", (_event, attributes) => { CiderPlug.callPlugins("onNowPlayingItemDidChange", attributes); }); app.on("before-quit", () => { CiderPlug.callPlugins("onBeforeQuit"); console.warn(`${app.getName()} exited.`); }); /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Widevine Event Handlers * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ // @ts-ignore app.on("widevine-ready", (version, lastVersion) => { if (null !== lastVersion) { console.log("[Cider][Widevine] Widevine " + version + ", upgraded from " + lastVersion + ", is ready to be used!") } else { console.log("[Cider][Widevine] Widevine " + version + " is ready to be used!") } }) // @ts-ignore app.on("widevine-update-pending", (currentVersion, pendingVersion) => { console.log("[Cider][Widevine] Widevine " + currentVersion + " is ready to be upgraded to " + pendingVersion + "!") }) // @ts-ignore app.on("widevine-error", (error) => { console.log("[Cider][Widevine] Widevine installation encountered an error: " + error) app.exit() })