Less confusing plugin names (bulk plugin rename) (#214)
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
This commit is contained in:
parent
a96f8a89f3
commit
82e444e196
17 changed files with 94 additions and 45 deletions
|
@ -19,10 +19,12 @@
|
|||
import plugins from "~plugins";
|
||||
|
||||
import IpcEvents from "../utils/IpcEvents";
|
||||
import Logger from "../utils/Logger";
|
||||
import { mergeDefaults } from "../utils/misc";
|
||||
import { OptionType } from "../utils/types";
|
||||
import { React } from "../webpack/common";
|
||||
|
||||
const logger = new Logger("Settings");
|
||||
export interface Settings {
|
||||
notifyAboutUpdates: boolean;
|
||||
useQuickCss: boolean;
|
||||
|
@ -169,3 +171,21 @@ export function addSettingsListener(path: string, onUpdate: (newValue: any, path
|
|||
(onUpdate as SubscriptionCallback)._path = path;
|
||||
subscriptions.add(onUpdate);
|
||||
}
|
||||
|
||||
export function migratePluginSettings(name: string, ...oldNames: string[]) {
|
||||
const { plugins } = settings;
|
||||
if (name in plugins) return;
|
||||
|
||||
for (const oldName of oldNames) {
|
||||
if (oldName in plugins) {
|
||||
logger.info(`Migrating settings from old name ${oldName} to ${name}`);
|
||||
plugins[name] = plugins[oldName];
|
||||
delete plugins[oldName];
|
||||
VencordNative.ipc.invoke(
|
||||
IpcEvents.SET_SETTINGS,
|
||||
JSON.stringify(settings, null, 4)
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import definePlugin from "../utils/types";
|
||||
|
||||
|
@ -33,8 +34,9 @@ const nameMap = {
|
|||
customitem: "MenuItem",
|
||||
};
|
||||
|
||||
migratePluginSettings("MenuItemDeobfuscatorAPI", "MenuItemDeobfuscatorApi");
|
||||
export default definePlugin({
|
||||
name: "MenuItemDeobfuscatorApi",
|
||||
name: "MenuItemDeobfuscatorAPI",
|
||||
description: "Deobfuscates Discord's Menu Item module",
|
||||
authors: [Devs.Ven],
|
||||
patches: [
|
||||
|
|
|
@ -16,11 +16,14 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import definePlugin from "../utils/types";
|
||||
|
||||
migratePluginSettings("NoticesAPI", "NoticesApi");
|
||||
|
||||
export default definePlugin({
|
||||
name: "NoticesApi",
|
||||
name: "NoticesAPI",
|
||||
description: "Fixes notices being automatically dismissed",
|
||||
authors: [Devs.Ven],
|
||||
required: true,
|
||||
|
|
|
@ -21,8 +21,9 @@ import {
|
|||
addPreSendListener,
|
||||
MessageObject,
|
||||
removePreEditListener,
|
||||
removePreSendListener,
|
||||
removePreSendListener
|
||||
} from "../../api/MessageEvents";
|
||||
import { migratePluginSettings } from "../../api/settings";
|
||||
import { Devs } from "../../utils/constants";
|
||||
import definePlugin from "../../utils/types";
|
||||
import { defaultRules } from "./defaultRules";
|
||||
|
@ -31,8 +32,9 @@ import { defaultRules } from "./defaultRules";
|
|||
const reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
||||
const reHasRegExpChar = RegExp(reRegExpChar.source);
|
||||
|
||||
migratePluginSettings("ClearURLs", "clearURLs");
|
||||
export default definePlugin({
|
||||
name: "clearURLs",
|
||||
name: "ClearURLs",
|
||||
description: "Removes tracking garbage from URLs",
|
||||
authors: [Devs.adryd],
|
||||
dependencies: ["MessageEventsAPI"],
|
||||
|
|
|
@ -16,9 +16,10 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Settings } from "../api/settings";
|
||||
import { migratePluginSettings, Settings } from "../api/settings";
|
||||
import { CheckedTextInput } from "../components/CheckedTextInput";
|
||||
import { Devs } from "../utils/constants";
|
||||
import Logger from "../utils/Logger";
|
||||
import { lazyWebpack, makeLazy } from "../utils/misc";
|
||||
import { ModalContent, ModalHeader, ModalRoot, openModal } from "../utils/modal";
|
||||
import definePlugin from "../utils/types";
|
||||
|
@ -60,12 +61,12 @@ async function doClone(guildId: string, id: string, name: string, isAnimated: bo
|
|||
image: reader.result
|
||||
}).then(() => {
|
||||
Toasts.show({
|
||||
message: `Successfully yoinked ${name}!`,
|
||||
message: `Successfully cloned ${name}!`,
|
||||
type: Toasts.Type.SUCCESS,
|
||||
id: Toasts.genId()
|
||||
});
|
||||
}).catch(e => {
|
||||
console.error("[EmoteYoink] Failed to upload emoji", e);
|
||||
}).catch((e: any) => {
|
||||
new Logger("EmoteCloner").error("Failed to upload emoji", e);
|
||||
Toasts.show({
|
||||
message: "Oopsie something went wrong :( Check console!!!",
|
||||
type: Toasts.Type.FAILURE,
|
||||
|
@ -174,18 +175,19 @@ function CloneModal({ id, name: emojiName, isAnimated }: { id: string; name: str
|
|||
);
|
||||
}
|
||||
|
||||
migratePluginSettings("EmoteCloner", "EmoteYoink");
|
||||
export default definePlugin({
|
||||
name: "EmoteYoink",
|
||||
description: "Clone emotes to your own server",
|
||||
name: "EmoteCloner",
|
||||
description: "Adds a Clone context menu item to emotes to clone them your own server",
|
||||
authors: [Devs.Ven],
|
||||
dependencies: ["MenuItemDeobfuscatorApi"],
|
||||
dependencies: ["MenuItemDeobfuscatorAPI"],
|
||||
|
||||
patches: [{
|
||||
// Literally copy pasted from ReverseImageSearch lol
|
||||
find: "open-native-link",
|
||||
replacement: {
|
||||
match: /id:"open-native-link".{0,200}\(\{href:(.{0,3}),.{0,200}\},"open-native-link"\)/,
|
||||
replace: "$&,Vencord.Plugins.plugins.EmoteYoink.makeMenu(arguments[2])"
|
||||
replace: "$&,Vencord.Plugins.plugins.EmoteCloner.makeMenu(arguments[2])"
|
||||
},
|
||||
|
||||
},
|
||||
|
@ -214,9 +216,9 @@ export default definePlugin({
|
|||
const isAnimated = new URL(htmlElement.src).pathname.endsWith(".gif");
|
||||
|
||||
return <Menu.MenuItem
|
||||
id="yoink"
|
||||
key="yoink"
|
||||
label="Yoink"
|
||||
id="emote-cloner"
|
||||
key="emote-cloner"
|
||||
label="Clone"
|
||||
action={() =>
|
||||
openModal(modalProps => (
|
||||
<ModalRoot {...modalProps}>
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
import { addPreEditListener, addPreSendListener, removePreEditListener, removePreSendListener } from "../api/MessageEvents";
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import { ApngDisposeOp, getGifEncoder, importApngJs } from "../utils/dependencies";
|
||||
import { lazyWebpack } from "../utils/misc";
|
||||
|
@ -55,8 +56,10 @@ interface StickerPack {
|
|||
stickers: Sticker[];
|
||||
}
|
||||
|
||||
migratePluginSettings("FakeNitro", "NitroBypass");
|
||||
|
||||
export default definePlugin({
|
||||
name: "NitroBypass",
|
||||
name: "FakeNitro",
|
||||
authors: [Devs.Arjix, Devs.D3SOX, Devs.Ven],
|
||||
description: "Allows you to stream in nitro quality and send fake emojis/stickers.",
|
||||
dependencies: ["MessageEventsAPI"],
|
||||
|
@ -64,7 +67,7 @@ export default definePlugin({
|
|||
patches: [
|
||||
{
|
||||
find: "canUseAnimatedEmojis:function",
|
||||
predicate: () => Settings.plugins.NitroBypass.enableEmojiBypass === true,
|
||||
predicate: () => Settings.plugins.FakeNitro.enableEmojiBypass === true,
|
||||
replacement: [
|
||||
"canUseAnimatedEmojis",
|
||||
"canUseEmojisEverywhere"
|
||||
|
@ -77,7 +80,7 @@ export default definePlugin({
|
|||
},
|
||||
{
|
||||
find: "canUseAnimatedEmojis:function",
|
||||
predicate: () => Settings.plugins.NitroBypass.enableStickerBypass === true,
|
||||
predicate: () => Settings.plugins.FakeNitro.enableStickerBypass === true,
|
||||
replacement: {
|
||||
match: /canUseStickersEverywhere:function\(.+?}/,
|
||||
replace: "canUseStickersEverywhere:function(e){return true;}"
|
||||
|
@ -92,7 +95,7 @@ export default definePlugin({
|
|||
},
|
||||
{
|
||||
find: "canUseAnimatedEmojis:function",
|
||||
predicate: () => Settings.plugins.NitroBypass.enableStreamQualityBypass === true,
|
||||
predicate: () => Settings.plugins.FakeNitro.enableStreamQualityBypass === true,
|
||||
replacement: [
|
||||
"canUseHighVideoUploadQuality",
|
||||
"canStreamHighQuality",
|
||||
|
@ -106,7 +109,7 @@ export default definePlugin({
|
|||
},
|
||||
{
|
||||
find: "STREAM_FPS_OPTION.format",
|
||||
predicate: () => Settings.plugins.NitroBypass.enableStreamQualityBypass === true,
|
||||
predicate: () => Settings.plugins.FakeNitro.enableStreamQualityBypass === true,
|
||||
replacement: {
|
||||
match: /(userPremiumType|guildPremiumTier):.{0,10}TIER_\d,?/g,
|
||||
replace: ""
|
||||
|
@ -154,7 +157,7 @@ export default definePlugin({
|
|||
},
|
||||
|
||||
getStickerLink(stickerId: string) {
|
||||
return `https://media.discordapp.net/stickers/${stickerId}.png?size=${Settings.plugins.NitroBypass.stickerSize}`;
|
||||
return `https://media.discordapp.net/stickers/${stickerId}.png?size=${Settings.plugins.FakeNitro.stickerSize}`;
|
||||
},
|
||||
|
||||
async sendAnimatedSticker(stickerLink: string, stickerId: string, channelId: string) {
|
||||
|
@ -167,7 +170,7 @@ export default definePlugin({
|
|||
const { frames, width, height } = await parseURL(stickerLink);
|
||||
|
||||
const gif = new GIFEncoder();
|
||||
const resolution = Settings.plugins.NitroBypass.stickerSize;
|
||||
const resolution = Settings.plugins.FakeNitro.stickerSize;
|
||||
|
||||
const canvas = document.createElement("canvas");
|
||||
canvas.width = resolution;
|
||||
|
@ -210,7 +213,7 @@ export default definePlugin({
|
|||
},
|
||||
|
||||
start() {
|
||||
const settings = Settings.plugins.NitroBypass;
|
||||
const settings = Settings.plugins.FakeNitro;
|
||||
if (!settings.enableEmojiBypass && !settings.enableStickerBypass) {
|
||||
return;
|
||||
}
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
import { addClickListener, removeClickListener } from "../api/MessageEvents";
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import { lazyWebpack } from "../utils/misc";
|
||||
import definePlugin from "../utils/types";
|
||||
|
@ -27,9 +28,11 @@ let isDeletePressed = false;
|
|||
const keydown = (e: KeyboardEvent) => e.key === "Backspace" && (isDeletePressed = true);
|
||||
const keyup = (e: KeyboardEvent) => e.key === "Backspace" && (isDeletePressed = false);
|
||||
|
||||
migratePluginSettings("MessageClickActions", "MessageQuickActions");
|
||||
|
||||
export default definePlugin({
|
||||
name: "MessageQuickActions",
|
||||
description: "Quick Delete, Quick edit",
|
||||
name: "MessageClickActions",
|
||||
description: "Hold Delete and click to delete, double click to edit",
|
||||
authors: [Devs.Ven],
|
||||
dependencies: ["MessageEventsAPI"],
|
||||
|
||||
|
|
|
@ -17,12 +17,14 @@
|
|||
*/
|
||||
|
||||
import { findOption, OptionalMessageOption } from "../api/Commands";
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import definePlugin from "../utils/types";
|
||||
|
||||
migratePluginSettings("MoreKaomoji", "moarKaomojis");
|
||||
export default definePlugin({
|
||||
name: "moarKaomojis",
|
||||
description: "Adds more Kaomojis to discord. ヽ(´▽`)/",
|
||||
name: "MoreKaomoji",
|
||||
description: "Adds more Kaomoji to discord. ヽ(´▽`)/",
|
||||
authors: [Devs.JacobTm],
|
||||
dependencies: ["CommandsAPI"],
|
||||
commands: [
|
|
@ -16,11 +16,14 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import definePlugin from "../utils/types";
|
||||
|
||||
migratePluginSettings("NoDevtoolsWarning", "STFU");
|
||||
|
||||
export default definePlugin({
|
||||
name: "STFU",
|
||||
name: "NoDevtoolsWarning",
|
||||
description: "Disables the 'HOLD UP' banner in the console",
|
||||
authors: [Devs.Ven],
|
||||
patches: [{
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
import { Message } from "discord-types/general";
|
||||
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import { lazyWebpack } from "../utils/misc";
|
||||
import definePlugin from "../utils/types";
|
||||
|
@ -30,8 +31,10 @@ const isMac = navigator.platform.includes("Mac"); // bruh
|
|||
let replyIdx = -1;
|
||||
let editIdx = -1;
|
||||
|
||||
migratePluginSettings("QuickReply", "InteractionKeybinds");
|
||||
|
||||
export default definePlugin({
|
||||
name: "InteractionKeybinds",
|
||||
name: "QuickReply",
|
||||
authors: [Devs.obscurity, Devs.Ven],
|
||||
description: "Reply to (ctrl + up/down) and edit (ctrl + shift + up/down) messages via keybinds",
|
||||
|
|
@ -30,9 +30,9 @@ const Engines = {
|
|||
|
||||
export default definePlugin({
|
||||
name: "ReverseImageSearch",
|
||||
description: "yes",
|
||||
description: "Adds ImageSearch to image context menus",
|
||||
authors: [Devs.Ven],
|
||||
dependencies: ["MenuItemDeobfuscatorApi"],
|
||||
dependencies: ["MenuItemDeobfuscatorAPI"],
|
||||
patches: [{
|
||||
find: "open-native-link",
|
||||
replacement: {
|
||||
|
|
|
@ -24,7 +24,7 @@ export default definePlugin({
|
|||
name: "SpotifyControls",
|
||||
description: "Spotify Controls",
|
||||
authors: [Devs.Ven, Devs.afn, Devs.KraXen72],
|
||||
dependencies: ["MenuItemDeobfuscatorApi"],
|
||||
dependencies: ["MenuItemDeobfuscatorAPI"],
|
||||
patches: [
|
||||
{
|
||||
find: "showTaglessAccountPanel:",
|
||||
|
|
|
@ -16,13 +16,15 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import definePlugin, { OptionType } from "../utils/types";
|
||||
import { Settings } from "../Vencord";
|
||||
|
||||
migratePluginSettings("SpotifyCrack", "Ify");
|
||||
export default definePlugin({
|
||||
name: "Ify",
|
||||
description: "Disables Spotify auto-pausing, allows activity to continue playing when idling and bypasses premium checks, allowing you to listen along with others.",
|
||||
name: "SpotifyCrack",
|
||||
description: "Free listen along, no auto-pausing in voice chat, and allows activity to continue playing when idling",
|
||||
authors: [
|
||||
Devs.Cyn,
|
||||
Devs.Nuckyz
|
||||
|
@ -36,14 +38,14 @@ export default definePlugin({
|
|||
}],
|
||||
}, {
|
||||
find: '.displayName="SpotifyStore"',
|
||||
predicate: () => Settings.plugins.Ify.noSpotifyAutoPause,
|
||||
predicate: () => Settings.plugins.SpotifyCrack.noSpotifyAutoPause,
|
||||
replacement: {
|
||||
match: /function (.{1,2})\(\).{0,200}SPOTIFY_AUTO_PAUSED\);.{0,}}}}/,
|
||||
replace: "function $1(){}"
|
||||
}
|
||||
}, {
|
||||
find: '.displayName="SpotifyStore"',
|
||||
predicate: () => Settings.plugins.Ify.keepSpotifyActivityOnIdle,
|
||||
predicate: () => Settings.plugins.SpotifyCrack.keepSpotifyActivityOnIdle,
|
||||
replacement: {
|
||||
match: /(shouldShowActivity=function\(\){.{1,50})&&!.{1,6}\.isIdle\(\)(.{0,}?})/,
|
||||
replace: (_, functionDeclarationAndExpression, restOfFunction) => `${functionDeclarationAndExpression}${restOfFunction}`
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
import { ApplicationCommandInputType, sendBotMessage } from "../api/Commands";
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import { lazyWebpack } from "../utils/misc";
|
||||
import definePlugin from "../utils/types";
|
||||
|
@ -74,9 +75,10 @@ function sendMessage(channelId, message) {
|
|||
});
|
||||
}
|
||||
|
||||
migratePluginSettings("SpotifyShareCommands", "Sendify");
|
||||
export default definePlugin({
|
||||
name: "Sendify",
|
||||
description: "Send your current Spotify music to chat",
|
||||
name: "SpotifyShareCommands",
|
||||
description: "Share your current Spotify track, album or artist via slash command (/track, /album, /artist)",
|
||||
authors: [Devs.katlyn],
|
||||
dependencies: ["CommandsAPI"],
|
||||
commands: [
|
|
@ -16,6 +16,7 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { migratePluginSettings } from "../api/settings";
|
||||
import { Devs } from "../utils/constants";
|
||||
import definePlugin from "../utils/types";
|
||||
import { SelectedChannelStore } from "../webpack/common";
|
||||
|
@ -25,9 +26,10 @@ const timers = {} as Record<string, {
|
|||
i: number;
|
||||
}>;
|
||||
|
||||
migratePluginSettings("VoiceChatDoubleClick", "vcDoubleClick");
|
||||
export default definePlugin({
|
||||
name: "vcDoubleClick",
|
||||
description: "Join VCs via DoubleClick instead of single click",
|
||||
name: "VoiceChatDoubleClick",
|
||||
description: "Join voice chats via double click instead of single click",
|
||||
authors: [Devs.Ven, Devs.D3SOX],
|
||||
patches: [
|
||||
{
|
||||
|
@ -40,12 +42,12 @@ export default definePlugin({
|
|||
// voice channels
|
||||
{
|
||||
match: /onClick:(.*)function\(\)\{(e\.handleClick.+?)}/g,
|
||||
replace: "onClick:$1function(){Vencord.Plugins.plugins.vcDoubleClick.schedule(()=>{$2}, e)}",
|
||||
replace: "onClick:$1function(){Vencord.Plugins.plugins.VoiceChatDoubleClick.schedule(()=>{$2}, e)}",
|
||||
},
|
||||
// stage channels
|
||||
{
|
||||
match: /onClick:(.{0,15})this\.handleClick,/g,
|
||||
replace: "onClick:$1(...args)=>Vencord.Plugins.plugins.vcDoubleClick.schedule(()=>{this.handleClick(...args);}, args[0]),",
|
||||
replace: "onClick:$1(...args)=>Vencord.Plugins.plugins.VoiceChatDoubleClick.schedule(()=>{this.handleClick(...args);}, args[0]),",
|
||||
}
|
||||
],
|
||||
},
|
||||
|
|
|
@ -36,7 +36,7 @@ export default new class ViewIcons implements PluginDef {
|
|||
authors = [Devs.Ven];
|
||||
description = "Makes Avatars/Banners in user profiles clickable, and adds Guild Context Menu Entries to View Banner/Icon.";
|
||||
|
||||
dependencies = ["MenuItemDeobfuscatorApi"];
|
||||
dependencies = ["MenuItemDeobfuscatorAPI"];
|
||||
|
||||
openImage(url: string) {
|
||||
const u = new URL(url);
|
||||
|
|
|
@ -216,10 +216,10 @@ interface Menu {
|
|||
/**
|
||||
* Discord's Context menu items.
|
||||
* To use anything but Menu.ContextMenu, your plugin HAS TO
|
||||
* depend on MenuItemDeobfuscatorApi. Otherwise they will throw
|
||||
* depend on MenuItemDeobfuscatorAPI. Otherwise they will throw
|
||||
*/
|
||||
export const Menu = proxyLazy(() => {
|
||||
const hasDeobfuscator = Vencord.Settings.plugins.MenuItemDeobfuscatorApi.enabled;
|
||||
const hasDeobfuscator = Vencord.Settings.plugins.MenuItemDeobfuscatorAPI.enabled;
|
||||
const menuItems = ["MenuSeparator", "MenuGroup", "MenuItem", "MenuCheckboxItem", "MenuRadioItem", "MenuControlItem"];
|
||||
|
||||
const map = mapMangledModule("♫ ⊂(。◕‿‿◕。⊂) ♪", {
|
||||
|
|
Loading…
Reference in a new issue