diff --git a/src/components/modals/ReplyModal.jsx b/src/components/modals/ReplyModal.jsx
index 50f17bc4..328a3807 100755
--- a/src/components/modals/ReplyModal.jsx
+++ b/src/components/modals/ReplyModal.jsx
@@ -20,6 +20,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
selectedParentCid,
selectedShortCid,
selectedStyle,
+ selectedText, setSelectedText,
triggerInsertion,
} = useGeneralStore(state => state);
@@ -33,7 +34,6 @@ const ReplyModal = ({ isOpen, closeModal }) => {
const linkRef = useRef();
const [triggerPublishComment, setTriggerPublishComment] = useState(false);
- const [selectedText, setSelectedText] = useState('');
const [isMobile, setIsMobile] = useState(window.innerWidth <= 480);
@@ -50,7 +50,12 @@ const ReplyModal = ({ isOpen, closeModal }) => {
const onModalOpen = () => {
if (commentRef.current) {
+ if (selectedText) {
+ commentRef.current.value += '\n';
+ }
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 text = document.getSelection().toString();
setSelectedText(text ? `>${text}\n` : '');
- }, []);
+ }, [setSelectedText]);
useEffect(() => {
if (isOpen) {
- getSelectedText();
+ setTimeout(getSelectedText, 0);
} else {
setSelectedText('');
}
- }, [isOpen, getSelectedText]);
+ }, [isOpen, getSelectedText, setSelectedText]);
const onChallengeVerification = (challengeVerification) => {
diff --git a/src/components/views/All.jsx b/src/components/views/All.jsx
index 6f6d00d8..7f647b9d 100755
--- a/src/components/views/All.jsx
+++ b/src/components/views/All.jsx
@@ -62,6 +62,7 @@ const All = () => {
setSelectedShortCid,
selectedStyle,
setSelectedThread,
+ setSelectedText,
setSelectedTitle,
setTriggerInsertion,
} = useGeneralStore(state => state);
@@ -706,6 +707,9 @@ const All = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(thread.shortCid);
setTriggerInsertion(Date.now());
@@ -991,6 +995,9 @@ const All = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
@@ -1526,6 +1533,9 @@ const All = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(thread.shortCid);
setTriggerInsertion(Date.now());
@@ -1704,6 +1714,9 @@ const All = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
diff --git a/src/components/views/Board.jsx b/src/components/views/Board.jsx
index cc3287bf..b10a29f3 100755
--- a/src/components/views/Board.jsx
+++ b/src/components/views/Board.jsx
@@ -64,6 +64,7 @@ const Board = () => {
setSelectedShortCid,
selectedStyle,
setSelectedThread,
+ setSelectedText,
selectedTitle, setSelectedTitle,
showPostForm,
showPostFormLink,
@@ -1150,6 +1151,9 @@ const Board = () => {
if (e.button === 2) return;
e.preventDefault();
setSelectedThreadCid(thread.cid);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(thread.shortCid);
setTriggerInsertion(Date.now());
@@ -1433,6 +1437,9 @@ const Board = () => {
if (e.button === 2) return;
e.preventDefault();
setSelectedThreadCid(thread.cid);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
@@ -1939,6 +1946,9 @@ const Board = () => {
if (e.button === 2) return;
e.preventDefault();
setSelectedThreadCid(thread.cid);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(thread.shortCid);
setTriggerInsertion(Date.now());
@@ -2095,6 +2105,9 @@ const Board = () => {
if (e.button === 2) return;
e.preventDefault();
setSelectedThreadCid(thread.cid);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
diff --git a/src/components/views/Subscriptions.jsx b/src/components/views/Subscriptions.jsx
index 939b881f..d47614e6 100755
--- a/src/components/views/Subscriptions.jsx
+++ b/src/components/views/Subscriptions.jsx
@@ -62,6 +62,7 @@ const Subscriptions = () => {
setSelectedShortCid,
selectedStyle,
setSelectedThread,
+ setSelectedText,
setSelectedTitle,
setTriggerInsertion,
} = useGeneralStore(state => state);
@@ -714,6 +715,9 @@ const Subscriptions = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(thread.shortCid);
setTriggerInsertion(Date.now());
@@ -999,6 +1003,9 @@ const Subscriptions = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
@@ -1534,6 +1541,9 @@ const Subscriptions = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(thread.shortCid);
setTriggerInsertion(Date.now());
@@ -1712,6 +1722,9 @@ const Subscriptions = () => {
e.preventDefault();
setSelectedThreadCid(thread.cid);
setSelectedAddress(thread.subplebbitAddress);
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
diff --git a/src/components/views/Thread.jsx b/src/components/views/Thread.jsx
index 392457ae..a84d3cfb 100755
--- a/src/components/views/Thread.jsx
+++ b/src/components/views/Thread.jsx
@@ -63,6 +63,7 @@ const Thread = () => {
setSelectedShortCid,
selectedStyle,
selectedThread, setSelectedThread,
+ setSelectedText,
selectedTitle, setSelectedTitle,
showPostForm,
showPostFormLink,
@@ -844,6 +845,9 @@ const Thread = () => {
c/
{}} id="reply-button" style={{ cursor: 'pointer' }}
onClick={() => {
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(comment.shortCid);
setTriggerInsertion(Date.now());
@@ -1085,6 +1089,9 @@ const Thread = () => {
{reply.shortCid ? (
{
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
@@ -1463,6 +1470,9 @@ const Thread = () => {
c/
{}} id="reply-button" key={`mob-no2-${comment.cid}`} title="Reply to this post"
onClick={() => {
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(comment.shortCid);
setTriggerInsertion(Date.now());
@@ -1588,6 +1598,9 @@ const Thread = () => {
{reply.shortCid ? (
{
+ let text = document.getSelection().toString();
+ text = text ? `>${text}` : text;
+ setSelectedText(text);
if (isReplyOpen) {
setReplyQuoteCid(reply.shortCid);
setTriggerInsertion(Date.now());
diff --git a/src/hooks/stores/useGeneralStore.js b/src/hooks/stores/useGeneralStore.js
index aba2fce3..42796fe6 100644
--- a/src/hooks/stores/useGeneralStore.js
+++ b/src/hooks/stores/useGeneralStore.js
@@ -73,6 +73,9 @@ const useGeneralStore = create((set) => ({
localStorage.setItem('selectedStyle', style);
set({ selectedStyle: style });
},
+
+ selectedText: '',
+ setSelectedText: (text) => set({ selectedText: text }),
selectedThread: '',
setSelectedThread: (thread) => set({ selectedThread: thread }),