From 6ae154cc42cfe83848eace853b9c8b1e4e28beb4 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Mon, 6 Mar 2023 08:58:52 -0500 Subject: [PATCH] optimize convo paginations --- models/Conversation.js | 9 +++++---- src/components/Nav/index.jsx | 12 ++++++++---- src/store/convoSlice.js | 6 ++++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/models/Conversation.js b/models/Conversation.js index e45ab68000..32adac4654 100644 --- a/models/Conversation.js +++ b/models/Conversation.js @@ -75,13 +75,14 @@ module.exports = { }, // getConvos: async () => await Conversation.find({}).sort({ created: -1 }).exec(), getConvos: async (pageNumber = 1, pageSize = 12) => { - // const skip = (pageNumber - 1) * pageSize; - const limit = pageNumber * pageSize; + const skip = (pageNumber - 1) * pageSize; + // const limit = pageNumber * pageSize; const conversations = await Conversation.find({}) .sort({ created: -1 }) - // .skip(skip) - .limit(limit) + .skip(skip) + // .limit(limit) + .limit(pageSize) .exec(); return conversations; diff --git a/src/components/Nav/index.jsx b/src/components/Nav/index.jsx index db85b7076c..6316973680 100644 --- a/src/components/Nav/index.jsx +++ b/src/components/Nav/index.jsx @@ -6,15 +6,19 @@ import NavLinks from './NavLinks'; import useDidMountEffect from '~/hooks/useDidMountEffect'; import { swr } from '~/utils/fetchers'; import { useDispatch, useSelector } from 'react-redux'; -import { incrementPage } from '~/store/convoSlice'; +import { incrementPage, setConvos } from '~/store/convoSlice'; export default function Nav() { const dispatch = useDispatch(); 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( `http://localhost:3050/convos?pageNumber=${pageNumber}` - ); + , onSuccess); const containerRef = useRef(null); const scrollPositionRef = useRef(null); @@ -63,7 +67,7 @@ export default function Nav() { ) : ( { state.pageNumber = state.pageNumber + 1; - } - // setConvos: (state, action) => state.convos = action.payload, + }, + setConvos: (state, action) => { + state.convos = [...state.convos, ...action.payload]; + }, } });