import APIClient
import Foundation

struct ShareAssetGenerationMap {
    static let defaultValue = ShareAssetGenerationMap()

    var generationMap: [String: ShareAssetGenerationItem] = [:]

    func shouldContinuePolling(_ assetID: String) -> Bool {
        if let generation = generationMap[assetID] {
            return generation.status == .inProgress
        } else {
            return false
        }
    }

    mutating func progressItem(_ assetID: String) -> ShareAssetGenerationItem? {
        return generationMap[assetID]
    }

    mutating func addGenerationProgressItem(_ item: ShareAssetGenerationItem) {
        generationMap[item.id] = item
    }

    mutating func udpateGenerationProgressItem(_ assetID: String, statusSchema: ShareAssetStatusSchema) {
        let status = ShareAssetGenerationItem.Status(str: statusSchema.renderStatus)
        if var generation = generationMap[assetID] {
            generation.status = status
            generation.assetURL = statusSchema.assetUrl
            generationMap[assetID] = generation
        }
    }
}
