diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-06-10 11:44:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-10 11:44:13 -0700 |
commit | 90ec22a6749555f48bfd21eec81f877f8eae0524 (patch) | |
tree | 97aa29c86e4ba861dde9e3df470951b9345cb3c2 /src/view/com/feeds | |
parent | 59f49bef68500c1719ed44470121f553208edc85 (diff) | |
download | voidsky-90ec22a6749555f48bfd21eec81f877f8eae0524.tar.zst |
Add support for new-tab clicks on feeds (#4462)
Diffstat (limited to 'src/view/com/feeds')
-rw-r--r-- | src/view/com/feeds/FeedSourceCard.tsx | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx index 589f674b4..a61789434 100644 --- a/src/view/com/feeds/FeedSourceCard.tsx +++ b/src/view/com/feeds/FeedSourceCard.tsx @@ -1,5 +1,12 @@ import React from 'react' -import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' +import { + Linking, + Pressable, + StyleProp, + StyleSheet, + View, + ViewStyle, +} from 'react-native' import {AtUri} from '@atproto/api' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {msg, Plural, Trans} from '@lingui/macro' @@ -26,6 +33,7 @@ import {RichText} from '#/components/RichText' import {Text} from '../util/text/Text' import {UserAvatar} from '../util/UserAvatar' import hairlineWidth = StyleSheet.hairlineWidth +import {shouldClickOpenNewTab} from '#/platform/urls' export function FeedSourceCard({ feedUri, @@ -203,17 +211,30 @@ export function FeedSourceCardLoaded({ style, {borderTopWidth: hideTopBorder ? 0 : hairlineWidth}, ]} - onPress={() => { + onPress={e => { + const shouldOpenInNewTab = shouldClickOpenNewTab(e) if (feed.type === 'feed') { - navigation.push('ProfileFeed', { - name: feed.creatorDid, - rkey: new AtUri(feed.uri).rkey, - }) + if (shouldOpenInNewTab) { + Linking.openURL( + `/profile/${feed.creatorDid}/feed/${new AtUri(feed.uri).rkey}`, + ) + } else { + navigation.push('ProfileFeed', { + name: feed.creatorDid, + rkey: new AtUri(feed.uri).rkey, + }) + } } else if (feed.type === 'list') { - navigation.push('ProfileList', { - name: feed.creatorDid, - rkey: new AtUri(feed.uri).rkey, - }) + if (shouldOpenInNewTab) { + Linking.openURL( + `/profile/${feed.creatorDid}/lists/${new AtUri(feed.uri).rkey}`, + ) + } else { + navigation.push('ProfileList', { + name: feed.creatorDid, + rkey: new AtUri(feed.uri).rkey, + }) + } } }} key={feed.uri}> |