From 96538f80e7e0335eadadd7e36a7462340a6753fd Mon Sep 17 00:00:00 2001 From: Flavio Alescio Date: Wed, 25 Jan 2023 10:27:21 +0100 Subject: [PATCH] added view poll in timeline button --- Riot/Assets/en.lproj/Vector.strings | 2 +- Riot/Generated/Strings.swift | 4 +++ .../Coordinator/PollHistoryCoordinator.swift | 4 +++ .../PollHistoryDetailCoordinator.swift | 5 +++- .../PollHistoryDetailModels.swift | 2 ++ .../PollHistoryDetailViewModel.swift | 2 ++ .../View/PollHistoryDetail.swift | 30 ++++++++++++++----- 7 files changed, 39 insertions(+), 10 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index e181a16c5..d0cff8767 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -2311,7 +2311,7 @@ Tap the + to start adding people."; "poll_history_no_past_poll_text" = "There are no past polls in this room"; "poll_history_no_active_poll_period_text" = "There are no active polls for the past %@ days. Load more polls to view polls for previous months"; "poll_history_no_past_poll_period_text" = "There are no past polls for the past %@ days. Load more polls to view polls for previous months"; - +"poll_history_detail_view_in_timeline" = "View poll in timeline"; // MARK: - Polls "poll_edit_form_create_poll" = "Create poll"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 4e7089027..456b9177f 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -4851,6 +4851,10 @@ public class VectorL10n: NSObject { public static var pollHistoryActiveSegmentTitle: String { return VectorL10n.tr("Vector", "poll_history_active_segment_title") } + /// View poll in timeline + public static var pollHistoryDetailViewInTimeline: String { + return VectorL10n.tr("Vector", "poll_history_detail_view_in_timeline") + } /// Displaying polls public static var pollHistoryLoadingText: String { return VectorL10n.tr("Vector", "poll_history_loading_text") diff --git a/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift b/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift index 2c3f2e13a..42ad84f54 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift @@ -69,6 +69,10 @@ final class PollHistoryCoordinator: NSObject, Coordinator, Presentable { case .dismiss: self.toPresentable().dismiss(animated: true) self.remove(childCoordinator: coordinator) + case .viewInTimeline: + self.toPresentable().dismiss(animated: true) + self.remove(childCoordinator: coordinator) + // TODO: go back in timeline } } diff --git a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/Coordinator/PollHistoryDetailCoordinator.swift b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/Coordinator/PollHistoryDetailCoordinator.swift index 2b68d31ae..5f98622a9 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/Coordinator/PollHistoryDetailCoordinator.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/Coordinator/PollHistoryDetailCoordinator.swift @@ -41,6 +41,7 @@ final class PollHistoryDetailCoordinator: Coordinator, Presentable { init(parameters: PollHistoryDetailCoordinatorParameters) throws { self.parameters = parameters let timelinePollCoordinator = try TimelinePollCoordinator(parameters: .init(session: parameters.session, room: parameters.room, pollEvent: parameters.event)) + let viewModel = PollHistoryDetailViewModel(pollHistoryDetails: parameters.pollHistoryDetails, timelineViewModel: timelinePollCoordinator.viewModel) let view = PollHistoryDetail(viewModel: viewModel.context) pollHistoryDetailViewModel = viewModel @@ -48,12 +49,14 @@ final class PollHistoryDetailCoordinator: Coordinator, Presentable { pollHistoryDetailHostingController = VectorHostingController(rootView: view) indicatorPresenter = UserIndicatorTypePresenter(presentingViewController: pollHistoryDetailHostingController) - + self.add(childCoordinator: timelinePollCoordinator) viewModel.completion = { [weak self] result in guard let self = self else { return } switch result { case .dismiss: self.completion?(.dismiss) + case .viewInTimeline: + self.completion?(.viewInTimeline) } } } diff --git a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailModels.swift b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailModels.swift index 7be630114..afee15af1 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailModels.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailModels.swift @@ -22,6 +22,7 @@ typealias PollHistoryDetailViewModelCallback = (PollHistoryDetailViewModelResult enum PollHistoryDetailViewModelResult { case dismiss + case viewInTimeline } // MARK: View model @@ -37,4 +38,5 @@ struct PollHistoryDetailViewState: BindableState { enum PollHistoryDetailViewAction { case dismiss + case viewInTimeline } diff --git a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailViewModel.swift b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailViewModel.swift index 3566cdf87..dfc5f14c7 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailViewModel.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/PollHistoryDetailViewModel.swift @@ -39,6 +39,8 @@ class PollHistoryDetailViewModel: PollHistoryDetailViewModelType, PollHistoryDet switch viewAction { case .dismiss: completion?(.dismiss) + case .viewInTimeline: + completion?(.viewInTimeline) } } diff --git a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/View/PollHistoryDetail.swift b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/View/PollHistoryDetail.swift index c50641c6c..982b4dcd7 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/View/PollHistoryDetail.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryDetail/View/PollHistoryDetail.swift @@ -47,21 +47,35 @@ struct PollHistoryDetail: View { } private var content: some View { let timelineViewModel = viewModel.viewState.timelineViewModel - return TimelinePollView(viewModel: timelineViewModel.context) - .navigationTitle(navigationTitle) - .navigationBarTitleDisplayMode(.inline) - .navigationBarBackButtonHidden(true) - .navigationBarItems(leading: btnBack) + return VStack { + TimelinePollView(viewModel: timelineViewModel.context) + .navigationTitle(navigationTitle) + .navigationBarTitleDisplayMode(.inline) + .navigationBarBackButtonHidden(true) + .navigationBarItems(leading: btnBack) + viewInTimeline + } } - private var btnBack : some View { Button(action: { - viewModel.send(viewAction: .dismiss) + private var btnBack : some View { + Button(action: { + viewModel.send(viewAction: .dismiss) }) { - HStack { Image(systemName: "xmark") //"chevron.left" .aspectRatio(contentMode: .fit) .foregroundColor(theme.colors.accent) + } + } + + private var viewInTimeline: some View { + HStack { + Button { + viewModel.send(viewAction: .viewInTimeline) + } label: { + Text(VectorL10n.pollHistoryDetailViewInTimeline) } + .accentColor(theme.colors.accent) + Spacer() } }