mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix greentext selection
This commit is contained in:
@@ -20,6 +20,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
|
|||||||
selectedParentCid,
|
selectedParentCid,
|
||||||
selectedShortCid,
|
selectedShortCid,
|
||||||
selectedStyle,
|
selectedStyle,
|
||||||
|
selectedText, setSelectedText,
|
||||||
triggerInsertion,
|
triggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
|
|
||||||
@@ -33,7 +34,6 @@ const ReplyModal = ({ isOpen, closeModal }) => {
|
|||||||
const linkRef = useRef();
|
const linkRef = useRef();
|
||||||
|
|
||||||
const [triggerPublishComment, setTriggerPublishComment] = useState(false);
|
const [triggerPublishComment, setTriggerPublishComment] = useState(false);
|
||||||
const [selectedText, setSelectedText] = useState('');
|
|
||||||
const [isMobile, setIsMobile] = useState(window.innerWidth <= 480);
|
const [isMobile, setIsMobile] = useState(window.innerWidth <= 480);
|
||||||
|
|
||||||
|
|
||||||
@@ -50,7 +50,12 @@ const ReplyModal = ({ isOpen, closeModal }) => {
|
|||||||
|
|
||||||
const onModalOpen = () => {
|
const onModalOpen = () => {
|
||||||
if (commentRef.current) {
|
if (commentRef.current) {
|
||||||
|
if (selectedText) {
|
||||||
|
commentRef.current.value += '\n';
|
||||||
|
}
|
||||||
commentRef.current.focus();
|
commentRef.current.focus();
|
||||||
|
const len = commentRef.current.value.length;
|
||||||
|
commentRef.current.setSelectionRange(len, len);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -73,16 +78,16 @@ const ReplyModal = ({ isOpen, closeModal }) => {
|
|||||||
const getSelectedText = useCallback(() => {
|
const getSelectedText = useCallback(() => {
|
||||||
const text = document.getSelection().toString();
|
const text = document.getSelection().toString();
|
||||||
setSelectedText(text ? `>${text}\n` : '');
|
setSelectedText(text ? `>${text}\n` : '');
|
||||||
}, []);
|
}, [setSelectedText]);
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
getSelectedText();
|
setTimeout(getSelectedText, 0);
|
||||||
} else {
|
} else {
|
||||||
setSelectedText('');
|
setSelectedText('');
|
||||||
}
|
}
|
||||||
}, [isOpen, getSelectedText]);
|
}, [isOpen, getSelectedText, setSelectedText]);
|
||||||
|
|
||||||
|
|
||||||
const onChallengeVerification = (challengeVerification) => {
|
const onChallengeVerification = (challengeVerification) => {
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ const All = () => {
|
|||||||
setSelectedShortCid,
|
setSelectedShortCid,
|
||||||
selectedStyle,
|
selectedStyle,
|
||||||
setSelectedThread,
|
setSelectedThread,
|
||||||
|
setSelectedText,
|
||||||
setSelectedTitle,
|
setSelectedTitle,
|
||||||
setTriggerInsertion,
|
setTriggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
@@ -706,6 +707,9 @@ const All = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid);
|
setReplyQuoteCid(thread.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -991,6 +995,9 @@ const All = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1526,6 +1533,9 @@ const All = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid);
|
setReplyQuoteCid(thread.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1704,6 +1714,9 @@ const All = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ const Board = () => {
|
|||||||
setSelectedShortCid,
|
setSelectedShortCid,
|
||||||
selectedStyle,
|
selectedStyle,
|
||||||
setSelectedThread,
|
setSelectedThread,
|
||||||
|
setSelectedText,
|
||||||
selectedTitle, setSelectedTitle,
|
selectedTitle, setSelectedTitle,
|
||||||
showPostForm,
|
showPostForm,
|
||||||
showPostFormLink,
|
showPostFormLink,
|
||||||
@@ -1150,6 +1151,9 @@ const Board = () => {
|
|||||||
if (e.button === 2) return;
|
if (e.button === 2) return;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid);
|
setReplyQuoteCid(thread.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1433,6 +1437,9 @@ const Board = () => {
|
|||||||
if (e.button === 2) return;
|
if (e.button === 2) return;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1939,6 +1946,9 @@ const Board = () => {
|
|||||||
if (e.button === 2) return;
|
if (e.button === 2) return;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid);
|
setReplyQuoteCid(thread.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -2095,6 +2105,9 @@ const Board = () => {
|
|||||||
if (e.button === 2) return;
|
if (e.button === 2) return;
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ const Subscriptions = () => {
|
|||||||
setSelectedShortCid,
|
setSelectedShortCid,
|
||||||
selectedStyle,
|
selectedStyle,
|
||||||
setSelectedThread,
|
setSelectedThread,
|
||||||
|
setSelectedText,
|
||||||
setSelectedTitle,
|
setSelectedTitle,
|
||||||
setTriggerInsertion,
|
setTriggerInsertion,
|
||||||
} = useGeneralStore(state => state);
|
} = useGeneralStore(state => state);
|
||||||
@@ -714,6 +715,9 @@ const Subscriptions = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid);
|
setReplyQuoteCid(thread.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -999,6 +1003,9 @@ const Subscriptions = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1534,6 +1541,9 @@ const Subscriptions = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(thread.shortCid);
|
setReplyQuoteCid(thread.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1712,6 +1722,9 @@ const Subscriptions = () => {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSelectedThreadCid(thread.cid);
|
setSelectedThreadCid(thread.cid);
|
||||||
setSelectedAddress(thread.subplebbitAddress);
|
setSelectedAddress(thread.subplebbitAddress);
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ const Thread = () => {
|
|||||||
setSelectedShortCid,
|
setSelectedShortCid,
|
||||||
selectedStyle,
|
selectedStyle,
|
||||||
selectedThread, setSelectedThread,
|
selectedThread, setSelectedThread,
|
||||||
|
setSelectedText,
|
||||||
selectedTitle, setSelectedTitle,
|
selectedTitle, setSelectedTitle,
|
||||||
showPostForm,
|
showPostForm,
|
||||||
showPostFormLink,
|
showPostFormLink,
|
||||||
@@ -844,6 +845,9 @@ const Thread = () => {
|
|||||||
<span>c/</span>
|
<span>c/</span>
|
||||||
<Link to={() => {}} id="reply-button" style={{ cursor: 'pointer' }}
|
<Link to={() => {}} id="reply-button" style={{ cursor: 'pointer' }}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(comment.shortCid);
|
setReplyQuoteCid(comment.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1085,6 +1089,9 @@ const Thread = () => {
|
|||||||
{reply.shortCid ? (
|
{reply.shortCid ? (
|
||||||
<Link id="reply-button" key={`pl2-${index}`}
|
<Link id="reply-button" key={`pl2-${index}`}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1463,6 +1470,9 @@ const Thread = () => {
|
|||||||
<span key={`mob-no-${comment.cid}`}>c/</span>
|
<span key={`mob-no-${comment.cid}`}>c/</span>
|
||||||
<Link to={() => {}} id="reply-button" key={`mob-no2-${comment.cid}`} title="Reply to this post"
|
<Link to={() => {}} id="reply-button" key={`mob-no2-${comment.cid}`} title="Reply to this post"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(comment.shortCid);
|
setReplyQuoteCid(comment.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
@@ -1588,6 +1598,9 @@ const Thread = () => {
|
|||||||
{reply.shortCid ? (
|
{reply.shortCid ? (
|
||||||
<Link id="reply-button" key={`mob-pl2-${index}`}
|
<Link id="reply-button" key={`mob-pl2-${index}`}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
let text = document.getSelection().toString();
|
||||||
|
text = text ? `>${text}` : text;
|
||||||
|
setSelectedText(text);
|
||||||
if (isReplyOpen) {
|
if (isReplyOpen) {
|
||||||
setReplyQuoteCid(reply.shortCid);
|
setReplyQuoteCid(reply.shortCid);
|
||||||
setTriggerInsertion(Date.now());
|
setTriggerInsertion(Date.now());
|
||||||
|
|||||||
@@ -73,6 +73,9 @@ const useGeneralStore = create((set) => ({
|
|||||||
localStorage.setItem('selectedStyle', style);
|
localStorage.setItem('selectedStyle', style);
|
||||||
set({ selectedStyle: style });
|
set({ selectedStyle: style });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
selectedText: '',
|
||||||
|
setSelectedText: (text) => set({ selectedText: text }),
|
||||||
|
|
||||||
selectedThread: '',
|
selectedThread: '',
|
||||||
setSelectedThread: (thread) => set({ selectedThread: thread }),
|
setSelectedThread: (thread) => set({ selectedThread: thread }),
|
||||||
|
|||||||
Reference in New Issue
Block a user