mirror of
https://git.1024x2.xyz/1024x2/vexcord.git
synced 2025-04-20 05:26:31 +02:00
157 lines
5.3 KiB
Diff
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
|
|
|