Enhanced error handling.
This commit is contained in:
parent
2fbbdce46c
commit
fce8070ae7
|
@ -15,6 +15,7 @@ import os.log
|
||||||
import Secrets
|
import Secrets
|
||||||
|
|
||||||
public enum ReaderAPIAccountDelegateError: String, Error {
|
public enum ReaderAPIAccountDelegateError: String, Error {
|
||||||
|
case unknown = "An unknown error occurred."
|
||||||
case invalidParameter = "There was an invalid parameter passed."
|
case invalidParameter = "There was an invalid parameter passed."
|
||||||
case invalidResponse = "There was an invalid response from the server."
|
case invalidResponse = "There was an invalid response from the server."
|
||||||
}
|
}
|
||||||
|
@ -182,6 +183,8 @@ final class ReaderAPIAccountDelegate: AccountDelegate {
|
||||||
os_log(.debug, log: log, "Refreshing article statuses...")
|
os_log(.debug, log: log, "Refreshing article statuses...")
|
||||||
|
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
|
var errorOccurred = false
|
||||||
|
|
||||||
group.enter()
|
group.enter()
|
||||||
caller.retrieveItemIDs(type: .unread) { result in
|
caller.retrieveItemIDs(type: .unread) { result in
|
||||||
switch result {
|
switch result {
|
||||||
|
@ -190,6 +193,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate {
|
||||||
group.leave()
|
group.leave()
|
||||||
}
|
}
|
||||||
case .failure(let error):
|
case .failure(let error):
|
||||||
|
errorOccurred = true
|
||||||
os_log(.info, log: self.log, "Retrieving unread entries failed: %@.", error.localizedDescription)
|
os_log(.info, log: self.log, "Retrieving unread entries failed: %@.", error.localizedDescription)
|
||||||
group.leave()
|
group.leave()
|
||||||
}
|
}
|
||||||
|
@ -204,6 +208,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate {
|
||||||
group.leave()
|
group.leave()
|
||||||
}
|
}
|
||||||
case .failure(let error):
|
case .failure(let error):
|
||||||
|
errorOccurred = true
|
||||||
os_log(.info, log: self.log, "Retrieving starred entries failed: %@.", error.localizedDescription)
|
os_log(.info, log: self.log, "Retrieving starred entries failed: %@.", error.localizedDescription)
|
||||||
group.leave()
|
group.leave()
|
||||||
}
|
}
|
||||||
|
@ -212,7 +217,11 @@ final class ReaderAPIAccountDelegate: AccountDelegate {
|
||||||
|
|
||||||
group.notify(queue: DispatchQueue.main) {
|
group.notify(queue: DispatchQueue.main) {
|
||||||
os_log(.debug, log: self.log, "Done refreshing article statuses.")
|
os_log(.debug, log: self.log, "Done refreshing article statuses.")
|
||||||
completion(.success(()))
|
if errorOccurred {
|
||||||
|
completion(.failure(ReaderAPIAccountDelegateError.unknown))
|
||||||
|
} else {
|
||||||
|
completion(.success(()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue