track feeds cache states for skeleton

This commit is contained in:
plebeius.eth
2023-07-14 20:57:47 +02:00
parent e08c7a6b13
commit a7035ae78c
4 changed files with 51 additions and 17 deletions
+15 -7
View File
@@ -48,6 +48,8 @@ const All = () => {
const {
defaultSubplebbits,
editedComment,
feedCacheStates,
setFeedCacheState,
isSettingsOpen, setIsSettingsOpen,
setModeratingCommentCid,
selectedAddress,
@@ -108,20 +110,26 @@ const All = () => {
const [isThumbnailClicked, setIsThumbnailClicked] = useState({});
const [isMobileThumbnailClicked, setIsMobileThumbnailClicked] = useState({});
const setSelectedThreadCid = (cid) => {
selectedThreadCidRef.current = cid;
}
const setSelectedThreadCid = (cid) => { selectedThreadCidRef.current = cid };
const isFeedCached = feedCacheStates['all'];
useAnonModeRef(selectedThreadCidRef, anonymousMode && executeAnonMode);
const addresses = defaultSubplebbits.map(subplebbit => subplebbit.address);
const { feed, hasMore, loadMore } = useFeed({subplebbitAddresses: addresses, sortType: 'active'});
const { feed, 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);
useEffect(() => {
if (feed.length) {
setFeedCacheState('all', true);
}
}, [feed.length, setFeedCacheState]);
const handleThumbnailClick = (index, isMobile=false) => {
if (isMobile) {
setIsMobileThumbnailClicked(prevState => ({
@@ -489,7 +497,7 @@ const All = () => {
useEffect(() => {
const setLastVirtuosoState = () => {
virtuosoRef.current?.getState((snapshot) => {
if (snapshot?.ranges?.length) {
if (snapshot?.scrollTop === 0 || snapshot?.ranges?.length) {
lastVirtuosoStates['all'] = snapshot;
}
});
@@ -2225,8 +2233,8 @@ const All = () => {
initialScrollTop={lastVirtuosoState?.scrollTop}
endReached={tryLoadMore}
useWindowScroll={true}
components={{ Footer: hasMore && feed.length > 0 ? () => <PostLoader /> : null }}
/>
components={{Footer: () => {return isFeedCached ? null : <PostLoader />}}}
/>
) : (
<PostLoader />
)}