added real event

This commit is contained in:
Flavio Alescio
2023-01-23 17:36:11 +01:00
parent 2708a932ee
commit 6cbc6df94f
6 changed files with 31 additions and 26 deletions
@@ -57,20 +57,30 @@ final class PollHistoryCoordinator: NSObject, Coordinator, Presentable {
}
func showPollDetail(_ poll: TimelinePollDetails) {
let detailCoordinator: PollHistoryDetailCoordinator = .init(parameters: .init(pollHistoryDetails: MockPollHistoryDetailScreenState.openUndisclosed.poll, session: parameters.session, room: parameters.room))
detailCoordinator.toPresentable().presentationController?.delegate = self
detailCoordinator.completion = { [weak self, weak detailCoordinator] result in
guard let self = self, let coordinator = detailCoordinator else { return }
switch result {
case .dismiss:
self.toPresentable().dismiss(animated: true)
self.remove(childCoordinator: coordinator)
parameters.session.event(withEventId: poll.id, inRoom: parameters.room.roomId) { [weak self] response in
guard let self else { return }
if let event = response.value,
let detailCoordinator: PollHistoryDetailCoordinator = try? .init(parameters: .init(pollHistoryDetails: MockPollHistoryDetailScreenState.openUndisclosed.poll, event: event, session: self.parameters.session, room: self.parameters.room)) {
detailCoordinator.toPresentable().presentationController?.delegate = self
detailCoordinator.completion = { [weak self, weak detailCoordinator] result in
guard let self = self, let coordinator = detailCoordinator else { return }
switch result {
case .dismiss:
self.toPresentable().dismiss(animated: true)
self.remove(childCoordinator: coordinator)
}
}
self.add(childCoordinator: detailCoordinator)
detailCoordinator.start()
self.toPresentable().present(detailCoordinator.toPresentable(), animated: true)
} else {
// TODO: manage error
}
}
add(childCoordinator: detailCoordinator)
detailCoordinator.start()
toPresentable().present(detailCoordinator.toPresentable(), animated: true)
}
func toPresentable() -> UIViewController {
@@ -21,6 +21,7 @@ import MatrixSDK
struct PollHistoryDetailCoordinatorParameters {
let pollHistoryDetails: TimelinePollDetails
let event: MXEvent
let session: MXSession
let room: MXRoom
}
@@ -37,19 +38,13 @@ final class PollHistoryDetailCoordinator: Coordinator, Presentable {
var childCoordinators: [Coordinator] = []
var completion: ((PollHistoryDetailViewModelResult) -> Void)?
init(parameters: PollHistoryDetailCoordinatorParameters) {
init(parameters: PollHistoryDetailCoordinatorParameters) throws {
self.parameters = parameters
// let event: MXEvent = .init()
// do {
// let timelinePollCoordinator = try TimelinePollCoordinator(parameters: .init(session: parameters.session, room: parameters.room, pollEvent: event))
// } catch {
// MXLog.debug("[PollHistoryDetailCoordinator] initKeys: Failed to init TimelinePollCoordinator with event: \(error.localizedDescription)")
// }
let viewModel = PollHistoryDetailViewModel(pollHistoryDetails: parameters.pollHistoryDetails)
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
pollHistoryDetailHostingController = VectorHostingController(rootView: view)
indicatorPresenter = UserIndicatorTypePresenter(presentingViewController: pollHistoryDetailHostingController)
@@ -49,7 +49,7 @@ enum MockPollHistoryDetailScreenState: MockScreenState, CaseIterable {
var screenView: ([Any], AnyView) {
let viewModel = PollHistoryDetailViewModel(pollHistoryDetails: poll)
let viewModel = PollHistoryDetailViewModel(pollHistoryDetails: poll, timelineViewModel: TimelinePollViewModel(timelinePollDetails: poll))
return ([viewModel], AnyView(PollHistoryDetail(viewModel: viewModel.context)))
}
@@ -32,7 +32,7 @@ enum PollHistoryDetailViewModelResult {
struct PollHistoryDetailViewState: BindableState {
var poll: TimelinePollDetails
var timelineViewModel: TimelinePollViewModel
var timelineViewModel: TimelinePollViewModelProtocol
}
enum PollHistoryDetailViewAction {
@@ -29,8 +29,8 @@ class PollHistoryDetailViewModel: PollHistoryDetailViewModelType, PollHistoryDet
// MARK: - Setup
init(pollHistoryDetails: TimelinePollDetails) {
super.init(initialViewState: PollHistoryDetailViewState(poll: pollHistoryDetails, timelineViewModel: TimelinePollViewModel(timelinePollDetails: pollHistoryDetails)))
init(pollHistoryDetails: TimelinePollDetails, timelineViewModel: TimelinePollViewModelProtocol) {
super.init(initialViewState: PollHistoryDetailViewState(poll: pollHistoryDetails, timelineViewModel: timelineViewModel))
}
// MARK: - Public