Rename the RoomScreen's roomContext to plain context
This commit is contained in:
committed by
Stefan Ceriu
parent
84478c8251
commit
d0ab8c9dff
@@ -219,7 +219,7 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
||||
wysiwygViewModel: wysiwygViewModel,
|
||||
keyCommands: composerViewModel.keyCommands)
|
||||
|
||||
return AnyView(RoomScreen(roomContext: roomViewModel.context,
|
||||
return AnyView(RoomScreen(context: roomViewModel.context,
|
||||
timelineContext: timelineViewModel.context,
|
||||
composerToolbar: composerToolbar)
|
||||
.onDisappear { [weak self] in
|
||||
|
||||
@@ -10,16 +10,16 @@ import SwiftUI
|
||||
import WysiwygComposer
|
||||
|
||||
struct RoomScreen: View {
|
||||
@ObservedObject private var roomContext: RoomScreenViewModelType.Context
|
||||
@ObservedObject private var context: RoomScreenViewModelType.Context
|
||||
@ObservedObject private var timelineContext: TimelineViewModelType.Context
|
||||
@ObservedObject private var composerToolbarContext: ComposerToolbarViewModelType.Context
|
||||
@State private var dragOver = false
|
||||
let composerToolbar: ComposerToolbar
|
||||
|
||||
init(roomContext: RoomScreenViewModelType.Context,
|
||||
init(context: RoomScreenViewModelType.Context,
|
||||
timelineContext: TimelineViewModelType.Context,
|
||||
composerToolbar: ComposerToolbar) {
|
||||
self.roomContext = roomContext
|
||||
self.context = context
|
||||
self.timelineContext = timelineContext
|
||||
self.composerToolbar = composerToolbar
|
||||
composerToolbarContext = composerToolbar.context
|
||||
@@ -40,9 +40,9 @@ struct RoomScreen: View {
|
||||
}
|
||||
.safeAreaInset(edge: .bottom, spacing: 0) {
|
||||
VStack(spacing: 0) {
|
||||
RoomScreenFooterView(details: roomContext.viewState.footerDetails,
|
||||
mediaProvider: roomContext.mediaProvider) { action in
|
||||
roomContext.send(viewAction: .footerViewAction(action))
|
||||
RoomScreenFooterView(details: context.viewState.footerDetails,
|
||||
mediaProvider: context.mediaProvider) { action in
|
||||
context.send(viewAction: .footerViewAction(action))
|
||||
}
|
||||
|
||||
composer
|
||||
@@ -68,7 +68,7 @@ struct RoomScreen: View {
|
||||
.toolbar { toolbar }
|
||||
.toolbarBackground(.visible, for: .navigationBar) // Fix the toolbar's background.
|
||||
.overlay { loadingIndicator }
|
||||
.timelineMediaPreview(viewModel: $roomContext.mediaPreviewViewModel)
|
||||
.timelineMediaPreview(viewModel: $context.mediaPreviewViewModel)
|
||||
.track(screen: .Room)
|
||||
.onDrop(of: ["public.item", "public.file-url"], isTargeted: $dragOver) { providers -> Bool in
|
||||
guard let provider = providers.first,
|
||||
@@ -85,42 +85,42 @@ struct RoomScreen: View {
|
||||
@ViewBuilder
|
||||
private var pinnedItemsBanner: some View {
|
||||
Group {
|
||||
if roomContext.viewState.shouldShowPinnedEventsBanner {
|
||||
PinnedItemsBannerView(state: roomContext.viewState.pinnedEventsBannerState,
|
||||
onMainButtonTap: { roomContext.send(viewAction: .tappedPinnedEventsBanner) },
|
||||
onViewAllButtonTap: { roomContext.send(viewAction: .viewAllPins) })
|
||||
if context.viewState.shouldShowPinnedEventsBanner {
|
||||
PinnedItemsBannerView(state: context.viewState.pinnedEventsBannerState,
|
||||
onMainButtonTap: { context.send(viewAction: .tappedPinnedEventsBanner) },
|
||||
onViewAllButtonTap: { context.send(viewAction: .viewAllPins) })
|
||||
.transition(.move(edge: .top))
|
||||
}
|
||||
}
|
||||
.animation(.elementDefault, value: roomContext.viewState.shouldShowPinnedEventsBanner)
|
||||
.animation(.elementDefault, value: context.viewState.shouldShowPinnedEventsBanner)
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
private var knockRequestsBanner: some View {
|
||||
Group {
|
||||
if roomContext.viewState.shouldSeeKnockRequests {
|
||||
KnockRequestsBannerView(requests: roomContext.viewState.displayedKnockRequests,
|
||||
if context.viewState.shouldSeeKnockRequests {
|
||||
KnockRequestsBannerView(requests: context.viewState.displayedKnockRequests,
|
||||
onDismiss: dismissKnockRequestsBanner,
|
||||
onAccept: roomContext.viewState.canAcceptKnocks ? acceptKnockRequest : nil,
|
||||
onAccept: context.viewState.canAcceptKnocks ? acceptKnockRequest : nil,
|
||||
onViewAll: onViewAllKnockRequests,
|
||||
mediaProvider: roomContext.mediaProvider)
|
||||
mediaProvider: context.mediaProvider)
|
||||
.padding(.top, 16)
|
||||
.transition(.move(edge: .top))
|
||||
}
|
||||
}
|
||||
.animation(.elementDefault, value: roomContext.viewState.shouldSeeKnockRequests)
|
||||
.animation(.elementDefault, value: context.viewState.shouldSeeKnockRequests)
|
||||
}
|
||||
|
||||
private func dismissKnockRequestsBanner() {
|
||||
roomContext.send(viewAction: .dismissKnockRequests)
|
||||
context.send(viewAction: .dismissKnockRequests)
|
||||
}
|
||||
|
||||
private func acceptKnockRequest(eventID: String) {
|
||||
roomContext.send(viewAction: .acceptKnock(eventID: eventID))
|
||||
context.send(viewAction: .acceptKnock(eventID: eventID))
|
||||
}
|
||||
|
||||
private func onViewAllKnockRequests() {
|
||||
roomContext.send(viewAction: .viewKnockRequests)
|
||||
context.send(viewAction: .viewKnockRequests)
|
||||
}
|
||||
|
||||
private var scrollToBottomButton: some View {
|
||||
@@ -151,9 +151,9 @@ struct RoomScreen: View {
|
||||
|
||||
@ViewBuilder
|
||||
private var composer: some View {
|
||||
if roomContext.viewState.hasSuccessor {
|
||||
if context.viewState.hasSuccessor {
|
||||
tombstonedDialogue
|
||||
} else if roomContext.viewState.canSendMessage {
|
||||
} else if context.viewState.canSendMessage {
|
||||
composerToolbar
|
||||
} else {
|
||||
Text(L10n.screenRoomTimelineNoPermissionToPost)
|
||||
@@ -171,7 +171,7 @@ struct RoomScreen: View {
|
||||
.foregroundStyle(.compound.textPrimary)
|
||||
|
||||
Button {
|
||||
roomContext.send(viewAction: .displaySuccessorRoom)
|
||||
context.send(viewAction: .displaySuccessorRoom)
|
||||
} label: {
|
||||
Text(L10n.screenRoomTimelineTombstonedRoomAction)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -203,22 +203,22 @@ struct RoomScreen: View {
|
||||
// .principal + .primaryAction works better than .navigation leading + trailing
|
||||
// as the latter disables interaction in the action button for rooms with long names
|
||||
ToolbarItem(placement: .principal) {
|
||||
RoomHeaderView(roomName: roomContext.viewState.roomTitle,
|
||||
roomAvatar: roomContext.viewState.roomAvatar,
|
||||
dmRecipientVerificationState: roomContext.viewState.dmRecipientVerificationState,
|
||||
mediaProvider: roomContext.mediaProvider)
|
||||
RoomHeaderView(roomName: context.viewState.roomTitle,
|
||||
roomAvatar: context.viewState.roomAvatar,
|
||||
dmRecipientVerificationState: context.viewState.dmRecipientVerificationState,
|
||||
mediaProvider: context.mediaProvider)
|
||||
// Using a button stops it from getting truncated in the navigation bar
|
||||
.contentShape(.rect)
|
||||
.onTapGesture {
|
||||
roomContext.send(viewAction: .displayRoomDetails)
|
||||
context.send(viewAction: .displayRoomDetails)
|
||||
}
|
||||
}
|
||||
|
||||
if !ProcessInfo.processInfo.isiOSAppOnMac {
|
||||
ToolbarItem(placement: .primaryAction) {
|
||||
if roomContext.viewState.shouldShowCallButton {
|
||||
if context.viewState.shouldShowCallButton {
|
||||
callButton
|
||||
.disabled(!roomContext.viewState.canJoinCall)
|
||||
.disabled(!context.viewState.canJoinCall)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -226,9 +226,9 @@ struct RoomScreen: View {
|
||||
|
||||
@ViewBuilder
|
||||
private var callButton: some View {
|
||||
if roomContext.viewState.hasOngoingCall {
|
||||
if context.viewState.hasOngoingCall {
|
||||
Button {
|
||||
roomContext.send(viewAction: .displayCall)
|
||||
context.send(viewAction: .displayCall)
|
||||
} label: {
|
||||
Label(L10n.actionJoin, icon: \.videoCallSolid)
|
||||
.labelStyle(.titleAndIcon)
|
||||
@@ -238,7 +238,7 @@ struct RoomScreen: View {
|
||||
.accessibilityIdentifier(A11yIdentifiers.roomScreen.joinCall)
|
||||
} else {
|
||||
Button {
|
||||
roomContext.send(viewAction: .displayCall)
|
||||
context.send(viewAction: .displayCall)
|
||||
} label: {
|
||||
CompoundIcon(\.videoCallSolid)
|
||||
}
|
||||
@@ -261,14 +261,14 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview {
|
||||
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
RoomScreen(roomContext: viewModels.room.context,
|
||||
RoomScreen(context: viewModels.room.context,
|
||||
timelineContext: viewModels.timeline.context,
|
||||
composerToolbar: ComposerToolbar.mock())
|
||||
}
|
||||
.previewDisplayName("Normal")
|
||||
|
||||
NavigationStack {
|
||||
RoomScreen(roomContext: readOnlyViewModels.room.context,
|
||||
RoomScreen(context: readOnlyViewModels.room.context,
|
||||
timelineContext: readOnlyViewModels.timeline.context,
|
||||
composerToolbar: ComposerToolbar.mock())
|
||||
}
|
||||
@@ -276,8 +276,8 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview {
|
||||
.snapshotPreferences(expect: readOnlyViewModels.room.context.$viewState.map { !$0.canSendMessage })
|
||||
|
||||
NavigationStack {
|
||||
RoomScreen(roomViewModel: tombstonedViewModels.room,
|
||||
timelineViewModel: tombstonedViewModels.timeline,
|
||||
RoomScreen(context: tombstonedViewModels.room.context,
|
||||
timelineContext: tombstonedViewModels.timeline.context,
|
||||
composerToolbar: ComposerToolbar.mock())
|
||||
}
|
||||
.previewDisplayName("Tombstoned")
|
||||
|
||||
@@ -103,7 +103,7 @@ struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
|
||||
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
RoomScreen(roomContext: roomViewModel.context,
|
||||
RoomScreen(context: roomViewModel.context,
|
||||
timelineContext: timelineViewModel.context,
|
||||
composerToolbar: ComposerToolbar.mock())
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ struct TimelineView_Previews: PreviewProvider, TestablePreview {
|
||||
|
||||
static var previews: some View {
|
||||
NavigationStack {
|
||||
RoomScreen(roomContext: roomViewModel.context,
|
||||
RoomScreen(context: roomViewModel.context,
|
||||
timelineContext: timelineViewModel.context,
|
||||
composerToolbar: ComposerToolbar.mock())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user