diff options
Diffstat (limited to 'src/view/screens/Profile.tsx')
-rw-r--r-- | src/view/screens/Profile.tsx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index a34ceb32c..c5ad286c7 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -4,7 +4,7 @@ import {observer} from 'mobx-react-lite' import {useFocusEffect} from '@react-navigation/native' import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types' import {withAuthRequired} from 'view/com/auth/withAuthRequired' -import {ViewSelector} from '../com/util/ViewSelector' +import {ViewSelector, ViewSelectorHandle} from '../com/util/ViewSelector' import {CenteredView} from '../com/util/Views' import {ScreenHider} from 'view/com/util/moderation/ScreenHider' import {ProfileUiModel, Sections} from 'state/models/ui/profile' @@ -35,6 +35,7 @@ export const ProfileScreen = withAuthRequired( observer(({route}: Props) => { const store = useStores() const {screen, track} = useAnalytics() + const viewSelectorRef = React.useRef<ViewSelectorHandle>(null) useEffect(() => { screen('Profile') @@ -47,12 +48,17 @@ export const ProfileScreen = withAuthRequired( ) useSetTitle(combinedDisplayName(uiState.profile)) + const onSoftReset = React.useCallback(() => { + viewSelectorRef.current?.scrollToTop() + }, []) + useEffect(() => { setHasSetup(false) }, [route.params.name]) useFocusEffect( React.useCallback(() => { + const softResetSub = store.onScreenSoftReset(onSoftReset) let aborted = false store.shell.setMinimalShellMode(false) const feedCleanup = uiState.feed.registerListeners() @@ -69,8 +75,9 @@ export const ProfileScreen = withAuthRequired( return () => { aborted = true feedCleanup() + softResetSub.remove() } - }, [hasSetup, uiState, store]), + }, [store, onSoftReset, uiState, hasSetup]), ) // events @@ -247,6 +254,7 @@ export const ProfileScreen = withAuthRequired( /> ) : uiState.profile.hasLoaded ? ( <ViewSelector + ref={viewSelectorRef} swipeEnabled={false} sections={uiState.selectorItems} items={uiState.uiItems} |