about summary refs log tree commit diff
path: root/src/view/screens/stacks/Profile.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/screens/stacks/Profile.tsx')
-rw-r--r--src/view/screens/stacks/Profile.tsx23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/view/screens/stacks/Profile.tsx b/src/view/screens/stacks/Profile.tsx
index ccdaed4a4..033d3c273 100644
--- a/src/view/screens/stacks/Profile.tsx
+++ b/src/view/screens/stacks/Profile.tsx
@@ -11,19 +11,32 @@ export const Profile = ({
   route,
 }: RootTabsScreenProps<'Profile'>) => {
   const store = useStores()
+  const [hasSetup, setHasSetup] = useState<string>('')
   const [feedView, setFeedView] = useState<FeedViewModel | undefined>()
 
   useEffect(() => {
-    if (feedView?.params.author === route.params.name) {
-      console.log('Profile feed view')
+    const author = route.params.name
+    if (feedView?.params.author === author) {
       return // no change needed? or trigger refresh?
     }
-    console.log('Fetching profile feed view', route.params.name)
-    const newFeedView = new FeedViewModel(store, {author: route.params.name})
+    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))
+    newFeedView
+      .setup()
+      .catch(err => console.error('Failed to fetch feed', err))
+      .then(() => setHasSetup(author))
   }, [route.params.name, feedView?.params.author, store])
 
+  useEffect(() => {
+    return navigation.addListener('focus', () => {
+      if (hasSetup === feedView?.params.author) {
+        console.log('Updating profile feed', hasSetup)
+        feedView?.update()
+      }
+    })
+  }, [navigation, feedView, hasSetup])
+
   const onNavigateContent = (screen: string, props: Record<string, string>) => {
     // @ts-ignore it's up to the callers to supply correct params -prf
     navigation.push(screen, props)