Add EntityPreloader for batched profile metadata preloading
Implements an actor-based preloading system to efficiently fetch profile metadata for note authors and referenced users. The EntityPreloader queues requests and batches them intelligently (500 pubkeys or 1 second timeout) to avoid network overload while improving UX by ensuring profiles are available when rendering notes. Key changes: - Add EntityPreloader actor with queue-based batching logic - Integrate with SubscriptionManager via PreloadStrategy enum - Add lifecycle management (start/stop on app foreground/background) - Skip preload for pubkeys already cached in ndb - Include comprehensive test suite with 11 test cases covering batching, deduplication, and edge cases - Optimize ProfilePicView to load from ndb before first render Closes: https://github.com/damus-io/damus/issues/gh-3511 Changelog-Added: Profile metadata preloading for improved timeline performance Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
This commit is contained in:
@@ -150,6 +150,7 @@ struct UnownedNdbNote: ~Copyable {
|
||||
var createdAt: UInt32 { _ndbNote.created_at }
|
||||
var id: NoteId { _ndbNote.id }
|
||||
var sig: Signature { _ndbNote.sig }
|
||||
var referenced_pubkeys: References<Pubkey> { _ndbNote.referenced_pubkeys }
|
||||
|
||||
func toOwned() -> NdbNote {
|
||||
return _ndbNote.to_owned()
|
||||
|
||||
Reference in New Issue
Block a user