diff options
Diffstat (limited to 'src/view/screens/stacks/Profile.tsx')
-rw-r--r-- | src/view/screens/stacks/Profile.tsx | 23 |
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) |