change: stricter private timeline media visibility

This commit is contained in:
Mauro Romito
2025-04-10 14:59:02 +02:00
committed by Mauro
parent a257f609fa
commit 4400f6c393
2 changed files with 13 additions and 2 deletions

View File

@@ -92,7 +92,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
case .always:
false
case .privateOnly:
roomProxy.infoPublisher.value.isPublic
!roomProxy.infoPublisher.value.isPrivate
case .never:
true
}
@@ -538,7 +538,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
case .privateOnly:
guard let self else { return Just(false).eraseToAnyPublisher() }
return roomProxy.infoPublisher
.map(\.isPublic)
.map { !$0.isPrivate }
.removeDuplicates()
.receive(on: DispatchQueue.main)
.eraseToAnyPublisher()

View File

@@ -49,6 +49,17 @@ struct RoomInfoProxy: BaseRoomInfoProxyProtocol {
var isDirect: Bool { roomInfo.isDirect }
var isPublic: Bool { roomInfo.isPublic }
// A room might be non public but also not private given the fact that the join rule might be missing or unsupported.
var isPrivate: Bool {
switch roomInfo.joinRule {
case .invite, .knock, .restricted, .knockRestricted:
true
default:
false
}
}
var isSpace: Bool { roomInfo.isSpace }
var isTombstoned: Bool { roomInfo.isTombstoned }
var isFavourite: Bool { roomInfo.isFavourite }