omikit-plugin 3.2.70 → 3.2.72

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.
@@ -41,7 +41,7 @@ class CallManager {
41
41
  func transferCall(_ phoneNumber: String)-> Bool {
42
42
  var result = false;
43
43
  do {
44
- if let callInfo = self.omiLib.getCurrentConfirmCall() {
44
+ if let callInfo = omiLib.getCurrentConfirmCall() {
45
45
  if callInfo.callState != .disconnected {
46
46
  callInfo.blindTransferCall(withNumber: phoneNumber);
47
47
  result = true
@@ -58,7 +58,7 @@ class CallManager {
58
58
  do {
59
59
  if let callInfo = omiLib.getCurrentCall() {
60
60
  if callInfo.callState != .disconnected {
61
- self.omiLib.callManager.end(callInfo) { error in
61
+ omiLib.callManager.end(callInfo) { error in
62
62
  if error != nil {
63
63
  }
64
64
  }
@@ -93,42 +93,6 @@ class CallManager {
93
93
  }
94
94
  }
95
95
 
96
- func convertDictionaryToJson(dictionary: [String: Any]) -> String? {
97
- do {
98
- let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: [])
99
- if let jsonString = String(data: jsonData, encoding: .utf8) {
100
- return jsonString
101
- }
102
- } catch {
103
- print("Error converting dictionary to JSON: \(error.localizedDescription)")
104
- }
105
- return nil
106
- }
107
-
108
- private func messageCall(type: Int) -> String {
109
- switch(type){
110
- case 0:
111
- return "INVALID_UUID"
112
- case 1:
113
- return "INVALID_PHONE_NUMBER"
114
- case 2:
115
- return "SAME_PHONE_NUMBER_WITH_PHONE_REGISTER"
116
- case 3:
117
- return "MAX_RETRY"
118
- case 4:
119
- return "PERMISSION_DENIED"
120
- case 5:
121
- return "COULD_NOT_FIND_END_POINT"
122
- case 6:
123
- return "REGISTER_ACCOUNT_FAIL"
124
- case 7:
125
- return "START_CALL_FAIL"
126
- case 9:
127
- return "HAVE_ANOTHER_CALL"
128
- default:
129
- return "START_CALL_SUCCESS"
130
- }
131
- }
132
96
 
133
97
  private func requestPermission(isVideo: Bool) {
134
98
  AVCaptureDevice.requestAccess(for: .audio) { _ in
@@ -160,18 +124,45 @@ class CallManager {
160
124
 
161
125
 
162
126
  func initWithUserPasswordEndpoint(params: [String: Any]) -> Bool {
163
- var result = false
164
- if let userName = params["userName"] as? String, let password = params["password"] as? String, let realm = params["realm"] as? String, let token = params["fcmToken"] as? String {
165
- if let projectID = params["projectId"] as? String, !projectID.isEmpty {
166
- OmiClient.setFcmProjectId(projectID)
127
+ // Kiểm tra thông tin đầu vào
128
+ guard let userName = params["userName"] as? String,
129
+ let password = params["password"] as? String,
130
+ let realm = params["realm"] as? String,
131
+ let token = params["fcmToken"] as? String else {
132
+ print("🚨 Lỗi: Thiếu thông tin đăng nhập!")
133
+ return false
134
+ }
135
+
136
+
137
+ // Nếu `projectId` có giá trị, thiết lập Project ID cho FCM
138
+ if let projectID = params["projectId"] as? String, !projectID.isEmpty {
139
+ OmiClient.setFcmProjectId(projectID)
167
140
  }
168
- OmiClient.initWithUsername(userName, password: password, realm: realm, proxy: "")
141
+
142
+ // Thử khởi tạo OmiClient với username & password
143
+ do {
144
+ try OmiClient.initWithUsername(userName, password: password, realm: realm, proxy: "")
145
+ } catch {
146
+ print("🚨 Lỗi khởi tạo OmiClient: \(error.localizedDescription)")
147
+ return false
148
+ }
149
+
150
+ // Thiết lập FCM Token cho user
169
151
  OmiClient.setUserPushNotificationToken(token)
170
- result = true
171
- }
172
- let isVideo = (params["isVideo"] as? Bool) ?? true
173
- requestPermission(isVideo: isVideo)
174
- return result
152
+
153
+ // Đảm bảo requestPermission chạy trên main thread
154
+ let isVideo = (params["isVideo"] as? Bool) ?? false
155
+ if isVideo {
156
+ DispatchQueue.main.async { [weak self] in
157
+ guard let strongSelf = self else {
158
+ print("⚠️ Không thể gọi requestPermission vì self đã bị giải phóng!")
159
+ return
160
+ }
161
+ strongSelf.requestPermission(isVideo: isVideo)
162
+ }
163
+ }
164
+
165
+ return true
175
166
  }
176
167
 
177
168
  func showMissedCall() {
@@ -232,7 +223,7 @@ class CallManager {
232
223
  }
233
224
 
234
225
  func registerVideoEvent() {
235
- DispatchQueue.main.async {
226
+ DispatchQueue.main.async {
236
227
  NotificationCenter.default.addObserver(CallManager.instance!,
237
228
  selector: #selector(self.videoUpdate(_:)),
238
229
  name: NSNotification.Name.OMICallVideoInfo,
@@ -268,7 +259,7 @@ class CallManager {
268
259
 
269
260
  @objc func videoUpdate(_ notification: NSNotification) {
270
261
  guard let userInfo = notification.userInfo,
271
- let state = userInfo[OMIVideoInfoState] as? Int else {
262
+ let state = userInfo[OMIVideoInfoState] as? Int else {
272
263
  return;
273
264
  }
274
265
  switch (state) {
@@ -310,7 +301,8 @@ class CallManager {
310
301
  "callerNumber": "",
311
302
  "isVideo": false,
312
303
  "transactionId": "",
313
- "_id": ""
304
+ "_id": "",
305
+ "typeNumber": ""
314
306
  ]
315
307
 
316
308
  if(call != nil){
@@ -322,6 +314,7 @@ class CallManager {
322
314
  dataToSend["callerNumber"] = call.callerNumber
323
315
  dataToSend["isVideo"] = call.isVideo
324
316
  dataToSend["transactionId"] = call.omiId
317
+ dataToSend["typeNumber"] = OmiUtils.checkTypeNumber(phoneNumber: call.callerNumber ?? "")
325
318
  }
326
319
 
327
320
  if (callState != OMICallState.disconnected.rawValue) {
@@ -377,56 +370,74 @@ class CallManager {
377
370
  "time_end" : timeEnd,
378
371
  "sip_user": user,
379
372
  "disposition" : lastStatusCall == nil ? "no_answered" : "answered",
380
- "code_end_call" : call.lastStatus
373
+ "code_end_call" : call.lastStatus,
374
+
375
+ "transactionId" : call.omiId,
376
+ "sourceNumber" : user,
377
+ "destinationNumber" : guestPhone,
378
+ "timeStartToAnswer" : call.createDate,
379
+ "timeEnd" : timeEnd,
380
+ "sipUser": user,
381
+ "codeEndCall" : call.lastStatus
381
382
  ]
382
383
  }
383
384
 
384
385
 
385
386
  /// Start call
386
387
  func startCall(_ phoneNumber: String, isVideo: Bool, completion: @escaping (_ : String) -> Void) {
387
- let secondsSinceCurrentTime = lastTimeCall.timeIntervalSinceNow
388
- guestPhone = phoneNumber
389
- OmiClient.startCall(phoneNumber, isVideo: isVideo) { status in
390
- DispatchQueue.main.async {
391
- let callCurrent = self.omiLib.getCurrentCall()
392
- var dataToSend: [String: Any] = [
393
- "status": status.rawValue,
394
- "_id": "",
395
- "message": self.messageCall(type: status.rawValue)
396
- ]
397
-
398
- if(callCurrent != nil){
399
- dataToSend["_id"] = String(describing: OmiCallModel(omiCall: callCurrent!).uuid)
400
- }
401
-
402
- if let jsonString = self.convertDictionaryToJson(dictionary: dataToSend) {
403
- completion(jsonString)
404
- } else {
405
- completion("Conversion to JSON failed")
406
- }
407
- return
388
+ let secondsSinceCurrentTime = lastTimeCall.timeIntervalSinceNow
389
+ guestPhone = phoneNumber
390
+ var completionCalled = false // 🔥 Biến kiểm soát callback đã gọi chưa
391
+
392
+ OmiClient.startCall(phoneNumber, isVideo: isVideo) { status in
393
+ DispatchQueue.main.async {
394
+ guard let callCurrent = self.omiLib.getCurrentCall() else {
395
+ if !completionCalled {
396
+ completion("{\"status\": \"6\", \"message\": \"REGISTER_ACCOUNT_FAIL\"}")
397
+ completionCalled = true
398
+ }
399
+ return
400
+ }
401
+
402
+ let dataToSend: [String: Any] = [
403
+ "status": status.rawValue,
404
+ "_id": String(describing: OmiCallModel(omiCall: callCurrent).uuid),
405
+ "message": OmiUtils.messageCall(type: status.rawValue)
406
+ ]
407
+
408
+ if let jsonString = OmiUtils.convertDictionaryToJson(dictionary: dataToSend) {
409
+ if !completionCalled {
410
+ completion(jsonString)
411
+ completionCalled = true
412
+ }
413
+ } else {
414
+ if !completionCalled {
415
+ completion("{\"status\": \"error\", \"message\": \"JSON conversion failed\"}")
416
+ completionCalled = true
417
+ }
418
+ }
419
+ }
408
420
  }
409
- }
410
421
  }
411
422
 
423
+
412
424
  /// Start call
413
425
  func startCallWithUuid(_ uuid: String, isVideo: Bool, completion: @escaping (_ : String) -> Void) {
414
426
  let phoneNumber = OmiClient.getPhone(uuid)
415
427
  if let phone = phoneNumber {
416
428
  guestPhone = phoneNumber ?? ""
417
- DispatchQueue.main.async {
418
- OmiClient.startCall(phone, isVideo: isVideo) { statusCall in
429
+ OmiClient.startCall(phone, isVideo: isVideo) { statusCall in
419
430
  let callCurrent = self.omiLib.getCurrentCall()
420
431
  // completion(status.rawValue)
421
432
  var dataToSend: [String: Any] = [
422
433
  "status": statusCall.rawValue,
423
434
  "_id": "",
424
- "message": self.messageCall(type: statusCall.rawValue)
435
+ "message": OmiUtils.messageCall(type: statusCall.rawValue)
425
436
  ]
426
437
  if(callCurrent != nil){
427
438
  dataToSend["_id"] = String(describing: OmiCallModel(omiCall: callCurrent!).uuid)
428
439
  }
429
- if let jsonString = self.convertDictionaryToJson(dictionary: dataToSend) {
440
+ if let jsonString = OmiUtils.convertDictionaryToJson(dictionary: dataToSend) {
430
441
  completion(jsonString)
431
442
  } else {
432
443
  completion("Conversion to JSON failed")
@@ -434,7 +445,7 @@ class CallManager {
434
445
  return
435
446
 
436
447
  }
437
- }
448
+
438
449
  return
439
450
  }
440
451
  }
@@ -495,8 +506,8 @@ class CallManager {
495
506
 
496
507
  /// Toogle speaker
497
508
  func toogleSpeaker() {
498
- let result = self.omiLib.callManager.audioController.toggleSpeaker();
499
- self.isSpeaker = result
509
+ let result = omiLib.callManager.audioController.toggleSpeaker();
510
+ isSpeaker = result
500
511
  OmikitPlugin.instance.sendSpeakerStatus()
501
512
  }
502
513
 
@@ -2,6 +2,7 @@ import Foundation
2
2
  import AVFoundation
3
3
  import SwiftUI
4
4
  import OmiKit
5
+ import Combine
5
6
 
6
7
  public class OmiUtils {
7
8
 
@@ -14,18 +15,6 @@ public class OmiUtils {
14
15
  return instance!
15
16
  }
16
17
 
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
18
  func messageCall(type: Int) -> String {
30
19
  switch(type){
31
20
  case 0:
@@ -50,4 +39,46 @@ public class OmiUtils {
50
39
  return "START_CALL_SUCCESS"
51
40
  }
52
41
  }
42
+
43
+
44
+ /// Chuyển đổi Dictionary thành JSON String
45
+ static func convertDictionaryToJson(dictionary: [String: Any]) -> String? {
46
+ do {
47
+ let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: [])
48
+ return String(data: jsonData, encoding: .utf8)
49
+ } catch {
50
+ print("⚠️ Lỗi khi chuyển đổi dictionary sang JSON: \(error.localizedDescription)")
51
+ return nil
52
+ }
53
+ }
54
+
55
+ /// Trả về thông điệp lỗi tương ứng với mã lỗi của cuộc gọi
56
+ static func messageCall(type: Int) -> String {
57
+ switch type {
58
+ case 0: return "INVALID_UUID"
59
+ case 1: return "INVALID_PHONE_NUMBER"
60
+ case 2: return "SAME_PHONE_NUMBER_WITH_PHONE_REGISTER"
61
+ case 3: return "MAX_RETRY"
62
+ case 4: return "PERMISSION_DENIED"
63
+ case 5: return "COULD_NOT_FIND_END_POINT"
64
+ case 6: return "REGISTER_ACCOUNT_FAIL"
65
+ case 7: return "START_CALL_FAIL"
66
+ case 9: return "HAVE_ANOTHER_CALL"
67
+ default: return "START_CALL_SUCCESS"
68
+ }
69
+ }
70
+
71
+ static func checkTypeNumber(phoneNumber: String) -> String {
72
+ var result = "phone"
73
+
74
+ if phoneNumber.count < 8 {
75
+ result = "internal"
76
+ } else if phoneNumber.rangeOfCharacter(from: CharacterSet.letters) != nil &&
77
+ phoneNumber.rangeOfCharacter(from: CharacterSet.decimalDigits) != nil {
78
+ result = "zalo"
79
+ }
80
+
81
+ return result
82
+ }
83
+
53
84
  }
@@ -49,15 +49,20 @@ public class OmikitPlugin: RCTEventEmitter {
49
49
  // MARK: - Call Methods
50
50
  @objc(initCallWithUserPassword:resolver:rejecter:)
51
51
  func initCallWithUserPassword(data: Any, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
52
- guard let dataOmi = data as? [String: Any] else {
53
- reject("INVALID_DATA", "Expected a dictionary with user credentials.", nil)
54
- return
55
- }
56
- let result = CallManager.shareInstance().initWithUserPasswordEndpoint(params: dataOmi)
57
- resolve(result)
52
+ // Bước 1: Kiểm tra dữ liệu đầu vào có đúng định dạng không
53
+ guard let dataOmi = data as? [String: Any] else {
54
+ reject("INVALID_DATA", "Expected a dictionary with user credentials.", nil)
55
+ return
56
+ }
57
+ // ✅ Bước 2: Gọi initWithUserPasswordEndpoint() và kiểm tra kết quả
58
+ let result = CallManager.shareInstance().initWithUserPasswordEndpoint(params: dataOmi)
59
+ if result {
60
+ resolve(true)
61
+ } else {
62
+ reject("INIT_FAILED", "Không thể login vào OMI.", nil)
63
+ }
58
64
  }
59
65
 
60
-
61
66
  @objc(initCallWithApiKey:resolver:rejecter:)
62
67
  func initCallWithApiKey(data: Any, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
63
68
  guard let dataOmi = data as? [String: Any] else {
@@ -70,17 +75,24 @@ public class OmikitPlugin: RCTEventEmitter {
70
75
 
71
76
 
72
77
  @objc(startCall:resolver:rejecter:)
73
- func startCall(data: Any, resolve: @escaping RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
74
- guard let dataOmi = data as? [String: Any],
75
- let phoneNumber = dataOmi["phoneNumber"] as? String else {
76
- reject("INVALID_DATA", "Expected a dictionary with phone number.", nil)
77
- return
78
- }
79
-
80
- let isVideo = dataOmi["isVideo"] as? Bool ?? false
81
- CallManager.shareInstance().startCall(phoneNumber, isVideo: isVideo) { callResult in
82
- resolve(callResult)
83
- }
78
+ func startCall(data: Any, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
79
+ guard let dataOmi = data as? [String: Any],
80
+ let phoneNumber = dataOmi["phoneNumber"] as? String else {
81
+ reject("INVALID_DATA", "Expected a dictionary with phone number.", nil)
82
+ return
83
+ }
84
+
85
+ let isVideo = dataOmi["isVideo"] as? Bool ?? false
86
+
87
+ CallManager.shareInstance().startCall(phoneNumber, isVideo: isVideo) { callResult in
88
+ DispatchQueue.main.async {
89
+ if let result = callResult as? String, !result.isEmpty {
90
+ resolve(result)
91
+ } else {
92
+ reject("CALL_FAILED", "You have not logged into OMI", nil)
93
+ }
94
+ }
95
+ }
84
96
  }
85
97
 
86
98
  @objc(startCallWithUuid:resolver:rejecter:)
@@ -38,11 +38,20 @@ const LINKING_ERROR = `The package 'omikit-plugin' doesn't seem to be linked. Ma
38
38
  ios: "- You have run 'pod install'\n",
39
39
  default: ''
40
40
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
41
- const OmikitPlugin = _reactNative.NativeModules.OmikitPlugin ? _reactNative.NativeModules.OmikitPlugin : new Proxy({}, {
42
- get() {
43
- throw new Error(LINKING_ERROR);
44
- }
45
- });
41
+ const {
42
+ OmikitPlugin
43
+ } = _reactNative.NativeModules;
44
+ // ✅ Khai báo chính xác Native Module
45
+ // const OmikitPlugin = NativeModules.OmikitPlugin
46
+ // ? NativeModules.OmikitPlugin
47
+ // : new Proxy(
48
+ // {},
49
+ // {
50
+ // get() {
51
+ // throw new Error(LINKING_ERROR);
52
+ // },
53
+ // }
54
+ // );
46
55
 
47
56
  /**
48
57
  * Starts the Omikit services.
@@ -282,7 +291,7 @@ function transferCall(data) {
282
291
  function rejectCall() {
283
292
  return OmikitPlugin.rejectCall();
284
293
  }
285
- const omiEmitter = new _reactNative.NativeEventEmitter(OmikitPlugin);
294
+ const omiEmitter = _reactNative.Platform.OS === 'ios' ? new _reactNative.NativeEventEmitter(OmikitPlugin) : new _reactNative.NativeEventEmitter();
286
295
  exports.omiEmitter = omiEmitter;
287
296
  const OmiCallEvent = {
288
297
  onCallStateChanged: 'CALL_STATE_CHANGED',
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","OmikitPlugin","NativeModules","Proxy","get","Error","startServices","configPushNotification","data","getInitialCall","OS","initCallWithUserPassword","initCallWithApiKey","startCall","startCallWithUuid","joinCall","endCall","toggleMute","toggleSpeaker","toggleHold","onHold","sendDTMF","switchOmiCamera","toggleOmiVideo","logout","registerVideoEvent","removeVideoEvent","getCurrentUser","getGuestUser","systemAlertWindow","openSystemAlertSetting","getAudio","setAudio","getCurrentAudio","transferCall","rejectCall","omiEmitter","NativeEventEmitter","exports","OmiCallEvent","onCallStateChanged","onSpeaker","onMuted","onRemoteVideoReady","onClickMissedCall","onSwitchboardAnswer","onCallQuality","onAudioChange","onRequestPermissionAndroid"],"sourceRoot":"../../src","sources":["omikit.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","OmikitPlugin","NativeModules","startServices","configPushNotification","data","getInitialCall","OS","initCallWithUserPassword","initCallWithApiKey","startCall","startCallWithUuid","joinCall","endCall","toggleMute","toggleSpeaker","toggleHold","onHold","sendDTMF","switchOmiCamera","toggleOmiVideo","logout","registerVideoEvent","removeVideoEvent","getCurrentUser","getGuestUser","systemAlertWindow","openSystemAlertSetting","getAudio","setAudio","getCurrentAudio","transferCall","rejectCall","omiEmitter","NativeEventEmitter","exports","OmiCallEvent","onCallStateChanged","onSpeaker","onMuted","onRemoteVideoReady","onClickMissedCall","onSwitchboardAnswer","onCallQuality","onAudioChange","onRequestPermissionAndroid"],"sourceRoot":"../../src","sources":["omikit.tsx"],"mappings":"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"}
@@ -3,11 +3,20 @@ const LINKING_ERROR = `The package 'omikit-plugin' doesn't seem to be linked. Ma
3
3
  ios: "- You have run 'pod install'\n",
4
4
  default: ''
5
5
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
6
- const OmikitPlugin = NativeModules.OmikitPlugin ? NativeModules.OmikitPlugin : new Proxy({}, {
7
- get() {
8
- throw new Error(LINKING_ERROR);
9
- }
10
- });
6
+ const {
7
+ OmikitPlugin
8
+ } = NativeModules;
9
+ // ✅ Khai báo chính xác Native Module
10
+ // const OmikitPlugin = NativeModules.OmikitPlugin
11
+ // ? NativeModules.OmikitPlugin
12
+ // : new Proxy(
13
+ // {},
14
+ // {
15
+ // get() {
16
+ // throw new Error(LINKING_ERROR);
17
+ // },
18
+ // }
19
+ // );
11
20
 
12
21
  /**
13
22
  * Starts the Omikit services.
@@ -247,7 +256,7 @@ export function transferCall(data) {
247
256
  export function rejectCall() {
248
257
  return OmikitPlugin.rejectCall();
249
258
  }
250
- export const omiEmitter = new NativeEventEmitter(OmikitPlugin);
259
+ export const omiEmitter = Platform.OS === 'ios' ? new NativeEventEmitter(OmikitPlugin) : new NativeEventEmitter();
251
260
  export const OmiCallEvent = {
252
261
  onCallStateChanged: 'CALL_STATE_CHANGED',
253
262
  onSpeaker: 'SPEAKER',
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","LINKING_ERROR","select","ios","default","OmikitPlugin","Proxy","get","Error","startServices","configPushNotification","data","getInitialCall","OS","initCallWithUserPassword","initCallWithApiKey","startCall","startCallWithUuid","joinCall","endCall","toggleMute","toggleSpeaker","toggleHold","onHold","sendDTMF","switchOmiCamera","toggleOmiVideo","logout","registerVideoEvent","removeVideoEvent","getCurrentUser","getGuestUser","systemAlertWindow","openSystemAlertSetting","getAudio","setAudio","getCurrentAudio","transferCall","rejectCall","omiEmitter","OmiCallEvent","onCallStateChanged","onSpeaker","onMuted","onRemoteVideoReady","onClickMissedCall","onSwitchboardAnswer","onCallQuality","onAudioChange","onRequestPermissionAndroid"],"sourceRoot":"../../src","sources":["omikit.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","LINKING_ERROR","select","ios","default","OmikitPlugin","startServices","configPushNotification","data","getInitialCall","OS","initCallWithUserPassword","initCallWithApiKey","startCall","startCallWithUuid","joinCall","endCall","toggleMute","toggleSpeaker","toggleHold","onHold","sendDTMF","switchOmiCamera","toggleOmiVideo","logout","registerVideoEvent","removeVideoEvent","getCurrentUser","getGuestUser","systemAlertWindow","openSystemAlertSetting","getAudio","setAudio","getCurrentAudio","transferCall","rejectCall","omiEmitter","OmiCallEvent","onCallStateChanged","onSpeaker","onMuted","onRemoteVideoReady","onClickMissedCall","onSwitchboardAnswer","onCallQuality","onAudioChange","onRequestPermissionAndroid"],"sourceRoot":"../../src","sources":["omikit.tsx"],"mappings":"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"}
@@ -31,7 +31,7 @@ Pod::Spec.new do |s|
31
31
 
32
32
  # Thêm dependency bắt buộc
33
33
  s.dependency "React-Core"
34
- s.dependency "OmiKit", "1.8.8"
34
+ s.dependency "OmiKit", "1.8.9"
35
35
 
36
36
  # Đảm bảo Swift bridging header được tự động tạo
37
37
  # s.requires_arc = true
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "omikit-plugin",
3
- "version": "3.2.70",
3
+ "version": "3.2.72",
4
4
  "description": "Omikit Plugin by ViHAT",
5
- "main": "lib/commonjs/index",
5
+ "main": "src/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "src/types/index.d.ts",
8
8
  "react-native": "src/index",
package/src/index.tsx CHANGED
@@ -2,4 +2,4 @@ export * from './omikit';
2
2
  export * from './omi_local_camera';
3
3
  export * from './omi_remote_camera';
4
4
  export * from './omi_call_state';
5
- export * from './omi_start_call_status';
5
+ export * from './omi_start_call_status';
package/src/omikit.tsx CHANGED
@@ -6,16 +6,19 @@ const LINKING_ERROR =
6
6
  '- You rebuilt the app after installing the package\n' +
7
7
  '- You are not using Expo Go\n';
8
8
 
9
- const OmikitPlugin = NativeModules.OmikitPlugin
10
- ? NativeModules.OmikitPlugin
11
- : new Proxy(
12
- {},
13
- {
14
- get() {
15
- throw new Error(LINKING_ERROR);
16
- },
17
- }
18
- );
9
+ const { OmikitPlugin } = NativeModules;
10
+ // ✅ Khai báo chính xác Native Module
11
+ // const OmikitPlugin = NativeModules.OmikitPlugin
12
+ // ? NativeModules.OmikitPlugin
13
+ // : new Proxy(
14
+ // {},
15
+ // {
16
+ // get() {
17
+ // throw new Error(LINKING_ERROR);
18
+ // },
19
+ // }
20
+ // );
21
+
19
22
 
20
23
  /**
21
24
  * Starts the Omikit services.
@@ -265,7 +268,7 @@ export function rejectCall(): Promise<boolean> {
265
268
  }
266
269
 
267
270
 
268
- export const omiEmitter = new NativeEventEmitter(OmikitPlugin);
271
+ export const omiEmitter = Platform.OS === 'ios' ? new NativeEventEmitter(OmikitPlugin) : new NativeEventEmitter();
269
272
 
270
273
  export const OmiCallEvent = {
271
274
  onCallStateChanged: 'CALL_STATE_CHANGED',
@@ -1,6 +1,6 @@
1
1
  declare module 'omikit-plugin' {
2
2
  import { NativeEventEmitter } from 'react-native';
3
-
3
+
4
4
  export function startServices(): Promise<any>;
5
5
  export function configPushNotification(data: any): Promise<any>;
6
6
  export function getInitialCall(): Promise<any>;
@@ -30,8 +30,6 @@ declare module 'omikit-plugin' {
30
30
  export function transferCall(data: any): Promise<boolean>;
31
31
  export function rejectCall(): Promise<boolean>;
32
32
 
33
- export const omiEmitter: NativeEventEmitter;
34
-
35
33
  export enum OmiCallState {
36
34
  unknown,
37
35
  calling,
@@ -42,9 +40,6 @@ declare module 'omikit-plugin' {
42
40
  disconnected,
43
41
  hold
44
42
  }
45
-
46
-
47
-
48
43
 
49
44
  export const OmiCallEvent: {
50
45
  onCallStateChanged: string;
@@ -58,4 +53,27 @@ declare module 'omikit-plugin' {
58
53
  onAudioChange: string;
59
54
  onRequestPermissionAndroid: string;
60
55
  };
61
- }
56
+
57
+
58
+
59
+ // // ✅ Định nghĩa omiEmitter để luôn listen được event
60
+ // export const omiEmitter: NativeEventEmitter;
61
+
62
+ // ✅ Định nghĩa lại `addListener`, `removeListener`, `removeAllListeners`
63
+ export interface OmiEmitterInterface extends NativeEventEmitter {
64
+ addListener(
65
+ eventType: string,
66
+ listener: (event: any) => void
67
+ ): void;
68
+
69
+ removeListener(
70
+ eventType: string,
71
+ listener: (event: any) => void
72
+ ): void;
73
+
74
+ removeAllListeners(eventType?: string): void;
75
+ }
76
+
77
+ export const omiEmitter: OmiEmitterInterface;
78
+ }
79
+