mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 17:12:45 +02:00
added view poll in timeline button
This commit is contained in:
+4
-1
@@ -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
|
||||
}
|
||||
|
||||
+2
@@ -39,6 +39,8 @@ class PollHistoryDetailViewModel: PollHistoryDetailViewModelType, PollHistoryDet
|
||||
switch viewAction {
|
||||
case .dismiss:
|
||||
completion?(.dismiss)
|
||||
case .viewInTimeline:
|
||||
completion?(.viewInTimeline)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+22
-8
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user