ndb: switch to nostrdb notes

This is a refactor of the codebase to use a more memory-efficient
representation of notes. It should also be much faster at decoding since
we're using a custom C json parser now.

Changelog-Changed: Improved memory usage and performance when processing events
This commit is contained in:
William Casarin
2023-07-26 08:46:44 -07:00
parent 55bbe8f855
commit cebd1f48ca
110 changed files with 2153 additions and 1799 deletions

View File

@@ -18,7 +18,7 @@ class ThreadModel: ObservableObject {
self.event_map = Set()
self.event = event
self.original_event = event
add_event(event)
add_event(event, privkey: damus_state.keypair.privkey)
}
var is_original: Bool {
@@ -46,10 +46,10 @@ class ThreadModel: ObservableObject {
}
@discardableResult
func set_active_event(_ ev: NostrEvent) -> Bool {
func set_active_event(_ ev: NostrEvent, privkey: Privkey?) -> Bool {
self.event = ev
add_event(ev)
add_event(ev, privkey: privkey)
//self.objectWillChange.send()
return false
}
@@ -85,15 +85,15 @@ class ThreadModel: ObservableObject {
damus_state.pool.subscribe(sub_id: meta_subid, filters: meta_filters, handler: handle_event)
}
func add_event(_ ev: NostrEvent) {
func add_event(_ ev: NostrEvent, privkey: Privkey?) {
if event_map.contains(ev) {
return
}
let the_ev = damus_state.events.upsert(ev)
damus_state.replies.count_replies(the_ev)
damus_state.events.add_replies(ev: the_ev)
damus_state.replies.count_replies(the_ev, privkey: privkey)
damus_state.events.add_replies(ev: the_ev, privkey: privkey)
event_map.insert(ev)
objectWillChange.send()
}
@@ -112,7 +112,7 @@ class ThreadModel: ObservableObject {
}
} else if ev.is_textlike {
self.add_event(ev)
self.add_event(ev, privkey: damus_state.keypair.privkey)
}
}