From 0a4d113d50638be2d53a431dc646549c919d06d2 Mon Sep 17 00:00:00 2001 From: Chewbacca Date: Tue, 3 Jan 2023 12:12:50 -0500 Subject: [PATCH] Fix bug with Feed Carousel --- .../features/feed-filtering/feed-carousel.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/soapbox/features/feed-filtering/feed-carousel.tsx b/app/soapbox/features/feed-filtering/feed-carousel.tsx index 19e1c3400..9a8288d7d 100644 --- a/app/soapbox/features/feed-filtering/feed-carousel.tsx +++ b/app/soapbox/features/feed-filtering/feed-carousel.tsx @@ -98,13 +98,21 @@ const FeedCarousel = () => { const [pinnedAvatar, setPinnedAvatar] = useState(null); const avatarsToList = useMemo(() => { - const list = avatars.filter((avatar) => avatar.account_id !== pinnedAvatar?.account_id); + let list: (Avatar | null)[] = avatars.filter((avatar) => avatar.account_id !== pinnedAvatar?.account_id); + + // If we have an Avatar pinned, let's create a new array with "null" + // in the first position of each page. if (pinnedAvatar) { - return [null, ...list]; + const index = (currentPage - 1) * pageSize; + list = [ + ...list.slice(0, index), + null, + ...list.slice(index), + ]; } return list; - }, [avatars, pinnedAvatar]); + }, [avatars, pinnedAvatar, currentPage, pageSize]); const numberOfPages = Math.ceil(avatars.length / pageSize); const widthPerAvatar = width / (Math.floor(width / 80));