mirror of
https://github.com/tooot-app/app
synced 2025-06-05 22:19:13 +02:00
Option to change how to handle links
This commit is contained in:
@ -2,12 +2,12 @@ import React, { useCallback, useState } from 'react'
|
||||
import { Pressable, Text, View } from 'react-native'
|
||||
import HTMLView from 'react-native-htmlview'
|
||||
import { useNavigation } from '@react-navigation/native'
|
||||
|
||||
import Emojis from '@components/Timelines/Timeline/Shared/Emojis'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
import { Feather } from '@expo/vector-icons'
|
||||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { LinearGradient } from 'expo-linear-gradient'
|
||||
import openLink from '@root/utils/openLink'
|
||||
|
||||
// Prevent going to the same hashtag multiple times
|
||||
const renderNode = ({
|
||||
@ -82,11 +82,7 @@ const renderNode = ({
|
||||
color: theme.link,
|
||||
fontSize: StyleConstants.Font.Size[size]
|
||||
}}
|
||||
onPress={() => {
|
||||
navigation.navigate('Screen-Shared-Webview', {
|
||||
uri: href
|
||||
})
|
||||
}}
|
||||
onPress={async () => await openLink(href)}
|
||||
>
|
||||
<Feather
|
||||
name='external-link'
|
||||
|
@ -1,8 +1,8 @@
|
||||
import React, { useCallback } from 'react'
|
||||
import React from 'react'
|
||||
import { Image, Pressable, StyleSheet, Text, View } from 'react-native'
|
||||
import { useNavigation } from '@react-navigation/native'
|
||||
import { StyleConstants } from '@utils/styles/constants'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
import openLink from '@root/utils/openLink'
|
||||
|
||||
export interface Props {
|
||||
card: Mastodon.Card
|
||||
@ -10,17 +10,11 @@ export interface Props {
|
||||
|
||||
const TimelineCard: React.FC<Props> = ({ card }) => {
|
||||
const { theme } = useTheme()
|
||||
const navigation = useNavigation()
|
||||
const onPress = useCallback(() => {
|
||||
navigation.navigate('Screen-Shared-Webview', {
|
||||
uri: card.url
|
||||
})
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<Pressable
|
||||
style={[styles.card, { borderColor: theme.border }]}
|
||||
onPress={onPress}
|
||||
onPress={async () => await openLink(card.url)}
|
||||
>
|
||||
{card.image && (
|
||||
<View style={styles.left}>
|
||||
|
@ -1,8 +1,6 @@
|
||||
import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
||||
import { Pressable, StyleSheet, Text, View } from 'react-native'
|
||||
import { useNavigation } from '@react-navigation/native'
|
||||
import { Feather } from '@expo/vector-icons'
|
||||
|
||||
import Emojis from '@components/Timelines/Timeline/Shared/Emojis'
|
||||
import relativeTime from '@utils/relativeTime'
|
||||
import { getLocalUrl } from '@utils/slices/instancesSlice'
|
||||
@ -13,6 +11,7 @@ import { StyleConstants } from '@utils/styles/constants'
|
||||
import HeaderDefaultActionsAccount from '@components/Timelines/Timeline/Shared/HeaderDefault/ActionsAccount'
|
||||
import HeaderDefaultActionsStatus from '@components/Timelines/Timeline/Shared/HeaderDefault/ActionsStatus'
|
||||
import HeaderDefaultActionsDomain from '@components/Timelines/Timeline/Shared/HeaderDefault/ActionsDomain'
|
||||
import openLink from '@root/utils/openLink'
|
||||
|
||||
export interface Props {
|
||||
queryKey?: QueryKey.Timeline
|
||||
@ -33,7 +32,6 @@ const TimelineHeaderDefault: React.FC<Props> = ({
|
||||
const account = status.account.acct
|
||||
const { theme } = useTheme()
|
||||
|
||||
const navigation = useNavigation()
|
||||
const localDomain = useSelector(getLocalUrl)
|
||||
const [since, setSince] = useState(relativeTime(status.created_at))
|
||||
const [modalVisible, setBottomSheetVisible] = useState(false)
|
||||
@ -49,12 +47,12 @@ const TimelineHeaderDefault: React.FC<Props> = ({
|
||||
}, [since])
|
||||
|
||||
const onPressAction = useCallback(() => setBottomSheetVisible(true), [])
|
||||
const onPressApplication = useCallback(() => {
|
||||
status.application!.website &&
|
||||
navigation.navigate('Screen-Shared-Webview', {
|
||||
uri: status.application!.website
|
||||
})
|
||||
}, [])
|
||||
const onPressApplication = useCallback(
|
||||
async () =>
|
||||
status.application!.website &&
|
||||
(await openLink(status.application!.website)),
|
||||
[]
|
||||
)
|
||||
|
||||
const pressableAction = useMemo(
|
||||
() => (
|
||||
|
@ -8,7 +8,6 @@ import {
|
||||
} from 'react-native'
|
||||
import { useNavigation } from '@react-navigation/native'
|
||||
import { Feather } from '@expo/vector-icons'
|
||||
|
||||
import Emojis from '@components/Timelines/Timeline/Shared/Emojis'
|
||||
import relativeTime from '@utils/relativeTime'
|
||||
import { useTheme } from '@utils/styles/ThemeManager'
|
||||
@ -17,6 +16,7 @@ import { useQuery } from 'react-query'
|
||||
import { relationshipFetch } from '@utils/fetches/relationshipFetch'
|
||||
import client from '@api/client'
|
||||
import { toast } from '@components/toast'
|
||||
import openLink from '@root/utils/openLink'
|
||||
|
||||
export interface Props {
|
||||
notification: Mastodon.Notification
|
||||
@ -49,11 +49,12 @@ const TimelineHeaderNotification: React.FC<Props> = ({ notification }) => {
|
||||
}, 1000)
|
||||
}, [since])
|
||||
|
||||
const applicationOnPress = useCallback(() => {
|
||||
navigation.navigate('Screen-Shared-Webview', {
|
||||
uri: notification.status?.application!.website
|
||||
})
|
||||
}, [])
|
||||
const applicationOnPress = useCallback(
|
||||
async () =>
|
||||
notification.status?.application.website &&
|
||||
(await openLink(notification.status.application.website)),
|
||||
[]
|
||||
)
|
||||
|
||||
const relationshipOnPress = useCallback(() => {
|
||||
client({
|
||||
|
Reference in New Issue
Block a user