fix toasts

This commit is contained in:
plebeius.eth
2023-06-14 16:24:25 +02:00
parent 2ab9aad63c
commit 965a63a996
10 changed files with 119 additions and 151 deletions
+7 -7
View File
@@ -40,31 +40,31 @@ export default function App() {
const account = useAccount(); const account = useAccount();
const [, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
useEffect(() => { useEffect(() => {
const successToast = localStorage.getItem("successToast"); const successToast = localStorage.getItem("successToast");
const errorToast = localStorage.getItem("errorToast"); const errorToast = localStorage.getItem("errorToast");
if (successToast) { if (successToast) {
setSuccessMessage(successToast); setNewSuccessMessage(successToast);
localStorage.removeItem("successToast"); localStorage.removeItem("successToast");
} else if (errorToast) { } else if (errorToast) {
setErrorMessage(errorToast); setNewErrorMessage(errorToast);
localStorage.removeItem("errorToast"); localStorage.removeItem("errorToast");
} else { } else {
return; return;
} }
}, [setErrorMessage, setSuccessMessage]); }, [setNewErrorMessage, setNewSuccessMessage]);
// preload default subs and subscriptions // preload default subs and subscriptions
useBufferedFeeds({ useBufferedFeeds({
feedsOptions: [ feedsOptions: [
{subplebbitAddresses: defaultSubplebbits.map( {subplebbitAddresses: defaultSubplebbits.map(
(subplebbit) => subplebbit.address (subplebbit) => subplebbit.address
), sortType: 'new'}, ), sortType: 'active'},
{subplebbitAddresses: account?.subscriptions, sortType: 'new'} {subplebbitAddresses: account?.subscriptions, sortType: 'active'}
] ]
}); });
+8 -15
View File
@@ -26,8 +26,8 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => {
const [reason, setReason] = useState(''); const [reason, setReason] = useState('');
const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false); const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false);
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
useEffect(() => { useEffect(() => {
@@ -48,9 +48,9 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => {
const onChallengeVerification = (challengeVerification) => { const onChallengeVerification = (challengeVerification) => {
if (challengeVerification.challengeSuccess === true) { if (challengeVerification.challengeSuccess === true) {
setSuccessMessage('Challenge Success'); setNewSuccessMessage('Challenge Success');
} else if (challengeVerification.challengeSuccess === false) { } 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -100,7 +100,7 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
@@ -113,19 +113,12 @@ const ModerationModal = ({ isOpen, closeModal, deletePost }) => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions);
useEffect(() => {
if (error && error !== errorMessage) {
setErrorMessage(error);
}
}, [error, setErrorMessage, errorMessage]);
useEffect(() => { useEffect(() => {
+6 -6
View File
@@ -23,7 +23,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
const account = useAccount(); const account = useAccount();
const [, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const nodeRef = useRef(null); const nodeRef = useRef(null);
const nameRef = useRef(); const nameRef = useRef();
@@ -73,7 +73,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
console.log('challenge success'); console.log('challenge success');
} }
else if (challengeVerification.challengeSuccess === false) { 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -107,7 +107,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
@@ -141,7 +141,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
commentRef.current.value === "" && commentRef.current.value === "" &&
linkRef.current.value === "" linkRef.current.value === ""
) { ) {
setErrorMessage("Please enter a comment or link."); setNewErrorMessage("Please enter a comment or link.");
return; return;
} }
@@ -200,7 +200,7 @@ const ReplyModal = ({ isOpen, closeModal }) => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
+20 -28
View File
@@ -63,8 +63,8 @@ const All = () => {
const account = useAccount(); const account = useAccount();
const navigate = useNavigate(); const navigate = useNavigate();
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
const threadMenuRefs = useRef({}); const threadMenuRefs = useRef({});
const replyMenuRefs = useRef({}); const replyMenuRefs = useRef({});
@@ -81,7 +81,6 @@ const All = () => {
const [prevScrollPos, setPrevScrollPos] = useState(0); const [prevScrollPos, setPrevScrollPos] = useState(0);
const [visible, setVisible] = useState(true); const [visible, setVisible] = useState(true);
const [isImageSearchOpen, setIsImageSearchOpen] = useState(false); const [isImageSearchOpen, setIsImageSearchOpen] = useState(false);
const [isModerator, setIsModerator] = useState(false);
const [commentCid, setCommentCid] = useState(null); const [commentCid, setCommentCid] = useState(null);
const [menuPosition, setMenuPosition] = useState({top: 0, left: 0}); const [menuPosition, setMenuPosition] = useState({top: 0, left: 0});
const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false); const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false);
@@ -93,8 +92,8 @@ const All = () => {
const [moderatorPermissions, setModeratorPermissions] = useState({}); const [moderatorPermissions, setModeratorPermissions] = useState({});
const addresses = defaultSubplebbits.map(subplebbit => subplebbit.address); const addresses = defaultSubplebbits.map(subplebbit => subplebbit.address);
const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: addresses, sortType: 'new'}); const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: addresses, sortType: 'active'});
const {subplebbits} = useSubplebbits({subplebbitAddresses: addresses, sortType: 'new'}); const {subplebbits} = useSubplebbits({subplebbitAddresses: addresses, sortType: 'active'});
const [selectedFeed, setSelectedFeed] = useState(feed.sort((a, b) => b.timestamp - a.timestamp)); const [selectedFeed, setSelectedFeed] = useState(feed.sort((a, b) => b.timestamp - a.timestamp));
const stateString = useFeedStateString(subplebbits); const stateString = useFeedStateString(subplebbits);
@@ -102,11 +101,11 @@ const All = () => {
useEffect(() => { useEffect(() => {
let permissions = {}; let permissions = {};
selectedFeed.forEach(thread => { selectedFeed.forEach(thread => {
const subplebbit = subplebbits.find(s => s.address === thread.subplebbitAddress); const subplebbit = subplebbits.find(s => s && s.address === thread.subplebbitAddress);
if (subplebbit && subplebbit.roles !== undefined) { if (subplebbit && subplebbit.roles) {
const role = subplebbit.roles[account?.author.address]?.role; const role = subplebbit.roles[account?.author.address]?.role;
if (role === 'moderator' || role === 'admin' || role === 'owner') { if (role === 'moderator' || role === 'admin' || role === 'owner') {
@@ -116,9 +115,9 @@ const All = () => {
} }
} }
}); });
setModeratorPermissions(permissions); setModeratorPermissions(permissions);
}, [account?.author.address, selectedFeed, subplebbits]); }, [account?.author.address, selectedFeed, subplebbits]);
const handleOptionClick = () => { const handleOptionClick = () => {
@@ -160,11 +159,10 @@ const All = () => {
}, [subplebbits]) }, [subplebbits])
useEffect(() => { useEffect(() => {
if (errorString && errorString !== errorMessage) { if (errorString) {
setErrorMessage(errorString); setNewErrorMessage(errorString);
} }
}, [errorString, setErrorMessage, errorMessage]); }, [errorString, setNewErrorMessage]);
useEffect(() => { useEffect(() => {
setSelectedFeed(feed.sort((a, b) => b.timestamp - a.timestamp)); setSelectedFeed(feed.sort((a, b) => b.timestamp - a.timestamp));
@@ -247,10 +245,10 @@ const All = () => {
const onChallengeVerification = (challengeVerification) => { const onChallengeVerification = (challengeVerification) => {
if (challengeVerification.challengeSuccess === true) { if (challengeVerification.challengeSuccess === true) {
setSuccessMessage('Challenge Success'); setNewSuccessMessage('Challenge Success');
} }
else if (challengeVerification.challengeSuccess === false) { 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -298,7 +296,7 @@ const All = () => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
@@ -310,18 +308,12 @@ const All = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions);
useEffect(() => {
if (error && error !== errorMessage) {
setErrorMessage(error);
}
}, [error, setErrorMessage, errorMessage]);
const handleAuthorDeleteClick = (commentCid) => { const handleAuthorDeleteClick = (commentCid) => {
@@ -569,7 +561,7 @@ const All = () => {
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {}; const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
const commentMediaInfo = getCommentMediaInfo(thread); const commentMediaInfo = getCommentMediaInfo(thread);
const fallbackImgUrl = "assets/filedeleted-res.gif"; const fallbackImgUrl = "assets/filedeleted-res.gif";
setIsModerator(moderatorPermissions[thread.subplebbitAddress]); const isModerator = moderatorPermissions[thread.subplebbitAddress];
return ( return (
<Fragment key={`fr-${index}`}> <Fragment key={`fr-${index}`}>
<div key={`t-${index}`} className="thread"> <div key={`t-${index}`} className="thread">
+14 -20
View File
@@ -69,8 +69,8 @@ const Board = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const { subplebbitAddress } = useParams(); const { subplebbitAddress } = useParams();
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
const nameRef = useRef(); const nameRef = useRef();
const subjectRef = useRef(); const subjectRef = useRef();
@@ -159,10 +159,10 @@ const Board = () => {
useEffect(() => { useEffect(() => {
if (errorString && errorString !== errorMessage) { if (errorString) {
setErrorMessage(errorString); setNewErrorMessage(errorString);
} }
}, [errorString, setErrorMessage, errorMessage]); }, [errorString, setNewErrorMessage]);
const flattenedRepliesByThread = useMemo(() => { const flattenedRepliesByThread = useMemo(() => {
@@ -261,11 +261,11 @@ const Board = () => {
navigate(`/p/${subplebbitAddress}/c/${challengeVerification.publication?.cid}`); navigate(`/p/${subplebbitAddress}/c/${challengeVerification.publication?.cid}`);
console.log('challenge success'); console.log('challenge success');
} else { } else {
setSuccessMessage('Challenge Success'); setNewSuccessMessage('Challenge Success');
} }
} }
else if (challengeVerification.challengeSuccess === false) { 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -299,7 +299,7 @@ const Board = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
@@ -334,7 +334,7 @@ const Board = () => {
event.preventDefault(); event.preventDefault();
if (subjectRef.current.value === "") { if (subjectRef.current.value === "") {
setErrorMessage('Subject field is mandatory'); setNewErrorMessage('Subject field is mandatory');
return; return;
} }
@@ -392,7 +392,7 @@ const Board = () => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
@@ -405,18 +405,12 @@ const Board = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions);
useEffect(() => {
if (error && error !== errorMessage) {
setErrorMessage(error);
}
}, [error, setErrorMessage, errorMessage]);
const handleAuthorDeleteClick = (commentCid) => { const handleAuthorDeleteClick = (commentCid) => {
@@ -526,7 +520,7 @@ const Board = () => {
await unsubscribe(selectedAddress); await unsubscribe(selectedAddress);
} }
} catch (error) { } catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
}; };
+14 -20
View File
@@ -60,8 +60,8 @@ const Catalog = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
const [triggerPublishComment, setTriggerPublishComment] = useState(false); const [triggerPublishComment, setTriggerPublishComment] = useState(false);
const [prevScrollPos, setPrevScrollPos] = useState(0); const [prevScrollPos, setPrevScrollPos] = useState(0);
@@ -140,10 +140,10 @@ const Catalog = () => {
useEffect(() => { useEffect(() => {
if (errorString && errorString !== errorMessage) { if (errorString) {
setErrorMessage(errorString); setNewErrorMessage(errorString);
} }
}, [errorString, setErrorMessage, errorMessage]); }, [errorString, setNewErrorMessage]);
const { subscribed, subscribe, unsubscribe } = useSubscribe({subplebbitAddress: selectedAddress}); const { subscribed, subscribe, unsubscribe } = useSubscribe({subplebbitAddress: selectedAddress});
@@ -184,11 +184,11 @@ const Catalog = () => {
navigate(`/p/${subplebbitAddress}/c/${challengeVerification.publication?.cid}`); navigate(`/p/${subplebbitAddress}/c/${challengeVerification.publication?.cid}`);
console.log('challenge success'); console.log('challenge success');
} else { } else {
setSuccessMessage('Challenge Success'); setNewSuccessMessage('Challenge Success');
} }
} }
else if (challengeVerification.challengeSuccess === false) { 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -222,7 +222,7 @@ const Catalog = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
@@ -257,7 +257,7 @@ const Catalog = () => {
event.preventDefault(); event.preventDefault();
if (subjectRef.current.value === "") { if (subjectRef.current.value === "") {
setErrorMessage('Subject field is mandatory'); setNewErrorMessage('Subject field is mandatory');
return; return;
} }
@@ -315,7 +315,7 @@ const Catalog = () => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
@@ -328,18 +328,12 @@ const Catalog = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions);
useEffect(() => {
if (error && error !== errorMessage) {
setErrorMessage(error);
}
}, [error, setErrorMessage, errorMessage]);
const handleAuthorDeleteClick = (commentCid) => { const handleAuthorDeleteClick = (commentCid) => {
@@ -438,7 +432,7 @@ const Catalog = () => {
await unsubscribe(selectedAddress); await unsubscribe(selectedAddress);
} }
} catch (error) { } catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
}; };
+4 -4
View File
@@ -34,7 +34,7 @@ const Pending = () => {
const account = useAccount(); const account = useAccount();
const comment = useAccountComment({commentIndex: index}); const comment = useAccountComment({commentIndex: index});
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
useEffect(() => { useEffect(() => {
setSelectedAddress(comment?.subplebbitAddress); setSelectedAddress(comment?.subplebbitAddress);
@@ -53,10 +53,10 @@ const Pending = () => {
}, [comment?.state, comment?.error, index]) }, [comment?.state, comment?.error, index])
useEffect(() => { useEffect(() => {
if (errorString && errorString !== errorMessage) { if (errorString) {
setErrorMessage(errorString); setNewErrorMessage(errorString);
} }
}, [errorString, setErrorMessage, errorMessage]); }, [errorString, setNewErrorMessage]);
const [visible] = useState(true); const [visible] = useState(true);
+20 -27
View File
@@ -63,8 +63,8 @@ const Subscriptions = () => {
const account = useAccount(); const account = useAccount();
const navigate = useNavigate(); const navigate = useNavigate();
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
const threadMenuRefs = useRef({}); const threadMenuRefs = useRef({});
const replyMenuRefs = useRef({}); const replyMenuRefs = useRef({});
@@ -81,7 +81,6 @@ const Subscriptions = () => {
const [prevScrollPos, setPrevScrollPos] = useState(0); const [prevScrollPos, setPrevScrollPos] = useState(0);
const [visible, setVisible] = useState(true); const [visible, setVisible] = useState(true);
const [isImageSearchOpen, setIsImageSearchOpen] = useState(false); const [isImageSearchOpen, setIsImageSearchOpen] = useState(false);
const [isModerator, setIsModerator] = useState(false);
const [commentCid, setCommentCid] = useState(null); const [commentCid, setCommentCid] = useState(null);
const [menuPosition, setMenuPosition] = useState({top: 0, left: 0}); const [menuPosition, setMenuPosition] = useState({top: 0, left: 0});
const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false); const [triggerPublishCommentEdit, setTriggerPublishCommentEdit] = useState(false);
@@ -92,20 +91,20 @@ const Subscriptions = () => {
const [deletePost, setDeletePost] = useState(false); const [deletePost, setDeletePost] = useState(false);
const [moderatorPermissions, setModeratorPermissions] = useState({}); 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 [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); const stateString = useFeedStateString(subplebbits);
useEffect(() => { useEffect(() => {
let permissions = {}; let permissions = {};
selectedFeed.forEach(thread => { selectedFeed.forEach(thread => {
const subplebbit = subplebbits.find(s => s.address === thread.subplebbitAddress); const subplebbit = subplebbits.find(s => s && s.address === thread.subplebbitAddress);
if (subplebbit && subplebbit.roles !== undefined) { if (subplebbit && subplebbit.roles) {
const role = subplebbit.roles[account?.author.address]?.role; const role = subplebbit.roles[account?.author.address]?.role;
if (role === 'moderator' || role === 'admin' || role === 'owner') { if (role === 'moderator' || role === 'admin' || role === 'owner') {
@@ -115,9 +114,9 @@ const Subscriptions = () => {
} }
} }
}); });
setModeratorPermissions(permissions); setModeratorPermissions(permissions);
}, [account?.author.address, selectedFeed, subplebbits]); }, [account?.author.address, selectedFeed, subplebbits]);
const handleOptionClick = () => { const handleOptionClick = () => {
@@ -159,10 +158,10 @@ const Subscriptions = () => {
}, [subplebbits]) }, [subplebbits])
useEffect(() => { useEffect(() => {
if (errorString && errorString !== errorMessage) { if (errorString) {
setErrorMessage(errorString); setNewErrorMessage(errorString);
} }
}, [errorString, setErrorMessage, errorMessage]); }, [errorString, setNewErrorMessage]);
useEffect(() => { useEffect(() => {
@@ -247,10 +246,10 @@ const Subscriptions = () => {
const onChallengeVerification = (challengeVerification) => { const onChallengeVerification = (challengeVerification) => {
if (challengeVerification.challengeSuccess === true) { if (challengeVerification.challengeSuccess === true) {
setSuccessMessage('Challenge Success'); setNewSuccessMessage('Challenge Success');
} }
else if (challengeVerification.challengeSuccess === false) { 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -298,7 +297,7 @@ const Subscriptions = () => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
@@ -311,18 +310,12 @@ const Subscriptions = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions);
useEffect(() => {
if (error && error !== errorMessage) {
setErrorMessage(error);
}
}, [error, setErrorMessage, errorMessage]);
const handleAuthorDeleteClick = (commentCid) => { const handleAuthorDeleteClick = (commentCid) => {
@@ -579,7 +572,7 @@ const Subscriptions = () => {
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {}; const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
const commentMediaInfo = getCommentMediaInfo(thread); const commentMediaInfo = getCommentMediaInfo(thread);
const fallbackImgUrl = "assets/filedeleted-res.gif"; const fallbackImgUrl = "assets/filedeleted-res.gif";
setIsModerator(moderatorPermissions[thread.subplebbitAddress]); const isModerator = moderatorPermissions[thread.subplebbitAddress];
return ( return (
<Fragment key={`fr-${index}`}> <Fragment key={`fr-${index}`}>
<div key={`t-${index}`} className="thread"> <div key={`t-${index}`} className="thread">
+15 -23
View File
@@ -68,8 +68,8 @@ const Thread = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const handleClickForm = useClickForm(); const handleClickForm = useClickForm();
const [errorMessage, setErrorMessage] = useError(); const [, setNewErrorMessage] = useError();
const [, setSuccessMessage] = useSuccess(); const [, setNewSuccessMessage] = useSuccess();
const nameRef = useRef(); const nameRef = useRef();
const commentRef = useRef(); const commentRef = useRef();
@@ -173,10 +173,10 @@ const Thread = () => {
useEffect(() => { useEffect(() => {
if (errorString && errorString !== errorMessage) { if (errorString) {
setErrorMessage(errorString); setNewErrorMessage(errorString);
} }
}, [errorString, setErrorMessage, errorMessage]); }, [errorString, setNewErrorMessage]);
const flattenedReplies = useMemo(() => const flattenedReplies = useMemo(() =>
@@ -232,12 +232,12 @@ const Thread = () => {
const onChallengeVerification = (challengeVerification) => { const onChallengeVerification = (challengeVerification) => {
if (challengeVerification.challengeSuccess === true) { if (challengeVerification.challengeSuccess === true) {
if (challengeVerification.publication?.cid !== undefined) { if (challengeVerification.publication?.cid !== undefined) {
console.log('challenge success'); return;
} else { } else {
setSuccessMessage('Challenge Success'); setNewSuccessMessage('Challenge Success');
} }
} else if (challengeVerification.challengeSuccess === false) { } 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) challengeAnswers = await getChallengeAnswersFromUser(challenges)
} }
catch (error) { catch (error) {
setErrorMessage(error); setNewErrorMessage(error);
} }
if (challengeAnswers) { if (challengeAnswers) {
await comment.publishChallengeAnswers(challengeAnswers) await comment.publishChallengeAnswers(challengeAnswers)
@@ -271,7 +271,7 @@ const Thread = () => {
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
@@ -306,7 +306,7 @@ const Thread = () => {
commentRef.current.value === "" && commentRef.current.value === "" &&
linkRef.current.value === "" linkRef.current.value === ""
) { ) {
setErrorMessage("Please enter a comment or link."); setNewErrorMessage("Please enter a comment or link.");
return; return;
} }
@@ -365,7 +365,7 @@ const Thread = () => {
}; };
challengeImg.onerror = () => { challengeImg.onerror = () => {
reject(setErrorMessage('Could not load challenges')); reject(setNewErrorMessage('Could not load challenges'));
}; };
}); });
}; };
@@ -374,23 +374,16 @@ const Thread = () => {
const [publishCommentEditOptions, setPublishCommentEditOptions] = useState({ const [publishCommentEditOptions, setPublishCommentEditOptions] = useState({
commentCid: commentCid, commentCid: commentCid,
content: editedComment || undefined, content: editedComment || undefined,
subplebbitAddress: selectedAddress || subplebbitAddress, subplebbitAddress: selectedAddress,
onChallenge, onChallenge,
onChallengeVerification, onChallengeVerification,
onError: (error) => { onError: (error) => {
setErrorMessage(error); setNewErrorMessage(error);
}, },
}); });
const {error, publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions); const { publishCommentEdit } = usePublishCommentEdit(publishCommentEditOptions);
useEffect(() => {
if (error && error !== errorMessage) {
setErrorMessage(error);
}
}, [error, setErrorMessage, errorMessage]);
const handleAuthorDeleteClick = (commentCid) => { const handleAuthorDeleteClick = (commentCid) => {
@@ -462,7 +455,6 @@ const Thread = () => {
} }
}, [publishCommentEditOptions, triggerPublishCommentEdit, publishCommentEdit]); }, [publishCommentEditOptions, triggerPublishCommentEdit, publishCommentEdit]);
// mobile navbar board select functionality // mobile navbar board select functionality
const handleSelectChange = (event) => { const handleSelectChange = (event) => {
const selected = event.target.value; const selected = event.target.value;
+11 -1
View File
@@ -32,10 +32,20 @@ const useError = () => {
} }
}, [errorMessage, renderCount]); }, [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); setErrorMessage(message);
setRenderCount(prevCount => prevCount + 1); setRenderCount(prevCount => prevCount + 1);
}; };
return [errorMessage, setNewErrorMessage]; return [errorMessage, setNewErrorMessage];
}; };