diff options
author | Paul Frazee <pfrazee@gmail.com> | 2022-11-18 13:59:17 -0600 |
---|---|---|
committer | Paul Frazee <pfrazee@gmail.com> | 2022-11-18 13:59:17 -0600 |
commit | 6e2b7a0b90ae8140d81d2d66c87ec9e40d9f45ec (patch) | |
tree | f36f902da70006364e839ee53d55a468c7539e21 /src/view/com/util/Link.tsx | |
parent | 9d13e05dbf0bb6430060ddf556006b1721444edc (diff) | |
download | voidsky-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.tsx | 27 |
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) + } +} |