about summary refs log tree commit diff
path: root/src/view/screens/Home.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/screens/Home.tsx')
-rw-r--r--src/view/screens/Home.tsx231
1 files changed, 113 insertions, 118 deletions
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx
index 8c80b0fd5..50db7e81f 100644
--- a/src/view/screens/Home.tsx
+++ b/src/view/screens/Home.tsx
@@ -1,6 +1,5 @@
 import React from 'react'
 import {useFocusEffect} from '@react-navigation/native'
-import {observer} from 'mobx-react-lite'
 import {NativeStackScreenProps, HomeTabNavigatorParams} from 'lib/routes/types'
 import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed'
 import {withAuthRequired} from 'view/com/auth/withAuthRequired'
@@ -15,130 +14,126 @@ import {usePreferencesQuery} from '#/state/queries/preferences'
 import {emitSoftReset} from '#/state/events'
 
 type Props = NativeStackScreenProps<HomeTabNavigatorParams, 'Home'>
-export const HomeScreen = withAuthRequired(
-  observer(function HomeScreenImpl({}: Props) {
-    const setMinimalShellMode = useSetMinimalShellMode()
-    const setDrawerSwipeDisabled = useSetDrawerSwipeDisabled()
-    const pagerRef = React.useRef<PagerRef>(null)
-    const [selectedPage, setSelectedPage] = React.useState(0)
-    const [customFeeds, setCustomFeeds] = React.useState<FeedDescriptor[]>([])
-    const {data: preferences} = usePreferencesQuery()
-
-    React.useEffect(() => {
-      if (!preferences?.feeds?.pinned) return
-
-      const pinned = preferences.feeds.pinned
-
-      const feeds: FeedDescriptor[] = []
-
-      for (const uri of pinned) {
-        if (uri.includes('app.bsky.feed.generator')) {
-          feeds.push(`feedgen|${uri}`)
-        } else if (uri.includes('app.bsky.graph.list')) {
-          feeds.push(`list|${uri}`)
-        }
+export const HomeScreen = withAuthRequired(function HomeScreenImpl({}: Props) {
+  const setMinimalShellMode = useSetMinimalShellMode()
+  const setDrawerSwipeDisabled = useSetDrawerSwipeDisabled()
+  const pagerRef = React.useRef<PagerRef>(null)
+  const [selectedPage, setSelectedPage] = React.useState(0)
+  const [customFeeds, setCustomFeeds] = React.useState<FeedDescriptor[]>([])
+  const {data: preferences} = usePreferencesQuery()
+
+  React.useEffect(() => {
+    if (!preferences?.feeds?.pinned) return
+
+    const pinned = preferences.feeds.pinned
+
+    const feeds: FeedDescriptor[] = []
+
+    for (const uri of pinned) {
+      if (uri.includes('app.bsky.feed.generator')) {
+        feeds.push(`feedgen|${uri}`)
+      } else if (uri.includes('app.bsky.graph.list')) {
+        feeds.push(`list|${uri}`)
       }
+    }
 
-      setCustomFeeds(feeds)
+    setCustomFeeds(feeds)
 
-      pagerRef.current?.setPage(0)
-    }, [preferences?.feeds?.pinned, setCustomFeeds, pagerRef])
+    pagerRef.current?.setPage(0)
+  }, [preferences?.feeds?.pinned, setCustomFeeds, pagerRef])
 
-    const homeFeedParams = React.useMemo<FeedParams>(() => {
-      if (!preferences) return {}
+  const homeFeedParams = React.useMemo<FeedParams>(() => {
+    if (!preferences) return {}
 
-      return {
-        mergeFeedEnabled: Boolean(
-          preferences.feedViewPrefs.lab_mergeFeedEnabled,
-        ),
-        mergeFeedSources: preferences.feeds.saved,
-      }
-    }, [preferences])
+    return {
+      mergeFeedEnabled: Boolean(preferences.feedViewPrefs.lab_mergeFeedEnabled),
+      mergeFeedSources: preferences.feeds.saved,
+    }
+  }, [preferences])
 
-    useFocusEffect(
-      React.useCallback(() => {
-        setMinimalShellMode(false)
-        setDrawerSwipeDisabled(selectedPage > 0)
-        return () => {
-          setDrawerSwipeDisabled(false)
-        }
-      }, [setDrawerSwipeDisabled, selectedPage, setMinimalShellMode]),
-    )
-
-    const onPageSelected = React.useCallback(
-      (index: number) => {
+  useFocusEffect(
+    React.useCallback(() => {
+      setMinimalShellMode(false)
+      setDrawerSwipeDisabled(selectedPage > 0)
+      return () => {
+        setDrawerSwipeDisabled(false)
+      }
+    }, [setDrawerSwipeDisabled, selectedPage, setMinimalShellMode]),
+  )
+
+  const onPageSelected = React.useCallback(
+    (index: number) => {
+      setMinimalShellMode(false)
+      setSelectedPage(index)
+      setDrawerSwipeDisabled(index > 0)
+    },
+    [setDrawerSwipeDisabled, setSelectedPage, setMinimalShellMode],
+  )
+
+  const onPressSelected = React.useCallback(() => {
+    emitSoftReset()
+  }, [])
+
+  const onPageScrollStateChanged = React.useCallback(
+    (state: 'idle' | 'dragging' | 'settling') => {
+      if (state === 'dragging') {
         setMinimalShellMode(false)
-        setSelectedPage(index)
-        setDrawerSwipeDisabled(index > 0)
-      },
-      [setDrawerSwipeDisabled, setSelectedPage, setMinimalShellMode],
-    )
-
-    const onPressSelected = React.useCallback(() => {
-      emitSoftReset()
-    }, [])
-
-    const onPageScrollStateChanged = React.useCallback(
-      (state: 'idle' | 'dragging' | 'settling') => {
-        if (state === 'dragging') {
-          setMinimalShellMode(false)
-        }
-      },
-      [setMinimalShellMode],
-    )
-
-    const renderTabBar = React.useCallback(
-      (props: RenderTabBarFnProps) => {
+      }
+    },
+    [setMinimalShellMode],
+  )
+
+  const renderTabBar = React.useCallback(
+    (props: RenderTabBarFnProps) => {
+      return (
+        <FeedsTabBar
+          key="FEEDS_TAB_BAR"
+          selectedPage={props.selectedPage}
+          onSelect={props.onSelect}
+          testID="homeScreenFeedTabs"
+          onPressSelected={onPressSelected}
+        />
+      )
+    },
+    [onPressSelected],
+  )
+
+  const renderFollowingEmptyState = React.useCallback(() => {
+    return <FollowingEmptyState />
+  }, [])
+
+  const renderCustomFeedEmptyState = React.useCallback(() => {
+    return <CustomFeedEmptyState />
+  }, [])
+
+  return (
+    <Pager
+      ref={pagerRef}
+      testID="homeScreen"
+      onPageSelected={onPageSelected}
+      onPageScrollStateChanged={onPageScrollStateChanged}
+      renderTabBar={renderTabBar}
+      tabBarPosition="top">
+      <FeedPage
+        key="1"
+        testID="followingFeedPage"
+        isPageFocused={selectedPage === 0}
+        feed="home"
+        feedParams={homeFeedParams}
+        renderEmptyState={renderFollowingEmptyState}
+        renderEndOfFeed={FollowingEndOfFeed}
+      />
+      {customFeeds.map((f, index) => {
         return (
-          <FeedsTabBar
-            key="FEEDS_TAB_BAR"
-            selectedPage={props.selectedPage}
-            onSelect={props.onSelect}
-            testID="homeScreenFeedTabs"
-            onPressSelected={onPressSelected}
+          <FeedPage
+            key={f}
+            testID="customFeedPage"
+            isPageFocused={selectedPage === 1 + index}
+            feed={f}
+            renderEmptyState={renderCustomFeedEmptyState}
           />
         )
-      },
-      [onPressSelected],
-    )
-
-    const renderFollowingEmptyState = React.useCallback(() => {
-      return <FollowingEmptyState />
-    }, [])
-
-    const renderCustomFeedEmptyState = React.useCallback(() => {
-      return <CustomFeedEmptyState />
-    }, [])
-
-    return (
-      <Pager
-        ref={pagerRef}
-        testID="homeScreen"
-        onPageSelected={onPageSelected}
-        onPageScrollStateChanged={onPageScrollStateChanged}
-        renderTabBar={renderTabBar}
-        tabBarPosition="top">
-        <FeedPage
-          key="1"
-          testID="followingFeedPage"
-          isPageFocused={selectedPage === 0}
-          feed="home"
-          feedParams={homeFeedParams}
-          renderEmptyState={renderFollowingEmptyState}
-          renderEndOfFeed={FollowingEndOfFeed}
-        />
-        {customFeeds.map((f, index) => {
-          return (
-            <FeedPage
-              key={f}
-              testID="customFeedPage"
-              isPageFocused={selectedPage === 1 + index}
-              feed={f}
-              renderEmptyState={renderCustomFeedEmptyState}
-            />
-          )
-        })}
-      </Pager>
-    )
-  }),
-)
+      })}
+    </Pager>
+  )
+})