//
//  RCTConvert+CircleStory.swift
//  react-native-firework-sdk
//

import Foundation

extension CircleStorySourceType {
    static var sourceTypeMapper: [String: CircleStorySourceType] {
        [
            "discover": .discover,
            "channel": .channel,
            "playlist": .playlist,
            "playlistGroup": .playlistGroup,
            "dynamicContent": .dynamicContent,
            "hashtagPlaylist": .hashtagPlaylist,
            "sku": .sku,
            "singleContent": .singleContent
        ]
    }
}

@objc
extension RCTConvert {
    public static func circleStorySourceType(_ type: String?) -> CircleStorySourceType {
        guard let rType = type else {
            return .discover
        }

        return CircleStorySourceType.sourceTypeMapper[rType] ?? .discover
    }

    public static func circleStoryConfiguration(_ config: NSDictionary?)
        -> CircleStoryConfiguration? {
            guard let rConfig = config as? [String: Any] else {
            return nil
        }

        let jsonData = try? JSONSerialization.data(withJSONObject: rConfig, options: .prettyPrinted)
        guard let rJsonData = jsonData else {
            return nil
        }

        return try? JSONDecoder().decode(CircleStoryConfiguration.self, from: rJsonData)
    }
}
