mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix state update in render
This commit is contained in:
@@ -102,23 +102,11 @@ const All = () => {
|
|||||||
const [moderatorPermissions, setModeratorPermissions] = useState({});
|
const [moderatorPermissions, setModeratorPermissions] = useState({});
|
||||||
const [executeAnonMode, setExecuteAnonMode] = useState(false);
|
const [executeAnonMode, setExecuteAnonMode] = useState(false);
|
||||||
const [cidTracker, setCidTracker] = useState({});
|
const [cidTracker, setCidTracker] = useState({});
|
||||||
const [displayedReplies, setDisplayedReplies] = useState([]);
|
|
||||||
|
|
||||||
const setSelectedThreadCid = (cid) => {
|
const setSelectedThreadCid = (cid) => {
|
||||||
selectedThreadCidRef.current = cid;
|
selectedThreadCidRef.current = cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
// let post.jsx access full cid of user-typed short cid
|
|
||||||
useEffect(() => {
|
|
||||||
const newCidTracker = {};
|
|
||||||
displayedReplies.forEach((reply) => {
|
|
||||||
newCidTracker[reply.shortCid] = reply.cid;
|
|
||||||
});
|
|
||||||
setCidTracker(newCidTracker);
|
|
||||||
}, [displayedReplies]);
|
|
||||||
|
|
||||||
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
|
||||||
|
|
||||||
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
||||||
|
|
||||||
const addresses = defaultSubplebbits.map(subplebbit => subplebbit.address);
|
const addresses = defaultSubplebbits.map(subplebbit => subplebbit.address);
|
||||||
@@ -251,6 +239,19 @@ const All = () => {
|
|||||||
}, {});
|
}, {});
|
||||||
}, [flattenedRepliesByThread, accountComments, selectedFeed]);
|
}, [flattenedRepliesByThread, accountComments, selectedFeed]);
|
||||||
|
|
||||||
|
const allReplies = useMemo(() => {
|
||||||
|
return selectedFeed.flatMap(thread => filteredRepliesByThread[thread.cid]?.displayedReplies || []);
|
||||||
|
}, [selectedFeed, filteredRepliesByThread]);
|
||||||
|
|
||||||
|
// let post.jsx access full cid of user-typed short cid
|
||||||
|
useEffect(() => {
|
||||||
|
const newCidTracker = {};
|
||||||
|
allReplies.forEach((reply) => {
|
||||||
|
newCidTracker[reply.shortCid] = reply.cid;
|
||||||
|
});
|
||||||
|
setCidTracker(newCidTracker);
|
||||||
|
}, [allReplies]);
|
||||||
|
|
||||||
// mobile navbar scroll effect
|
// mobile navbar scroll effect
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const debouncedHandleScroll = debounce(() => {
|
const debouncedHandleScroll = debounce(() => {
|
||||||
@@ -597,7 +598,6 @@ const All = () => {
|
|||||||
data={selectedFeed}
|
data={selectedFeed}
|
||||||
itemContent={(index, thread) => {
|
itemContent={(index, thread) => {
|
||||||
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
|
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
|
||||||
setDisplayedReplies(displayedReplies);
|
|
||||||
const commentMediaInfo = getCommentMediaInfo(thread);
|
const commentMediaInfo = getCommentMediaInfo(thread);
|
||||||
const fallbackImgUrl = "assets/filedeleted-res.gif";
|
const fallbackImgUrl = "assets/filedeleted-res.gif";
|
||||||
const isModerator = moderatorPermissions[thread.subplebbitAddress];
|
const isModerator = moderatorPermissions[thread.subplebbitAddress];
|
||||||
|
|||||||
@@ -119,20 +119,8 @@ const Board = () => {
|
|||||||
const [postOnHoverHeight, setPostOnHoverHeight] = useState(0);
|
const [postOnHoverHeight, setPostOnHoverHeight] = useState(0);
|
||||||
const [executeAnonMode, setExecuteAnonMode] = useState(false);
|
const [executeAnonMode, setExecuteAnonMode] = useState(false);
|
||||||
const [cidTracker, setCidTracker] = useState({});
|
const [cidTracker, setCidTracker] = useState({});
|
||||||
const [displayedReplies, setDisplayedReplies] = useState([]);
|
|
||||||
|
|
||||||
const setSelectedThreadCid = (cid) => {
|
const setSelectedThreadCid = (cid) => { selectedThreadCidRef.current = cid;}
|
||||||
selectedThreadCidRef.current = cid;
|
|
||||||
}
|
|
||||||
|
|
||||||
// let post.jsx access full cid of user-typed short cid
|
|
||||||
useEffect(() => {
|
|
||||||
const newCidTracker = {};
|
|
||||||
displayedReplies.forEach((reply) => {
|
|
||||||
newCidTracker[reply.shortCid] = reply.cid;
|
|
||||||
});
|
|
||||||
setCidTracker(newCidTracker);
|
|
||||||
}, [displayedReplies]);
|
|
||||||
|
|
||||||
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
||||||
|
|
||||||
@@ -244,6 +232,19 @@ const Board = () => {
|
|||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
}, [flattenedRepliesByThread, accountComments, selectedFeed]);
|
}, [flattenedRepliesByThread, accountComments, selectedFeed]);
|
||||||
|
|
||||||
|
const allReplies = useMemo(() => {
|
||||||
|
return selectedFeed.flatMap(thread => filteredRepliesByThread[thread.cid]?.displayedReplies || []);
|
||||||
|
}, [selectedFeed, filteredRepliesByThread]);
|
||||||
|
|
||||||
|
// let post.jsx access full cid of user-typed short cid
|
||||||
|
useEffect(() => {
|
||||||
|
const newCidTracker = {};
|
||||||
|
allReplies.forEach((reply) => {
|
||||||
|
newCidTracker[reply.shortCid] = reply.cid;
|
||||||
|
});
|
||||||
|
setCidTracker(newCidTracker);
|
||||||
|
}, [allReplies]);
|
||||||
|
|
||||||
|
|
||||||
// temporary title from JSON, gets subplebbitAddress from URL
|
// temporary title from JSON, gets subplebbitAddress from URL
|
||||||
@@ -1076,7 +1077,6 @@ const Board = () => {
|
|||||||
data={selectedFeed}
|
data={selectedFeed}
|
||||||
itemContent={(index, thread) => {
|
itemContent={(index, thread) => {
|
||||||
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
|
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
|
||||||
setDisplayedReplies(displayedReplies);
|
|
||||||
const commentMediaInfo = getCommentMediaInfo(thread);
|
const commentMediaInfo = getCommentMediaInfo(thread);
|
||||||
const fallbackImgUrl = "assets/filedeleted-res.gif";
|
const fallbackImgUrl = "assets/filedeleted-res.gif";
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -102,21 +102,11 @@ const Subscriptions = () => {
|
|||||||
const [moderatorPermissions, setModeratorPermissions] = useState({});
|
const [moderatorPermissions, setModeratorPermissions] = useState({});
|
||||||
const [executeAnonMode, setExecuteAnonMode] = useState(false);
|
const [executeAnonMode, setExecuteAnonMode] = useState(false);
|
||||||
const [cidTracker, setCidTracker] = useState({});
|
const [cidTracker, setCidTracker] = useState({});
|
||||||
const [displayedReplies, setDisplayedReplies] = useState([]);
|
|
||||||
|
|
||||||
const setSelectedThreadCid = (cid) => {
|
const setSelectedThreadCid = (cid) => {
|
||||||
selectedThreadCidRef.current = cid;
|
selectedThreadCidRef.current = cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
// let post.jsx access full cid of user-typed short cid
|
|
||||||
useEffect(() => {
|
|
||||||
const newCidTracker = {};
|
|
||||||
displayedReplies.forEach((reply) => {
|
|
||||||
newCidTracker[reply.shortCid] = reply.cid;
|
|
||||||
});
|
|
||||||
setCidTracker(newCidTracker);
|
|
||||||
}, [displayedReplies]);
|
|
||||||
|
|
||||||
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
|
||||||
|
|
||||||
const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: account?.subscriptions, sortType: 'active'});
|
const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: account?.subscriptions, sortType: 'active'});
|
||||||
@@ -249,6 +239,19 @@ const Subscriptions = () => {
|
|||||||
}, {});
|
}, {});
|
||||||
}, [flattenedRepliesByThread, accountComments, selectedFeed]);
|
}, [flattenedRepliesByThread, accountComments, selectedFeed]);
|
||||||
|
|
||||||
|
const allReplies = useMemo(() => {
|
||||||
|
return selectedFeed.flatMap(thread => filteredRepliesByThread[thread.cid]?.displayedReplies || []);
|
||||||
|
}, [selectedFeed, filteredRepliesByThread]);
|
||||||
|
|
||||||
|
// let post.jsx access full cid of user-typed short cid
|
||||||
|
useEffect(() => {
|
||||||
|
const newCidTracker = {};
|
||||||
|
allReplies.forEach((reply) => {
|
||||||
|
newCidTracker[reply.shortCid] = reply.cid;
|
||||||
|
});
|
||||||
|
setCidTracker(newCidTracker);
|
||||||
|
}, [allReplies]);
|
||||||
|
|
||||||
// mobile navbar scroll effect
|
// mobile navbar scroll effect
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const debouncedHandleScroll = debounce(() => {
|
const debouncedHandleScroll = debounce(() => {
|
||||||
@@ -605,7 +608,6 @@ const Subscriptions = () => {
|
|||||||
data={selectedFeed}
|
data={selectedFeed}
|
||||||
itemContent={(index, thread) => {
|
itemContent={(index, thread) => {
|
||||||
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
|
const { displayedReplies, omittedCount } = filteredRepliesByThread[thread.cid] || {};
|
||||||
setDisplayedReplies(displayedReplies);
|
|
||||||
const commentMediaInfo = getCommentMediaInfo(thread);
|
const commentMediaInfo = getCommentMediaInfo(thread);
|
||||||
const fallbackImgUrl = "assets/filedeleted-res.gif";
|
const fallbackImgUrl = "assets/filedeleted-res.gif";
|
||||||
const isModerator = moderatorPermissions[thread.subplebbitAddress];
|
const isModerator = moderatorPermissions[thread.subplebbitAddress];
|
||||||
|
|||||||
Reference in New Issue
Block a user