about summary refs log tree commit diff
path: root/src/view/screens/Profile.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/screens/Profile.tsx')
-rw-r--r--src/view/screens/Profile.tsx48
1 files changed, 21 insertions, 27 deletions
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index 84ff63f5a..236f8f908 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -5,39 +5,33 @@ import {useStores} from '../../state'
 import {ProfileHeader} from '../com/profile/ProfileHeader'
 import {Feed} from '../com/feed/Feed'
 import {ScreenParams} from '../routes'
-import {useLoadEffect} from '../lib/navigation'
 
-export const Profile = ({params}: ScreenParams) => {
+export const Profile = ({visible, params}: ScreenParams) => {
   const store = useStores()
-  const [hasSetup, setHasSetup] = useState<string>('')
+  const [hasSetup, setHasSetup] = useState<boolean>(false)
   const [feedView, setFeedView] = useState<FeedViewModel | undefined>()
 
-  useLoadEffect(() => {
+  useEffect(() => {
+    if (!visible) {
+      return
+    }
     const author = params.name
-    if (feedView?.params.author === author) {
-      return // no change needed? or trigger refresh?
+    if (hasSetup) {
+      console.log('Updating profile feed for', author)
+      feedView?.update()
+    } else {
+      console.log('Fetching profile feed for', author)
+      const newFeedView = new FeedViewModel(store, {author})
+      setFeedView(newFeedView)
+      newFeedView
+        .setup()
+        .catch(err => console.error('Failed to fetch feed', err))
+        .then(() => {
+          setHasSetup(true)
+          store.nav.setTitle(author)
+        })
     }
-    console.log('Fetching profile feed', author)
-    const newFeedView = new FeedViewModel(store, {author})
-    setFeedView(newFeedView)
-    newFeedView
-      .setup()
-      .catch(err => console.error('Failed to fetch feed', err))
-      .then(() => {
-        setHasSetup(author)
-        store.nav.setTitle(author)
-      })
-  }, [params.name, feedView?.params.author, store])
-
-  // TODO
-  // useEffect(() => {
-  //   return navigation.addListener('focus', () => {
-  //     if (hasSetup === feedView?.params.author) {
-  //       console.log('Updating profile feed', hasSetup)
-  //       feedView?.update()
-  //     }
-  //   })
-  // }, [navigation, feedView, hasSetup])
+  }, [visible, params.name, store])
 
   return (
     <View style={styles.container}>