about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/components/Link.tsx19
-rw-r--r--src/components/TagMenu/index.tsx28
2 files changed, 26 insertions, 21 deletions
diff --git a/src/components/Link.tsx b/src/components/Link.tsx
index fa8fa0cc3..010299dfb 100644
--- a/src/components/Link.tsx
+++ b/src/components/Link.tsx
@@ -330,6 +330,25 @@ export function InlineLinkText({
 }
 
 /**
+ * Utility to create a static `onPress` handler for a `Link` that would otherwise link to a URI
+ *
+ * Example:
+ *   `<Link {...createStaticClick(e => {...})} />`
+ */
+export function createStaticClick(
+  onPressHandler: Exclude<BaseLinkProps['onPress'], undefined>,
+): Pick<BaseLinkProps, 'to' | 'onPress'> {
+  return {
+    to: '#',
+    onPress(e: GestureResponderEvent) {
+      e.preventDefault()
+      onPressHandler(e)
+      return false
+    },
+  }
+}
+
+/**
  * A Pressable that uses useLink to handle navigation. It is unstyled, so can be used in cases where the Button styles
  * in Link are not desired.
  * @param displayText
diff --git a/src/components/TagMenu/index.tsx b/src/components/TagMenu/index.tsx
index 917624a03..ae9fcdae2 100644
--- a/src/components/TagMenu/index.tsx
+++ b/src/components/TagMenu/index.tsx
@@ -4,7 +4,6 @@ import {msg, Trans} from '@lingui/macro'
 import {useLingui} from '@lingui/react'
 import {useNavigation} from '@react-navigation/native'
 
-import {makeSearchLink} from '#/lib/routes/links'
 import {NavigationProp} from '#/lib/routes/types'
 import {isInvalidHandle} from '#/lib/strings/handles'
 import {
@@ -19,7 +18,7 @@ import {Divider} from '#/components/Divider'
 import {MagnifyingGlass2_Stroke2_Corner0_Rounded as Search} from '#/components/icons/MagnifyingGlass2'
 import {Mute_Stroke2_Corner0_Rounded as Mute} from '#/components/icons/Mute'
 import {Person_Stroke2_Corner0_Rounded as Person} from '#/components/icons/Person'
-import {Link} from '#/components/Link'
+import {createStaticClick, Link} from '#/components/Link'
 import {Loader} from '#/components/Loader'
 import {Text} from '#/components/Typography'
 
@@ -101,19 +100,14 @@ export function TagMenu({
                   t.atoms.bg_contrast_25,
                 ]}>
                 <Link
-                  label={_(msg`Search for all posts with tag ${displayTag}`)}
-                  to={makeSearchLink({query: displayTag})}
-                  onPress={e => {
-                    e.preventDefault()
-
+                  label={_(msg`View all posts with tag ${displayTag}`)}
+                  {...createStaticClick(() => {
                     control.close(() => {
                       navigation.push('Hashtag', {
                         tag: encodeURIComponent(tag),
                       })
                     })
-
-                    return false
-                  }}>
+                  })}>
                   <View
                     style={[
                       a.w_full,
@@ -152,24 +146,16 @@ export function TagMenu({
 
                     <Link
                       label={_(
-                        msg`Search for all posts by @${authorHandle} with tag ${displayTag}`,
+                        msg`View all posts by @${authorHandle} with tag ${displayTag}`,
                       )}
-                      to={makeSearchLink({
-                        query: displayTag,
-                        from: authorHandle,
-                      })}
-                      onPress={e => {
-                        e.preventDefault()
-
+                      {...createStaticClick(() => {
                         control.close(() => {
                           navigation.push('Hashtag', {
                             tag: encodeURIComponent(tag),
                             author: authorHandle,
                           })
                         })
-
-                        return false
-                      }}>
+                      })}>
                       <View
                         style={[
                           a.w_full,