diff --git a/src/lib/strings.ts b/src/lib/strings.ts index eaccb63a..6457e4b9 100644 --- a/src/lib/strings.ts +++ b/src/lib/strings.ts @@ -198,7 +198,7 @@ export function toShortUrl(url: string): string { } } -export function toShareUrl(url: string) { +export function toShareUrl(url: string): string { if (!url.startsWith('https')) { const urlp = new URL('https://bsky.app') urlp.pathname = url @@ -206,3 +206,15 @@ export function toShareUrl(url: string) { } return url } + +export function convertBskyAppUrlIfNeeded(url: string): string { + if (url.startsWith('https://bsky.app/')) { + try { + const urlp = new URL(url) + return urlp.pathname + } catch (e) { + console.log('Unexpected error in convertBskyAppUrlIfNeeded()', e) + } + } + return url +} diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx index 8f94115e..70ba0df7 100644 --- a/src/view/com/util/Link.tsx +++ b/src/view/com/util/Link.tsx @@ -8,8 +8,8 @@ import { TextStyle, ViewStyle, } from 'react-native' -import {useStores} from '../../../state' -import {RootStoreModel} from '../../../state' +import {useStores, RootStoreModel} from '../../../state' +import {convertBskyAppUrlIfNeeded} from '../../../lib/strings' export const Link = observer(function Link({ style, @@ -66,6 +66,7 @@ export const TextLink = observer(function Link({ }) function handleLink(store: RootStoreModel, href: string, longPress: boolean) { + href = convertBskyAppUrlIfNeeded(href) if (href.startsWith('http')) { Linking.openURL(href) } else if (longPress) {