77 lines
2.4 KiB
Swift
77 lines
2.4 KiB
Swift
//
|
|
// WebAuthenticationSessionChannelDelegate.swift
|
|
// flutter_inappwebview
|
|
//
|
|
// Created by Lorenzo Pichilli on 08/05/22.
|
|
//
|
|
|
|
import Foundation
|
|
import FlutterMacOS
|
|
|
|
public class WebAuthenticationSessionChannelDelegate: ChannelDelegate {
|
|
private weak var webAuthenticationSession: WebAuthenticationSession?
|
|
|
|
public init(webAuthenticationSession: WebAuthenticationSession, channel: FlutterMethodChannel) {
|
|
super.init(channel: channel)
|
|
self.webAuthenticationSession = webAuthenticationSession
|
|
}
|
|
|
|
public override func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
// let arguments = call.arguments as? NSDictionary
|
|
switch call.method {
|
|
case "canStart":
|
|
if let webAuthenticationSession = webAuthenticationSession {
|
|
result(webAuthenticationSession.canStart())
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "start":
|
|
if let webAuthenticationSession = webAuthenticationSession {
|
|
result(webAuthenticationSession.start())
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "cancel":
|
|
if let webAuthenticationSession = webAuthenticationSession {
|
|
webAuthenticationSession.cancel()
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
case "dispose":
|
|
if let webAuthenticationSession = webAuthenticationSession {
|
|
webAuthenticationSession.dispose()
|
|
result(true)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
default:
|
|
result(FlutterMethodNotImplemented)
|
|
break
|
|
}
|
|
}
|
|
|
|
public func onComplete(url: URL?, errorCode: Int?) {
|
|
let arguments: [String: Any?] = [
|
|
"url": url?.absoluteString,
|
|
"errorCode": errorCode
|
|
]
|
|
DispatchQueue.main.async { [weak self] in
|
|
self?.channel?.invokeMethod("onComplete", arguments: arguments)
|
|
}
|
|
}
|
|
|
|
public override func dispose() {
|
|
super.dispose()
|
|
webAuthenticationSession = nil
|
|
}
|
|
|
|
deinit {
|
|
dispose()
|
|
}
|
|
}
|