omikit-plugin 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -107,7 +107,7 @@ dependencies {
107
107
  implementation "com.facebook.react:react-native:+" // From node_modules
108
108
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
109
109
  // implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
110
- api 'vn.vihat.omicall:omi-sdk:2.0.19'
110
+ api 'vn.vihat.omicall:omi-sdk:2.0.23'
111
111
  // implementation fileTree(include: ['*.jar'], dir: 'libs')
112
112
  // implementation files('OmiSDK.aar')
113
113
  implementation "com.google.android.flexbox:flexbox:3.0.0"
@@ -119,7 +119,7 @@ dependencies {
119
119
  exclude module: 'okhttp'
120
120
  }
121
121
  implementation "com.squareup.retrofit2:converter-gson:2.9.0"
122
- implementation "com.squareup.okhttp3:okhttp:4.9.1"
122
+ implementation "com.squareup.okhttp3:okhttp:4.9.1"
123
123
  implementation "com.squareup.okhttp3:okhttp-urlconnection:4.9.1"
124
124
  implementation "com.squareup.okhttp3:logging-interceptor:4.9.1"
125
125
  implementation "com.google.code.gson:gson:2.8.9"
@@ -45,6 +45,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
45
45
 
46
46
  override fun incomingReceived(callerId: Int?, phoneNumber: String?, isVideo: Boolean?) {
47
47
  isIncomming = true;
48
+ Log.d("OMISDK", "=>> START IN COMMING CALL REVICED => ")
48
49
  val map: WritableMap = WritableNativeMap()
49
50
  map.putBoolean("isVideo", isVideo ?: true)
50
51
  map.putBoolean("incoming", isIncomming)
@@ -63,6 +64,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
63
64
  transactionId: String?,
64
65
  ) {
65
66
  isAnserCall = true
67
+ Log.d("OMISDK", "=>> ON CALL ESTABLISHED => ")
66
68
  Handler(Looper.getMainLooper()).postDelayed({
67
69
  Log.d("OmikitReactNative", "onCallEstablished")
68
70
  val map: WritableMap = WritableNativeMap()
@@ -72,10 +74,11 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
72
74
  map.putString("transactionId", transactionId)
73
75
  map.putInt("status", CallState.confirmed.value)
74
76
  sendEvent(CALL_STATE_CHANGED, map)
75
- }, 500)
77
+ }, 200)
76
78
  }
77
79
 
78
80
  override fun onCallEnd(callInfo: MutableMap<String, Any?>, statusCode: Int) {
81
+ Log.d("OMISDK", "=>> ON CALL END => ")
79
82
  val call = callInfo as Map<*, *>
80
83
  val map: WritableMap = WritableNativeMap()
81
84
  val timeStartToAnswer = call["time_start_to_answer"] as Long?
@@ -93,6 +96,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
93
96
  }
94
97
 
95
98
  override fun onConnecting() {
99
+ Log.d("OMISDK", "=>> ON CONNECTING CALL => ")
96
100
  val map: WritableMap = WritableNativeMap()
97
101
  map.putString("callerNumber", "")
98
102
  map.putBoolean("isVideo", NotificationService.isVideo)
@@ -108,6 +112,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
108
112
  val map: WritableMap = WritableNativeMap()
109
113
 
110
114
  if(callDirection == "inbound") {
115
+ Log.d("OMISDK", "=>> ON IN COMMING CALL => ")
111
116
  map.putString("callerNumber", OmiClient.prePhoneNumber)
112
117
  map.putBoolean("isVideo", NotificationService.isVideo)
113
118
  map.putBoolean("incoming", true)
@@ -119,6 +124,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
119
124
  map.putString("transactionId", transactionId ?: "")
120
125
  map.putInt("status", CallState.early.value)
121
126
  map.putBoolean("incoming", false)
127
+ Log.d("OMISDK", "=>> ON RINGING CALL => ")
122
128
  }
123
129
  sendEvent(CALL_STATE_CHANGED, map)
124
130
  }
