MinimedPumpManagerError.swift 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // MinimedPumpManagerError.swift
  3. // Loop
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import Foundation
  8. public enum MinimedPumpManagerError: Error {
  9. case noRileyLink
  10. case bolusInProgress
  11. case pumpSuspended
  12. case insulinTypeNotConfigured
  13. case noDate // TODO: This is less of an error and more of a precondition/assertion state
  14. case tuneFailed(LocalizedError)
  15. case commsError(LocalizedError)
  16. case storageFailure
  17. }
  18. extension MinimedPumpManagerError: LocalizedError {
  19. public var errorDescription: String? {
  20. switch self {
  21. case .noRileyLink:
  22. return LocalizedString("No RileyLink Connected", comment: "Error description when no rileylink connected")
  23. case .bolusInProgress:
  24. return LocalizedString("Bolus in Progress", comment: "Error description when failure due to bolus in progress")
  25. case .pumpSuspended:
  26. return LocalizedString("Pump is Suspended", comment: "Error description when failure due to pump suspended")
  27. case .insulinTypeNotConfigured:
  28. return LocalizedString("Insulin Type is not configured", comment: "Error description for MinimedPumpManagerError.insulinTypeNotConfigured")
  29. case .noDate:
  30. return nil
  31. case .tuneFailed(let error):
  32. return [LocalizedString("RileyLink radio tune failed", comment: "Error description for tune failure"), error.errorDescription].compactMap({ $0 }).joined(separator: ": ")
  33. case .commsError(let error):
  34. return error.errorDescription
  35. case .storageFailure:
  36. return LocalizedString("Unable to store pump data", comment: "Error description when storage fails")
  37. }
  38. }
  39. public var failureReason: String? {
  40. switch self {
  41. case .tuneFailed(let error):
  42. return error.failureReason
  43. default:
  44. return nil
  45. }
  46. }
  47. public var recoverySuggestion: String? {
  48. switch self {
  49. case .noRileyLink:
  50. return LocalizedString("Make sure your RileyLink is nearby and powered on", comment: "Recovery suggestion")
  51. case .insulinTypeNotConfigured:
  52. return LocalizedString("Go to pump settings and select insulin type", comment: "Recovery suggestion for MinimedPumpManagerError.insulinTypeNotConfigured")
  53. case .tuneFailed(let error):
  54. return error.recoverySuggestion
  55. default:
  56. return nil
  57. }
  58. }
  59. }