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
58 lines
1.0 KiB
//
|
|
// PromiseState.swift
|
|
// then
|
|
//
|
|
// Created by Sacha Durand Saint Omer on 08/08/16.
|
|
// Copyright © 2016 s4cha. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public enum PromiseState<T> {
|
|
case dormant
|
|
case pending(progress: Float)
|
|
case fulfilled(value: T)
|
|
case rejected(error: Error)
|
|
}
|
|
|
|
extension PromiseState {
|
|
|
|
var value: T? {
|
|
if case let .fulfilled(value) = self {
|
|
return value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var error: Error? {
|
|
if case let .rejected(error) = self {
|
|
return error
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var isDormant: Bool {
|
|
if case .dormant = self {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
var isPendingOrDormant: Bool {
|
|
return !isFulfilled && !isRejected
|
|
}
|
|
|
|
var isFulfilled: Bool {
|
|
if case .fulfilled = self {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
var isRejected: Bool {
|
|
if case .rejected = self {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
}
|