mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
element-hq/element-x-ios/issues/2395 - Slightly tweak the unread invites logic, add more logs
This commit is contained in:
committed by
Stefan Ceriu
parent
d996c69a66
commit
1ffc718cec
@@ -262,14 +262,22 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
|
|||||||
inviteSummaryProvider.roomListPublisher
|
inviteSummaryProvider.roomListPublisher
|
||||||
.combineLatest(appSettings.$seenInvites)
|
.combineLatest(appSettings.$seenInvites)
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
.sink { [weak self] summaries, readInvites in
|
.sink { [weak self] summaries, seenInvites in
|
||||||
self?.state.hasPendingInvitations = !summaries.isEmpty
|
self?.state.hasPendingInvitations = !summaries.isEmpty
|
||||||
self?.state.hasUnreadPendingInvitations = summaries.contains(where: {
|
|
||||||
guard let roomId = $0.id else {
|
let invites = summaries.compactMap(\.id)
|
||||||
|
|
||||||
|
let unreadInvites = summaries.filter { summary in
|
||||||
|
guard let roomID = summary.id else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return !readInvites.contains(roomId)
|
|
||||||
})
|
return !seenInvites.contains(roomID)
|
||||||
|
}
|
||||||
|
|
||||||
|
MXLog.info("Received invite list update - invites: \(invites), seenInvites: \(seenInvites), unreadInvites: \(unreadInvites)")
|
||||||
|
|
||||||
|
self?.state.hasUnreadPendingInvitations = !unreadInvites.isEmpty
|
||||||
}
|
}
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,15 +84,16 @@ class InvitesScreenViewModel: InvitesScreenViewModelType, InvitesScreenViewModel
|
|||||||
.sink { [weak self] roomSummaries in
|
.sink { [weak self] roomSummaries in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
|
|
||||||
let invites: [InvitesScreenRoomDetails] = roomSummaries.compactMap { summary in
|
self.appSettings.seenInvites = Set(roomSummaries.compactMap(\.id))
|
||||||
|
|
||||||
|
MXLog.info("Updated seen invites: \(self.appSettings.seenInvites)")
|
||||||
|
|
||||||
|
self.state.invites = roomSummaries.compactMap { summary in
|
||||||
guard case .filled(let details) = summary else {
|
guard case .filled(let details) = summary else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return InvitesScreenRoomDetails(roomDetails: details, isUnread: !self.previouslySeenInvites.contains(details.id))
|
return InvitesScreenRoomDetails(roomDetails: details, isUnread: !self.previouslySeenInvites.contains(details.id))
|
||||||
}
|
}
|
||||||
|
|
||||||
self.state.invites = invites
|
|
||||||
self.appSettings.seenInvites = Set(invites.map(\.roomDetails.id))
|
|
||||||
}
|
}
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user