mirror of
https://github.com/Vendicated/Vencord.git
synced 2025-01-09 17:36:23 +00:00
QuickReply: Prevent caret from moving when selecting message (#3104)
This commit is contained in:
parent
cca5d7dc09
commit
79e2cb15f1
1 changed files with 16 additions and 13 deletions
|
@ -20,7 +20,7 @@ import { definePluginSettings, Settings } from "@api/Settings";
|
||||||
import { Devs } from "@utils/constants";
|
import { Devs } from "@utils/constants";
|
||||||
import definePlugin, { OptionType } from "@utils/types";
|
import definePlugin, { OptionType } from "@utils/types";
|
||||||
import { findByPropsLazy } from "@webpack";
|
import { findByPropsLazy } from "@webpack";
|
||||||
import { ChannelStore, FluxDispatcher as Dispatcher, MessageStore, PermissionsBits, PermissionStore, SelectedChannelStore, UserStore } from "@webpack/common";
|
import { ChannelStore, ComponentDispatch, FluxDispatcher as Dispatcher, MessageStore, PermissionsBits, PermissionStore, SelectedChannelStore, UserStore } from "@webpack/common";
|
||||||
import { Message } from "discord-types/general";
|
import { Message } from "discord-types/general";
|
||||||
|
|
||||||
const Kangaroo = findByPropsLazy("jumpToMessage");
|
const Kangaroo = findByPropsLazy("jumpToMessage");
|
||||||
|
@ -60,24 +60,24 @@ export default definePlugin({
|
||||||
settings,
|
settings,
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
Dispatcher.subscribe("DELETE_PENDING_REPLY", onDeletePendingReply);
|
|
||||||
Dispatcher.subscribe("MESSAGE_END_EDIT", onEndEdit);
|
|
||||||
Dispatcher.subscribe("MESSAGE_START_EDIT", onStartEdit);
|
|
||||||
Dispatcher.subscribe("CREATE_PENDING_REPLY", onCreatePendingReply);
|
|
||||||
document.addEventListener("keydown", onKeydown);
|
document.addEventListener("keydown", onKeydown);
|
||||||
},
|
},
|
||||||
|
|
||||||
stop() {
|
stop() {
|
||||||
Dispatcher.unsubscribe("DELETE_PENDING_REPLY", onDeletePendingReply);
|
|
||||||
Dispatcher.unsubscribe("MESSAGE_END_EDIT", onEndEdit);
|
|
||||||
Dispatcher.unsubscribe("MESSAGE_START_EDIT", onStartEdit);
|
|
||||||
Dispatcher.unsubscribe("CREATE_PENDING_REPLY", onCreatePendingReply);
|
|
||||||
document.removeEventListener("keydown", onKeydown);
|
document.removeEventListener("keydown", onKeydown);
|
||||||
},
|
},
|
||||||
});
|
|
||||||
|
|
||||||
const onDeletePendingReply = () => replyIdx = -1;
|
flux: {
|
||||||
const onEndEdit = () => editIdx = -1;
|
DELETE_PENDING_REPLY() {
|
||||||
|
replyIdx = -1;
|
||||||
|
},
|
||||||
|
MESSAGE_END_EDIT() {
|
||||||
|
editIdx = -1;
|
||||||
|
},
|
||||||
|
MESSAGE_START_EDIT: onStartEdit,
|
||||||
|
CREATE_PENDING_REPLY: onCreatePendingReply
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function calculateIdx(messages: Message[], id: string) {
|
function calculateIdx(messages: Message[], id: string) {
|
||||||
const idx = messages.findIndex(m => m.id === id);
|
const idx = messages.findIndex(m => m.id === id);
|
||||||
|
@ -109,6 +109,8 @@ function onKeydown(e: KeyboardEvent) {
|
||||||
if (!isUp && e.key !== "ArrowDown") return;
|
if (!isUp && e.key !== "ArrowDown") return;
|
||||||
if (!isCtrl(e) || isAltOrMeta(e)) return;
|
if (!isCtrl(e) || isAltOrMeta(e)) return;
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
if (e.shiftKey)
|
if (e.shiftKey)
|
||||||
nextEdit(isUp);
|
nextEdit(isUp);
|
||||||
else
|
else
|
||||||
|
@ -194,9 +196,10 @@ function nextReply(isUp: boolean) {
|
||||||
channel,
|
channel,
|
||||||
message,
|
message,
|
||||||
shouldMention: shouldMention(message),
|
shouldMention: shouldMention(message),
|
||||||
showMentionToggle: channel.guild_id !== null && message.author.id !== meId,
|
showMentionToggle: channel.isPrivate() && message.author.id !== meId,
|
||||||
_isQuickReply: true
|
_isQuickReply: true
|
||||||
});
|
});
|
||||||
|
ComponentDispatch.dispatchToLastSubscribed("TEXTAREA_FOCUS");
|
||||||
jumpIfOffScreen(channel.id, message.id);
|
jumpIfOffScreen(channel.id, message.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue