fix native post meta (#4530)
parent
eaef1446f2
commit
d0bb97e8a9
|
@ -51,10 +51,23 @@ const floatingMiddlewares = [
|
||||||
]
|
]
|
||||||
|
|
||||||
export function ProfileHoverCard(props: ProfileHoverCardProps) {
|
export function ProfileHoverCard(props: ProfileHoverCardProps) {
|
||||||
|
const prefetchProfileQuery = usePrefetchProfileQuery()
|
||||||
|
const prefetchedProfile = React.useRef(false)
|
||||||
|
const onPointerMove = () => {
|
||||||
|
if (!prefetchedProfile.current) {
|
||||||
|
prefetchedProfile.current = true
|
||||||
|
prefetchProfileQuery(props.did)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (props.disable || isTouchDevice) {
|
if (props.disable || isTouchDevice) {
|
||||||
return props.children
|
return props.children
|
||||||
} else {
|
} else {
|
||||||
return <ProfileHoverCardInner {...props} />
|
return (
|
||||||
|
<View onPointerMove={onPointerMove}>
|
||||||
|
<ProfileHoverCardInner {...props} />
|
||||||
|
</View>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,15 +3,14 @@ import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native'
|
||||||
import {AppBskyActorDefs, ModerationDecision, ModerationUI} from '@atproto/api'
|
import {AppBskyActorDefs, ModerationDecision, ModerationUI} from '@atproto/api'
|
||||||
import {useQueryClient} from '@tanstack/react-query'
|
import {useQueryClient} from '@tanstack/react-query'
|
||||||
|
|
||||||
import {precacheProfile, usePrefetchProfileQuery} from '#/state/queries/profile'
|
import {precacheProfile} from '#/state/queries/profile'
|
||||||
import {usePalette} from 'lib/hooks/usePalette'
|
import {usePalette} from 'lib/hooks/usePalette'
|
||||||
import {makeProfileLink} from 'lib/routes/links'
|
import {makeProfileLink} from 'lib/routes/links'
|
||||||
import {sanitizeDisplayName} from 'lib/strings/display-names'
|
import {sanitizeDisplayName} from 'lib/strings/display-names'
|
||||||
import {sanitizeHandle} from 'lib/strings/handles'
|
import {sanitizeHandle} from 'lib/strings/handles'
|
||||||
import {niceDate} from 'lib/strings/time'
|
import {niceDate} from 'lib/strings/time'
|
||||||
import {TypographyVariant} from 'lib/ThemeContext'
|
import {TypographyVariant} from 'lib/ThemeContext'
|
||||||
import {isAndroid, isWeb} from 'platform/detection'
|
import {isAndroid} from 'platform/detection'
|
||||||
import {atoms as a} from '#/alf'
|
|
||||||
import {ProfileHoverCard} from '#/components/ProfileHoverCard'
|
import {ProfileHoverCard} from '#/components/ProfileHoverCard'
|
||||||
import {TextLinkOnWebOnly} from './Link'
|
import {TextLinkOnWebOnly} from './Link'
|
||||||
import {Text} from './text/Text'
|
import {Text} from './text/Text'
|
||||||
|
@ -37,17 +36,7 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
|
||||||
const pal = usePalette('default')
|
const pal = usePalette('default')
|
||||||
const displayName = opts.author.displayName || opts.author.handle
|
const displayName = opts.author.displayName || opts.author.handle
|
||||||
const handle = opts.author.handle
|
const handle = opts.author.handle
|
||||||
const prefetchProfileQuery = usePrefetchProfileQuery()
|
|
||||||
|
|
||||||
const profileLink = makeProfileLink(opts.author)
|
const profileLink = makeProfileLink(opts.author)
|
||||||
const prefetchedProfile = React.useRef(false)
|
|
||||||
const onPointerMove = React.useCallback(() => {
|
|
||||||
if (!prefetchedProfile.current) {
|
|
||||||
prefetchedProfile.current = true
|
|
||||||
prefetchProfileQuery(opts.author.did)
|
|
||||||
}
|
|
||||||
}, [opts.author.did, prefetchProfileQuery])
|
|
||||||
|
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
const onOpenAuthor = opts.onOpenAuthor
|
const onOpenAuthor = opts.onOpenAuthor
|
||||||
const onBeforePressAuthor = useCallback(() => {
|
const onBeforePressAuthor = useCallback(() => {
|
||||||
|
@ -71,9 +60,6 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<ProfileHoverCard inline did={opts.author.did}>
|
<ProfileHoverCard inline did={opts.author.did}>
|
||||||
<View
|
|
||||||
onPointerMove={isWeb ? onPointerMove : undefined}
|
|
||||||
style={[a.flex_1]}>
|
|
||||||
<Text
|
<Text
|
||||||
numberOfLines={1}
|
numberOfLines={1}
|
||||||
style={[styles.maxWidth, pal.textLight, opts.displayNameStyle]}>
|
style={[styles.maxWidth, pal.textLight, opts.displayNameStyle]}>
|
||||||
|
@ -103,7 +89,6 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
|
||||||
anchorNoUnderline
|
anchorNoUnderline
|
||||||
/>
|
/>
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
|
||||||
</ProfileHoverCard>
|
</ProfileHoverCard>
|
||||||
{!isAndroid && (
|
{!isAndroid && (
|
||||||
<Text
|
<Text
|
||||||
|
|
Loading…
Reference in New Issue