update ios

This commit is contained in:
hiddify
2023-12-26 22:26:06 +03:30
parent 887b561c92
commit 38348feb25
13 changed files with 96 additions and 43 deletions

View File

@@ -9,11 +9,12 @@ import Foundation
import Combine
public class AlertsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
static let name = "\(FilePath.packageName)/service.alerts"
static let name = "\(Bundle.main.serviceIdentifier)/service.alerts"
private var channel: FlutterEventChannel?
private var cancellable: AnyCancellable?
private var cancelBag: Set<AnyCancellable> = []
public static func register(with registrar: FlutterPluginRegistrar) {
let instance = AlertsEventHandler()
@@ -22,7 +23,13 @@ public class AlertsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
}
public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
cancellable = VPNManager.shared.$alert.sink { [events] alert in
print("[TLOG] handle start method \(AlertsEventHandler.name)")
NSLog("[TLOG] handle start method \(AlertsEventHandler.name)")
defer {
print("[TLOG] handler end method \(AlertsEventHandler.name)")
NSLog("[TLOG] handler end method \(AlertsEventHandler.name)")
}
VPNManager.shared.$alert.sink { [events] alert in
var data = [
"status": "Stopped",
"alert": alert.alert?.rawValue,
@@ -34,12 +41,12 @@ public class AlertsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
}
}
events(data)
}
}.store(in: &cancelBag)
return nil
}
public func onCancel(withArguments arguments: Any?) -> FlutterError? {
cancellable?.cancel()
// cancellable?.cancel()
return nil
}
}

View File

@@ -9,7 +9,7 @@ import Foundation
public class FileMethodHandler: NSObject, FlutterPlugin {
public static let name = "\(FilePath.packageName)/files.method"
public static let name = "\(Bundle.main.serviceIdentifier)/files.method"
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: Self.name, binaryMessenger: registrar.messenger())
@@ -21,6 +21,8 @@ public class FileMethodHandler: NSObject, FlutterPlugin {
private var channel: FlutterMethodChannel?
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
NSLog("[TLOG] handle start method \(call.method)")
defer { NSLog("[TLOG] handler end method \(call.method)") }
switch call.method {
case "get_paths":
result([

View File

@@ -29,7 +29,7 @@ struct SBGroup: Codable {
public class GroupsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler, LibboxCommandClientHandlerProtocol {
static let name = "\(FilePath.packageName)/groups"
static let name = "\(Bundle.main.serviceIdentifier)/groups"
private var channel: FlutterEventChannel?

View File

@@ -8,7 +8,7 @@
import Foundation
public class LogsEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
static let name = "\(FilePath.packageName)/service.logs"
static let name = "\(Bundle.main.serviceIdentifier)/service.logs"
private var channel: FlutterEventChannel?

View File

@@ -13,23 +13,32 @@ public class MethodHandler: NSObject, FlutterPlugin {
private var cancelBag: Set<AnyCancellable> = []
public static let name = "\(FilePath.packageName)/method"
public static let name = "\(Bundle.main.serviceIdentifier)/method"
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: Self.name, binaryMessenger: registrar.messenger())
let instance = MethodHandler()
registrar.addMethodCallDelegate(instance, channel: channel)
instance.channel = channel
instance.channel = channel
}
private var channel: FlutterMethodChannel?
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
NSLog("[TLOG] handle start method \(call.method)")
defer { NSLog("[TLOG] handler end method \(call.method)") }
switch call.method {
case "parse_config":
result(parseConfig(args: call.arguments))
case "change_config_options":
result(changeConfigOptions(args: call.arguments))
case "setup":
Task { [unowned self] in
let res = await setup(args: call.arguments)
await MainActor.run {
result(res)
}
}
case "start":
Task { [unowned self] in
let res = await start(args: call.arguments)
@@ -80,6 +89,15 @@ public class MethodHandler: NSObject, FlutterPlugin {
return true
}
public func setup(args: Any?) async -> Bool {
do {
try await VPNManager.shared.setup()
} catch {
return false
}
return true
}
public func start(args: Any?) async -> Bool {
guard
let args = args as? [String:Any?],

View File

@@ -9,11 +9,12 @@ import Foundation
import Combine
public class StatusEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
static let name = "com.hiddify.app//service.status"
static let name = "\(Bundle.main.serviceIdentifier)/service.status"
private var channel: FlutterEventChannel?
private var cancellable: AnyCancellable?
private var cancelBag: Set<AnyCancellable> = []
public static func register(with registrar: FlutterPluginRegistrar) {
let instance = StatusEventHandler()
@@ -22,7 +23,13 @@ public class StatusEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
}
public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
cancellable = VPNManager.shared.$state.sink { [events] status in
print("[TLOG] handle start method \(StatusEventHandler.name)")
NSLog("[TLOG] handle start method \(StatusEventHandler.name)")
defer {
print("[TLOG] handler end method \(StatusEventHandler.name)")
NSLog("[TLOG] handler end method \(StatusEventHandler.name)")
}
VPNManager.shared.$state.sink { [events] status in
switch status {
case .reasserting, .connecting:
events(["status": "Starting"])
@@ -35,12 +42,12 @@ public class StatusEventHandler: NSObject, FlutterPlugin, FlutterStreamHandler {
@unknown default:
events(["status": "Stopped"])
}
}
}.store(in: &cancelBag)
return nil
}
public func onCancel(withArguments arguments: Any?) -> FlutterError? {
cancellable?.cancel()
// cancellable?.cancel()
return nil
}
}