add profile hover card to notif items (#8666)

This commit is contained in:
Samuel Newman
2025-08-07 19:15:49 +03:00
committed by GitHub
parent cb54082eda
commit 0a2b1fcfb8
5 changed files with 41 additions and 30 deletions
+6
View File
@@ -979,6 +979,12 @@ export const atoms = {
hidden: {
display: 'none',
},
inline: web({
display: 'inline',
}),
block: web({
display: 'block',
}),
/*
* Transition
+1 -1
View File
@@ -1,4 +1,4 @@
import {ProfileHoverCardProps} from './types'
import {type ProfileHoverCardProps} from './types'
export function ProfileHoverCard({children}: ProfileHoverCardProps) {
return children
@@ -74,7 +74,9 @@ export function ProfileHoverCard(props: ProfileHoverCardProps) {
return props.children
} else {
return (
<View onPointerMove={onPointerMove} style={[a.flex_shrink, props.style]}>
<View
onPointerMove={onPointerMove}
style={[a.flex_shrink, props.inline && a.inline, props.style]}>
<ProfileHoverCardInner {...props} />
</View>
)
@@ -326,7 +328,7 @@ export function ProfileHoverCardInner(props: ProfileHoverCardProps) {
onPointerLeave={onPointerLeaveTarget}
// @ts-ignore web only prop
onMouseUp={onPress}
style={{flexShrink: 1}}>
style={[a.flex_shrink, props.inline && a.inline]}>
{props.children}
{isVisible && (
<Portal>
+1
View File
@@ -6,4 +6,5 @@ export type ProfileHoverCardProps = ViewStyleProp & {
children: React.ReactNode
did: string
disable?: boolean
inline?: boolean
}
@@ -209,33 +209,35 @@ let NotificationFeedItem = ({
}
const firstAuthorLink = (
<InlineLinkText
key={firstAuthor.href}
style={[t.atoms.text, a.font_bold, a.text_md, a.leading_tight]}
to={firstAuthor.href}
disableMismatchWarning
emoji
label={_(msg`Go to ${firstAuthorName}'s profile`)}>
{forceLTR(firstAuthorName)}
{firstAuthorVerification.showBadge && (
<View
style={[
a.relative,
{
paddingTop: platform({android: 2}),
marginBottom: platform({ios: -7}),
top: platform({web: 1}),
paddingLeft: 3,
paddingRight: 2,
},
]}>
<VerificationCheck
width={14}
verifier={firstAuthorVerification.role === 'verifier'}
/>
</View>
)}
</InlineLinkText>
<ProfileHoverCard did={firstAuthor.profile.did} inline>
<InlineLinkText
key={firstAuthor.href}
style={[t.atoms.text, a.font_bold, a.text_md, a.leading_tight]}
to={firstAuthor.href}
disableMismatchWarning
emoji
label={_(msg`Go to ${firstAuthorName}'s profile`)}>
{forceLTR(firstAuthorName)}
{firstAuthorVerification.showBadge && (
<View
style={[
a.relative,
{
paddingTop: platform({android: 2}),
marginBottom: platform({ios: -7}),
top: platform({web: 1}),
paddingLeft: 3,
paddingRight: 2,
},
]}>
<VerificationCheck
width={14}
verifier={firstAuthorVerification.role === 'verifier'}
/>
</View>
)}
</InlineLinkText>
</ProfileHoverCard>
)
const additionalAuthorsCount = authors.length - 1
const hasMultipleAuthors = additionalAuthorsCount > 0