diff options
Diffstat (limited to 'src/view/com/util/post-embeds')
-rw-r--r-- | src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx | 8 | ||||
-rw-r--r-- | src/view/com/util/post-embeds/index.tsx | 17 |
2 files changed, 21 insertions, 4 deletions
diff --git a/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx b/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx index 8b0858b69..d556e7669 100644 --- a/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx @@ -78,9 +78,13 @@ function Player({ onLoad: () => void }) { // ensures we only load what's requested + // when it's a youtube video, we need to allow both bsky.app and youtube.com const onShouldStartLoadWithRequest = React.useCallback( - (event: ShouldStartLoadRequest) => event.url === params.playerUri, - [params.playerUri], + (event: ShouldStartLoadRequest) => + event.url === params.playerUri || + (params.source.startsWith('youtube') && + event.url.includes('www.youtube.com')), + [params.playerUri, params.source], ) // Don't show the player until it is active diff --git a/src/view/com/util/post-embeds/index.tsx b/src/view/com/util/post-embeds/index.tsx index 6f168a293..7e235babb 100644 --- a/src/view/com/util/post-embeds/index.tsx +++ b/src/view/com/util/post-embeds/index.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React, {useCallback} from 'react' import { StyleSheet, StyleProp, @@ -29,6 +29,8 @@ import {ListEmbed} from './ListEmbed' import {isCauseALabelOnUri, isQuoteBlurred} from 'lib/moderation' import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard' import {ContentHider} from '../moderation/ContentHider' +import {isNative} from '#/platform/detection' +import {shareUrl} from '#/lib/sharing' type Embed = | AppBskyEmbedRecord.View @@ -51,6 +53,16 @@ export function PostEmbeds({ const pal = usePalette('default') const {openLightbox} = useLightboxControls() + const externalUri = AppBskyEmbedExternal.isView(embed) + ? embed.external.uri + : null + + const onShareExternal = useCallback(() => { + if (externalUri && isNative) { + shareUrl(externalUri) + } + }, [externalUri]) + // quote post with media // = if (AppBskyEmbedRecordWithMedia.isView(embed)) { @@ -164,7 +176,8 @@ export function PostEmbeds({ anchorNoUnderline href={link.uri} style={[styles.extOuter, pal.view, pal.borderDark, style]} - hoverStyle={{borderColor: pal.colors.borderLinkHover}}> + hoverStyle={{borderColor: pal.colors.borderLinkHover}} + onLongPress={onShareExternal}> <ExternalLinkEmbed link={link} /> </Link> ) |