mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Prevent race conditions when adding timeline listeners between the timeline provider and other screens
This commit is contained in:
committed by
Stefan Ceriu
parent
0082aba9d4
commit
142a8d6275
@@ -186,13 +186,14 @@ class RoomProxy: RoomProxyProtocol {
|
||||
timelineLimit: UInt32(SlidingSyncConstants.timelinePrecachingTimelineLimit))
|
||||
roomSubscriptionObservationToken = slidingSyncRoom.subscribeToRoom(settings: settings)
|
||||
|
||||
let listener = RoomTimelineListener { [weak self] timelineDiff in
|
||||
let timelineListener = RoomTimelineListener { [weak self] timelineDiff in
|
||||
self?.updatesSubject.send(timelineDiff)
|
||||
}
|
||||
|
||||
if let result = try? slidingSyncRoom.addTimelineListener(listener: listener) {
|
||||
self.timelineListener = timelineListener
|
||||
|
||||
if let result = try? slidingSyncRoom.addTimelineListener(listener: timelineListener) {
|
||||
roomTimelineObservationToken = result.taskHandle
|
||||
timelineListener = listener
|
||||
|
||||
Task {
|
||||
await fetchMembers()
|
||||
@@ -200,6 +201,7 @@ class RoomProxy: RoomProxyProtocol {
|
||||
}
|
||||
return .success(result.items)
|
||||
} else {
|
||||
self.timelineListener = nil
|
||||
return .failure(.failedAddingTimelineListener)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user