element-hq/element-x-ios/issues/2395 - Slightly tweak the unread invites logic, add more logs

This commit is contained in:
Stefan Ceriu
2024-04-05 09:18:56 +03:00
committed by Stefan Ceriu
parent d996c69a66
commit 1ffc718cec
2 changed files with 18 additions and 9 deletions
@@ -262,14 +262,22 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
inviteSummaryProvider.roomListPublisher
.combineLatest(appSettings.$seenInvites)
.receive(on: DispatchQueue.main)
.sink { [weak self] summaries, readInvites in
.sink { [weak self] summaries, seenInvites in
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 !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)
}
@@ -84,15 +84,16 @@ class InvitesScreenViewModel: InvitesScreenViewModelType, InvitesScreenViewModel
.sink { [weak self] roomSummaries in
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 {
return nil
}
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)
}