From aa47c456f3f4a1df5f7dbbf4ad20b6226ce759f2 Mon Sep 17 00:00:00 2001 From: dipak140 Date: Tue, 20 Jun 2023 17:13:09 +0530 Subject: [PATCH 1/2] Added conference methods --- ios/Classes/ConferenceManager.swift | 39 +++++++++++-------------- ios/Classes/ConferencePlugin.swift | 45 +++++++++++++++++++---------- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/ios/Classes/ConferenceManager.swift b/ios/Classes/ConferenceManager.swift index 0084b27..75d6ae5 100644 --- a/ios/Classes/ConferenceManager.swift +++ b/ios/Classes/ConferenceManager.swift @@ -5,7 +5,7 @@ import Foundation import sariska -public class ConferenceManager : Conference{ +public class ConferenceManager : NSObject{ private var emitter: (_ action: String, _ m: [String: Any?]?) -> Void @@ -16,45 +16,40 @@ public class ConferenceManager : Conference{ super.init() } - public override func newConferenceMessage(_ action: String, m: [AnyHashable: Any]) { - print("inside new confernce message") - super.newConferenceMessage(action, m: m) - } - func release(){ conference = nil } - func createConference(){ + @objc public func createConference(){ conference = Conference() } - public override func join(){ + @objc public func join(){ conference?.join() conference?.addTrack(track: SariskaMediaTransportFlutterPlugin.localTrack ?? JitsiLocalTrack()) } - func join(_ params: NSDictionary) { + @objc func join(_ params: NSDictionary) { conference?.join((params["password"] as! NSString) as String) } - func grantOwner(_ params: NSDictionary) { + @objc func grantOwner(_ params: NSDictionary) { conference?.grantOwner((params["id"] as! NSString) as String) } - func setStartMutedPolicy(_ params: NSDictionary) { + @objc func setStartMutedPolicy(_ params: NSDictionary) { conference?.setStartMutedPolicy((params["policy"] as! NSDictionary) as! [AnyHashable: Any]) } - func setReceiverVideoConstraint(_ params: NSDictionary) { + @objc func setReceiverVideoConstraint(_ params: NSDictionary) { conference?.setReceiverVideoConstraint(params["number"] as! NSNumber) } - func setSenderVideoConstraint (_ params: NSDictionary) { + @objc func setSenderVideoConstraint (_ params: NSDictionary) { conference?.setSenderVideoConstraint(params["number"] as! NSNumber) } - func sendMessage(_ params: NSDictionary) { + @objc func sendMessage(_ params: NSDictionary) { if ((params["to"] as! NSString) != "") { conference?.sendMessage((params["message"] as! NSString) as String, to: (params["to"] as! NSString) as String) } else { @@ -62,23 +57,23 @@ public class ConferenceManager : Conference{ } } - func setLastN(_ params: NSDictionary) { + @objc func setLastN(_ params: NSDictionary) { conference?.setLastN(params["num"] as! NSNumber) } - func dial(_ params: NSDictionary) { + @objc func dial(_ params: NSDictionary) { conference?.dial(params["number"] as! NSNumber) } - func muteParticipant(_ params: NSDictionary) { + @objc public func muteParticipant(_ params: NSDictionary) { conference?.muteParticipant((params["id"] as! NSString) as String, mediaType: (params["mediaType"] as! NSString) as String) } - func setDisplayName(_ params: NSDictionary) { + @objc func setDisplayName(_ params: NSDictionary) { conference?.setDisplayName((params["displayName"] as! NSString) as String) } - func addTrack(_ params: NSDictionary) { + @objc func addTrack(_ params: NSDictionary) { var array = conference?.getLocalTracks() for track in array as! NSMutableArray { let track = track as! JitsiLocalTrack @@ -88,7 +83,7 @@ public class ConferenceManager : Conference{ } } - func removeTrack(_ params: NSDictionary) { + @objc func removeTrack(_ params: NSDictionary) { for track in conference?.getLocalTracks() as! NSMutableArray{ let track = track as! JitsiLocalTrack if (track.getId() == ((params["trackId"] as! NSString) as String)) { @@ -97,11 +92,11 @@ public class ConferenceManager : Conference{ } } - public override func leave() { + @objc public func leave() { conference?.leave() } - func addEventListeners(_ dictionary: [String: Any]){ + @objc func addEventListeners(_ dictionary: [String: Any]){ var eventString = dictionary["event"] as! String switch(eventString){ case "CONFERENCE_JOINED": diff --git a/ios/Classes/ConferencePlugin.swift b/ios/Classes/ConferencePlugin.swift index 97f4a8f..dbb2376 100644 --- a/ios/Classes/ConferencePlugin.swift +++ b/ios/Classes/ConferencePlugin.swift @@ -37,23 +37,38 @@ public class ConferencePlugin: NSObject, FlutterPlugin, FlutterStreamHandler{ } } - switch call.method{ - case "createConference": - manager?.createConference(); - - case "addEventListeners": - if let arguments = call.arguments as? [String: Any] { - manager?.addEventListeners(arguments) - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) + if let params = call.arguments { + // if there are parameters + let selectorString = call.method + ":" + let selector = Selector(selectorString) + if manager?.responds(to: selector) != nil{ + manager?.perform(selector, with: params) + } + } else { + // if there are no parameters + let selectorString = call.method + let selector = Selector(selectorString) + if manager?.responds(to: selector) != nil{ + manager?.perform(selector) } - - case "join": - manager?.join() - - default: - result(FlutterMethodNotImplemented) } +// switch call.method{ +// case "createConference": +// manager?.createConference(); +// +// case "addEventListeners": +// if let arguments = call.arguments as? [String: Any] { +// manager?.addEventListeners(arguments) +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// +// case "join": +// manager?.join() +// +// default: +// result(FlutterMethodNotImplemented) +// } } private func emit(_ action: String, _ m: Dictionary?) { From 125faa726f0f225db6d1e10ad2f24c2f77b59c4e Mon Sep 17 00:00:00 2001 From: dipak140 Date: Tue, 20 Jun 2023 17:36:58 +0530 Subject: [PATCH 2/2] Modified ConnectionPlugin to iterate through methods --- ios/Classes/ConferencePlugin.swift | 17 ----- ios/Classes/ConnectionManager.swift | 18 ++--- ios/Classes/ConnectionPlugin.swift | 106 ++++++++++++++++------------ 3 files changed, 70 insertions(+), 71 deletions(-) diff --git a/ios/Classes/ConferencePlugin.swift b/ios/Classes/ConferencePlugin.swift index dbb2376..caef738 100644 --- a/ios/Classes/ConferencePlugin.swift +++ b/ios/Classes/ConferencePlugin.swift @@ -52,23 +52,6 @@ public class ConferencePlugin: NSObject, FlutterPlugin, FlutterStreamHandler{ manager?.perform(selector) } } -// switch call.method{ -// case "createConference": -// manager?.createConference(); -// -// case "addEventListeners": -// if let arguments = call.arguments as? [String: Any] { -// manager?.addEventListeners(arguments) -// } else { -// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) -// } -// -// case "join": -// manager?.join() -// -// default: -// result(FlutterMethodNotImplemented) -// } } private func emit(_ action: String, _ m: Dictionary?) { diff --git a/ios/Classes/ConnectionManager.swift b/ios/Classes/ConnectionManager.swift index 88db0d5..4c78cbe 100644 --- a/ios/Classes/ConnectionManager.swift +++ b/ios/Classes/ConnectionManager.swift @@ -18,43 +18,43 @@ class ConnectionManager: NSObject { connection = nil } - public func createConnection(_ dictionary: [String: Any]){ + @objc public func createConnection(_ dictionary: [String: Any]){ connection = Connection.init(token: dictionary["token"] as! String, roomName: dictionary["roomName"] as! String, isNightly: false) } - func destroy(){ + @objc func destroy(){ connection?.disconnect() } - func connect(){ + @objc func connect(){ connection?.connect() } - func disconnect(){ + @objc func disconnect(){ connection?.disconnect() } - func addFeature(_ features: [String: Any]){ + @objc func addFeature(_ features: [String: Any]){ connection?.addFeature(features) } - func removeFeature(_ features: [String: Any]){ + @objc func removeFeature(_ features: [String: Any]){ connection?.removeFeature(features) } - func addEventListener(_ dictionary: [String: Any]){ + @objc func addConnectionListeners(_ dictionary: [String: Any]){ connection?.addEventListener(dictionary["event"] as! String, callback: { [self] in print("Connection Established") emitter(dictionary["event"] as! String, dictionary) }) } - func setToken(token: String){ + @objc func setToken(token: String){ connection?.setToken(token) } - func removeEventListener(event: String){ + @objc func removeEventListener(event: String){ connection?.removeEventListener(event) } } \ No newline at end of file diff --git a/ios/Classes/ConnectionPlugin.swift b/ios/Classes/ConnectionPlugin.swift index 251b4bb..b5209f3 100644 --- a/ios/Classes/ConnectionPlugin.swift +++ b/ios/Classes/ConnectionPlugin.swift @@ -38,54 +38,70 @@ public class ConnectionPlugin: NSObject, FlutterPlugin, FlutterStreamHandler{ self?.emit(action, m) } } - switch call.method { - case "createConnection": - if let arguments = call.arguments as? [String: Any] { - manager?.createConnection(arguments); - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) + if let params = call.arguments { + // if there are parameters + let selectorString = call.method + ":" + let selector = Selector(selectorString) + if manager?.responds(to: selector) != nil{ + manager?.perform(selector, with: params) } - case "connect": - manager?.connect() - case "disconnect": - manager?.disconnect() - case "addConnectionListeners": - if let arguments = call.arguments as? [String: Any] { - manager?.addEventListener(arguments) - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) + } else { + // if there are no parameters + let selectorString = call.method + let selector = Selector(selectorString) + if manager?.responds(to: selector) != nil{ + manager?.perform(selector) } - case "addFeature": - if let arguments = call.arguments as? [String: Any] { - manager?.addFeature(arguments) - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) - } - case "release": - manager?.release() - case "removeFeature": - if let arguments = call.arguments as? [String: Any] { - manager?.removeFeature(arguments) - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) - } - case "destroy": - manager?.destroy() - case "setToken": - if let arguments = call.arguments as? String { - manager?.setToken(token: arguments) - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) - } - case "removeConnectionListeners": - if let arguments = call.arguments as? String { - manager?.removeEventListener(event: arguments) - } else { - result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) - } - default: - result(FlutterMethodNotImplemented) } + +// switch call.method { +// case "createConnection": +// if let arguments = call.arguments as? [String: Any] { +// manager?.createConnection(arguments); +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// case "connect": +// manager?.connect() +// case "disconnect": +// manager?.disconnect() +// case "addConnectionListeners": +// if let arguments = call.arguments as? [String: Any] { +// manager?.addEventListener(arguments) +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// case "addFeature": +// if let arguments = call.arguments as? [String: Any] { +// manager?.addFeature(arguments) +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// case "release": +// manager?.release() +// case "removeFeature": +// if let arguments = call.arguments as? [String: Any] { +// manager?.removeFeature(arguments) +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// case "destroy": +// manager?.destroy() +// case "setToken": +// if let arguments = call.arguments as? String { +// manager?.setToken(token: arguments) +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// case "removeConnectionListeners": +// if let arguments = call.arguments as? String { +// manager?.removeEventListener(event: arguments) +// } else { +// result(FlutterError(code: "ARGUMENT_ERROR", message: "Invalid argument types", details: nil)) +// } +// default: +// result(FlutterMethodNotImplemented) +// } } private func emit(_ action: String, _ m: Dictionary?) {