added view poll in timeline button

This commit is contained in:
Flavio Alescio
2023-01-25 10:27:21 +01:00
parent f509a1a172
commit 05caf71d5b
7 changed files with 39 additions and 10 deletions
@@ -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)
}
}
}
@@ -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
}
@@ -39,6 +39,8 @@ class PollHistoryDetailViewModel: PollHistoryDetailViewModelType, PollHistoryDet
switch viewAction {
case .dismiss:
completion?(.dismiss)
case .viewInTimeline:
completion?(.viewInTimeline)
}
}
@@ -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()
}
}