fix home feed

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2022-06-20 15:30:14 -07:00
parent 1ba5b64df6
commit 7bf9f62255
2 changed files with 20 additions and 3 deletions

View File

@@ -214,10 +214,15 @@ func is_friend_event(_ ev: NostrEvent, our_pubkey: String, contacts: Contacts) -
return true
}
let pks = ev.referenced_pubkeys
let pks = get_referenced_id_set(tags: ev.tags, key: "p")
// reply to self
if pks.count == 0 {
return true
}
// allow reply-to-self-or-friend case
if pks.count == 1 && contacts.is_friend(pks[0].ref_id) {
if pks.count == 1 && contacts.is_friend(pks.first!.ref_id) {
return true
}

View File

@@ -19,7 +19,7 @@ struct KeyEvent {
let relay_url: String
}
struct ReferencedId: Identifiable {
struct ReferencedId: Identifiable, Hashable {
let ref_id: String
let relay_id: String?
let key: String
@@ -364,6 +364,18 @@ func get_referenced_ids(tags: [[String]], key: String) -> [ReferencedId] {
}
}
func get_referenced_id_set(tags: [[String]], key: String) -> Set<ReferencedId> {
return tags.reduce(into: Set()) { (acc, tag) in
if tag.count >= 2 && tag[0] == key {
var relay_id: String? = nil
if tag.count >= 3 {
relay_id = tag[2]
}
acc.insert(ReferencedId(ref_id: tag[1], relay_id: relay_id, key: key))
}
}
}
func make_first_contact_event(keypair: Keypair) -> NostrEvent? {
guard let privkey = keypair.privkey else {
return nil