diff options
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/com/util/Link.tsx | 2 | ||||
-rw-r--r-- | src/view/com/util/PostMeta.tsx | 9 | ||||
-rw-r--r-- | src/view/com/util/UserPreviewLink.tsx | 7 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx index db26258d6..a517ba430 100644 --- a/src/view/com/util/Link.tsx +++ b/src/view/com/util/Link.tsx @@ -47,6 +47,7 @@ interface Props extends ComponentProps<typeof TouchableOpacity> { asAnchor?: boolean anchorNoUnderline?: boolean navigationAction?: 'push' | 'replace' | 'navigate' + onPointerEnter?: () => void } export const Link = memo(function Link({ @@ -264,6 +265,7 @@ interface TextLinkOnWebOnlyProps extends TextProps { accessibilityHint?: string title?: string navigationAction?: 'push' | 'replace' | 'navigate' + onPointerEnter?: () => void } export const TextLinkOnWebOnly = memo(function DesktopWebTextLink({ testID, diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx index b9c3842b3..4cd574d59 100644 --- a/src/view/com/util/PostMeta.tsx +++ b/src/view/com/util/PostMeta.tsx @@ -8,10 +8,11 @@ import {TypographyVariant} from 'lib/ThemeContext' import {UserAvatar} from './UserAvatar' import {sanitizeDisplayName} from 'lib/strings/display-names' import {sanitizeHandle} from 'lib/strings/handles' -import {isAndroid} from 'platform/detection' +import {isAndroid, isWeb} from 'platform/detection' import {TimeElapsed} from './TimeElapsed' import {makeProfileLink} from 'lib/routes/links' import {ModerationUI} from '@atproto/api' +import {usePrefetchProfileQuery} from '#/state/queries/profile' interface PostMetaOpts { author: { @@ -35,6 +36,7 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => { const pal = usePalette('default') const displayName = opts.author.displayName || opts.author.handle const handle = opts.author.handle + const prefetchProfileQuery = usePrefetchProfileQuery() return ( <View style={[styles.container, opts.style]}> @@ -66,6 +68,11 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => { </> } href={makeProfileLink(opts.author)} + onPointerEnter={() => { + if (isWeb) { + prefetchProfileQuery(opts.author.did) + } + }} /> </View> {!isAndroid && ( diff --git a/src/view/com/util/UserPreviewLink.tsx b/src/view/com/util/UserPreviewLink.tsx index a8985ce45..2f257bb5e 100644 --- a/src/view/com/util/UserPreviewLink.tsx +++ b/src/view/com/util/UserPreviewLink.tsx @@ -4,6 +4,7 @@ import {Link} from './Link' import {isAndroid, isWeb} from 'platform/detection' import {makeProfileLink} from 'lib/routes/links' import {useModalControls} from '#/state/modals' +import {usePrefetchProfileQuery} from '#/state/queries/profile' interface UserPreviewLinkProps { did: string @@ -14,10 +15,16 @@ export function UserPreviewLink( props: React.PropsWithChildren<UserPreviewLinkProps>, ) { const {openModal} = useModalControls() + const prefetchProfileQuery = usePrefetchProfileQuery() if (isWeb || isAndroid) { return ( <Link + onPointerEnter={() => { + if (isWeb) { + prefetchProfileQuery(props.did) + } + }} href={makeProfileLink(props)} title={props.handle} asAnchor |