MLE: Hide From Other Loggers

This commit is contained in:
thororen1234 2025-10-22 16:16:45 -04:00
parent b0332be1f5
commit 06c4f25a86
No known key found for this signature in database
3 changed files with 37 additions and 9 deletions

View file

@ -41,12 +41,7 @@ let oldGetMessage: typeof MessageStore.getMessage;
const handledMessageIds = new Set();
async function messageDeleteHandler(payload: MessageDeletePayload & { isBulk: boolean; }) {
if (payload.mlDeleted) {
if (settings.store.permanentlyRemoveLogByDefault)
await idb.deleteMessageIDB(payload.id);
return;
}
if (payload.mlDeleted) return;
if (handledMessageIds.has(payload.id)) {
// Flogger.warn("skipping duplicate message", payload.id);

View file

@ -98,10 +98,10 @@ export const settings = definePluginSettings({
description: "Always log current selected channel. Blacklisted channels/users will still be ignored.",
},
permanentlyRemoveLogByDefault: {
hideMessageFromMessageLoggers: {
default: false,
type: OptionType.BOOLEAN,
description: "Vencord's base MessageLogger remove log button will delete logs permanently",
description: "When enabled, a context menu button will be added to messages to allow you to delete messages without them being logged by other loggers. Might not be safe, use at your own risk."
},
ShowLogsButton: {
@ -117,6 +117,12 @@ export const settings = definePluginSettings({
description: "Number of messages to display at once in logs & number of messages to load when loading more messages in logs.",
},
hideMessageFromMessageLoggersDeletedMessage: {
default: "redacted eh",
type: OptionType.STRING,
description: "The message content to replace the message with when using the hide message from message loggers feature.",
},
messageLimit: {
default: 200,
type: OptionType.NUMBER,

View file

@ -5,7 +5,7 @@
*/
import { addContextMenuPatch, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu";
import { FluxDispatcher, Menu, React, Toasts } from "@webpack/common";
import { FluxDispatcher, Menu, MessageActions, React, Toasts, UserStore } from "@webpack/common";
import { openLogModal } from "../components/LogsModal";
import { deleteMessageIDB } from "../db";
@ -114,6 +114,33 @@ export const contextMenuPath: NavContextMenuPatchCallback = (children, props) =>
{renderListOption("whitelistedIds", IdType as idKeys, props)}
</React.Fragment>
))}
{
settings.store.hideMessageFromMessageLoggers
&& props.navId === "message"
&& props.message?.author?.id === UserStore.getCurrentUser().id
&& props.message?.deleted === false
&& (
<>
<Menu.MenuSeparator />
<Menu.MenuItem
id="hide-from-message-loggers"
label="Delete Message (Hide From Message Loggers)"
color="danger"
action={async () => {
await MessageActions.deleteMessage(props.message.channel_id, props.message.id);
MessageActions._sendMessage(props.message.channel_id, {
"content": settings.store.hideMessageFromMessageLoggersDeletedMessage,
"tts": false,
"invalidEmojis": [],
"validNonShortcutEmojis": []
}, { nonce: props.message.id });
}}
/>
</>
)
}
</Menu.MenuItem>
);
}