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