5 changed files with 72 additions and 28 deletions
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
import { kinds, NostrEvent } from 'nostr-tools' |
||||
import { isMentioningMutedUsers } from './event' |
||||
import { tagNameEquals } from './tag' |
||||
|
||||
export function notificationFilter( |
||||
event: NostrEvent, |
||||
{ |
||||
pubkey, |
||||
mutePubkeySet, |
||||
hideContentMentioningMutedUsers, |
||||
hideUntrustedNotifications, |
||||
isUserTrusted |
||||
}: { |
||||
pubkey?: string | null |
||||
mutePubkeySet: Set<string> |
||||
hideContentMentioningMutedUsers?: boolean |
||||
hideUntrustedNotifications?: boolean |
||||
isUserTrusted: (pubkey: string) => boolean |
||||
} |
||||
): boolean { |
||||
if ( |
||||
mutePubkeySet.has(event.pubkey) || |
||||
(hideContentMentioningMutedUsers && isMentioningMutedUsers(event, mutePubkeySet)) || |
||||
(hideUntrustedNotifications && !isUserTrusted(event.pubkey)) |
||||
) { |
||||
return false |
||||
} |
||||
|
||||
if (pubkey && event.kind === kinds.Reaction) { |
||||
const targetPubkey = event.tags.findLast(tagNameEquals('p'))?.[1] |
||||
if (targetPubkey !== pubkey) return false |
||||
} |
||||
|
||||
return true |
||||
} |
||||
Loading…
Reference in new issue