diff --git a/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift b/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift index e0ee3f54c..13ed8e3d2 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/Coordinator/PollHistoryCoordinator.swift @@ -43,11 +43,8 @@ final class PollHistoryCoordinator: Coordinator, Presentable { func start() { MXLog.debug("[PollHistoryCoordinator] did start.") - pollHistoryViewModel.completion = { [weak self] result in - switch result { - case .genericError: - self?.showErrorAlert() - } + pollHistoryViewModel.completion = { _ in + } } @@ -55,15 +52,3 @@ final class PollHistoryCoordinator: Coordinator, Presentable { pollHistoryHostingController } } - -private extension PollHistoryCoordinator { - func showErrorAlert() { - let alert = UIAlertController(title: VectorL10n.pollHistoryFetchingError, - message: nil, - preferredStyle: .alert) - - let cancelAction = UIAlertAction(title: VectorL10n.ok, style: .cancel) - alert.addAction(cancelAction) - pollHistoryHostingController.present(alert, animated: true, completion: nil) - } -} diff --git a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryModels.swift b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryModels.swift index 0b6213787..f342d50af 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryModels.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryModels.swift @@ -22,7 +22,7 @@ enum PollHistoryConstants { } enum PollHistoryViewModelResult: Equatable { - case genericError + } // MARK: View @@ -34,6 +34,7 @@ enum PollHistoryMode: CaseIterable { struct PollHistoryViewBindings { var mode: PollHistoryMode + var alertInfo: AlertInfo? } struct PollHistoryViewState: BindableState { diff --git a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryViewModel.swift b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryViewModel.swift index c73e2ea32..9dbffb7a8 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryViewModel.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/PollHistoryViewModel.swift @@ -71,7 +71,7 @@ private extension PollHistoryViewModel { break case .failure: polls = polls ?? [] - self.completion?(.genericError) + state.bindings.alertInfo = .init(id: true, title: VectorL10n.pollHistoryFetchingError) } updateViewState() diff --git a/RiotSwiftUI/Modules/Room/PollHistory/Test/Unit/PollHistoryViewModelTests.swift b/RiotSwiftUI/Modules/Room/PollHistory/Test/Unit/PollHistoryViewModelTests.swift index 95a6e7e72..efce641d4 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/Test/Unit/PollHistoryViewModelTests.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/Test/Unit/PollHistoryViewModelTests.swift @@ -1,4 +1,4 @@ -// +// // Copyright 2023 New Vector Ltd // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -104,18 +104,11 @@ final class PollHistoryViewModelTests: XCTestCase { } func testAfterFailureCompletionIsCalled() throws { - let expectation = expectation(description: #function) - pollHistoryService.nextBatchPublishers = [MockPollPublisher.failure] - viewModel.completion = { event in - XCTAssertEqual(event, .genericError) - expectation.fulfill() - } viewModel.process(viewAction: .viewAppeared) XCTAssertFalse(viewModel.state.isLoading) XCTAssertNotNil(viewModel.state.polls) - - wait(for: [expectation], timeout: 1.0) + XCTAssertNotNil(viewModel.state.bindings.alertInfo) } } diff --git a/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift b/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift index 43e1b28e8..703390ac3 100644 --- a/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift +++ b/RiotSwiftUI/Modules/Room/PollHistory/View/PollHistory.swift @@ -44,6 +44,9 @@ struct PollHistory: View { .onChange(of: viewModel.mode) { _ in viewModel.send(viewAction: .segmentDidChange) } + .alert(item: $viewModel.alertInfo) { + $0.alert + } } @ViewBuilder