import UIKit
import Flutter
import MSAL

#if canImport(adyen_checkout)
    import adyen_checkout
#endif

#if canImport(AdyenActions)
    import AdyenActions
#endif

#if canImport(AdyenDropIn)
    import AdyenDropIn
#endif

@main
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }

  override func application(_ application: UIApplication,
                          continue userActivity: NSUserActivity,
                          restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  return super.application(application, continue: userActivity, restorationHandler: restorationHandler)
}

override func application(_ app: UIApplication,
                          open url: URL,
                          options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {

  RedirectComponent.applicationDidOpen(from: url)
    
  let sourceApplication = options[.sourceApplication] as? String
  let msalResult = MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApplication)
  let flutterResult = super.application(app, open: url, options: options)
  return msalResult || flutterResult
}
  
}