chore: stash feed pagination

This commit is contained in:
zerosoul
2022-05-27 22:03:08 +08:00
parent 629f7e67a1
commit dbffe6fb4b
9 changed files with 549 additions and 220 deletions
+20 -6
View File
@@ -35,10 +35,14 @@ export default function useMessageFeed({ context = "channel", id = null }) {
const [hasMore, setHasMore] = useState(true);
const [appends, setAppends] = useState([]);
const [items, setItems] = useState([]);
const mids = useSelector((store) => {
return context == "channel"
? store.channelMessage[id] || []
: store.userMessage.byId[id] || [];
const { mids, messageData } = useSelector((store) => {
return {
mids:
context == "channel"
? store.channelMessage[id] || []
: store.userMessage.byId[id] || [],
messageData: store.message,
};
});
useEffect(() => {
listRef.current = [];
@@ -47,7 +51,16 @@ export default function useMessageFeed({ context = "channel", id = null }) {
setHasMore(true);
setAppends([]);
}, [context, id]);
useEffect(() => {
if (appends.length) {
const feedsWrapperEle = document.querySelector(
`#RUSTCHAT_FEED_${context}_${id}`
);
if (feedsWrapperEle) {
feedsWrapperEle.scrollTop = feedsWrapperEle.scrollHeight;
}
}
}, [appends, context, id]);
useEffect(() => {
if (listRef.current.length == 0) {
// 初次
@@ -67,6 +80,7 @@ export default function useMessageFeed({ context = "channel", id = null }) {
if (appends.length) {
setAppends(appends);
}
console.log("appends", appends);
}
}, [mids]);
const pullUp = () => {
@@ -97,7 +111,7 @@ export default function useMessageFeed({ context = "channel", id = null }) {
setItems(listRef.current);
console.log("pull up", currPageInfo, listRef.current);
setHasMore(pageInfo.pageNumber !== 1);
}, 300);
}, 800);
};
const pullDown = () => {
// 向下加载