mobile-ios/CovidSafe/Feedback/Sources/SendFeedbackAction.swift

47 lines
1.3 KiB
Swift
Raw Permalink Normal View History

2020-05-08 07:49:14 +00:00
// Copyright © 2020 Australian Government All rights reserved.
import UIKit
open class SendFeedbackAction: AsyncAction {
let issue: Issue
let screenshotImageOrNil: UIImage?
let onComplete: (Outcome<Void>) -> Void
var getTargetAction: GetJMCTargeAction!
var postFeedbackAction: HTTPPostFeedbackAction!
public init(issue: Issue, screenshotImageOrNil: UIImage? = nil, onComplete: @escaping (Outcome<Void>) -> Void) {
self.issue = issue
self.screenshotImageOrNil = screenshotImageOrNil
self.onComplete = onComplete
super.init()
}
override open func run() {
getTargetAction = GetJMCTargeAction { outcome in
switch outcome {
case .success(let JMCTarget):
self.postFeedbackToTarget(JMCTarget)
case .error(let error):
self.finishedExecutingOperationWithOutcome(.error(error))
case .cancelled:
break
}
}
getTargetAction.start()
}
open func postFeedbackToTarget(_ target: JMCTarget) {
postFeedbackAction = HTTPPostFeedbackAction(issue: issue, screenshotImageOrNil: screenshotImageOrNil, target: target) { outcome in
self.finishedExecutingOperationWithOutcome(outcome)
}
postFeedbackAction.start()
}
func finishedExecutingOperationWithOutcome(_ outcome: Outcome<Void>) {
finishedExecutingOperation()
onComplete(outcome)
}
}