From 27f647a167a1f10af6ca535bd2072b13b650bb19 Mon Sep 17 00:00:00 2001 From: thororen <78185467+thororen1234@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:47:57 -0400 Subject: [PATCH] MLE: More Updates I forgot --- .../components/LogsModal.tsx | 45 ++------------- .../messageLoggerEnhanced/index.tsx | 15 +---- .../utils/contextMenu.tsx | 56 ++++++++++++------- 3 files changed, 41 insertions(+), 75 deletions(-) diff --git a/src/equicordplugins/messageLoggerEnhanced/components/LogsModal.tsx b/src/equicordplugins/messageLoggerEnhanced/components/LogsModal.tsx index 47ab67eec..dfc8e398f 100644 --- a/src/equicordplugins/messageLoggerEnhanced/components/LogsModal.tsx +++ b/src/equicordplugins/messageLoggerEnhanced/components/LogsModal.tsx @@ -10,8 +10,8 @@ import { Flex } from "@components/Flex"; import { InfoIcon } from "@components/Icons"; import { copyWithToast, openUserProfile } from "@utils/discord"; import { LazyComponent } from "@utils/react"; -import { RenderModalProps, type User } from "@vencord/discord-types"; -import { find, findByCode, findByCodeLazy } from "@webpack"; +import { Channel, RenderModalProps, type User } from "@vencord/discord-types"; +import { find, findByCodeLazy } from "@webpack"; import { Alerts, ChannelStore, closeAllModals, ContextMenuApi, FluxDispatcher, GuildStore, Menu, Modal, NavigationRouter, openModal, React, TabBar, TextInput, Tooltip, useMemo, useRef, useState } from "@webpack/common"; import { DBMessageRecord, deleteMessageIDB, deleteMessagesBulkIDB } from "../db"; @@ -25,33 +25,14 @@ export interface MessagePreviewProps { className: string; author: User; message: LoggedMessage; + channel: Channel, compact: boolean; isGroupStart: boolean; hideSimpleEmbedContent: boolean; - - childrenAccessories: any; -} - -export interface ChildrenAccProops { - channelMessageProps: { - compact: boolean; - channel: any; - message: LoggedMessage; - groupId: string; - id: string; - isLastItem: boolean; - isHighlight: boolean; - renderContentOnly: boolean; - }; - hasSpoilerEmbeds: boolean; - isInteracting: boolean; - isAutomodBlockedMessage: boolean; - showClydeAiEmbeds: boolean; } const PrivateChannelRecord = findByCodeLazy(".is_message_request_timestamp,"); const MessagePreview = LazyComponent(() => find(m => m?.type?.toString().includes("previewLinkTarget:") && !m?.type?.toString().includes("HAS_THREAD"))); -const ChildrenAccessories = LazyComponent(() => findByCode("channelMessageProps:{message:")); export enum LogTabs { DELETED = "Deleted", @@ -404,28 +385,10 @@ function LMessage({ log, isGroupStart, reset, }: LMessageProps) { className={`${cl("modal-msg-preview")} ${message.deleted ? "messagelogger-deleted" : ""}`} author={message.author} message={message} + channel={ChannelStore.getChannel(message.channel_id) || new PrivateChannelRecord({ id: "" })} compact={false} isGroupStart={isGroupStart} hideSimpleEmbedContent={false} - - childrenAccessories={ - - } /> {settings.store.ShowWhereMessageIsFrom && channel?.isDM() && message?.author && ( From {message.author.username}'s DMs diff --git a/src/equicordplugins/messageLoggerEnhanced/index.tsx b/src/equicordplugins/messageLoggerEnhanced/index.tsx index e61ac7e96..6c797c661 100644 --- a/src/equicordplugins/messageLoggerEnhanced/index.tsx +++ b/src/equicordplugins/messageLoggerEnhanced/index.tsx @@ -50,12 +50,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)) { return; @@ -284,14 +279,6 @@ export default definePlugin({ replace: "deleted:$self.getDeleted(...arguments), editHistory:$self.getEdited(...arguments)," } }, - // MessagePreview component in LogsModal - { - find: "=!0,disableInteraction:", - replacement: { - match: /childrenHeader:.{0,100}childrenMessageContent/, - replace: "childrenAccessories:arguments[0].childrenAccessories || null,$&" - } - }, // fix vidoes failing because there are no thumbnails { find: ".handleImageLoad)", diff --git a/src/equicordplugins/messageLoggerEnhanced/utils/contextMenu.tsx b/src/equicordplugins/messageLoggerEnhanced/utils/contextMenu.tsx index 2f4a40660..c04c9366b 100644 --- a/src/equicordplugins/messageLoggerEnhanced/utils/contextMenu.tsx +++ b/src/equicordplugins/messageLoggerEnhanced/utils/contextMenu.tsx @@ -5,13 +5,17 @@ */ import { addContextMenuPatch, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu"; -import { FluxDispatcher, Menu, MessageActions, React, SortedGuildStore, Toasts, UserStore } from "@webpack/common"; +import { updateMessage } from "@api/MessageUpdater"; +import { findStoreLazy } from "@webpack"; +import { FluxDispatcher, Menu, MessageActions, React, Toasts, UserStore } from "@webpack/common"; import { openLogModal } from "../components/LogsModal"; import { deleteMessageIDB } from "../db"; import { settings } from "../index"; import { addToXAndRemoveFromOpposite, ListType, removeFromX } from "."; +const SortedGuildStore = findStoreLazy("SortedGuildStore"); + const idFunctions = { Folder: props => props?.folderId && @@ -64,10 +68,40 @@ function renderOpenLogs(idType: idKeys, props: any) { ); } +const removeMessageAction = async (props: any) => { + try { + await deleteMessageIDB(props.message.id); + if (props.message.deleted) { + FluxDispatcher.dispatch({ + type: "MESSAGE_DELETE", + channelId: props.message.channel_id, + id: props.message.id, + mlDeleted: true + }); + } else { + updateMessage(props.message.channel_id, props.message.id, { editHistory: [] }); + } + } catch (e) { + console.error("Failed to remove message", e); + Toasts.show({ + type: Toasts.Type.FAILURE, + message: "Failed to remove message. Check console for details.", + id: Toasts.genId() + }); + } +}; + export const contextMenuPath: NavContextMenuPatchCallback = (children, props) => { if (!props) return; if (!children.some(child => child?.props?.id === "message-logger")) { + if (settings.store.permanentlyRemoveLogByDefault) { + const mlRemoveHistory = children.find(c => c?.props?.id === "ml-remove-history"); + if (mlRemoveHistory) { + mlRemoveHistory.props.action = () => removeMessageAction(props); + } + } + children.push( , id="remove-message" label={props.message?.deleted ? "Remove Message (Permanent)" : "Remove Message History (Permanent)"} color="danger" - action={() => - deleteMessageIDB(props.message.id) - .then(() => { - if (props.message.deleted) { - FluxDispatcher.dispatch({ - type: "MESSAGE_DELETE", - channelId: props.message.channel_id, - id: props.message.id, - mlDeleted: true - }); - } else { - props.message.editHistory = []; - } - }).catch(() => Toasts.show({ - type: Toasts.Type.FAILURE, - message: "Failed to remove message", - id: Toasts.genId() - })) - } + action={() => removeMessageAction(props)} /> )