vexcord/vesktop-patches/0002-Vencord-Remove-Vencord-build-downloader.patch

157 lines
5.3 KiB
Diff

From 65b6370ecce6416ea68e41e8c5ba9a63d97b9017 Mon Sep 17 00:00:00 2001
From: 1024x2 <2pow11@gmail.com>
Date: Wed, 14 Aug 2024 00:11:40 +0100
Subject: [PATCH 2/3] Vencord: Remove Vencord build downloader
This commit only makes sense in the context of Vexcord, sorry :(
---
src/main/constants.ts | 1 +
src/main/utils/http.ts | 58 ---------------------------------
src/main/utils/vencordLoader.ts | 34 ++++---------------
3 files changed, 7 insertions(+), 86 deletions(-)
delete mode 100644 src/main/utils/http.ts
diff --git a/src/main/constants.ts b/src/main/constants.ts
index 40d91a5..36ab41f 100644
--- a/src/main/constants.ts
+++ b/src/main/constants.ts
@@ -48,6 +48,7 @@ export const VENCORD_THEMES_DIR = join(DATA_DIR, "themes");
// needs to be inline require because of circular dependency
// as otherwise "DATA_DIR" (which is used by ./settings) will be uninitialised
export const VENCORD_FILES_DIR =
+ process.env.VENCORD_FILES_DIR ||
(require("./settings") as typeof import("./settings")).State.store.vencordDir ||
join(SESSION_DATA_DIR, "vencordFiles");
diff --git a/src/main/utils/http.ts b/src/main/utils/http.ts
deleted file mode 100644
index baee81e..0000000
--- a/src/main/utils/http.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * SPDX-License-Identifier: GPL-3.0
- * Vesktop, a desktop app aiming to give you a snappier Discord Experience
- * Copyright (c) 2023 Vendicated and Vencord contributors
- */
-
-import { createWriteStream } from "fs";
-import { Readable } from "stream";
-import { pipeline } from "stream/promises";
-import { setTimeout } from "timers/promises";
-
-interface FetchieOptions {
- retryOnNetworkError?: boolean;
-}
-
-export async function downloadFile(url: string, file: string, options: RequestInit = {}, fetchieOpts?: FetchieOptions) {
- const res = await fetchie(url, options, fetchieOpts);
- await pipeline(
- // @ts-expect-error odd type error
- Readable.fromWeb(res.body!),
- createWriteStream(file, {
- autoClose: true
- })
- );
-}
-
-const ONE_MINUTE_MS = 1000 * 60;
-
-export async function fetchie(url: string, options?: RequestInit, { retryOnNetworkError }: FetchieOptions = {}) {
- let res: Response | undefined;
-
- try {
- res = await fetch(url, options);
- } catch (err) {
- if (retryOnNetworkError) {
- console.error("Failed to fetch", url + ".", "Gonna retry with backoff.");
-
- for (let tries = 0, delayMs = 500; tries < 20; tries++, delayMs = Math.min(2 * delayMs, ONE_MINUTE_MS)) {
- await setTimeout(delayMs);
- try {
- res = await fetch(url, options);
- break;
- } catch {}
- }
- }
-
- if (!res) throw new Error(`Failed to fetch ${url}\n${err}`);
- }
-
- if (res.ok) return res;
-
- let msg = `Got non-OK response for ${url}: ${res.status} ${res.statusText}`;
-
- const reason = await res.text().catch(() => "");
- if (reason) msg += `\n${reason}`;
-
- throw new Error(msg);
-}
diff --git a/src/main/utils/vencordLoader.ts b/src/main/utils/vencordLoader.ts
index c0bac6a..3f08ad0 100644
--- a/src/main/utils/vencordLoader.ts
+++ b/src/main/utils/vencordLoader.ts
@@ -4,14 +4,11 @@
* Copyright (c) 2023 Vendicated and Vencord contributors
*/
-import { mkdirSync } from "fs";
-import { access, constants as FsConstants } from "fs/promises";
+import { mkdir, access, constants as FsConstants } from "fs/promises";
import { join } from "path";
import { USER_AGENT, VENCORD_FILES_DIR } from "../constants";
-import { downloadFile, fetchie } from "./http";
-
-const API_BASE = "https://api.github.com";
+import { app, dialog } from "electron";
export const FILES_TO_DOWNLOAD = [
"vencordDesktopMain.js",
@@ -31,30 +28,11 @@ export interface ReleaseData {
}
export async function githubGet(endpoint: string) {
- const opts: RequestInit = {
- headers: {
- Accept: "application/vnd.github+json",
- "User-Agent": USER_AGENT
- }
- };
-
- if (process.env.GITHUB_TOKEN) (opts.headers! as any).Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
-
- return fetchie(API_BASE + endpoint, opts, { retryOnNetworkError: true });
+ throw new Error("No");
}
export async function downloadVencordFiles() {
- const release = await githubGet("/repos/Vendicated/Vencord/releases/latest");
-
- const { assets }: ReleaseData = await release.json();
-
- await Promise.all(
- assets
- .filter(({ name }) => FILES_TO_DOWNLOAD.some(f => name.startsWith(f)))
- .map(({ name, browser_download_url }) =>
- downloadFile(browser_download_url, join(VENCORD_FILES_DIR, name), {}, { retryOnNetworkError: true })
- )
- );
+ dialog.showErrorBox("No", "Go away");
}
const existsAsync = (path: string) =>
@@ -69,7 +47,7 @@ export async function isValidVencordInstall(dir: string) {
export async function ensureVencordFiles() {
if (await isValidVencordInstall(VENCORD_FILES_DIR)) return;
- mkdirSync(VENCORD_FILES_DIR, { recursive: true });
+ dialog.showErrorBox("Could not find Vencord files!", "Please specify a folder containing \"vencordDesktopMain.js\" in the environment variable VENCORD_FILES_DIR.");
- await downloadVencordFiles();
+ app.exit(1);
}
--
2.45.2