Fix repost detection

This commit is contained in:
styppo 2023-02-09 11:47:37 +00:00
parent 28ea16298d
commit 289c37f91e
No known key found for this signature in database
GPG Key ID: 3AAA685C50724C28
2 changed files with 31 additions and 3 deletions

View File

@ -114,4 +114,8 @@ export default class Event {
eventRefs() {
return new EventRefs(this.eventTags())
}
hasAncestor() {
return this.eventTags().some(tag => tag.marker !== 'mention')
}
}

View File

@ -62,21 +62,45 @@ export default class Note {
}
contentTagRefs() {
return Note.contentTagRefs(this)
}
static contentTagRefs(event) {
const regex = /#\[([0-9]+)]/g
let refs = []
let match
while ((match = regex.exec(this.content))) {
while ((match = regex.exec(event.content))) {
refs.push(match[1])
}
return refs
}
isRepost() {
return Note.isRepost(this)
}
static isRepost(event) {
if (!/^#\[([0-9]+)]$/.test(event.content)) return false
return event.tags[Note.contentTagRefs(event)[0]]?.type === TagType.EVENT
}
static mentionsPubkey(event, pubkey) {
if (event.tags.some(tag => tag.type === TagType.PUBKEY
&& tag.ref === pubkey
&& tag.marker === 'mention'
)) return true
return Note.contentTagRefs(event)
.map(idx => event.tags[idx])
.some(tag => tag.type === TagType.PUBKEY && tag.ref === pubkey)
}
isRepostOrTag() {
return Note.isRepostOrTag(this)
}
static isRepostOrTag(event) {
return /#\[([0-9]+)]/.test(event.content)
return /^#\[([0-9]+)]$/.test(event.content)
}
isReaction() {
@ -85,7 +109,7 @@ export default class Note {
static isReaction(event) {
return event.kind === EventKind.REACTION
|| (!event.eventRefs().isEmpty() && Note.isReactionContent(event.content))
|| (event.hasAncestor() && Note.isReactionContent(event.content))
}
static isReactionContent(content) {