@@ -149,6 +155,7 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
149
155
  }
150
156
 
151
157
  override fun onOutgoingStarted(callerId: Int, phoneNumber: String?, isVideo: Boolean?) {
158
+ Log.d("OMISDK", "=>> ON OUT GOING STARTED CALL => ")
152
159
  val map: WritableMap = WritableNativeMap()
153
160
  map.putString("callerNumber", "")
154
161
  map.putBoolean("isVideo", NotificationService.isVideo)
@@ -369,13 +376,14 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
369
376
  // map.putString("status", startCallResult)
370
377
  map.putString("_id", "")
371
378
  // map.putString("message", startCallResult as String)
372
- Log.d("dataOmi", "startCall ==>> ${map} ")
379
+ Log.d("OMISDK", "=>> ON START CALL => $map")
373
380
  promise.resolve(true)
374
381
  }
375
382
  } else {
376
383
  map.putString("status","4")
377
384
  map.putString("_id", "")
378
385
  map.putString("message", messageCall(4) as String)
386
+ Log.d("OMISDK", "=>> ON START CALL FAIL BECAUSE NEED PERMISSION => $map")
379
387
  promise.resolve(false)
380
388
  }
381
389
  }
@@ -409,28 +417,22 @@ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
409
417
  @ReactMethod
410
418
  fun joinCall(promise: Promise) {
411
419
  currentActivity?.runOnUiThread {
412
- OmiClient.getInstance(reactApplicationContext!!).pickUp()
413
- promise.resolve(true)
420
+ if(reactApplicationContext != null) {
421
+ OmiClient.getInstance(reactApplicationContext!!).pickUp()
422
+ promise.resolve(true)
423
+ }
414
424
  }
415
425
  }
416
426
 
417
427
  @ReactMethod
418
428
  fun endCall(promise: Promise) {
419
- currentActivity?.runOnUiThread {
420
- val call = OmiClient.getInstance(reactApplicationContext!!).hangUp()
421
- val map: WritableMap = WritableNativeMap()
422
- val timeStartToAnswer = call?.get("time_start_to_answer") as Long?
423
- val timeEnd = call?.get("time_end") as Long
424
- map.putString("transaction_id", call["transaction_id"] as String?)
425
- map.putString("direction", call["direction"] as String)
426
- map.putString("source_number", call["source_number"] as String)
427
- map.putString("destination_number", call["destination_number"] as String)
428
- map.putDouble("time_start_to_answer", (timeStartToAnswer ?: 0).toDouble())
429
- map.putDouble("time_end", timeEnd.toDouble())
430
- map.putString("sip_user", call["sip_user"] as String)
431
- map.putString("disposition", call["disposition"] as String)
432
- promise.resolve(map)
433
- }
429
+ if(isIncomming && !isAnserCall){
430
+ OmiClient.getInstance(reactApplicationContext!!).decline()
431
+ } else {
432
+ OmiClient.getInstance(reactApplicationContext!!).hangUp()
433
+ }
434
+ promise.resolve(true)
435
+
434
436
  }
435
437
 
436
438
  @ReactMethod
