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,
|
setIsCaptchaOpen,
|
||||||
setPendingComment,
|
setPendingComment,
|
||||||
setPendingCommentIndex,
|
setPendingCommentIndex,
|
||||||
|
replyQuoteCid,
|
||||||
setResolveCaptchaPromise,
|
setResolveCaptchaPromise,
|
||||||
selectedAddress,
|
selectedAddress,
|
||||||
selectedParentCid,
|
selectedParentCid,
|
||||||
selectedShortCid,
|
selectedShortCid,
|
||||||
selectedStyle,
|
selectedStyle,
|
||||||
|
triggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
|
|
||||||
const account = useAccount();
|
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 getSelectedText = useCallback(() => {
|
||||||
const text = document.getSelection().toString();
|
const text = document.getSelection().toString();
|
||||||
setSelectedText(text ? `>${text}\n` : '');
|
setSelectedText(text ? `>${text}\n` : '');
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ const All = () => {
|
|||||||
selectedStyle,
|
selectedStyle,
|
||||||
setSelectedThread,
|
setSelectedThread,
|
||||||
setSelectedTitle,
|
setSelectedTitle,
|
||||||
|
setTriggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
|
|
||||||
const { anonymousMode } = useAnonModeStore();
|
const { anonymousMode } = useAnonModeStore();
|
||||||
@@ -706,7 +707,8 @@ const All = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid)
|
setReplyQuoteCid(thread.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(thread.shortCid);
|
setSelectedShortCid(thread.shortCid);
|
||||||
@@ -990,7 +992,8 @@ const All = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid)
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
@@ -1524,7 +1527,8 @@ const All = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid)
|
setReplyQuoteCid(thread.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(thread.shortCid);
|
setSelectedShortCid(thread.shortCid);
|
||||||
@@ -1701,7 +1705,8 @@ const All = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid)
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ const Board = () => {
|
|||||||
selectedTitle, setSelectedTitle,
|
selectedTitle, setSelectedTitle,
|
||||||
showPostForm,
|
showPostForm,
|
||||||
showPostFormLink,
|
showPostFormLink,
|
||||||
|
setTriggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
|
|
||||||
const { anonymousMode } = useAnonModeStore();
|
const { anonymousMode } = useAnonModeStore();
|
||||||
@@ -1150,7 +1151,8 @@ const Board = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid)
|
setReplyQuoteCid(thread.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(thread.shortCid);
|
setSelectedShortCid(thread.shortCid);
|
||||||
@@ -1432,7 +1434,8 @@ const Board = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid)
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
@@ -1937,7 +1940,8 @@ const Board = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid)
|
setReplyQuoteCid(thread.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(thread.shortCid);
|
setSelectedShortCid(thread.shortCid);
|
||||||
@@ -2092,7 +2096,8 @@ const Board = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid)
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ const Subscriptions = () => {
|
|||||||
selectedStyle,
|
selectedStyle,
|
||||||
setSelectedThread,
|
setSelectedThread,
|
||||||
setSelectedTitle,
|
setSelectedTitle,
|
||||||
|
setTriggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
|
|
||||||
const { anonymousMode } = useAnonModeStore();
|
const { anonymousMode } = useAnonModeStore();
|
||||||
@@ -714,7 +715,8 @@ const Subscriptions = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid)
|
setReplyQuoteCid(thread.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(thread.shortCid);
|
setSelectedShortCid(thread.shortCid);
|
||||||
@@ -998,7 +1000,8 @@ const Subscriptions = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid)
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
@@ -1532,7 +1535,8 @@ const Subscriptions = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid)
|
setReplyQuoteCid(thread.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(thread.shortCid);
|
setSelectedShortCid(thread.shortCid);
|
||||||
@@ -1709,7 +1713,8 @@ const Subscriptions = () => {
|
|||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid)
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ const Thread = () => {
|
|||||||
selectedTitle, setSelectedTitle,
|
selectedTitle, setSelectedTitle,
|
||||||
showPostForm,
|
showPostForm,
|
||||||
showPostFormLink,
|
showPostFormLink,
|
||||||
|
setTriggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
|
|
||||||
const { anonymousMode } = useAnonModeStore();
|
const { anonymousMode } = useAnonModeStore();
|
||||||
@@ -845,6 +846,7 @@ const Thread = () => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(comment.shortCid);
|
setReplyQuoteCid(comment.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(comment.shortCid);
|
setSelectedShortCid(comment.shortCid);
|
||||||
@@ -1085,6 +1087,7 @@ const Thread = () => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
@@ -1462,6 +1465,7 @@ const Thread = () => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(comment.shortCid);
|
setReplyQuoteCid(comment.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(comment.shortCid);
|
setSelectedShortCid(comment.shortCid);
|
||||||
@@ -1586,6 +1590,7 @@ const Thread = () => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
|
setTriggerInsertion(Date.now());
|
||||||
} else {
|
} else {
|
||||||
setIsReplyOpen(true);
|
setIsReplyOpen(true);
|
||||||
setSelectedShortCid(reply.shortCid);
|
setSelectedShortCid(reply.shortCid);
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ const useGeneralStore = create((set) => ({
|
|||||||
showPostFormLink: true,
|
showPostFormLink: true,
|
||||||
setShowPostFormLink: (show) => set({ showPostFormLink: show }),
|
setShowPostFormLink: (show) => set({ showPostFormLink: show }),
|
||||||
|
|
||||||
|
triggerInsertion: 0,
|
||||||
|
setTriggerInsertion: (trigger) => set({ triggerInsertion: trigger }),
|
||||||
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export default useGeneralStore;
|
export default useGeneralStore;
|
||||||
Reference in New Issue
Block a user