aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVen <vendicated@riseup.net>2022-11-14 16:22:50 +0100
committerGitHub <noreply@github.com>2022-11-14 16:22:50 +0100
commita96f8a89f36ccb980334da2274385373aa3ffb24 (patch)
treee520f3be75eb2bbd9f3c4d3427f16861b8d7ab6c
parent4642b54260a2258d8d0925dcfb5c6934fcf10835 (diff)
downloadVencord-a96f8a89f36ccb980334da2274385373aa3ffb24.tar.gz
Vencord-a96f8a89f36ccb980334da2274385373aa3ffb24.tar.bz2
Vencord-a96f8a89f36ccb980334da2274385373aa3ffb24.zip
MessageLogger: fixes + ignoreSelf & ignoreBots option (#213)
-rw-r--r--src/api/MessageEvents.ts2
-rw-r--r--src/components/ErrorBoundary.tsx2
-rw-r--r--src/components/PluginSettings/index.tsx2
-rw-r--r--src/debug/Tracer.ts2
-rw-r--r--src/plugins/index.ts2
-rw-r--r--src/plugins/messageLogger/index.tsx60
-rw-r--r--src/utils/Logger.ts (renamed from src/utils/logger.ts)0
-rw-r--r--src/utils/index.ts3
-rw-r--r--src/utils/updater.ts2
-rw-r--r--src/webpack/patchWebpack.ts2
-rw-r--r--src/webpack/webpack.ts2
11 files changed, 66 insertions, 13 deletions
diff --git a/src/api/MessageEvents.ts b/src/api/MessageEvents.ts
index ea2dfd6..02638b2 100644
--- a/src/api/MessageEvents.ts
+++ b/src/api/MessageEvents.ts
@@ -18,7 +18,7 @@
import type { Channel, Message } from "discord-types/general";
-import Logger from "../utils/logger";
+import Logger from "../utils/Logger";
import { MessageStore } from "../webpack/common";
const MessageEventsLogger = new Logger("MessageEvents", "#e5c890");
diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx
index 870371e..4429f72 100644
--- a/src/components/ErrorBoundary.tsx
+++ b/src/components/ErrorBoundary.tsx
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import Logger from "../utils/logger";
+import Logger from "../utils/Logger";
import { LazyComponent } from "../utils/misc";
import { Margins, React } from "../webpack/common";
import { ErrorCard } from "./ErrorCard";
diff --git a/src/components/PluginSettings/index.tsx b/src/components/PluginSettings/index.tsx
index fef8c30..9600ef7 100644
--- a/src/components/PluginSettings/index.tsx
+++ b/src/components/PluginSettings/index.tsx
@@ -22,7 +22,7 @@ import { showNotice } from "../../api/Notices";
import { Settings, useSettings } from "../../api/settings";
import { startDependenciesRecursive, startPlugin, stopPlugin } from "../../plugins";
import { ChangeList } from "../../utils/ChangeList";
-import Logger from "../../utils/logger";
+import Logger from "../../utils/Logger";
import { classes, LazyComponent, lazyWebpack } from "../../utils/misc";
import { openModalLazy } from "../../utils/modal";
import { Plugin } from "../../utils/types";
diff --git a/src/debug/Tracer.ts b/src/debug/Tracer.ts
index 86b5786..1e81691 100644
--- a/src/debug/Tracer.ts
+++ b/src/debug/Tracer.ts
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import Logger from "../utils/logger";
+import Logger from "../utils/Logger";
if (IS_DEV) {
var traces = {} as Record<string, [number, any[]]>;
diff --git a/src/plugins/index.ts b/src/plugins/index.ts
index 268e200..68a76cb 100644
--- a/src/plugins/index.ts
+++ b/src/plugins/index.ts
@@ -21,7 +21,7 @@ import Plugins from "~plugins";
import { registerCommand, unregisterCommand } from "../api/Commands";
import { Settings } from "../api/settings";
import { traceFunction } from "../debug/Tracer";
-import Logger from "../utils/logger";
+import Logger from "../utils/Logger";
import { Patch, Plugin } from "../utils/types";
const logger = new Logger("PluginManager", "#a6d189");
diff --git a/src/plugins/messageLogger/index.tsx b/src/plugins/messageLogger/index.tsx
index 476d092..7b6bf56 100644
--- a/src/plugins/messageLogger/index.tsx
+++ b/src/plugins/messageLogger/index.tsx
@@ -19,9 +19,11 @@
import { Settings } from "../../api/settings";
import ErrorBoundary from "../../components/ErrorBoundary";
import { Devs } from "../../utils/constants";
+import Logger from "../../utils/Logger";
import { lazyWebpack } from "../../utils/misc";
import definePlugin, { OptionType } from "../../utils/types";
import { filters } from "../../webpack";
+import { Parser, UserStore } from "../../webpack/common";
function addDeleteStyleClass() {
if (Settings.plugins.MessageLogger.deleteStyle === "text") {
@@ -36,7 +38,7 @@ function addDeleteStyleClass() {
export default definePlugin({
name: "MessageLogger",
description: "Temporarily logs deleted and edited messages.",
- authors: [Devs.rushii],
+ authors: [Devs.rushii, Devs.Ven],
timestampModule: null as any,
moment: null as Function | null,
@@ -49,6 +51,10 @@ export default definePlugin({
color: #f04747;
}
+ .messageLogger-deleted [class^="buttons"] {
+ display: none;
+ }
+
.messageLogger-deleted-attachment {
filter: grayscale(1);
}
@@ -93,7 +99,7 @@ export default definePlugin({
return (
<ErrorBoundary noop>
<div className="messageLogger-edited">
- {edit.content}
+ {Parser.parse(edit.content)}
<Timestamp
timestamp={edit.timestamp}
isEdited={true}
@@ -123,7 +129,53 @@ export default definePlugin({
{ label: "Red overlay", value: "overlay" }
],
onChange: () => addDeleteStyleClass()
+ },
+ ignoreBots: {
+ type: OptionType.BOOLEAN,
+ description: "Whether to ignore messages by bots",
+ default: false
+ },
+ ignoreSelf: {
+ type: OptionType.BOOLEAN,
+ description: "Whether to ignore messages by yourself",
+ default: false
+ }
+ },
+
+ handleDelete(cache: any, data: { ids: string[], id: string; }, isBulk: boolean) {
+ try {
+ if (cache == null || (!isBulk && !cache.has(data.id))) return cache;
+
+ const { ignoreBots, ignoreSelf } = Settings.plugins.MessageLogger;
+ const myId = UserStore.getCurrentUser().id;
+
+ function mutate(id: string) {
+ const msg = cache.get(id);
+ if (!msg) return;
+
+ const EPHEMERAL = 64;
+ const shouldIgnore = (msg.flags & EPHEMERAL) === EPHEMERAL ||
+ ignoreBots && msg.author?.bot ||
+ ignoreSelf && msg.author?.id === myId;
+
+ if (shouldIgnore) {
+ cache = cache.remove(id);
+ } else {
+ cache = cache.update(id, m => m
+ .set("deleted", true)
+ .set("attachments", m.attachments.map(a => (a.deleted = true, a))));
+ }
+ }
+
+ if (isBulk) {
+ data.ids.forEach(mutate);
+ } else {
+ mutate(data.id);
+ }
+ } catch (e) {
+ new Logger("MessageLogger").error("Error during handleDelete", e);
}
+ return cache;
},
// Based on canary 9ab8626bcebceaea6da570b9c586172d02b9c996
@@ -139,7 +191,7 @@ export default definePlugin({
replace:
"MESSAGE_DELETE:function($1){" +
" var cache = $2getOrCreate($1.channelId);" +
- " cache = cache.update($1.id,m=>m.set('deleted', true).set('attachments', m.attachments.map(a => (a.deleted = true, a))));" +
+ " cache = Vencord.Plugins.plugins.MessageLogger.handleDelete(cache, $1, false);" +
" $2commit(cache);" +
"},"
},
@@ -149,7 +201,7 @@ export default definePlugin({
replace:
"MESSAGE_DELETE_BULK:function($1){" +
" var cache = $2getOrCreate($1.channelId);" +
- " cache = $1.ids.reduce((pv,cv) => pv.update(cv, m => m.set('deleted', true).set('attachments', m.attachments.map(a => (a.deleted = true, a)))), cache);" +
+ " cache = Vencord.Plugins.plugins.MessageLogger.handleDelete(cache, $1, true);" +
" $2commit(cache);" +
"},"
},
diff --git a/src/utils/logger.ts b/src/utils/Logger.ts
index 88ebb43..88ebb43 100644
--- a/src/utils/logger.ts
+++ b/src/utils/Logger.ts
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 22504ce..41e1597 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -21,9 +21,10 @@ export * as Constants from "./constants";
export * from "./debounce";
export * as Discord from "./discord";
export { default as IpcEvents } from "./IpcEvents";
-export { default as Logger } from "./logger";
+export { default as Logger } from "./Logger";
export * from "./misc";
export * as Modals from "./modal";
export * from "./onceDefined";
export * from "./proxyLazy";
export * from "./Queue";
+
diff --git a/src/utils/updater.ts b/src/utils/updater.ts
index ea2319f..2ea4953 100644
--- a/src/utils/updater.ts
+++ b/src/utils/updater.ts
@@ -19,7 +19,7 @@
import gitHash from "~git-hash";
import IpcEvents from "./IpcEvents";
-import Logger from "./logger";
+import Logger from "./Logger";
import { IpcRes } from "./types";
export const UpdateLogger = new Logger("Updater", "white");
diff --git a/src/webpack/patchWebpack.ts b/src/webpack/patchWebpack.ts
index 40a16a6..e17ddfc 100644
--- a/src/webpack/patchWebpack.ts
+++ b/src/webpack/patchWebpack.ts
@@ -17,7 +17,7 @@
*/
import { WEBPACK_CHUNK } from "../utils/constants";
-import Logger from "../utils/logger";
+import Logger from "../utils/Logger";
import { _initWebpack } from ".";
let webpackChunk: any[];
diff --git a/src/webpack/webpack.ts b/src/webpack/webpack.ts
index b78afd0..df32132 100644
--- a/src/webpack/webpack.ts
+++ b/src/webpack/webpack.ts
@@ -19,7 +19,7 @@
import type { WebpackInstance } from "discord-types/other";
import { traceFunction } from "../debug/Tracer";
-import Logger from "../utils/logger";
+import Logger from "../utils/Logger";
import { proxyLazy } from "../utils/proxyLazy";
const logger = new Logger("Webpack");