Finish rewrite
This commit is contained in:
parent
c39ff8f648
commit
483bc13a31
15 changed files with 165 additions and 29 deletions
|
@ -1,8 +1,6 @@
|
|||
import * as plugins from "./plugins";
|
||||
import * as WP from "./utils/webpack";
|
||||
export * as Plugins from "./plugins";
|
||||
export * as Webpack from "./utils/webpack";
|
||||
export * as Api from "./api";
|
||||
|
||||
import "./utils/patchWebpack";
|
||||
import "./utils/quickCss";
|
||||
|
||||
export const Webpack = WP;
|
||||
export const Plugins = plugins;
|
17
src/api/MessageClicks.ts
Normal file
17
src/api/MessageClicks.ts
Normal file
|
@ -0,0 +1,17 @@
|
|||
type Listener = (message, channel, event) => void;
|
||||
|
||||
const listeners = new Set<Listener>();
|
||||
|
||||
export function _handleClick(message, channel, event) {
|
||||
for (const listener of listeners) {
|
||||
listener(message, channel, event);
|
||||
}
|
||||
}
|
||||
|
||||
export function addListener(listener: Listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
export function removeListener(listener: Listener) {
|
||||
return listeners.delete(listener);
|
||||
}
|
1
src/api/index.ts
Normal file
1
src/api/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export * as MessageClicks from "./MessageClicks";
|
1
src/globals.d.ts
vendored
1
src/globals.d.ts
vendored
|
@ -10,6 +10,7 @@ declare global {
|
|||
push(chunk: any): any;
|
||||
pop(): any;
|
||||
};
|
||||
[k: PropertyKey]: any;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
10
src/plugins/STFU.ts
Normal file
10
src/plugins/STFU.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import definePlugin from "../utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "STFU",
|
||||
description: "Disabled the fat warning in the DevTools console",
|
||||
author: "Vendicated",
|
||||
start() {
|
||||
window.DiscordNative.window.setDevtoolsCallbacks(null, null);
|
||||
}
|
||||
});
|
16
src/plugins/apiMessageClicks.ts
Normal file
16
src/plugins/apiMessageClicks.ts
Normal file
|
@ -0,0 +1,16 @@
|
|||
import definePlugin from "../utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "MessageClicksApi",
|
||||
description: "Api required by anything using message click actions",
|
||||
author: "Vendicated",
|
||||
patches: [{
|
||||
find: "if(e.altKey){",
|
||||
replacement: {
|
||||
match: /\.useClickMessage=function\((.{1,2}),(.{1,2})\).+?function\((.{1,2})\){/,
|
||||
replace: (m, message, channel, event) =>
|
||||
// the message param is shadowed by the event param, so need to alias them
|
||||
`${m.replace("{", `{var _msg=${message};var _chan=${channel};`)}Vencord.Api.MessageClicks._handleClick(_msg, _chan, ${event});`
|
||||
}
|
||||
}]
|
||||
});
|
|
@ -1,10 +0,0 @@
|
|||
import definePlugin from '../utils/types';
|
||||
|
||||
export default definePlugin({
|
||||
name: "bar",
|
||||
description: "Just to test",
|
||||
author: ["Vendicated"],
|
||||
start() {
|
||||
console.log("bar");
|
||||
}
|
||||
});
|
17
src/plugins/clientInfo.ts
Normal file
17
src/plugins/clientInfo.ts
Normal file
|
@ -0,0 +1,17 @@
|
|||
import definePlugin from "../utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "ClientInfo",
|
||||
description: "Adds extra info to Client Info in settings",
|
||||
author: "Vendicated",
|
||||
patches: [{
|
||||
find: "default.versionHash",
|
||||
replacement: {
|
||||
match: /\w\.createElement.+?["']Host ["'].+?\):null/,
|
||||
replace: m => {
|
||||
const idx = m.indexOf("Host") - 1;
|
||||
return `${m},${m.slice(0, idx)}"Vencord ".repeat(50),"1.0.0")," ")`;
|
||||
}
|
||||
}
|
||||
}]
|
||||
});
|
14
src/plugins/experiments.ts
Normal file
14
src/plugins/experiments.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import definePlugin from '../utils/types';
|
||||
|
||||
export default definePlugin({
|
||||
name: "Experiments",
|
||||
author: "Vendicated",
|
||||
description: "Enable Experiments",
|
||||
patches: [{
|
||||
find: "Object.defineProperties(this,{isDeveloper",
|
||||
replacement: {
|
||||
match: /(?<={isDeveloper:\{[^}]+,get:function\(\)\{return )\w/,
|
||||
replace: "true"
|
||||
}
|
||||
}]
|
||||
});
|
|
@ -1,10 +0,0 @@
|
|||
import definePlugin from "../utils/types";
|
||||
|
||||
export default definePlugin({
|
||||
name: "foo",
|
||||
description: "Just to test",
|
||||
author: ["Vendicated"],
|
||||
start() {
|
||||
console.log("foo");
|
||||
}
|
||||
});
|
36
src/plugins/messageActions.ts
Normal file
36
src/plugins/messageActions.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
import { MessageClicks } from "../api";
|
||||
import definePlugin from "../utils/types";
|
||||
import { find, findByProps } from "../utils/webpack";
|
||||
|
||||
export default definePlugin({
|
||||
name: "MessageQuickActions",
|
||||
description: "Quick Delete, Quick edit",
|
||||
author: "Vendicated",
|
||||
start() {
|
||||
const { deleteMessage, startEditMessage } = findByProps("deleteMessage");
|
||||
const { can } = findByProps("can", "initialize");
|
||||
const { Permissions: { MANAGE_MESSAGES } } = find(m => m.Permissions?.MANAGE_MESSAGES);
|
||||
const { getCurrentUser } = findByProps("getCurrentUser");
|
||||
|
||||
let isDeletePressed = false;
|
||||
document.addEventListener("keydown", e => {
|
||||
if (e.key === "Backspace") isDeletePressed = true;
|
||||
});
|
||||
document.addEventListener("keyup", e => {
|
||||
if (e.key === "Backspace") isDeletePressed = false;
|
||||
});
|
||||
|
||||
MessageClicks.addListener((msg, chan, event) => {
|
||||
const isMe = msg.author.id === getCurrentUser().id;
|
||||
if (!isDeletePressed) {
|
||||
if (isMe && event.detail >= 2) {
|
||||
startEditMessage(chan.id, msg.id, msg.content);
|
||||
event.preventDefault();
|
||||
}
|
||||
} else if (isMe || can(MANAGE_MESSAGES, chan)) {
|
||||
deleteMessage(chan.id, msg.id);
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
31
src/plugins/noTrack.ts
Normal file
31
src/plugins/noTrack.ts
Normal file
|
@ -0,0 +1,31 @@
|
|||
import definePlugin from "../utils/types";
|
||||
import { findByProps } from "../utils/webpack";
|
||||
|
||||
const DO_NOTHING = () => void 0;
|
||||
|
||||
export default definePlugin({
|
||||
name: "NoTrack",
|
||||
description: "Disable Discord's tracking and crash reporting",
|
||||
author: "Vendicated",
|
||||
start() {
|
||||
findByProps("getSuperPropertiesBase64", "track").track = DO_NOTHING;
|
||||
findByProps("submitLiveCrashReport").submitLiveCrashReport = DO_NOTHING;
|
||||
findByProps("AnalyticsActionHandlers").AnalyticsActionHandlers.handleTrack = DO_NOTHING;
|
||||
|
||||
const sentry = window.__SENTRY__;
|
||||
sentry.logger.disable();
|
||||
|
||||
sentry.hub.addBreadcrumb = DO_NOTHING;
|
||||
sentry.hub.getClient().close(0);
|
||||
sentry.hub.getScope().clear();
|
||||
|
||||
const c = console;
|
||||
for (const method in c) {
|
||||
if (c[method].__sentry_original__)
|
||||
c[method] = c[method].__sentry_original__;
|
||||
if (c[method].__REACT_DEVTOOLS_ORIGINAL_METHOD__?.__sentry_original__)
|
||||
c[method].__REACT_DEVTOOLS_ORIGINAL_METHOD__ = c[method].__REACT_DEVTOOLS_ORIGINAL_METHOD__.__sentry_original__;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
|
@ -1,5 +1,5 @@
|
|||
// exists to export default definePlugin({...})
|
||||
export default function definePlugin(p: Plugin) {
|
||||
export default function definePlugin(p: PluginDef) {
|
||||
return p;
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,12 @@ export interface Patch {
|
|||
export interface Plugin {
|
||||
name: string;
|
||||
description: string;
|
||||
author: string[];
|
||||
author: string;
|
||||
start?(): void;
|
||||
patches?: Patch[];
|
||||
}
|
||||
}
|
||||
|
||||
// @ts-ignore lole
|
||||
interface PluginDef extends Plugin {
|
||||
patches?: Omit<Patch, "plugin">[];
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue