You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.0 KiB

  1. //
  2. // PromiseState.swift
  3. // then
  4. //
  5. // Created by Sacha Durand Saint Omer on 08/08/16.
  6. // Copyright © 2016 s4cha. All rights reserved.
  7. //
  8. import Foundation
  9. public enum PromiseState<T> {
  10. case dormant
  11. case pending(progress: Float)
  12. case fulfilled(value: T)
  13. case rejected(error: Error)
  14. }
  15. extension PromiseState {
  16. var value: T? {
  17. if case let .fulfilled(value) = self {
  18. return value
  19. }
  20. return nil
  21. }
  22. var error: Error? {
  23. if case let .rejected(error) = self {
  24. return error
  25. }
  26. return nil
  27. }
  28. var isDormant: Bool {
  29. if case .dormant = self {
  30. return true
  31. }
  32. return false
  33. }
  34. var isPendingOrDormant: Bool {
  35. return !isFulfilled && !isRejected
  36. }
  37. var isFulfilled: Bool {
  38. if case .fulfilled = self {
  39. return true
  40. }
  41. return false
  42. }
  43. var isRejected: Bool {
  44. if case .rejected = self {
  45. return true
  46. }
  47. return false
  48. }
  49. }