Safe 2 update

This commit is contained in:
thororen1234 2024-07-25 10:32:28 -04:00
parent 29fd3ca13f
commit 39cfa3e367
3 changed files with 9 additions and 57 deletions

View file

@ -262,20 +262,6 @@ export const stylePlugin: Plugin = {
} }
}; };
let buildsFinished = Promise.resolve();
const buildsFinishedPlugin: Plugin = {
name: "builds-finished-plugin",
setup({ onEnd }) {
if (!watch) return;
let resolve: () => void;
const done = new Promise<void>(r => resolve = r);
buildsFinished = buildsFinished.then(() => done);
onEnd(() => resolve());
},
};
export const commonOpts = { export const commonOpts = {
logLevel: "info", logLevel: "info",
bundle: true, bundle: true,
@ -283,7 +269,7 @@ export const commonOpts = {
sourcemap: watch ? "inline" : "external", sourcemap: watch ? "inline" : "external",
legalComments: "linked", legalComments: "linked",
banner, banner,
plugins: [fileUrlPlugin, gitHashPlugin, gitRemotePlugin, stylePlugin, buildsFinishedPlugin], plugins: [fileUrlPlugin, gitHashPlugin, gitRemotePlugin, stylePlugin],
external: ["~plugins", "~git-hash", "~git-remote", "/assets/*"], external: ["~plugins", "~git-hash", "~git-remote", "/assets/*"],
inject: ["./scripts/build/inject/react.mjs"], inject: ["./scripts/build/inject/react.mjs"],
jsxFactory: "VencordCreateElement", jsxFactory: "VencordCreateElement",
@ -301,8 +287,6 @@ export async function buildOrWatchAll() {
if (watch) { if (watch) {
const contexts = await Promise.all(builds.map(context)); const contexts = await Promise.all(builds.map(context));
await Promise.all(contexts.map(ctx => ctx.watch())); await Promise.all(contexts.map(ctx => ctx.watch()));
await buildsFinished;
} else { } else {
try { try {
await Promise.all(builds.map(build)); await Promise.all(builds.map(build));

View file

@ -27,7 +27,11 @@ import { IS_VANILLA } from "./utils/constants";
console.log("[Equicord] Starting up..."); console.log("[Equicord] Starting up...");
// FIXME: remove at some point // FIXME: remove at some point
export const isLegacyNonAsarVencord = IS_STANDALONE && !__dirname.endsWith(".asar"); const isLegacyNonAsarVencord = IS_STANDALONE && !__dirname.endsWith(".asar");
if (isLegacyNonAsarVencord) {
console.warn("This is a legacy non asar install! Migrating to asar and restarting...");
require("./updater/http").migrateLegacyToAsar();
}
// Our injector file at app/index.js // Our injector file at app/index.js
const injectorPath = require.main!.filename; const injectorPath = require.main!.filename;

View file

@ -16,16 +16,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
import { isLegacyNonAsarVencord } from "@main/patcher";
import { IpcEvents } from "@shared/IpcEvents"; import { IpcEvents } from "@shared/IpcEvents";
import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent"; import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent";
import { app, dialog, ipcMain } from "electron"; import { app, dialog, ipcMain } from "electron";
import { import { writeFileSync as originalWriteFileSync } from "original-fs";
chmodSync as originalChmodSync,
existsSync as originalExistsSync,
renameSync as originalRenameSync,
writeFileSync as originalWriteFileSync,
} from "original-fs";
import { join } from "path"; import { join } from "path";
import gitHash from "~git-hash"; import gitHash from "~git-hash";
@ -37,8 +31,6 @@ import { ASAR_FILE, serializeErrors } from "./common";
const API_BASE = `https://api.github.com/repos/${gitRemote}`; const API_BASE = `https://api.github.com/repos/${gitRemote}`;
let PendingUpdate: string | null = null; let PendingUpdate: string | null = null;
let hasUpdateToApplyOnQuit = false;
async function githubGet(endpoint: string) { async function githubGet(endpoint: string) {
return get(API_BASE + endpoint, { return get(API_BASE + endpoint, {
headers: { headers: {
@ -84,9 +76,7 @@ async function applyUpdates() {
if (!PendingUpdate) return true; if (!PendingUpdate) return true;
const data = await get(PendingUpdate); const data = await get(PendingUpdate);
originalWriteFileSync(__dirname + ".new", data); originalWriteFileSync(__dirname, data);
originalChmodSync(__dirname + ".new", "777");
hasUpdateToApplyOnQuit = true;
PendingUpdate = null; PendingUpdate = null;
@ -98,7 +88,7 @@ ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges));
ipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates)); ipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates));
ipcMain.handle(IpcEvents.BUILD, serializeErrors(applyUpdates)); ipcMain.handle(IpcEvents.BUILD, serializeErrors(applyUpdates));
async function migrateLegacyToAsar() { export async function migrateLegacyToAsar() {
try { try {
const isFlatpak = process.platform === "linux" && !!process.env.FLATPAK_ID; const isFlatpak = process.platform === "linux" && !!process.env.FLATPAK_ID;
if (isFlatpak) throw "Flatpak Discord can't automatically be migrated."; if (isFlatpak) throw "Flatpak Discord can't automatically be migrated.";
@ -122,29 +112,3 @@ async function migrateLegacyToAsar() {
}); });
} }
} }
function applyPreviousUpdate() {
originalChmodSync(__dirname + ".new", "777");
originalRenameSync(__dirname + ".new", __dirname);
app.relaunch();
app.exit();
}
app.on("will-quit", () => {
if (hasUpdateToApplyOnQuit) {
originalChmodSync(__dirname + ".new", "777");
originalRenameSync(__dirname + ".new", __dirname);
}
});
if (isLegacyNonAsarVencord) {
console.warn("This is a legacy non asar install! Migrating to asar and restarting...");
migrateLegacyToAsar();
}
if (originalExistsSync(__dirname + ".new")) {
console.warn("Found previous not applied update, applying now and restarting...");
applyPreviousUpdate();
}