mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 23:03:27 +01:00
Adds ResultOperation.localizedFailure
Allows ResultOperations to provide default localized failures for errors that don’t have their own localized failure.
This commit is contained in:
@@ -13,6 +13,9 @@ class ResultOperation<ResultType>: Operation
|
||||
{
|
||||
var resultHandler: ((Result<ResultType, Error>) -> Void)?
|
||||
|
||||
// Should only be set by subclasses.
|
||||
var localizedFailure: String?
|
||||
|
||||
@available(*, unavailable)
|
||||
override func finish()
|
||||
{
|
||||
@@ -23,15 +26,21 @@ class ResultOperation<ResultType>: Operation
|
||||
{
|
||||
guard !self.isFinished else { return }
|
||||
|
||||
var result = result
|
||||
|
||||
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
|
||||
{
|
||||
self.resultHandler?(result)
|
||||
// Error does not have localizedFailure, so give it the Operation's failure (if one exists).
|
||||
let error = nsError.withLocalizedFailure(localizedFailure)
|
||||
result = .failure(error)
|
||||
}
|
||||
|
||||
self.resultHandler?(result)
|
||||
|
||||
super.finish()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user