Hide the unread dot after previewing an invite. (#3800)

* Hide the unread dot when previewing an invite.

* Remove an invited room ID when accepting/rejecting.

* Remove the unread badge from knocked room cells.

* Update snapshots.

* Address PR comments.

Refactor KnockRequestType to JoinRequestType.
This commit is contained in:
Doug
2025-02-18 12:22:13 +00:00
committed by GitHub
parent 8c07ee35c4
commit d325adb4fc
19 changed files with 250 additions and 97 deletions
@@ -41,6 +41,18 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
super.init(initialViewState: JoinRoomScreenViewState(roomID: roomID), mediaProvider: mediaProvider)
context.$viewState.map(\.mode)
.removeDuplicates()
.sink { mode in
switch mode {
case .invited:
appSettings.seenInvites.insert(roomID)
default:
break
}
}
.store(in: &cancellables)
Task {
await loadRoomDetails()
}
@@ -225,6 +237,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
if let alias = state.roomDetails?.canonicalAlias {
switch await clientProxy.joinRoomAlias(alias) {
case .success:
appSettings.seenInvites.remove(roomID)
actionsSubject.send(.joined)
case .failure(let error):
if case .forbiddenAccess = error {
@@ -238,6 +251,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
} else {
switch await clientProxy.joinRoom(roomID, via: via) {
case .success:
appSettings.seenInvites.remove(roomID)
actionsSubject.send(.joined)
case .failure(let error):
if case .forbiddenAccess = error {
@@ -343,6 +357,8 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
return false
}
appSettings.seenInvites.remove(roomID)
actionsSubject.send(.dismiss)
return true
}