mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 15:22:39 +00:00
added view poll in timeline button
This commit is contained in:
parent
4567e5476d
commit
96538f80e7
7 changed files with 39 additions and 10 deletions
|
@ -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";
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue