diff --git a/src/App.js b/src/App.js index d13f5a3e..2dcf67b2 100755 --- a/src/App.js +++ b/src/App.js @@ -40,31 +40,31 @@ export default function App() { const account = useAccount(); - const [, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); useEffect(() => { const successToast = localStorage.getItem("successToast"); const errorToast = localStorage.getItem("errorToast"); if (successToast) { - setSuccessMessage(successToast); + setNewSuccessMessage(successToast); localStorage.removeItem("successToast"); } else if (errorToast) { - setErrorMessage(errorToast); + setNewErrorMessage(errorToast); localStorage.removeItem("errorToast"); } else { return; } - }, [setErrorMessage, setSuccessMessage]); + }, [setNewErrorMessage, setNewSuccessMessage]); // preload default subs and subscriptions useBufferedFeeds({ feedsOptions: [ {subplebbitAddresses: defaultSubplebbits.map( (subplebbit) => subplebbit.address - ), sortType: 'new'}, - {subplebbitAddresses: account?.subscriptions, sortType: 'new'} + ), sortType: 'active'}, + {subplebbitAddresses: account?.subscriptions, sortType: 'active'} ] }); diff --git a/src/components/modals/ModerationModal.jsx b/src/components/modals/ModerationModal.jsx index 4ab9a2a0..fcd53b09 100755 --- a/src/components/modals/ModerationModal.jsx +++ b/src/components/modals/ModerationModal.jsx @@ -26,8 +26,8 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => { const [reason, setReason] = useState(''); const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false); - const [errorMessage, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); useEffect(() => { @@ -48,9 +48,9 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => { const onChallengeVerification = (challengeVerification) => { if (challengeVerification.challengeSuccess === true) { - setSuccessMessage('Challenge Success'); + setNewSuccessMessage('Challenge Success'); } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -63,7 +63,7 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -100,7 +100,7 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; @@ -113,19 +113,12 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); - const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); - - - useEffect(() => { - if (error && error !== errorMessage) { - setErrorMessage(error); - } - }, [error, setErrorMessage, errorMessage]); + const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); useEffect(() => { diff --git a/src/components/modals/ReplyModal.jsx b/src/components/modals/ReplyModal.jsx index 1e824cdd..40c28384 100755 --- a/src/components/modals/ReplyModal.jsx +++ b/src/components/modals/ReplyModal.jsx @@ -23,7 +23,7 @@ const ReplyModal = ({ isOpen, closeModal }) => { const account = useAccount(); - const [, setErrorMessage] = useError(); + const [, setNewErrorMessage] = useError(); const nodeRef = useRef(null); const nameRef = useRef(); @@ -73,7 +73,7 @@ const ReplyModal = ({ isOpen, closeModal }) => { console.log('challenge success'); } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('challenge failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('challenge failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -86,7 +86,7 @@ const ReplyModal = ({ isOpen, closeModal }) => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -107,7 +107,7 @@ const ReplyModal = ({ isOpen, closeModal }) => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); @@ -141,7 +141,7 @@ const ReplyModal = ({ isOpen, closeModal }) => { commentRef.current.value === "" && linkRef.current.value === "" ) { - setErrorMessage("Please enter a comment or link."); + setNewErrorMessage("Please enter a comment or link."); return; } @@ -200,7 +200,7 @@ const ReplyModal = ({ isOpen, closeModal }) => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; diff --git a/src/components/views/All.jsx b/src/components/views/All.jsx index 2967867c..8851ed0a 100755 --- a/src/components/views/All.jsx +++ b/src/components/views/All.jsx @@ -63,8 +63,8 @@ const All = () => { const account = useAccount(); const navigate = useNavigate(); - const [errorMessage, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); const threadMenuRefs = useRef({}); const replyMenuRefs = useRef({}); @@ -81,7 +81,6 @@ const All = () => { const [prevScrollPos, setPrevScrollPos] = useState(0); const [visible, setVisible] = useState(true); const [isImageSearchOpen, setIsImageSearchOpen] = useState(false); - const [isModerator, setIsModerator] = useState(false); const [commentCid, setCommentCid] = useState(null); const [menuPosition, setMenuPosition] = useState({top: 0, left: 0}); const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false); @@ -93,8 +92,8 @@ const All = () => { const [moderatorPermissions, setModeratorPermissions] = useState({}); const addresses = defaultSubplebbits.map(subplebbit => subplebbit.address); - const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: addresses, sortType: 'new'}); - const {subplebbits} = useSubplebbits({subplebbitAddresses: addresses, sortType: 'new'}); + const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: addresses, sortType: 'active'}); + const {subplebbits} = useSubplebbits({subplebbitAddresses: addresses, sortType: 'active'}); const [selectedFeed, setSelectedFeed] = useState(feed.sort((a, b) => b.timestamp - a.timestamp)); const stateString = useFeedStateString(subplebbits); @@ -102,11 +101,11 @@ const All = () => { useEffect(() => { let permissions = {}; - + selectedFeed.forEach(thread => { - const subplebbit = subplebbits.find(s => s.address === thread.subplebbitAddress); - - if (subplebbit && subplebbit.roles !== undefined) { + const subplebbit = subplebbits.find(s => s && s.address === thread.subplebbitAddress); + + if (subplebbit && subplebbit.roles) { const role = subplebbit.roles[account?.author.address]?.role; if (role === 'moderator' || role === 'admin' || role === 'owner') { @@ -116,9 +115,9 @@ const All = () => { } } }); - + setModeratorPermissions(permissions); - }, [account?.author.address, selectedFeed, subplebbits]); + }, [account?.author.address, selectedFeed, subplebbits]); const handleOptionClick = () => { @@ -160,11 +159,10 @@ const All = () => { }, [subplebbits]) useEffect(() => { - if (errorString && errorString !== errorMessage) { - setErrorMessage(errorString); + if (errorString) { + setNewErrorMessage(errorString); } - }, [errorString, setErrorMessage, errorMessage]); - + }, [errorString, setNewErrorMessage]); useEffect(() => { setSelectedFeed(feed.sort((a, b) => b.timestamp - a.timestamp)); @@ -247,10 +245,10 @@ const All = () => { const onChallengeVerification = (challengeVerification) => { if (challengeVerification.challengeSuccess === true) { - setSuccessMessage('Challenge Success'); + setNewSuccessMessage('Challenge Success'); } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -261,7 +259,7 @@ const All = () => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -298,7 +296,7 @@ const All = () => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; @@ -310,18 +308,12 @@ const All = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); - const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); - - useEffect(() => { - if (error && error !== errorMessage) { - setErrorMessage(error); - } - }, [error, setErrorMessage, errorMessage]); + const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const handleAuthorDeleteClick = (commentCid) => { @@ -569,7 +561,7 @@ const All = () => { const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {}; const commentMediaInfo = getCommentMediaInfo(thread); const fallbackImgUrl = "assets/filedeleted-res.gif"; - setIsModerator(moderatorPermissions[thread.subplebbitAddress]); + const isModerator = moderatorPermissions[thread.subplebbitAddress]; return (
diff --git a/src/components/views/Board.jsx b/src/components/views/Board.jsx index 77e7f604..b8e3e72b 100755 --- a/src/components/views/Board.jsx +++ b/src/components/views/Board.jsx @@ -69,8 +69,8 @@ const Board = () => { const navigate = useNavigate(); const { subplebbitAddress } = useParams(); - const [errorMessage, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); const nameRef = useRef(); const subjectRef = useRef(); @@ -159,10 +159,10 @@ const Board = () => { useEffect(() => { - if (errorString && errorString !== errorMessage) { - setErrorMessage(errorString); + if (errorString) { + setNewErrorMessage(errorString); } - }, [errorString, setErrorMessage, errorMessage]); + }, [errorString, setNewErrorMessage]); const flattenedRepliesByThread = useMemo(() => { @@ -261,11 +261,11 @@ const Board = () => { navigate(`/p/${subplebbitAddress}/c/${challengeVerification.publication?.cid}`); console.log('challenge success'); } else { - setSuccessMessage('Challenge Success'); + setNewSuccessMessage('Challenge Success'); } } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -278,7 +278,7 @@ const Board = () => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -299,7 +299,7 @@ const Board = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); @@ -334,7 +334,7 @@ const Board = () => { event.preventDefault(); if (subjectRef.current.value === "") { - setErrorMessage('Subject field is mandatory'); + setNewErrorMessage('Subject field is mandatory'); return; } @@ -392,7 +392,7 @@ const Board = () => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; @@ -405,18 +405,12 @@ const Board = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); - const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); - - useEffect(() => { - if (error && error !== errorMessage) { - setErrorMessage(error); - } - }, [error, setErrorMessage, errorMessage]); + const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const handleAuthorDeleteClick = (commentCid) => { @@ -526,7 +520,7 @@ const Board = () => { await unsubscribe(selectedAddress); } } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } }; diff --git a/src/components/views/Catalog.jsx b/src/components/views/Catalog.jsx index ce27cc83..b3d154d8 100755 --- a/src/components/views/Catalog.jsx +++ b/src/components/views/Catalog.jsx @@ -60,8 +60,8 @@ const Catalog = () => { const navigate = useNavigate(); - const [errorMessage, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); const [triggerPublishComment, setTriggerPublishComment] = useState(false); const [prevScrollPos, setPrevScrollPos] = useState(0); @@ -140,10 +140,10 @@ const Catalog = () => { useEffect(() => { - if (errorString && errorString !== errorMessage) { - setErrorMessage(errorString); + if (errorString) { + setNewErrorMessage(errorString); } - }, [errorString, setErrorMessage, errorMessage]); + }, [errorString, setNewErrorMessage]); const { subscribed, subscribe, unsubscribe } = useSubscribe({subplebbitAddress: selectedAddress}); @@ -184,11 +184,11 @@ const Catalog = () => { navigate(`/p/${subplebbitAddress}/c/${challengeVerification.publication?.cid}`); console.log('challenge success'); } else { - setSuccessMessage('Challenge Success'); + setNewSuccessMessage('Challenge Success'); } } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -201,7 +201,7 @@ const Catalog = () => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -222,7 +222,7 @@ const Catalog = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); @@ -257,7 +257,7 @@ const Catalog = () => { event.preventDefault(); if (subjectRef.current.value === "") { - setErrorMessage('Subject field is mandatory'); + setNewErrorMessage('Subject field is mandatory'); return; } @@ -315,7 +315,7 @@ const Catalog = () => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; @@ -328,18 +328,12 @@ const Catalog = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); - const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); - - useEffect(() => { - if (error && error !== errorMessage) { - setErrorMessage(error); - } - }, [error, setErrorMessage, errorMessage]); + const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const handleAuthorDeleteClick = (commentCid) => { @@ -438,7 +432,7 @@ const Catalog = () => { await unsubscribe(selectedAddress); } } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } }; diff --git a/src/components/views/Pending.jsx b/src/components/views/Pending.jsx index a5557db5..51ab0d2f 100755 --- a/src/components/views/Pending.jsx +++ b/src/components/views/Pending.jsx @@ -34,7 +34,7 @@ const Pending = () => { const account = useAccount(); const comment = useAccountComment({commentIndex: index}); - const [errorMessage, setErrorMessage] = useError(); + const [, setNewErrorMessage] = useError(); useEffect(() => { setSelectedAddress(comment?.subplebbitAddress); @@ -53,10 +53,10 @@ const Pending = () => { }, [comment?.state, comment?.error, index]) useEffect(() => { - if (errorString && errorString !== errorMessage) { - setErrorMessage(errorString); + if (errorString) { + setNewErrorMessage(errorString); } - }, [errorString, setErrorMessage, errorMessage]); + }, [errorString, setNewErrorMessage]); const [visible] = useState(true); diff --git a/src/components/views/Subscriptions.jsx b/src/components/views/Subscriptions.jsx index ddf8758e..13b25758 100755 --- a/src/components/views/Subscriptions.jsx +++ b/src/components/views/Subscriptions.jsx @@ -63,8 +63,8 @@ const Subscriptions = () => { const account = useAccount(); const navigate = useNavigate(); - const [errorMessage, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); const threadMenuRefs = useRef({}); const replyMenuRefs = useRef({}); @@ -81,7 +81,6 @@ const Subscriptions = () => { const [prevScrollPos, setPrevScrollPos] = useState(0); const [visible, setVisible] = useState(true); const [isImageSearchOpen, setIsImageSearchOpen] = useState(false); - const [isModerator, setIsModerator] = useState(false); const [commentCid, setCommentCid] = useState(null); const [menuPosition, setMenuPosition] = useState({top: 0, left: 0}); const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false); @@ -92,20 +91,20 @@ const Subscriptions = () => { const [deletePost, setDeletePost] = useState(false); const [moderatorPermissions, setModeratorPermissions] = useState({}); - const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: account?.subscriptions, sortType: 'new'}); + const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: account?.subscriptions, sortType: 'active'}); const [selectedFeed, setSelectedFeed] = useState(feed.sort((a, b) => b.timestamp - a.timestamp)); - const {subplebbits} = useSubplebbits({subplebbitAddresses: account?.subscriptions, sortType: 'new'}); + const {subplebbits} = useSubplebbits({subplebbitAddresses: account?.subscriptions, sortType: 'active'}); const stateString = useFeedStateString(subplebbits); useEffect(() => { let permissions = {}; - + selectedFeed.forEach(thread => { - const subplebbit = subplebbits.find(s => s.address === thread.subplebbitAddress); - - if (subplebbit && subplebbit.roles !== undefined) { + const subplebbit = subplebbits.find(s => s && s.address === thread.subplebbitAddress); + + if (subplebbit && subplebbit.roles) { const role = subplebbit.roles[account?.author.address]?.role; if (role === 'moderator' || role === 'admin' || role === 'owner') { @@ -115,9 +114,9 @@ const Subscriptions = () => { } } }); - + setModeratorPermissions(permissions); - }, [account?.author.address, selectedFeed, subplebbits]); + }, [account?.author.address, selectedFeed, subplebbits]); const handleOptionClick = () => { @@ -159,10 +158,10 @@ const Subscriptions = () => { }, [subplebbits]) useEffect(() => { - if (errorString && errorString !== errorMessage) { - setErrorMessage(errorString); + if (errorString) { + setNewErrorMessage(errorString); } - }, [errorString, setErrorMessage, errorMessage]); + }, [errorString, setNewErrorMessage]); useEffect(() => { @@ -247,10 +246,10 @@ const Subscriptions = () => { const onChallengeVerification = (challengeVerification) => { if (challengeVerification.challengeSuccess === true) { - setSuccessMessage('Challenge Success'); + setNewSuccessMessage('Challenge Success'); } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('Challenge Failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -261,7 +260,7 @@ const Subscriptions = () => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -298,7 +297,7 @@ const Subscriptions = () => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; @@ -311,18 +310,12 @@ const Subscriptions = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); - const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); - - useEffect(() => { - if (error && error !== errorMessage) { - setErrorMessage(error); - } - }, [error, setErrorMessage, errorMessage]); + const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const handleAuthorDeleteClick = (commentCid) => { @@ -579,7 +572,7 @@ const Subscriptions = () => { const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {}; const commentMediaInfo = getCommentMediaInfo(thread); const fallbackImgUrl = "assets/filedeleted-res.gif"; - setIsModerator(moderatorPermissions[thread.subplebbitAddress]); + const isModerator = moderatorPermissions[thread.subplebbitAddress]; return (
diff --git a/src/components/views/Thread.jsx b/src/components/views/Thread.jsx index dc41bba9..9ef177f2 100755 --- a/src/components/views/Thread.jsx +++ b/src/components/views/Thread.jsx @@ -68,8 +68,8 @@ const Thread = () => { const navigate = useNavigate(); const handleClickForm = useClickForm(); - const [errorMessage, setErrorMessage] = useError(); - const [, setSuccessMessage] = useSuccess(); + const [, setNewErrorMessage] = useError(); + const [, setNewSuccessMessage] = useSuccess(); const nameRef = useRef(); const commentRef = useRef(); @@ -173,10 +173,10 @@ const Thread = () => { useEffect(() => { - if (errorString && errorString !== errorMessage) { - setErrorMessage(errorString); + if (errorString) { + setNewErrorMessage(errorString); } - }, [errorString, setErrorMessage, errorMessage]); + }, [errorString, setNewErrorMessage]); const flattenedReplies = useMemo(() => @@ -232,12 +232,12 @@ const Thread = () => { const onChallengeVerification = (challengeVerification) => { if (challengeVerification.challengeSuccess === true) { if (challengeVerification.publication?.cid !== undefined) { - console.log('challenge success'); + return; } else { - setSuccessMessage('Challenge Success'); + setNewSuccessMessage('Challenge Success'); } } else if (challengeVerification.challengeSuccess === false) { - setErrorMessage('challenge failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); + setNewErrorMessage('challenge failed', {reason: challengeVerification.reason, errors: challengeVerification.errors}); } }; @@ -250,7 +250,7 @@ const Thread = () => { challengeAnswers = await getChallengeAnswersFromUser(challenges) } catch (error) { - setErrorMessage(error); + setNewErrorMessage(error); } if (challengeAnswers) { await comment.publishChallengeAnswers(challengeAnswers) @@ -271,7 +271,7 @@ const Thread = () => { onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); @@ -306,7 +306,7 @@ const Thread = () => { commentRef.current.value === "" && linkRef.current.value === "" ) { - setErrorMessage("Please enter a comment or link."); + setNewErrorMessage("Please enter a comment or link."); return; } @@ -365,7 +365,7 @@ const Thread = () => { }; challengeImg.onerror = () => { - reject(setErrorMessage('Could not load challenges')); + reject(setNewErrorMessage('Could not load challenges')); }; }); }; @@ -374,23 +374,16 @@ const Thread = () => { const [publishCommentEditOptions, setPublishCommentEditOptions] = useState({ commentCid: commentCid, content: editedComment || undefined, - subplebbitAddress: selectedAddress || subplebbitAddress, + subplebbitAddress: selectedAddress, onChallenge, onChallengeVerification, onError: (error) => { - setErrorMessage(error); + setNewErrorMessage(error); }, }); - const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); - - useEffect(() => { - if (error && error !== errorMessage) { - setErrorMessage(error); - } - }, [error, setErrorMessage, errorMessage]); - + const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const handleAuthorDeleteClick = (commentCid) => { @@ -462,7 +455,6 @@ const Thread = () => { } }, [publishCommentEditOptions, triggerPublishCommentEdit, publishCommentEdit]); - // mobile navbar board select functionality const handleSelectChange = (event) => { const selected = event.target.value; diff --git a/src/hooks/useError.js b/src/hooks/useError.js index 7b27ef47..a3371814 100755 --- a/src/hooks/useError.js +++ b/src/hooks/useError.js @@ -32,10 +32,20 @@ const useError = () => { } }, [errorMessage, renderCount]); - const setNewErrorMessage = (message) => { + const setNewErrorMessage = (error) => { + let message; + if (typeof error === 'string') { + message = error; + } else if (error instanceof Error) { + message = error.message; + } else { + message = JSON.stringify(error); + } + setErrorMessage(message); setRenderCount(prevCount => prevCount + 1); }; + return [errorMessage, setNewErrorMessage]; };