feat: 💨
This commit is contained in:
parent
5f165308c1
commit
63869ef3b7
5 changed files with 72 additions and 28 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import Image from '@/components/Image'
|
||||
import { useFetchEvent } from '@/hooks'
|
||||
import { generateBech32IdFromETag, tagNameEquals } from '@/lib/tag'
|
||||
import { generateBech32IdFromATag, generateBech32IdFromETag, tagNameEquals } from '@/lib/tag'
|
||||
import { useNostr } from '@/providers/NostrProvider'
|
||||
import { Heart } from 'lucide-react'
|
||||
import { Event } from 'nostr-tools'
|
||||
|
|
@ -18,9 +18,10 @@ export function ReactionNotification({
|
|||
const { t } = useTranslation()
|
||||
const { pubkey } = useNostr()
|
||||
const eventId = useMemo(() => {
|
||||
const targetPubkey = notification.tags.findLast(tagNameEquals('p'))?.[1]
|
||||
if (targetPubkey !== pubkey) return undefined
|
||||
|
||||
const aTag = notification.tags.findLast(tagNameEquals('a'))
|
||||
if (aTag) {
|
||||
return generateBech32IdFromATag(aTag)
|
||||
}
|
||||
const eTag = notification.tags.findLast(tagNameEquals('e'))
|
||||
return eTag ? generateBech32IdFromETag(eTag) : undefined
|
||||
}, [notification, pubkey])
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
import { ExtendedKind } from '@/constants'
|
||||
import { isMentioningMutedUsers } from '@/lib/event'
|
||||
import { notificationFilter } from '@/lib/notification'
|
||||
import { useContentPolicy } from '@/providers/ContentPolicyProvider'
|
||||
import { useMuteList } from '@/providers/MuteListProvider'
|
||||
import { useNostr } from '@/providers/NostrProvider'
|
||||
import { useUserTrust } from '@/providers/UserTrustProvider'
|
||||
import { Event, kinds } from 'nostr-tools'
|
||||
import { useMemo } from 'react'
|
||||
import { MentionNotification } from './MentionNotification'
|
||||
|
|
@ -17,18 +19,26 @@ export function NotificationItem({
|
|||
notification: Event
|
||||
isNew?: boolean
|
||||
}) {
|
||||
const { pubkey } = useNostr()
|
||||
const { mutePubkeySet } = useMuteList()
|
||||
const { hideContentMentioningMutedUsers } = useContentPolicy()
|
||||
const shouldHide = useMemo(() => {
|
||||
if (mutePubkeySet.has(notification.pubkey)) {
|
||||
return true
|
||||
}
|
||||
if (hideContentMentioningMutedUsers && isMentioningMutedUsers(notification, mutePubkeySet)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}, [])
|
||||
if (shouldHide) return null
|
||||
const { hideUntrustedNotifications, isUserTrusted } = useUserTrust()
|
||||
const canShow = useMemo(() => {
|
||||
return notificationFilter(notification, {
|
||||
pubkey,
|
||||
mutePubkeySet,
|
||||
hideContentMentioningMutedUsers,
|
||||
hideUntrustedNotifications,
|
||||
isUserTrusted
|
||||
})
|
||||
}, [
|
||||
notification,
|
||||
mutePubkeySet,
|
||||
hideContentMentioningMutedUsers,
|
||||
hideUntrustedNotifications,
|
||||
isUserTrusted
|
||||
])
|
||||
if (!canShow) return null
|
||||
|
||||
if (notification.kind === kinds.Reaction) {
|
||||
return <ReactionNotification notification={notification} isNew={isNew} />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue