mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Media gallery - part 1(#3588)
* Introduce a `MediaEventsTimelineFlowCoordinator` * Update SDK API and architecture * Add a feature flag, add translations * Move the media events timeline presentation under the room flow coordinator state machine * Rename `TimelineViewState.timelineViewState` of type `TimelineState` to `timelineState` * Enabled SwiftLint's `trailing_closure` rule and fix the warnings.
This commit is contained in:
@@ -400,7 +400,7 @@ struct TimelineItemBubbledStylerView_Previews: PreviewProvider, TestablePreview
|
||||
static var mockTimeline: some View {
|
||||
ScrollView {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
ForEach(viewModel.state.timelineViewState.itemViewStates) { viewState in
|
||||
ForEach(viewModel.state.timelineState.itemViewStates) { viewState in
|
||||
RoomTimelineItemView(viewState: viewState)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ struct TimelineItemStyler_Previews: PreviewProvider, TestablePreview {
|
||||
}()
|
||||
|
||||
static let sendingLast: TextRoomTimelineItem = {
|
||||
let id = viewModel.state.timelineViewState.uniqueIDs.last ?? .init(id: UUID().uuidString)
|
||||
let id = viewModel.state.timelineState.uniqueIDs.last ?? .init(id: UUID().uuidString)
|
||||
var result = TextRoomTimelineItem(id: .event(uniqueID: id, eventOrTransactionID: .eventId(eventId: UUID().uuidString)),
|
||||
timestamp: .mock,
|
||||
isOutgoing: true,
|
||||
@@ -99,7 +99,7 @@ struct TimelineItemStyler_Previews: PreviewProvider, TestablePreview {
|
||||
}()
|
||||
|
||||
static let sentLast: TextRoomTimelineItem = {
|
||||
let id = viewModel.state.timelineViewState.uniqueIDs.last ?? .init(id: UUID().uuidString)
|
||||
let id = viewModel.state.timelineState.uniqueIDs.last ?? .init(id: UUID().uuidString)
|
||||
let result = TextRoomTimelineItem(id: .event(uniqueID: id, eventOrTransactionID: .eventId(eventId: UUID().uuidString)),
|
||||
timestamp: .mock,
|
||||
isOutgoing: true,
|
||||
|
||||
@@ -14,7 +14,7 @@ struct TimelineItemStatusView: View {
|
||||
@EnvironmentObject private var context: TimelineViewModel.Context
|
||||
|
||||
private var isLastOutgoingMessage: Bool {
|
||||
timelineItem.isOutgoing && context.viewState.timelineViewState.uniqueIDs.last == timelineItem.id.uniqueID
|
||||
timelineItem.isOutgoing && context.viewState.timelineState.uniqueIDs.last == timelineItem.id.uniqueID
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
|
||||
@@ -16,7 +16,7 @@ struct TimelineView: UIViewControllerRepresentable {
|
||||
func makeUIViewController(context: Context) -> TimelineTableViewController {
|
||||
let tableViewController = TimelineTableViewController(coordinator: context.coordinator,
|
||||
isScrolledToBottom: $viewModelContext.isScrolledToBottom,
|
||||
scrollToBottomPublisher: viewModelContext.viewState.timelineViewState.scrollToBottomPublisher)
|
||||
scrollToBottomPublisher: viewModelContext.viewState.timelineState.scrollToBottomPublisher)
|
||||
// Needs to be dispatched on main asynchronously otherwise we get a runtime warning
|
||||
DispatchQueue.main.async {
|
||||
viewModelContext.send(viewAction: .setOpenURLAction(openURL))
|
||||
@@ -44,21 +44,21 @@ struct TimelineView: UIViewControllerRepresentable {
|
||||
|
||||
/// Updates the specified table view's properties from the current view state.
|
||||
func update(tableViewController: TimelineTableViewController) {
|
||||
if tableViewController.isSwitchingTimelines != context.viewState.timelineViewState.isSwitchingTimelines {
|
||||
if tableViewController.isSwitchingTimelines != context.viewState.timelineState.isSwitchingTimelines {
|
||||
// Must come before timelineItemsDictionary in order to disable animations.
|
||||
tableViewController.isSwitchingTimelines = context.viewState.timelineViewState.isSwitchingTimelines
|
||||
tableViewController.isSwitchingTimelines = context.viewState.timelineState.isSwitchingTimelines
|
||||
}
|
||||
if tableViewController.timelineItemsDictionary != context.viewState.timelineViewState.itemsDictionary {
|
||||
tableViewController.timelineItemsDictionary = context.viewState.timelineViewState.itemsDictionary
|
||||
if tableViewController.timelineItemsDictionary != context.viewState.timelineState.itemsDictionary {
|
||||
tableViewController.timelineItemsDictionary = context.viewState.timelineState.itemsDictionary
|
||||
}
|
||||
if tableViewController.paginationState != context.viewState.timelineViewState.paginationState {
|
||||
tableViewController.paginationState = context.viewState.timelineViewState.paginationState
|
||||
if tableViewController.paginationState != context.viewState.timelineState.paginationState {
|
||||
tableViewController.paginationState = context.viewState.timelineState.paginationState
|
||||
}
|
||||
if tableViewController.isLive != context.viewState.timelineViewState.isLive {
|
||||
tableViewController.isLive = context.viewState.timelineViewState.isLive
|
||||
if tableViewController.isLive != context.viewState.timelineState.isLive {
|
||||
tableViewController.isLive = context.viewState.timelineState.isLive
|
||||
}
|
||||
if tableViewController.focussedEvent != context.viewState.timelineViewState.focussedEvent {
|
||||
tableViewController.focussedEvent = context.viewState.timelineViewState.focussedEvent
|
||||
if tableViewController.focussedEvent != context.viewState.timelineState.focussedEvent {
|
||||
tableViewController.focussedEvent = context.viewState.timelineState.focussedEvent
|
||||
}
|
||||
if tableViewController.hideTimelineMedia != context.viewState.hideTimelineMedia {
|
||||
tableViewController.hideTimelineMedia = context.viewState.hideTimelineMedia
|
||||
|
||||
Reference in New Issue
Block a user