import Foundation

enum CreateCameraRecordButtonState {
    case inactiveLoading
    case disabled
    case readyToRecord
    case recording(String)

    var opacity: CGFloat {
        switch self {
        case .inactiveLoading,
             .disabled:
            return 1.0 / 3.0
        case .readyToRecord:
            return 1.0
        case .recording:
            return 0.9
        }
    }

    var size: CGFloat {
        switch self {
        case .inactiveLoading:
            return 64.0
        case .disabled:
            return 64.0
        case .readyToRecord:
            return 82.0
        case .recording:
            return 95.0
        }
    }

    var isShowingAncillaryButtons: Bool {
        switch self {
        case .readyToRecord, .inactiveLoading:
            return true
        case .disabled, .recording:
            return false
        }
    }

    var isShowingRecordIndicator: Bool {
        switch self {
        case .disabled,
             .inactiveLoading,
             .readyToRecord:
            return false
        case .recording:
            return true
        }
    }

    var recordingFormattedTime: String {
        guard case .recording(let string) = self else { return "" }
        return string
    }
}
