mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Fix state change commented by mistake and simplify snapshot test setup (+ a couple of warnings)
This commit is contained in:
committed by
Stefan Ceriu
parent
52463cdf8f
commit
598e604851
+2
-5
@@ -23,8 +23,9 @@ struct MediaEventsTimelineGroup: Identifiable {
|
||||
}
|
||||
|
||||
struct MediaEventsTimelineScreenViewState: BindableState {
|
||||
var hasReachedTimelineStart = false
|
||||
var isBackPaginating = false
|
||||
var shouldShowEmptyState = false
|
||||
|
||||
var groups = [MediaEventsTimelineGroup]()
|
||||
|
||||
var activeTimelineContextProvider: (() -> TimelineViewModel.Context)!
|
||||
@@ -32,10 +33,6 @@ struct MediaEventsTimelineScreenViewState: BindableState {
|
||||
var bindings: MediaEventsTimelineScreenViewStateBindings
|
||||
|
||||
var currentPreviewItemID: TimelineItemIdentifier?
|
||||
|
||||
var shouldShowEmptyState: Bool {
|
||||
groups.isEmpty && hasReachedTimelineStart
|
||||
}
|
||||
}
|
||||
|
||||
struct MediaEventsTimelineScreenViewStateBindings {
|
||||
|
||||
+6
-7
@@ -35,8 +35,8 @@ class MediaEventsTimelineScreenViewModel: MediaEventsTimelineScreenViewModelType
|
||||
|
||||
init(mediaTimelineViewModel: TimelineViewModelProtocol,
|
||||
filesTimelineViewModel: TimelineViewModelProtocol,
|
||||
mediaProvider: MediaProviderProtocol,
|
||||
initialViewState: MediaEventsTimelineScreenViewState = .init(bindings: .init(screenMode: .media)),
|
||||
mediaProvider: MediaProviderProtocol,
|
||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||
self.mediaTimelineViewModel = mediaTimelineViewModel
|
||||
self.filesTimelineViewModel = filesTimelineViewModel
|
||||
@@ -130,8 +130,8 @@ class MediaEventsTimelineScreenViewModel: MediaEventsTimelineScreenViewModelType
|
||||
|
||||
state.groups = newGroups
|
||||
|
||||
state.isBackPaginating = (timelineViewState.timelineState.paginationState.backward == .paginating)
|
||||
// state.hasReachedTimelineStart = (timelineViewState.timelineState.paginationState.backward == .timelineEndReached)
|
||||
state.isBackPaginating = timelineViewState.timelineState.paginationState.backward == .paginating
|
||||
state.shouldShowEmptyState = newGroups.isEmpty && timelineViewState.timelineState.paginationState.backward == .timelineEndReached
|
||||
backPaginateIfNecessary(paginationStatus: timelineViewState.timelineState.paginationState.backward)
|
||||
}
|
||||
|
||||
@@ -157,10 +157,9 @@ class MediaEventsTimelineScreenViewModel: MediaEventsTimelineScreenViewModelType
|
||||
|
||||
actionsSubject.send(.viewItem(.init(item: item,
|
||||
viewModel: activeTimelineViewModel,
|
||||
namespace: namespace,
|
||||
completion: { [weak self] in
|
||||
self?.state.currentPreviewItemID = nil
|
||||
})))
|
||||
namespace: namespace) { [weak self] in
|
||||
self?.state.currentPreviewItemID = nil
|
||||
}))
|
||||
|
||||
// Set the current item in the next run loop so that (hopefully) the presentation will be ready before we flip the thumbnail.
|
||||
Task { state.currentPreviewItemID = item.id }
|
||||
|
||||
+13
-9
@@ -225,8 +225,8 @@ struct MediaEventsTimelineScreen: View {
|
||||
struct MediaEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
|
||||
static let mediaViewModel = makeViewModel(screenMode: .media)
|
||||
static let filesViewModel = makeViewModel(screenMode: .files)
|
||||
static let emptyMediaViewModel = makeViewModel(timelineKind: .detached, screenMode: .media)
|
||||
static let emptyFilesViewModel = makeViewModel(timelineKind: .detached, screenMode: .files)
|
||||
static let emptyMediaViewModel = makeViewModel(empty: true, screenMode: .media)
|
||||
static let emptyFilesViewModel = makeViewModel(empty: true, screenMode: .files)
|
||||
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
@@ -250,18 +250,22 @@ struct MediaEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
|
||||
.previewDisplayName("Empty Files")
|
||||
}
|
||||
|
||||
private static func makeViewModel(timelineKind: TimelineKind = .media(.mediaFilesScreen),
|
||||
private static func makeViewModel(empty: Bool = false,
|
||||
screenMode: MediaEventsTimelineScreenMode) -> MediaEventsTimelineScreenViewModel {
|
||||
MediaEventsTimelineScreenViewModel(mediaTimelineViewModel: makeTimelineViewModel(timelineKind: timelineKind),
|
||||
filesTimelineViewModel: makeTimelineViewModel(timelineKind: timelineKind),
|
||||
MediaEventsTimelineScreenViewModel(mediaTimelineViewModel: makeTimelineViewModel(empty: empty),
|
||||
filesTimelineViewModel: makeTimelineViewModel(empty: empty),
|
||||
initialViewState: .init(bindings: .init(screenMode: screenMode)),
|
||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
||||
initialViewState: .init(hasReachedTimelineStart: true,
|
||||
bindings: .init(screenMode: screenMode)),
|
||||
userIndicatorController: UserIndicatorControllerMock())
|
||||
}
|
||||
|
||||
private static func makeTimelineViewModel(timelineKind: TimelineKind) -> TimelineViewModel {
|
||||
let timelineController = MockRoomTimelineController(timelineKind: timelineKind)
|
||||
private static func makeTimelineViewModel(empty: Bool) -> TimelineViewModel {
|
||||
let timelineController = if empty {
|
||||
MockRoomTimelineController.emptyMediaGallery
|
||||
} else {
|
||||
MockRoomTimelineController.mediaGallery
|
||||
}
|
||||
|
||||
return TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
|
||||
timelineController: timelineController,
|
||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
||||
|
||||
Reference in New Issue
Block a user