Browse Source

fix home feed

Signed-off-by: William Casarin <jb55@jb55.com>
profiles-everywhere
William Casarin 3 years ago
parent
commit
7bf9f62255
  1. 9
      damus/Models/Contacts.swift
  2. 14
      damus/Nostr/NostrEvent.swift

9
damus/Models/Contacts.swift

@ -214,10 +214,15 @@ func is_friend_event(_ ev: NostrEvent, our_pubkey: String, contacts: Contacts) -
return true 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 // 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 return true
} }

14
damus/Nostr/NostrEvent.swift

@ -19,7 +19,7 @@ struct KeyEvent {
let relay_url: String let relay_url: String
} }
struct ReferencedId: Identifiable { struct ReferencedId: Identifiable, Hashable {
let ref_id: String let ref_id: String
let relay_id: String? let relay_id: String?
let key: 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? { func make_first_contact_event(keypair: Keypair) -> NostrEvent? {
guard let privkey = keypair.privkey else { guard let privkey = keypair.privkey else {
return nil return nil

Loading…
Cancel
Save