Settings: fix display of excluded browser-only plugins

This commit is contained in:
Vendicated 2026-08-20 21:30:34 +02:00
parent 0f54286da2
commit 2771a9888a
No known key found for this signature in database
GPG key ID: D66986BAF75ECF18
4 changed files with 18 additions and 5 deletions

View file

@ -23,6 +23,7 @@ import { normalize as posixNormalize, sep as posixSep } from "path/posix";
import { BigIntLiteral, createSourceFile, Identifier, isArrayLiteralExpression, isCallExpression, isExportAssignment, isIdentifier, isObjectLiteralExpression, isPropertyAccessExpression, isPropertyAssignment, isSatisfiesExpression, isStringLiteral, isVariableStatement, NamedDeclaration, NodeArray, ObjectLiteralExpression, ScriptTarget, StringLiteral, SyntaxKind } from "typescript";
import { getPluginTarget } from "./utils.mjs";
import { PluginTarget, PluginTargets } from "@utils/pluginTargets";
interface Dev {
name: string;
@ -40,7 +41,7 @@ interface PluginData {
hasCommands: boolean;
required: boolean;
enabledByDefault: boolean;
target: "discordDesktop" | "vesktop" | "desktop" | "web" | "browser" | "dev";
target?: PluginTarget;
filePath: string;
}
@ -166,7 +167,7 @@ async function parseFile(fileName: string) {
const target = getPluginTarget(fileName);
if (target) {
if (!["web", "browser", "discordDesktop", "vesktop", "desktop", "dev"].includes(target)) throw fail(`invalid target ${target}`);
if (!PluginTargets.includes(target as PluginTarget)) throw fail(`invalid target ${target}`);
data.target = target as any;
}

View file

@ -33,6 +33,7 @@ import { isTruthy } from "@utils/guards";
import { Logger } from "@utils/Logger";
import { Margins } from "@utils/margins";
import { classes } from "@utils/misc";
import { PluginTarget } from "@utils/pluginTargets";
import { useAwaiter, useCleanupEffect } from "@utils/react";
import { PluginTag, PluginTags } from "@utils/types";
import { Button, ConfirmModal, lodash, openModal, Parser, React, SearchableSelect, Select, TextInput, Tooltip, useMemo, useRef, useState } from "@webpack/common";
@ -88,12 +89,13 @@ function ExcludedPluginsList({ search }: { search: string; }) {
.filter(([name]) => name.toLowerCase().includes(search))
: [];
const ExcludedReasons: Record<"web" | "discordDesktop" | "vesktop" | "desktop" | "dev", string> = {
const ExcludedReasons: Record<PluginTarget, string> = {
desktop: "Discord Desktop app or Vesktop",
discordDesktop: "Discord Desktop app",
vesktop: "Vesktop app",
web: "Vesktop app and the Web version of Discord",
dev: "Developer version of Vencord"
dev: "Developer version of Vencord",
browser: "Web Browser version of Vencord"
};
return (

4
src/modules.d.ts vendored
View file

@ -17,13 +17,15 @@
*/
declare module "~plugins" {
import { PluginTarget } from "@utils/pluginTargets";
const plugins: Record<string, import("./utils/types").Plugin>;
export default plugins;
export const PluginMeta: Record<string, {
folderName: string;
userPlugin: boolean;
}>;
export const ExcludedPlugins: Record<string, "web" | "discordDesktop" | "vesktop" | "desktop" | "dev">;
export const ExcludedPlugins: Record<string, PluginTarget>;
}
declare module "~git-hash" {

View file

@ -0,0 +1,8 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2026 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
export const PluginTargets = ["web", "browser", "discordDesktop", "vesktop", "desktop", "dev"] as const;
export type PluginTarget = typeof PluginTargets[number];