@@ -24,20 +24,27 @@ public enum WordPressAPIError<EndpointError>: Error where EndpointError: Localiz
2424extension WordPressAPIError : LocalizedError {
2525
2626 public var errorDescription : String ? {
27+ // Considering `WordPressAPIError` is the error that's surfaced from this library to the apps, its instanes
28+ // may be displayed on UI directly. To prevent Swift's default error message (i.e. "This operation can't be
29+ // completed. <SwiftTypeName> (code=...)") from being displayed, we need to make sure this implementation
30+ // always returns a non-nil value.
31+ let localizedErrorMessage : String
2732 switch self {
2833 case . requestEncodingFailure, . unparsableResponse:
2934 // These are usually programming errors.
30- return Self . unknownErrorMessage
35+ localizedErrorMessage = Self . unknownErrorMessage
3136 case let . endpointError( error) :
32- return error. errorDescription ?? Self . unknownErrorMessage
37+ localizedErrorMessage = error. errorDescription ?? Self . unknownErrorMessage
3338 case let . connection( error) :
34- return error. localizedDescription
39+ localizedErrorMessage = error. localizedDescription
3540 case let . unknown( underlyingError) :
3641 if let msg = ( underlyingError as? LocalizedError ) ? . errorDescription {
37- return msg
42+ localizedErrorMessage = msg
43+ } else {
44+ localizedErrorMessage = Self . unknownErrorMessage
3845 }
39- return Self . unknownErrorMessage
4046 }
47+ return localizedErrorMessage
4148 }
4249
4350}
0 commit comments