//
//  MoECapacitorInitializer.swift
//  CapacitorMoengageCore
//
//  Created by Rakshitha on 03/01/22.

import Foundation
import MoEngagePluginBase
import MoEngageSDK

@objc public class MoECapacitorInitializer : NSObject {
    
    @objc static public let sharedInstance = MoECapacitorInitializer()
  
    private override init() {super.init()}
    
    /// Initialize SDK with provided configuration.
    /// - Parameter initializationConfig: The configuration used for initialization.
    @objc public func initializeInstance(withConfig initializationConfig: MoEngageSDKInitializationConfig) {
        let plugin = MoEngagePlugin()
        plugin.initializeInstance(withConfig: initializationConfig)
        plugin.trackPluginInfo(MoECapacitorConstants.pluginType, version: capacitorPluginVersion)
    }
    
    /// Method to initialize MoEngage SDK
    /// - Parameters:
    ///   - config: MOSDKConfig instance for SDK configuration
    ///   - launchOptions: Launch Options dictionary
    @objc public func initializeDefaultInstance(_ config: MoEngageSDKConfig, andLaunchOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) {
        let plugin = MoEngagePlugin()
        plugin.initializeDefaultInstance(sdkConfig: config, launchOptions: launchOptions)
        plugin.trackPluginInfo(MoECapacitorConstants.pluginType, version: capacitorPluginVersion)
    }
    
    /// Method to initialize MoEngage SDK with SDK state
    /// - Parameters:
    ///   - config: MOSDKConfig instance for SDK configuration
    ///   - sdkState: Bool indicating if SDK is Enabled/Disabled
    ///   - launchOptions: Launch Options dictionary
    @objc public func initializeDefaultInstance(_ config: MoEngageSDKConfig, withSDKState state:MoEngageSDKState, andLaunchOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) {
        let plugin = MoEngagePlugin()
        plugin.initializeDefaultInstance(sdkConfig: config, sdkState: state, launchOptions: launchOptions)
        plugin.trackPluginInfo(MoECapacitorConstants.pluginType, version: capacitorPluginVersion)
    }
    
}
