about summary refs log tree commit diff
path: root/src/view/com/util/Link.tsx
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-11-18 13:59:17 -0600
committerPaul Frazee <pfrazee@gmail.com>2022-11-18 13:59:17 -0600
commit6e2b7a0b90ae8140d81d2d66c87ec9e40d9f45ec (patch)
treef36f902da70006364e839ee53d55a468c7539e21 /src/view/com/util/Link.tsx
parent9d13e05dbf0bb6430060ddf556006b1721444edc (diff)
downloadvoidsky-6e2b7a0b90ae8140d81d2d66c87ec9e40d9f45ec.tar.zst
Add support for web links
Diffstat (limited to 'src/view/com/util/Link.tsx')
-rw-r--r--src/view/com/util/Link.tsx27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx
index 4931438b8..ff3d25cb5 100644
--- a/src/view/com/util/Link.tsx
+++ b/src/view/com/util/Link.tsx
@@ -1,6 +1,7 @@
 import React from 'react'
 import {observer} from 'mobx-react-lite'
 import {
+  Linking,
   StyleProp,
   Text,
   TouchableOpacity,
@@ -8,6 +9,7 @@ import {
   ViewStyle,
 } from 'react-native'
 import {useStores} from '../../../state'
+import {RootStoreModel} from '../../../state'
 import {LinkActionsModel} from '../../../state/models/shell-ui'
 
 export const Link = observer(function Link({
@@ -23,13 +25,10 @@ export const Link = observer(function Link({
 }) {
   const store = useStores()
   const onPress = () => {
-    store.shell.closeModal() // close any active modals
-    store.nav.navigate(href)
+    handleLink(store, href, false)
   }
   const onLongPress = () => {
-    store.shell.closeModal() // close any active modals
-    store.nav.newTab(href, title)
-    // store.shell.openModal(new LinkActionsModel(href, title || href))
+    handleLink(store, href, true)
   }
   return (
     <TouchableOpacity
@@ -55,12 +54,10 @@ export const TextLink = observer(function Link({
 }) {
   const store = useStores()
   const onPress = () => {
-    store.shell.closeModal() // close any active modals
-    store.nav.navigate(href)
+    handleLink(store, href, false)
   }
   const onLongPress = () => {
-    store.shell.closeModal() // close any active modals
-    store.nav.newTab(href, title)
+    handleLink(store, href, true)
   }
   return (
     <Text style={style} onPress={onPress} onLongPress={onLongPress}>
@@ -68,3 +65,15 @@ export const TextLink = observer(function Link({
     </Text>
   )
 })
+
+function handleLink(store: RootStoreModel, href: string, longPress: boolean) {
+  if (href.startsWith('http')) {
+    Linking.openURL(href)
+  } else if (longPress) {
+    store.shell.closeModal() // close any active modals
+    store.nav.newTab(href)
+  } else {
+    store.shell.closeModal() // close any active modals
+    store.nav.navigate(href)
+  }
+}