Move DM subscription to a dedicated stream
This commit splits a subscription that previously gathered DMs as well as new notes from the follow list, moving the DM subscription to is own dedicated stream. This prevents the issue of DM notes getting clipped off when the user follows too many other users. Changelog-Fixed: Fixed an issue where DMs may not appear for users with a large contact list Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
This commit is contained in:
@@ -70,6 +70,7 @@ class HomeModel: ContactsDelegate, ObservableObject {
|
|||||||
var homeHandlerTask: Task<Void, Never>?
|
var homeHandlerTask: Task<Void, Never>?
|
||||||
var notificationsHandlerTask: Task<Void, Never>?
|
var notificationsHandlerTask: Task<Void, Never>?
|
||||||
var generalHandlerTask: Task<Void, Never>?
|
var generalHandlerTask: Task<Void, Never>?
|
||||||
|
var dmsHandlerTask: Task<Void, Never>?
|
||||||
var ndbOnlyHandlerTask: Task<Void, Never>?
|
var ndbOnlyHandlerTask: Task<Void, Never>?
|
||||||
var nwcHandlerTask: Task<Void, Never>?
|
var nwcHandlerTask: Task<Void, Never>?
|
||||||
|
|
||||||
@@ -603,9 +604,9 @@ class HomeModel: ContactsDelegate, ObservableObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.generalHandlerTask?.cancel()
|
self.dmsHandlerTask?.cancel()
|
||||||
self.generalHandlerTask = Task {
|
self.dmsHandlerTask = Task {
|
||||||
for await item in damus_state.nostrNetwork.reader.advancedStream(filters: dms_filters + contacts_filters, streamMode: .ndbAndNetworkParallel(networkOptimization: .sinceOptimization)) {
|
for await item in damus_state.nostrNetwork.reader.advancedStream(filters: dms_filters, streamMode: .ndbAndNetworkParallel(networkOptimization: .sinceOptimization)) {
|
||||||
switch item {
|
switch item {
|
||||||
case .event(let lender):
|
case .event(let lender):
|
||||||
await lender.justUseACopy({ await process_event(ev: $0, context: .other) })
|
await lender.justUseACopy({ await process_event(ev: $0, context: .other) })
|
||||||
@@ -619,6 +620,12 @@ class HomeModel: ContactsDelegate, ObservableObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self.generalHandlerTask?.cancel()
|
||||||
|
self.generalHandlerTask = Task {
|
||||||
|
for await lender in damus_state.nostrNetwork.reader.streamIndefinitely(filters: contacts_filters, streamMode: .ndbAndNetworkParallel(networkOptimization: .sinceOptimization)) {
|
||||||
|
await lender.justUseACopy({ await process_event(ev: $0, context: .other) })
|
||||||
|
}
|
||||||
|
}
|
||||||
// Due to subscription volume limits in ndb and in relays, some important events may get clipped in the `generalHandlerTask` above.
|
// Due to subscription volume limits in ndb and in relays, some important events may get clipped in the `generalHandlerTask` above.
|
||||||
// This could lead to issues (e.g. The app overriding a mutelist because it does not have it)
|
// This could lead to issues (e.g. The app overriding a mutelist because it does not have it)
|
||||||
// Therefore, we have this ndb-only stream for some low volume important items.
|
// Therefore, we have this ndb-only stream for some low volume important items.
|
||||||
|
|||||||
Reference in New Issue
Block a user