about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2023-11-28 11:04:15 -0600
committerGitHub <noreply@github.com>2023-11-28 09:04:15 -0800
commit0b2c85b967ea7a2dd18261773449260b80004423 (patch)
tree2d4c9488c74461170d8d57a3bfea6e2b9ef397a8 /src
parentbdabfa9d38ab776b5bc7eedafecd11c396dd451b (diff)
downloadvoidsky-0b2c85b967ea7a2dd18261773449260b80004423.tar.zst
Fix pinned feeds re-ordering (#2014)
Diffstat (limited to 'src')
-rw-r--r--src/view/screens/Home.tsx12
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}