change: hiding timeline media has three options

This commit is contained in:
Mauro Romito
2025-04-09 17:03:47 +02:00
committed by Mauro
parent fe9cb2e2f0
commit bf875a23ce
5 changed files with 56 additions and 10 deletions
@@ -88,13 +88,21 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
timelineControllerFactory: timelineControllerFactory,
clientProxy: clientProxy)
let hideTimelineMedia = switch appSettings.timelineMediaVisibility {
case .always:
false
case .privateOnly:
roomProxy.infoPublisher.value.isPublic
case .never:
true
}
super.init(initialViewState: TimelineViewState(timelineKind: timelineController.timelineKind,
roomID: roomProxy.id,
isDirectOneToOneRoom: roomProxy.isDirectOneToOneRoom,
timelineState: TimelineState(focussedEvent: focussedEventID.map { .init(eventID: $0, appearance: .immediate) }),
ownUserID: roomProxy.ownUserID,
isViewSourceEnabled: appSettings.viewSourceEnabled,
hideTimelineMedia: appSettings.hideTimelineMedia,
hideTimelineMedia: hideTimelineMedia,
pinnedEventIDs: roomProxy.infoPublisher.value.pinnedEventIDs,
emojiProvider: emojiProvider,
mapTilerConfiguration: appSettings.mapTilerConfiguration,
@@ -519,7 +527,21 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
.weakAssign(to: \.state.isViewSourceEnabled, on: self)
.store(in: &cancellables)
appSettings.$hideTimelineMedia
appSettings.$timelineMediaVisibility
.combineLatest(roomProxy.infoPublisher
.map(\.isPublic)
.removeDuplicates()
.receive(on: DispatchQueue.main))
.map { timelineMediaVisibility, isPublic in
switch timelineMediaVisibility {
case .always:
false
case .privateOnly:
isPublic
case .never:
true
}
}
.weakAssign(to: \.state.hideTimelineMedia, on: self)
.store(in: &cancellables)
}