Files
damus/damus/Util/ReplyCounter.swift
William Casarin c71b0ee916 blocks: pass keypair instead of privkey to avoid pubkey gen
Generating a pubkey is quite slow, so pass a keypair instead of privkey
2023-08-28 11:47:29 -07:00

55 lines
1.2 KiB
Swift

//
// ReplyCounter.swift
// damus
//
// Created by William Casarin on 2023-04-04.
//
import Foundation
class ReplyCounter {
private var replies: [NoteId: Int]
private var counted: Set<NoteId>
private var our_replies: [NoteId: NostrEvent]
private let our_pubkey: Pubkey
init(our_pubkey: Pubkey) {
self.our_pubkey = our_pubkey
replies = [:]
counted = Set()
our_replies = [:]
}
func our_reply(_ evid: NoteId) -> NostrEvent? {
return our_replies[evid]
}
func get_replies(_ evid: NoteId) -> Int {
return replies[evid] ?? 0
}
func count_replies(_ event: NostrEvent, keypair: Keypair) {
guard event.is_textlike else {
return
}
if counted.contains(event.id) {
return
}
counted.insert(event.id)
for reply in event.direct_replies(keypair) {
if event.pubkey == our_pubkey {
self.our_replies[reply] = event
}
if replies[reply] != nil {
replies[reply] = replies[reply]! + 1
} else {
replies[reply] = 1
}
}
}
}