Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/connectionupgrade #6

Merged
merged 2 commits into from
Jun 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 17 additions & 22 deletions ios/Classes/ConferenceManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -16,69 +16,64 @@ 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 {
conference?.sendMessage((params["message"] as! NSString) as String)
}
}

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
Expand All @@ -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)) {
Expand All @@ -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":
Expand Down
28 changes: 13 additions & 15 deletions ios/Classes/ConferencePlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,20 @@ 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)
}
}

Expand Down
18 changes: 9 additions & 9 deletions ios/Classes/ConnectionManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
106 changes: 61 additions & 45 deletions ios/Classes/ConnectionPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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<String, Any?>?) {
Expand Down