about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-03-01 16:04:06 -0800
committerGitHub <noreply@github.com>2024-03-01 16:04:06 -0800
commite950463f71bddbcf83926dcfd681320a53192c7a (patch)
treed978e029512f5cab11ecce4b22b912f419deda3c
parent8bf40b46a00fd130a614b3446c98df1d421f970e (diff)
downloadvoidsky-e950463f71bddbcf83926dcfd681320a53192c7a.tar.zst
Fix new post button on web after following intent URL (#3044)
* Fix new post button on web after following intent URL

* Ensure that `routes` exists before attempting to use it
-rw-r--r--src/Navigation.tsx11
-rw-r--r--src/view/shell/desktop/LeftNav.tsx6
2 files changed, 12 insertions, 5 deletions
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
index c650c1f40..b30f8f982 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -485,12 +485,19 @@ const LINKING = {
   },
 
   getStateFromPath(path: string) {
+    const [name, params] = router.matchPath(path)
+
     // Any time we receive a url that starts with `intent/` we want to ignore it here. It will be handled in the
     // intent handler hook. We should check for the trailing slash, because if there isn't one then it isn't a valid
     // intent
-    if (path.includes('intent/')) return
+    // On web, there is no route state that's created by default, so we should initialize it as the home route. On
+    // native, since the home tab and the home screen are defined as initial routes, we don't need to return a state
+    // since it will be created by react-navigation.
+    if (path.includes('intent/')) {
+      if (isNative) return
+      return buildStateObject('Flat', 'Home', params)
+    }
 
-    const [name, params] = router.matchPath(path)
     if (isNative) {
       if (name === 'Search') {
         return buildStateObject('SearchTab', 'Search', params)
diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx
index fbc90bfc6..def0333c7 100644
--- a/src/view/shell/desktop/LeftNav.tsx
+++ b/src/view/shell/desktop/LeftNav.tsx
@@ -200,10 +200,10 @@ function ComposeBtn() {
   const fetchHandle = useFetchHandle()
 
   const getProfileHandle = async () => {
-    const {routes} = getState()
-    const currentRoute = routes[routes.length - 1]
+    const routes = getState()?.routes
+    const currentRoute = routes?.[routes?.length - 1]
 
-    if (currentRoute.name === 'Profile') {
+    if (currentRoute?.name === 'Profile') {
       let handle: string | undefined = (
         currentRoute.params as CommonNavigatorParams['Profile']
       ).name