diff options
author | Vendicated <vendicated@riseup.net> | 2023-04-02 22:14:58 +0200 |
---|---|---|
committer | Vendicated <vendicated@riseup.net> | 2023-04-02 22:14:58 +0200 |
commit | 8c47b7080d1b16df319cfadbc442f8a25e5a5a49 (patch) | |
tree | 3845708674ed19240b0d07715b59ed7f1ff48740 | |
parent | 8378638ee4bc1e9159110dacb38e682bc8438f52 (diff) | |
download | Vencord-8c47b7080d1b16df319cfadbc442f8a25e5a5a49.tar.gz Vencord-8c47b7080d1b16df319cfadbc442f8a25e5a5a49.tar.bz2 Vencord-8c47b7080d1b16df319cfadbc442f8a25e5a5a49.zip |
QuickReply & Up Key: Do not attempt to edit/reply to logged deleted message
-rw-r--r-- | src/plugins/messageLogger/index.tsx | 5 | ||||
-rw-r--r-- | src/plugins/quickReply.ts | 13 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/messageLogger/index.tsx b/src/plugins/messageLogger/index.tsx index 4b4e0e9..ef9a0ec 100644 --- a/src/plugins/messageLogger/index.tsx +++ b/src/plugins/messageLogger/index.tsx @@ -209,6 +209,11 @@ export default definePlugin({ " m" + ")" + ".update($3" + }, + { + // fix up key (edit last message) attempting to edit a deleted message + match: /(?<=getLastEditableMessage=.{0,200}\.find\(\(function\((\i)\)\{)return/, + replace: "return !$1.deleted &&" } ] }, diff --git a/src/plugins/quickReply.ts b/src/plugins/quickReply.ts index a499ea4..984db18 100644 --- a/src/plugins/quickReply.ts +++ b/src/plugins/quickReply.ts @@ -111,7 +111,7 @@ function jumpIfOffScreen(channelId: string, messageId: string) { } function getNextMessage(isUp: boolean, isReply: boolean) { - let messages: Message[] = MessageStore.getMessages(SelectedChannelStore.getChannelId())._array; + let messages: Array<Message & { deleted?: boolean; }> = MessageStore.getMessages(SelectedChannelStore.getChannelId())._array; if (!isReply) { // we are editing so only include own const meId = UserStore.getCurrentUser().id; messages = messages.filter(m => m.author.id === meId); @@ -121,11 +121,18 @@ function getNextMessage(isUp: boolean, isReply: boolean) { ? Math.min(messages.length - 1, i + 1) : Math.max(-1, i - 1); + const findNextNonDeleted = (i: number) => { + do { + i = mutate(i); + } while (i !== -1 && messages[messages.length - i - 1]?.deleted === true); + return i; + }; + let i: number; if (isReply) - replyIdx = i = mutate(replyIdx); + replyIdx = i = findNextNonDeleted(replyIdx); else - editIdx = i = mutate(editIdx); + editIdx = i = findNextNonDeleted(editIdx); return i === - 1 ? undefined : messages[messages.length - i - 1]; } |