aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/messageLogger/index.tsx5
-rw-r--r--src/plugins/quickReply.ts13
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];
}