@@ -21,7 +21,7 @@ class CallManager {
21
21
  private var guestPhone : String = ""
22
22
  private var lastStatusCall : String?
23
23
  private var tempCallInfo : [String: Any]?
24
-
24
+ private var lastTimeCall : Date = Date()
25
25
  /// Get instance
26
26
  static func shareInstance() -> CallManager {
27
27
  if (instance == nil) {
@@ -79,7 +79,7 @@ class CallManager {
79
79
 
80
80
  func initWithUserPasswordEndpoint(params: [String: Any]) -> Bool {
81
81
  if let userName = params["userName"] as? String, let password = params["password"] as? String, let realm = params["realm"] as? String {
82
- OmiClient.initWithUsername(userName, password: password, realm: realm)
82
+ OmiClient.initWithUsername(userName, password: password, realm: realm, proxy: "")
83
83
  }
84
84
  let isVideo = (params["isVideo"] as? Bool) ?? true
85
85
  requestPermission(isVideo: isVideo)
@@ -309,7 +309,7 @@ class CallManager {
309
309
  }
310
310
 
311
311
  if (callState != OMICallState.disconnected.rawValue) {
312
- SwiftOmikitPlugin.instance?.sendEvent(CALL_STATE_CHANGED, dataToSend)
312
+ OmikitPlugin.instance?.sendEvent(withName: CALL_STATE_CHANGED, body: dataToSend)
313
313
  }
314
314
 
315
315
  switch (callState) {
@@ -319,7 +319,7 @@ class CallManager {
319
319
  }
320
320
  isSpeaker = call.isVideo
321
321
  lastStatusCall = "answered"
322
- SwiftOmikitPlugin.instance.sendMuteStatus()
322
+ OmikitPlugin.instance.sendMuteStatus()
323
323
  break
324
324
  case OMICallState.incoming.rawValue:
325
325
  guestPhone = call.callerNumber ?? ""
@@ -332,10 +332,10 @@ class CallManager {
332
332
  lastStatusCall = nil
333
333
  guestPhone = ""
334
334
  var combinedDictionary: [String: Any] = dataToSend
335
- if (tempCallInfo.count > 0) {
336
- combinedDictionary.merge(tempCallInfo, uniquingKeysWith: { (_, new) in new })
335
+ if (tempCallInfo != nil && tempCallInfo?.count ?? 0 > 0) {
336
+ combinedDictionary.merge(tempCallInfo ?? [:], uniquingKeysWith: { (_, new) in new })
337
337
  }
338
- SwiftOmikitPlugin.instance?.sendEvent(CALL_STATE_CHANGED, combinedDictionary )
338
+ OmikitPlugin.instance?.sendEvent(withName: CALL_STATE_CHANGED, body: combinedDictionary )
339
339
  lastTimeCall = Date()
340
340
  tempCallInfo = [:]
341
341
  break
@@ -367,6 +367,7 @@ class CallManager {
367
367
 
368
368
  /// Start call
369
369
  func startCall(_ phoneNumber: String, isVideo: Bool, completion: @escaping (_ : Int) -> Void) {
370
+ let secondsSinceCurrentTime = lastTimeCall.timeIntervalSinceNow
370
371
  guestPhone = phoneNumber
371
372
  OmiClient.startCall(phoneNumber, isVideo: isVideo) { status in
372
373
  DispatchQueue.main.async {
@@ -0,0 +1,53 @@
1
+ import Foundation
2
+ import AVFoundation
3
+ import SwiftUI
4
+ import OmiKit
5
+
6
+ public class OmiUtils {
7
+
8
+ static private var instance: OmiUtils? = nil // Instance
9
+
10
+ static func shareInstance() -> OmiUtils {
11
+ if (instance == nil) {
12
+ instance = OmiUtils()
13
+ }
14
+ return instance!
15
+ }
16
+
17
+ func convertDictionaryToJson(dictionary: [String: Any]) -> String? {
18
+ do {
19
+ let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: [])
20
+ if let jsonString = String(data: jsonData, encoding: .utf8) {
21
+ return jsonString
22
+ }
23
+ } catch {
24
+ print("Error converting dictionary to JSON: \(error)")
25
+ }
26
+ return nil
27
+ }
28
+
29
+ func messageCall(type: Int) -> String {
30
+ switch(type){
31
+ case 0:
32
+ return "INVALID_UUID"
33
+ case 1:
34
+ return "INVALID_PHONE_NUMBER"
35
+ case 2:
36
+ return "SAME_PHONE_NUMBER_WITH_PHONE_REGISTER"
37
+ case 3:
38
+ return "MAX_RETRY"
39
+ case 4:
40
+ return "PERMISSION_DENIED"
41
+ case 5:
42
+ return "COULD_NOT_FIND_END_POINT"
43
+ case 6:
44
+ return "REGISTER_ACCOUNT_FAIL"
45
+ case 7:
46
+ return "START_CALL_FAIL"
47
+ case 9:
48
+ return "HAVE_ANOTHER_CALL"
49
+ default:
50
+ return "START_CALL_SUCCESS"
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,66 @@
1
+ import Foundation
2
+ import OmiKit
3
+
4
+ struct OmiCallModel: Hashable {
5
+ var callId: Int
6
+ var incoming: Bool = false
7
+ var callState: Int = 0
8
+ var callerNumber: String
9
+ var isVideo: Bool = false
10
+ var omiId: String
11
+ var uuid: String
12
+ var callerName: String
13
+ var muted: Bool = false
14
+ var speaker: Bool = false
15
+ var onHold: Bool = false
16
+ var numberToCall: String
17
+ var connected: Bool
18
+ var totalMBsUsed: Double = 0.0
19
+ var mos: Double = 0.0
20
+ var latency: Double = 0.0
21
+ var jitter: Double = 0.0
22
+ var ppl: Double = 0.0
23
+
24
+ init(omiCall: OmiCallModel){
25
+ self.callId = omiCall.callId
26
+ self.incoming = omiCall.incoming
27
+ self.callState = omiCall.callState
28
+ self.callerNumber = omiCall.callerNumber
29
+ self.isVideo = omiCall.isVideo
30
+ self.omiId = omiCall.omiId
31
+ self.uuid = omiCall.uuid
32
+ self.callerName = omiCall.callerName
33
+ self.muted = omiCall.muted
34
+ self.speaker = omiCall.speaker
35
+ self.onHold = omiCall.onHold
36
+ self.numberToCall = omiCall.numberToCall
37
+ self.connected = omiCall.connected
38
+ self.totalMBsUsed = omiCall.totalMBsUsed
39
+ self.mos = omiCall.mos
40
+ self.latency = omiCall.latency
41
+ self.jitter = omiCall.jitter
42
+ self.ppl = omiCall.ppl
43
+ }
44
+
45
+ init(omiCall: OMICall){
46
+ self.callId = omiCall.callId
47
+ self.incoming = omiCall.isIncoming
48
+ self.callState = omiCall.callState.rawValue ?? 0
49
+ self.callerNumber = omiCall.callerNumber ?? ""
50
+ self.isVideo = omiCall.isVideo
51
+ self.omiId = omiCall.omiId ?? ""
52
+ self.uuid = omiCall.uuid.uuidString
53
+ self.callerName = omiCall.callerName ?? ""
54
+ self.muted = omiCall.muted
55
+ self.speaker = omiCall.speaker
56
+ self.onHold = omiCall.onHold
57
+ self.numberToCall = omiCall.numberToCall
58
+ self.connected = omiCall.connected
59
+ self.totalMBsUsed = Double(omiCall.totalMBsUsed)
60
+ self.mos = Double(omiCall.mos)
61
+ self.latency = Double(omiCall.latency)
62
+ self.jitter = Double(omiCall.jitter)
63
+ self.ppl = Double(omiCall.ppl)
64
+ }
65
+
66
+ }
@@ -0,0 +1,17 @@
1
+
2
+ import Foundation
3
+ import SwiftUI
4
+
5
+ class StartCalModel {
6
+ var status: Int = 0
7
+ var callInfo: OmiCallModel?
8
+ var message: String?
9
+
10
+ init(status: Int, callInfo: OmiCallModel, message:String) {
11
+ self.status = status
12
+ self.callInfo = callInfo
13
+ self.message = message
14
+ }
15
+
16
+
17
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omikit-plugin",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "description": "Omikit Plugin by ViHAT",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",