mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Added a progress tracker to the bug report view (#513)
* created a progress tracker class and passed it in the user notification to be observed by the progress view * improved the publishing by dispatching it on RunLoop.main * bug report struct created and progress tracker class moved into the Other folder * some swiftlint adjustments * fixed tests * fixed another test BugReportServiceTests * changelog 495 - change * added a mock preview * fixing some linting suggestions * no need to use KVO, achieve the same result using a publisher * some refactors to address PR comments * some code improvements * fixed the issue that prevented the avatar of the room to be displayed in the mocks, and updated the tests * Revert "fixed the issue that prevented the avatar of the room to be displayed in the mocks, and updated the tests" This reverts commit 113d6091d91a3aac1f9a59ff6c5e07610ed59859.
This commit is contained in:
@@ -51,8 +51,8 @@ final class BugReportCoordinator: CoordinatorProtocol {
|
||||
switch result {
|
||||
case .cancel:
|
||||
self.completion?(.cancel)
|
||||
case .submitStarted:
|
||||
self.startLoading()
|
||||
case let .submitStarted(progressTracker):
|
||||
self.startLoading(progressPublisher: progressTracker)
|
||||
case .submitFinished:
|
||||
self.stopLoading()
|
||||
self.completion?(.finish)
|
||||
@@ -75,11 +75,14 @@ final class BugReportCoordinator: CoordinatorProtocol {
|
||||
|
||||
static let loadingIndicatorIdentifier = "BugReportLoading"
|
||||
|
||||
private func startLoading(label: String = ElementL10n.loading) {
|
||||
parameters.userNotificationController?.submitNotification(UserNotification(id: Self.loadingIndicatorIdentifier,
|
||||
type: .modal,
|
||||
title: label,
|
||||
persistent: true))
|
||||
private func startLoading(label: String = ElementL10n.loading, progressPublisher: ProgressPublisher) {
|
||||
parameters.userNotificationController?.submitNotification(
|
||||
UserNotification(id: Self.loadingIndicatorIdentifier,
|
||||
type: .modal,
|
||||
title: label,
|
||||
persistent: true,
|
||||
progressPublisher: progressPublisher)
|
||||
)
|
||||
}
|
||||
|
||||
private func stopLoading() {
|
||||
|
||||
@@ -19,7 +19,7 @@ import UIKit
|
||||
|
||||
enum BugReportViewModelAction {
|
||||
case cancel
|
||||
case submitStarted
|
||||
case submitStarted(progressTracker: ProgressTracker)
|
||||
case submitFinished
|
||||
case submitFailed(error: Error)
|
||||
}
|
||||
|
||||
@@ -49,13 +49,16 @@ class BugReportViewModel: BugReportViewModelType, BugReportViewModelProtocol {
|
||||
// MARK: Private
|
||||
|
||||
private func submitBugReport() async {
|
||||
callback?(.submitStarted)
|
||||
let progressTracker = ProgressTracker()
|
||||
callback?(.submitStarted(progressTracker: progressTracker))
|
||||
do {
|
||||
let result = try await bugReportService.submitBugReport(text: context.reportText,
|
||||
includeLogs: context.sendingLogsEnabled,
|
||||
includeCrashLog: true,
|
||||
githubLabels: [],
|
||||
files: [])
|
||||
let bugReport = BugReport(text: context.reportText,
|
||||
includeLogs: context.sendingLogsEnabled,
|
||||
includeCrashLog: true,
|
||||
githubLabels: [],
|
||||
files: [])
|
||||
let result = try await bugReportService.submitBugReport(bugReport,
|
||||
progressListener: progressTracker)
|
||||
MXLog.info("SubmitBugReport succeeded, result: \(result.reportUrl)")
|
||||
callback?(.submitFinished)
|
||||
} catch {
|
||||
|
||||
Reference in New Issue
Block a user