Setup a dedicated listener owned by PresenceIndicatorView

This commit is contained in:
aringenbach
2022-05-12 10:55:00 +02:00
parent 648543bc0a
commit 5691c5669e
9 changed files with 182 additions and 178 deletions
@@ -45,6 +45,7 @@ final class RoomInfoListViewModel: NSObject, RoomInfoListViewModelType {
encryptionImage: encryptionImage,
isEncrypted: room.summary.isEncrypted,
isDirect: room.isDirect,
directUserId: room.directUserId,
directUserPresence: directUserPresence)
return RoomInfoListViewData(numberOfMembers: Int(room.summary.membersCount.joined),
@@ -58,12 +59,10 @@ final class RoomInfoListViewModel: NSObject, RoomInfoListViewModelType {
self.room = room
super.init()
startObservingSummaryChanges()
startObservingPresenceChanges()
}
deinit {
stopObservingSummaryChanges()
stopObservingPresenceChanges()
}
// MARK: - Public
@@ -91,27 +90,11 @@ final class RoomInfoListViewModel: NSObject, RoomInfoListViewModelType {
NotificationCenter.default.removeObserver(self, name: .mxRoomSummaryDidChange, object: nil)
}
private func startObservingPresenceChanges() {
NotificationCenter.default.addObserver(self, selector: #selector(presenceUpdated(_:)), name: .mxkContactManagerMatrixUserPresenceChange, object: nil)
}
private func stopObservingPresenceChanges() {
NotificationCenter.default.removeObserver(self, name: .mxkContactManagerMatrixUserPresenceChange, object: nil)
}
@objc private func roomSummaryUpdated(_ notification: Notification) {
// force update view
self.update(viewState: .loaded(viewData: viewData))
}
@objc private func presenceUpdated(_ notification: NSNotification) {
guard let updatedUserId = notification.object as? String, updatedUserId == room.directUserId else {
return
}
self.update(viewState: .loaded(viewData: viewData))
}
private func loadData() {
self.update(viewState: .loaded(viewData: viewData))
}