diff --git a/package.json b/package.json index f4ed5a4b..e3a751ef 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,8 @@ "start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "pack": "electron-builder --dir", "dist": "yarn build && electron-builder", - "dist:macarm" : "yarn build && electron-builder --mac --arm64", - "dist:universalNotWorking": "yarn build && electron-builder --mac --universal", + "dist:macarm": "yarn build && electron-builder --mac --arm64", + "dist:universalNotWorking": "yarn build && electron-builder --mac --universal", "dist:all": "yarn build && electron-builder -mwl", "msft": "yarn build && electron-builder -c msft-package.json", "postinstall": "electron-builder install-app-deps", @@ -33,6 +33,7 @@ "dependencies": { "@sentry/electron": "^2.5.4", "@sentry/integrations": "^6.17.4", + "adm-zip": "^0.5.9", "discord-rpc": "^4.0.1", "ejs": "^3.1.6", "electron-fetch": "^1.7.4", diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 49cdf84b..1f581fb1 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -13,6 +13,7 @@ import {wsapi} from "./wsapi"; import {jsonc} from "jsonc"; import {AppImageUpdater, NsisUpdater} from "electron-updater"; import {utils} from './utils'; +const AdmZip = require("adm-zip"); export class BrowserWindow { @@ -370,6 +371,20 @@ export class BrowserWindow { event.returnValue = process.platform; }); + ipcMain.on("get-github-theme", async (event, url) => { + if (url.endsWith("/")) url = url.slice(0, -1); + let response = await fetch( + `${url}/archive/refs/heads/main.zip` + ); + let zip = await response.buffer(); + let zipFile = new AdmZip(zip); + zipFile.extractAllTo(utils.getPath("themes"), true); + BrowserWindow.win.webContents.send("theme-installed", ""); + event.returnValue = { + success: true, + }; + }); + ipcMain.on("get-themes", (event, _key) => { if (existsSync(utils.getPath("themes"))) { // return any .less files and scan any folders in the themes folder for .less files diff --git a/src/renderer/index.js b/src/renderer/index.js index 7ed2b57c..ae5bad38 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -693,6 +693,11 @@ const app = new Vue({ console.log(e) } + ipcRenderer.on("theme-installed", (event, arg) => { + notyf.success("Theme installed") + //app.setTheme(arg) + }) + MusicKit.getInstance().videoContainerElement = document.getElementById("apple-music-video-player") ipcRenderer.on('SoundCheckTag', (event, tag) => {