Fix profile link 404s on session change & handle change [APP 523] (#507)

* Use DID to link to the user profile to gracefully handle... handle changes

* Reset nav state on active profile change
zio/stable
Paul Frazee 2023-04-21 12:21:38 -05:00 committed by GitHub
parent 9f9bd314b3
commit 0f5735b616
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -1,8 +1,10 @@
import * as React from 'react'
import {StyleSheet} from 'react-native'
import {observer} from 'mobx-react-lite'
import {
NavigationContainer,
createNavigationContainerRef,
CommonActions,
StackActions,
} from '@react-navigation/native'
import {createNativeStackNavigator} from '@react-navigation/native-stack'
@ -163,7 +165,7 @@ function NotificationsTabNavigator() {
)
}
function MyProfileTabNavigator() {
const MyProfileTabNavigator = observer(() => {
const contentStyle = useColorSchemeStyle(styles.bgLight, styles.bgDark)
const store = useStores()
return (
@ -180,14 +182,14 @@ function MyProfileTabNavigator() {
// @ts-ignore // TODO: fix this broken type in ProfileScreen
component={ProfileScreen}
initialParams={{
name: store.me.handle,
name: store.me.did,
hideBackButton: true,
}}
/>
{commonScreens(MyProfileTab as typeof HomeTab)}
</MyProfileTab.Navigator>
)
}
})
/**
* The FlatNavigator is used by Web to represent the routes
@ -281,6 +283,17 @@ function resetToTab(tabName: 'HomeTab' | 'SearchTab' | 'NotificationsTab') {
}
}
function reset() {
if (navigationRef.isReady()) {
navigationRef.dispatch(
CommonActions.reset({
index: 0,
routes: [{name: isNative ? 'HomeTab' : 'Home'}],
}),
)
}
}
function handleLink(url: string) {
let path
if (url.startsWith('/')) {
@ -326,6 +339,7 @@ const styles = StyleSheet.create({
export {
navigate,
resetToTab,
reset,
handleLink,
TabsNavigator,
FlatNavigator,

View File

@ -21,6 +21,7 @@ import {PreferencesModel} from './ui/preferences'
import {resetToTab} from '../../Navigation'
import {ImageSizesCache} from './cache/image-sizes'
import {MutedThreads} from './muted-threads'
import {reset as resetNavigation} from '../../Navigation'
export const appInfo = z.object({
build: z.string(),
@ -123,6 +124,7 @@ export class RootStoreModel {
this.agent = agent
this.me.clear()
await this.me.load()
resetNavigation()
}
/**