import Foundation
import UIKit
import WortiseSDK

@objc
public class WortiseConsentManager: NSObject {

    @objc
    public static let shared = WortiseConsentManager()


    @objc
    public func canCollectData() -> Bool {
        return WAConsentManager.shared.canCollectData
    }

    @objc
    public func canRequestPersonalizedAds() -> Bool {
        return WAConsentManager.shared.canRequestPersonalizedAds
    }

    @objc
    public func exists() -> Bool {
        return WAConsentManager.shared.exists
    }

    @objc
    public func request(_ id: Int) {
        guard let controller = WortiseUtils.rootViewController else {
            return
        }

        DispatchQueue.main.async {
            WAConsentManager.shared.request(controller) {
                self.didConsentRequestFinish(for: id, shown: $0)
            }
        }
    }

    @objc
    public func requestIfRequired(_ id: Int) {
         guard let controller = WortiseUtils.rootViewController else {
            return
        }

        DispatchQueue.main.async {
            WAConsentManager.shared.request(ifRequired: controller) {
                self.didConsentRequestFinish(for: id, shown: $0)
            }
        }
    }


    fileprivate func didConsentRequestFinish(for id: Int, shown: Bool) {
        let data: [String: Any?] = [
            "id":    id,
            "shown": shown
        ]

        WortiseUtils.send(event: "OnConsentRequestFinished", data: data)
    }
}
