Optimize json processing and preloading

- Preload events when added to the EventHolder queue
- Remove relative time formatting from preloader. Just do it when event appears
- Process incoming json in a background queue by default

Changelog-Fixed: Fix wrong relative times on events
Changelog-Changed: Preload events when they are queued
This commit is contained in:
William Casarin
2023-05-03 09:18:09 -07:00
parent 3b541f2ec1
commit 39a324fd1e
10 changed files with 191 additions and 90 deletions

View File

@@ -13,6 +13,7 @@ class EventHolder: ObservableObject, ScrollQueue {
@Published var events: [NostrEvent]
@Published var incoming: [NostrEvent]
var should_queue: Bool
var on_queue: ((NostrEvent) -> Void)?
func set_should_queue(_ val: Bool) {
self.should_queue = val
@@ -35,6 +36,15 @@ class EventHolder: ObservableObject, ScrollQueue {
self.events = []
self.incoming = []
self.has_event = Set()
self.on_queue = nil
}
init(on_queue: @escaping (NostrEvent) -> ()) {
self.should_queue = false
self.events = []
self.incoming = []
self.has_event = Set()
self.on_queue = on_queue
}
init(events: [NostrEvent], incoming: [NostrEvent]) {
@@ -42,6 +52,7 @@ class EventHolder: ObservableObject, ScrollQueue {
self.events = events
self.incoming = incoming
self.has_event = Set()
self.on_queue = nil
}
func filter(_ isIncluded: (NostrEvent) -> Bool) {
@@ -76,6 +87,8 @@ class EventHolder: ObservableObject, ScrollQueue {
return false
}
on_queue?(ev)
has_event.insert(ev.id)
incoming.append(ev)