diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index b4e3050f..477e47df 100644 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -228,8 +228,3 @@ await Promise.all([ main: "main.js" })) ]); - -await Promise.all([ - createPackage("dist/desktop", "dist/desktop.asar"), - createPackage("dist/equibop", "dist/equibop.asar"), -]); diff --git a/src/main/index.ts b/src/main/index.ts index 760233cc..e487231e 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -43,9 +43,11 @@ if (IS_VESKTOP || !IS_VANILLA) { } switch (url) { case "renderer.js.map": + case "equibopRenderer.js.map": case "preload.js.map": + case "equibopPreload.js.map": case "patcher.js.map": - case "main.js.map": + case "equibopMain.js.map": cb(join(__dirname, url)); break; default: diff --git a/src/main/ipcMain.ts b/src/main/ipcMain.ts index 43fd2099..7b34eb8c 100644 --- a/src/main/ipcMain.ts +++ b/src/main/ipcMain.ts @@ -119,7 +119,7 @@ ipcMain.handle(IpcEvents.OPEN_MONACO_EDITOR, async () => { autoHideMenuBar: true, darkTheme: true, webPreferences: { - preload: join(__dirname, "preload.js"), + preload: join(__dirname, IS_DISCORD_DESKTOP ? "preload.js" : "equibopPreload.js"), contextIsolation: true, nodeIntegration: false, sandbox: false diff --git a/src/main/patcher.ts b/src/main/patcher.ts index 822dab49..f91182d4 100644 --- a/src/main/patcher.ts +++ b/src/main/patcher.ts @@ -29,8 +29,11 @@ console.log("[Equicord] Starting up..."); // Our injector file at app/index.js const injectorPath = require.main!.filename; +// special discord_arch_electron injection method +const asarName = require.main!.path.endsWith("app.asar") ? "_app.asar" : "app.asar"; + // The original app.asar -const asarPath = join(dirname(injectorPath), "..", "_app.asar"); +const asarPath = join(dirname(injectorPath), "..", asarName); const discordPkg = require(join(asarPath, "package.json")); require.main!.filename = join(asarPath, discordPkg.main); diff --git a/src/main/updater/common.ts b/src/main/updater/common.ts index bd77c417..475435e8 100644 --- a/src/main/updater/common.ts +++ b/src/main/updater/common.ts @@ -16,7 +16,12 @@ * along with this program. If not, see . */ -export const ASAR_FILE = IS_VESKTOP ? "vesktop.asar" : IS_EQUIBOP ? "equibop.asar" : "desktop.asar"; +export const EQUICORD_FILES = [ + IS_DISCORD_DESKTOP ? "patcher.js" : "equibopMain.js", + IS_DISCORD_DESKTOP ? "preload.js" : "equibopPreload.js", + IS_DISCORD_DESKTOP ? "renderer.js" : "equibopRenderer.js", + IS_DISCORD_DESKTOP ? "renderer.css" : "equibopRenderer.css", +]; export function serializeErrors(func: (...args: any[]) => any) { return async function () { diff --git a/src/main/updater/http.ts b/src/main/updater/http.ts index c0affa69..494c53ab 100644 --- a/src/main/updater/http.ts +++ b/src/main/updater/http.ts @@ -20,15 +20,16 @@ import { get } from "@main/utils/simpleGet"; import { IpcEvents } from "@shared/IpcEvents"; import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent"; import { ipcMain } from "electron"; -import { writeFileSync as originalWriteFileSync } from "original-fs"; +import { writeFile } from "fs/promises"; +import { join } from "path"; import gitHash from "~git-hash"; import gitRemote from "~git-remote"; -import { ASAR_FILE, serializeErrors } from "./common"; +import { EQUICORD_FILES, serializeErrors } from "./common"; const API_BASE = `https://api.github.com/repos/${gitRemote}`; -let PendingUpdate: string | null = null; +let PendingUpdates = [] as [string, string][]; async function githubGet(endpoint: string) { return get(API_BASE + endpoint, { @@ -65,19 +66,23 @@ async function fetchUpdates() { return false; - const asset = data.assets.find(a => a.name === ASAR_FILE); - PendingUpdate = asset.browser_download_url; + data.assets.forEach(({ name, browser_download_url }) => { + if (EQUICORD_FILES.some(s => name.startsWith(s))) { + PendingUpdates.push([name, browser_download_url]); + } + }); return true; } async function applyUpdates() { - if (!PendingUpdate) return true; - - const data = await get(PendingUpdate); - originalWriteFileSync(__dirname, data); - - PendingUpdate = null; + await Promise.all(PendingUpdates.map( + async ([name, data]) => writeFile( + join(__dirname, name), + await get(data) + ) + )); + PendingUpdates = []; return true; } diff --git a/src/preload.ts b/src/preload.ts index 7c61a181..96b07246 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -28,7 +28,7 @@ contextBridge.exposeInMainWorld("VencordNative", VencordNative); // Discord if (location.protocol !== "data:") { // #region cssInsert - const rendererCss = join(__dirname, "renderer.css"); + const rendererCss = join(__dirname, IS_DISCORD_DESKTOP ? "renderer.css" : "equibopRenderer.css"); const style = document.createElement("style"); style.id = "vencord-css-core";