mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-20 12:13:26 +01:00
Adds ResultOperation.localizedFailure
This commit is contained in:
@@ -13,6 +13,9 @@ class ResultOperation<ResultType>: Operation
|
|||||||
{
|
{
|
||||||
var resultHandler: ((Result<ResultType, Error>) -> Void)?
|
var resultHandler: ((Result<ResultType, Error>) -> Void)?
|
||||||
|
|
||||||
|
// Should only be set by subclasses
|
||||||
|
var localizedFailure: String?
|
||||||
|
|
||||||
@available(*, unavailable)
|
@available(*, unavailable)
|
||||||
override func finish()
|
override func finish()
|
||||||
{
|
{
|
||||||
@@ -23,14 +26,18 @@ class ResultOperation<ResultType>: Operation
|
|||||||
{
|
{
|
||||||
guard !self.isFinished else { return }
|
guard !self.isFinished else { return }
|
||||||
|
|
||||||
|
var result = result
|
||||||
|
|
||||||
if self.isCancelled
|
if self.isCancelled
|
||||||
{
|
{
|
||||||
self.resultHandler?(.failure(OperationError.cancelled))
|
result = .failure(OperationError.cancelled)
|
||||||
}
|
}
|
||||||
else
|
else if case .failure(let nsError as NSError) = result, let localizedFailure, nsError.localizedFailure == nil {
|
||||||
{
|
// Error doesn't have its own localizedFailure, so we give it the Operation's (if it exists)
|
||||||
self.resultHandler?(result)
|
let error = nsError.withLocalizedFailure(localizedFailure)
|
||||||
|
result = .failure(error)
|
||||||
}
|
}
|
||||||
|
self.resultHandler?(result)
|
||||||
|
|
||||||
super.finish()
|
super.finish()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user