81 lines
2.4 KiB
Swift
81 lines
2.4 KiB
Swift
//
|
|
// SafariViewControllerChannelDelegate.swift
|
|
// flutter_inappwebview
|
|
//
|
|
// Created by Lorenzo Pichilli on 05/05/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public class SafariViewControllerChannelDelegate: ChannelDelegate {
|
|
private weak var safariViewController: SafariViewController?
|
|
|
|
public init(safariViewController: SafariViewController, channel: FlutterMethodChannel) {
|
|
super.init(channel: channel)
|
|
self.safariViewController = safariViewController
|
|
}
|
|
|
|
public override func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
// let arguments = call.arguments as? NSDictionary
|
|
switch call.method {
|
|
case "close":
|
|
if let safariViewController = safariViewController {
|
|
safariViewController.close(result: result)
|
|
} else {
|
|
result(false)
|
|
}
|
|
break
|
|
default:
|
|
result(FlutterMethodNotImplemented)
|
|
break
|
|
}
|
|
}
|
|
|
|
public func onOpened() {
|
|
let arguments: [String: Any?] = [:]
|
|
channel?.invokeMethod("onOpened", arguments: arguments)
|
|
}
|
|
|
|
public func onCompletedInitialLoad(didLoadSuccessfully: Bool) {
|
|
let arguments: [String: Any?] = [
|
|
"didLoadSuccessfully": didLoadSuccessfully
|
|
]
|
|
channel?.invokeMethod("onCompletedInitialLoad", arguments: arguments)
|
|
}
|
|
|
|
public func onInitialLoadDidRedirect(url: URL) {
|
|
let arguments: [String: Any?] = [
|
|
"url": url.absoluteString
|
|
]
|
|
channel?.invokeMethod("onInitialLoadDidRedirect", arguments: arguments)
|
|
}
|
|
|
|
public func onWillOpenInBrowser() {
|
|
let arguments: [String: Any?] = [:]
|
|
channel?.invokeMethod("onWillOpenInBrowser", arguments: arguments)
|
|
}
|
|
|
|
public func onClosed() {
|
|
let arguments: [String: Any?] = [:]
|
|
channel?.invokeMethod("onClosed", arguments: arguments)
|
|
}
|
|
|
|
public func onItemActionPerform(id: Int64, url: URL, title: String?) {
|
|
let arguments: [String: Any?] = [
|
|
"id": id,
|
|
"url": url.absoluteString,
|
|
"title": title,
|
|
]
|
|
channel?.invokeMethod("onItemActionPerform", arguments: arguments)
|
|
}
|
|
|
|
public override func dispose() {
|
|
super.dispose()
|
|
safariViewController = nil
|
|
}
|
|
|
|
deinit {
|
|
dispose()
|
|
}
|
|
}
|