diff options
author | Eric Bailey <git@esb.lol> | 2023-11-28 11:04:15 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-28 09:04:15 -0800 |
commit | 0b2c85b967ea7a2dd18261773449260b80004423 (patch) | |
tree | 2d4c9488c74461170d8d57a3bfea6e2b9ef397a8 /src | |
parent | bdabfa9d38ab776b5bc7eedafecd11c396dd451b (diff) | |
download | voidsky-0b2c85b967ea7a2dd18261773449260b80004423.tar.zst |
Fix pinned feeds re-ordering (#2014)
Diffstat (limited to 'src')
-rw-r--r-- | src/view/screens/Home.tsx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx index 28f01b683..476c69fc8 100644 --- a/src/view/screens/Home.tsx +++ b/src/view/screens/Home.tsx @@ -40,6 +40,12 @@ function HomeScreenReady({ const setDrawerSwipeDisabled = useSetDrawerSwipeDisabled() const [selectedPage, setSelectedPage] = React.useState(0) + /** + * Used to ensure that we re-compute `customFeeds` AND force a re-render of + * the pager with the new order of feeds. + */ + const pinnedFeedOrderKey = JSON.stringify(preferences.feeds.pinned) + const customFeeds = React.useMemo(() => { const pinned = preferences.feeds.pinned const feeds: FeedDescriptor[] = [] @@ -51,7 +57,9 @@ function HomeScreenReady({ } } return feeds - }, [preferences.feeds.pinned]) + // TODO careful, needed to disabled this -esb + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [preferences.feeds.pinned, pinnedFeedOrderKey]) const homeFeedParams = React.useMemo<FeedParams>(() => { return { @@ -83,7 +91,6 @@ function HomeScreenReady({ emitSoftReset() }, []) - // TODO(pwi) may need this in public view const onPageScrollStateChanged = React.useCallback( (state: 'idle' | 'dragging' | 'settling') => { if (state === 'dragging') { @@ -118,6 +125,7 @@ function HomeScreenReady({ return hasSession ? ( <Pager + key={pinnedFeedOrderKey} testID="homeScreen" onPageSelected={onPageSelected} onPageScrollStateChanged={onPageScrollStateChanged} |