//
//  RCTConvert+StoryBlock.swift
//  react-native-firework-sdk
//
//  Created by linjie jiang on 2022/8/11.
//

import Foundation

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

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

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

    public static func storyBlockConfiguration(_ config: NSDictionary?)
        -> StoryBlockConfiguration? {
            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(StoryBlockConfiguration.self, from: rJsonData)
    }
}
