//
//  RNAdvertisingId.swift
//
//  Created by App Like on 28.09.17.
//

import AdSupport
import AppTrackingTransparency

@objc(RNAdvertisingId)
class RNAdvertisingId: NSObject {
    @objc
    func getAdvertisingId(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
        // check if running on iOS 14 or higher 
        if #available(iOS 14, *) {
            // Request permission using AppTrackingTransparency on iOS 14 or higher
            ATTrackingManager.requestTrackingAuthorization { status in 
                self.proceedWithIdfaCheck(status: status, resolve: resolve)
            }
        } else {
            // proceed with IDFA retrieval on earlier iOS versions
            self.proceedWithIdfaCheck(status: .authorized, resolve: resolve)
        }
    }

        private func proceedWithIdfaCheck(status: ATTrackingManager.AuthorizationStatus, resolve: @escaping RCTPromiseResolveBlock) {
            let isAuthorized = status == .authorized || status == .notDetermined // notDetermined is treated as authorized for iOS 13 and below
            let response: NSMutableDictionary = [
                "isLimitAdTrackingEnabled": !isAuthorized,
                "advertisingId": ""
            ]

            if isAuthorized {
                let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
                response["advertisingId"] = idfa
            }
            
        resolve(response)
    }
}
