import APIClient
import Localization

public enum AudioUploadState: Equatable {
    case checkingStatus(UploadRequestStatus)
    case uploading(progress: Double)
    case completed(UploadRequestStatus)
    case error(String)

    var title: String {
        switch self {
        case .checkingStatus(let status): status.status.title
        case .uploading(let progress): L10n.FeatureCreateClip.uploading(progress.formatted(.percent))
        case .completed(let status): status.status.title
        case .error(let error): error
        }
    }

    var isComplete: Bool {
        guard case .completed = self else { return false }
        return true
    }

    var isUploading: Bool {
        guard case .uploading = self else { return false }
        return true
    }

    var progress: Double {
        switch self {
        case .uploading(let progress): progress
        case .checkingStatus, .completed: 1
        case .error: 1
        }
    }
}
