optimize convo paginations

This commit is contained in:
Danny Avila 2023-03-06 08:58:52 -05:00
parent c617b15bcd
commit 6ae154cc42
3 changed files with 17 additions and 10 deletions

View file

@ -75,13 +75,14 @@ module.exports = {
}, },
// getConvos: async () => await Conversation.find({}).sort({ created: -1 }).exec(), // getConvos: async () => await Conversation.find({}).sort({ created: -1 }).exec(),
getConvos: async (pageNumber = 1, pageSize = 12) => { getConvos: async (pageNumber = 1, pageSize = 12) => {
// const skip = (pageNumber - 1) * pageSize; const skip = (pageNumber - 1) * pageSize;
const limit = pageNumber * pageSize; // const limit = pageNumber * pageSize;
const conversations = await Conversation.find({}) const conversations = await Conversation.find({})
.sort({ created: -1 }) .sort({ created: -1 })
// .skip(skip) .skip(skip)
.limit(limit) // .limit(limit)
.limit(pageSize)
.exec(); .exec();
return conversations; return conversations;

View file

@ -6,15 +6,19 @@ import NavLinks from './NavLinks';
import useDidMountEffect from '~/hooks/useDidMountEffect'; import useDidMountEffect from '~/hooks/useDidMountEffect';
import { swr } from '~/utils/fetchers'; import { swr } from '~/utils/fetchers';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { incrementPage } from '~/store/convoSlice'; import { incrementPage, setConvos } from '~/store/convoSlice';
export default function Nav() { export default function Nav() {
const dispatch = useDispatch(); const dispatch = useDispatch();
const [isHovering, setIsHovering] = useState(false); const [isHovering, setIsHovering] = useState(false);
const { conversationId, pageNumber } = useSelector((state) => state.convo); const { conversationId, convos, pageNumber } = useSelector((state) => state.convo);
const onSuccess = (data) => {
dispatch(setConvos(data));
};
const { data, isLoading, mutate } = swr( const { data, isLoading, mutate } = swr(
`http://localhost:3050/convos?pageNumber=${pageNumber}` `http://localhost:3050/convos?pageNumber=${pageNumber}`
); , onSuccess);
const containerRef = useRef(null); const containerRef = useRef(null);
const scrollPositionRef = useRef(null); const scrollPositionRef = useRef(null);
@ -63,7 +67,7 @@ export default function Nav() {
<Spinner /> <Spinner />
) : ( ) : (
<Conversations <Conversations
conversations={data} conversations={convos}
conversationId={conversationId} conversationId={conversationId}
showMore={showMore} showMore={showMore}
pageNumber={pageNumber} pageNumber={pageNumber}

View file

@ -27,8 +27,10 @@ const currentSlice = createSlice({
}, },
incrementPage: (state) => { incrementPage: (state) => {
state.pageNumber = state.pageNumber + 1; state.pageNumber = state.pageNumber + 1;
} },
// setConvos: (state, action) => state.convos = action.payload, setConvos: (state, action) => {
state.convos = [...state.convos, ...action.payload];
},
} }
}); });