mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
add cid quote insertion logic in ReplyModal
This commit is contained in:
@@ -14,11 +14,13 @@ const ReplyModal = ({ isOpen, closeModal }) => {
|
||||
setIsCaptchaOpen,
|
||||
setPendingComment,
|
||||
setPendingCommentIndex,
|
||||
replyQuoteCid,
|
||||
setResolveCaptchaPromise,
|
||||
selectedAddress,
|
||||
selectedParentCid,
|
||||
selectedShortCid,
|
||||
selectedStyle,
|
||||
triggerInsertion,
|
||||
} = useGeneralStore(state => state);
|
||||
|
||||
const account = useAccount();
|
||||
@@ -53,6 +55,21 @@ const ReplyModal = ({ isOpen, closeModal }) => {
|
||||
};
|
||||
|
||||
|
||||
const insertAtCursor = (inputElement, valueToInsert) => {
|
||||
const startPos = inputElement.selectionStart || inputElement.value.length;
|
||||
const endPos = startPos + valueToInsert.length;
|
||||
inputElement.setRangeText(valueToInsert, startPos, startPos, 'end');
|
||||
inputElement.setSelectionRange(endPos, endPos);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (replyQuoteCid && commentRef.current) {
|
||||
const prefixedReplyQuoteCid = `c/${replyQuoteCid}\n`;
|
||||
insertAtCursor(commentRef.current, prefixedReplyQuoteCid);
|
||||
}
|
||||
}, [triggerInsertion, replyQuoteCid]);
|
||||
|
||||
|
||||
const getSelectedText = useCallback(() => {
|
||||
const text = document.getSelection().toString();
|
||||
setSelectedText(text ? `>${text}\n` : '');
|
||||
|
||||
@@ -63,6 +63,7 @@ const All = () => {
|
||||
selectedStyle,
|
||||
setSelectedThread,
|
||||
setSelectedTitle,
|
||||
setTriggerInsertion,
|
||||
} = useGeneralStore(state => state);
|
||||
|
||||
const { anonymousMode } = useAnonModeStore();
|
||||
@@ -706,7 +707,8 @@ const All = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(thread.shortCid)
|
||||
setReplyQuoteCid(thread.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(thread.shortCid);
|
||||
@@ -990,7 +992,8 @@ const All = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid)
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
@@ -1524,7 +1527,8 @@ const All = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(thread.shortCid)
|
||||
setReplyQuoteCid(thread.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(thread.shortCid);
|
||||
@@ -1701,7 +1705,8 @@ const All = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid)
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
|
||||
@@ -67,6 +67,7 @@ const Board = () => {
|
||||
selectedTitle, setSelectedTitle,
|
||||
showPostForm,
|
||||
showPostFormLink,
|
||||
setTriggerInsertion,
|
||||
} = useGeneralStore(state => state);
|
||||
|
||||
const { anonymousMode } = useAnonModeStore();
|
||||
@@ -1150,7 +1151,8 @@ const Board = () => {
|
||||
e.preventDefault();
|
||||
setSelectedThreadCid(thread.cid);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(thread.shortCid)
|
||||
setReplyQuoteCid(thread.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(thread.shortCid);
|
||||
@@ -1432,7 +1434,8 @@ const Board = () => {
|
||||
e.preventDefault();
|
||||
setSelectedThreadCid(thread.cid);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid)
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
@@ -1937,7 +1940,8 @@ const Board = () => {
|
||||
e.preventDefault();
|
||||
setSelectedThreadCid(thread.cid);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(thread.shortCid)
|
||||
setReplyQuoteCid(thread.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(thread.shortCid);
|
||||
@@ -2092,7 +2096,8 @@ const Board = () => {
|
||||
e.preventDefault();
|
||||
setSelectedThreadCid(thread.cid);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid)
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
|
||||
@@ -63,6 +63,7 @@ const Subscriptions = () => {
|
||||
selectedStyle,
|
||||
setSelectedThread,
|
||||
setSelectedTitle,
|
||||
setTriggerInsertion,
|
||||
} = useGeneralStore(state => state);
|
||||
|
||||
const { anonymousMode } = useAnonModeStore();
|
||||
@@ -714,7 +715,8 @@ const Subscriptions = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(thread.shortCid)
|
||||
setReplyQuoteCid(thread.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(thread.shortCid);
|
||||
@@ -998,7 +1000,8 @@ const Subscriptions = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid)
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
@@ -1532,7 +1535,8 @@ const Subscriptions = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(thread.shortCid)
|
||||
setReplyQuoteCid(thread.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(thread.shortCid);
|
||||
@@ -1709,7 +1713,8 @@ const Subscriptions = () => {
|
||||
setSelectedThreadCid(thread.cid);
|
||||
setSelectedAddress(thread.subplebbitAddress);
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid)
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
|
||||
@@ -66,6 +66,7 @@ const Thread = () => {
|
||||
selectedTitle, setSelectedTitle,
|
||||
showPostForm,
|
||||
showPostFormLink,
|
||||
setTriggerInsertion,
|
||||
} = useGeneralStore(state => state);
|
||||
|
||||
const { anonymousMode } = useAnonModeStore();
|
||||
@@ -845,6 +846,7 @@ const Thread = () => {
|
||||
onClick={() => {
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(comment.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(comment.shortCid);
|
||||
@@ -1085,6 +1087,7 @@ const Thread = () => {
|
||||
onClick={() => {
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
@@ -1462,6 +1465,7 @@ const Thread = () => {
|
||||
onClick={() => {
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(comment.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(comment.shortCid);
|
||||
@@ -1586,6 +1590,7 @@ const Thread = () => {
|
||||
onClick={() => {
|
||||
if (isReplyOpen) {
|
||||
setReplyQuoteCid(reply.shortCid);
|
||||
setTriggerInsertion(Date.now());
|
||||
} else {
|
||||
setIsReplyOpen(true);
|
||||
setSelectedShortCid(reply.shortCid);
|
||||
|
||||
@@ -86,6 +86,9 @@ const useGeneralStore = create((set) => ({
|
||||
showPostFormLink: true,
|
||||
setShowPostFormLink: (show) => set({ showPostFormLink: show }),
|
||||
|
||||
triggerInsertion: 0,
|
||||
setTriggerInsertion: (trigger) => set({ triggerInsertion: trigger }),
|
||||
|
||||
}));
|
||||
|
||||
export default useGeneralStore;
|
||||
Reference in New Issue
Block a user