omikit-plugin 0.1.0 → 0.3.0

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.
package/README.md CHANGED
@@ -1,31 +1,165 @@
1
- # omikit-plugin
1
+ # OMICALL SDK FOR React-Native
2
2
 
3
- Audio and Video call
3
+ The OmiKit exposes the <a href="https://www.npmjs.com/package/omikit-plugin">omikit-plugin</a>.
4
4
 
5
- ## Installation
5
+ The most important part of the framework is :
6
+
7
+ - Help to easy integrate with Omicall.
8
+ - Easy custom Call UI/UX.
9
+ - Optimize codec voip for you.
10
+ - Full inteface to interactive with core function like sound/ringtone/codec.
11
+
12
+ ## Status
13
+
14
+ Currently active maintained
15
+
16
+ ## Running
17
+
18
+ Install via npm:
6
19
 
7
20
  ```sh
8
21
  npm install omikit-plugin
9
22
  ```
10
23
 
11
- ## Usage
24
+ Install via yarn:
12
25
 
13
- ```js
14
- import { multiply } from 'omikit-plugin';
26
+ ```sh
27
+ yarn add omikit-plugin
28
+ ```
15
29
 
16
- // ...
30
+ ### Configuration
17
31
 
18
- const result = await multiply(3, 7);
32
+ #### Android:
33
+
34
+ - Add this setting in `build.gradle`:
35
+
36
+ ```
37
+ jcenter() // Warning: this repository is going to shut down soon
38
+ maven {
39
+ url("https://vihat.jfrog.io/artifactory/vihat-local-repo")
40
+ credentials {
41
+ username = "anonymous"
42
+ }
43
+ }
19
44
  ```
20
45
 
21
- ## Contributing
46
+ ```
47
+ classpath 'com.google.gms:google-services:4.3.13' //in dependencies
48
+ ```
22
49
 
23
- See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
50
+ - Add this setting In `app/build.gradle`:
24
51
 
25
- ## License
52
+ ```
53
+ apply plugin: 'com.android.application'
54
+ apply plugin: 'kotlin-android'
55
+ apply plugin: 'com.google.gms.google-services'
56
+ ```
57
+
58
+ Push Notification:
59
+
60
+ - Add `google-service.json` in `android/app` (For more information, you can refer <a href="https://rnfirebase.io/">Firebase core</a>)
61
+
62
+ - For more setting information, please refer <a href="https://api.omicall.com/web-sdk/mobile-sdk/android-sdk/cau-hinh-push-notification">Omicall Config Push for Android</a>
63
+
64
+ #### iOS: Set up environment and library:
65
+
66
+ - AppDelete.h
26
67
 
27
- MIT
68
+ ```
69
+ #import <OmiKit/OmiKit-umbrella.h>
70
+ #import <UserNotifications/UserNotifications.h>
71
+
72
+ @interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
73
+
74
+ @property (nonatomic, strong) UIWindow *window;
75
+ @property (nonatomic, strong) PushKitManager *pushkitManager;
76
+ @property (nonatomic, strong) CallKitProviderDelegate * provider;
77
+ @property (nonatomic, strong) PKPushRegistry * voipRegistry;
78
+
79
+ @end
80
+
81
+ ```
28
82
 
29
- ---
83
+ - AppDelete.m
84
+
85
+ ```
86
+ #import <OmiKit/OmiKit.h>
87
+
88
+ [OmiClient setEnviroment:KEY_OMI_APP_ENVIROMENT_SANDBOX];
89
+ self.provider = [[CallKitProviderDelegate alloc] initWithCallManager: [OMISIPLib sharedInstance].callManager];
90
+ self.voipRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
91
+ self.pushkitManager = [[PushKitManager alloc] initWithVoipRegistry: self.voipRegistry];
92
+ //Add into `didFinishLaunchingWithOptions` function
93
+ ```
94
+
95
+ - Save token for `OmiClient`, if you don't use `Messaging` for iOS:
96
+
97
+ ```
98
+ - (void)application:(UIApplication*)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)devToken
99
+ {
100
+ // parse token bytes to string
101
+ const char *data = [devToken bytes];
102
+ NSMutableString *token = [NSMutableString string];
103
+ for (NSUInteger i = 0; i < [devToken length]; i++)
104
+ {
105
+ [token appendFormat:@"%02.2hhX", data[i]];
106
+ }
107
+
108
+ // print the token in the console.
109
+ NSLog(@"Push Notification Token: %@", [token copy]);
110
+ [OmiClient setUserPushNotificationToken:[token copy]];
111
+ }
112
+
113
+ ```
114
+
115
+ Push Notification:
116
+ Omicall need two certificates: VOIP Push Certificate & User Push Notification Certificate
117
+
118
+ - For more information, please refer <a href="https://api.omicall.com/web-sdk/mobile-sdk/ios-sdk/cau-hinh-push-notification">Omicall Push Notification for iOS</a>
119
+
120
+ ## Implement
121
+
122
+ - Set up Firebase Messaging: <a href="https://rnfirebase.io/messaging/usage">messaging</a> plugin.
123
+
124
+ ```
125
+ //if you use only on Android. you only implement for Android.
126
+ //because we use APNS to push notification on iOS so you don't need add Firebase for iOS.
127
+ //But you can use firebase-messaging to get APNS token for iOS.
128
+ ```
129
+
130
+ - Call actions:
131
+
132
+ * `initCall` : register and init OmiCall. You need send Object value with `userName`, `password` and `realm`.
133
+ * `updateToken` : update token for sdk. You need send `fcmToken` for Android and send `apnsToken` for iOS.
134
+ * `startCall` : start Call.
135
+ * `endCall` : end Call.
136
+ * `toggleMute` : toggle the microphone status.
137
+ * `toggleSpeaker` : toggle the voice status. You need send Object value with `useSpeaker`.
138
+ * `sendDTMF` : send DTMF for call server. You need send Object value with `character` value.
139
+
140
+ * Event listener:
141
+
142
+ ```
143
+ useEffect(() => {
144
+ omiEmitter.addListener('incomingReceived', incomingReceived);
145
+ omiEmitter.addListener('onCallEstablished', onCallEstablished);
146
+ omiEmitter.addListener('onCallEnd', onCallEnd);
147
+ omiEmitter.addListener('onMuted', onMuted);
148
+ omiEmitter.addListener('onRinging', onRinging);
149
+ return () => {
150
+ omiEmitter.removeAllListeners('incomingReceived');
151
+ omiEmitter.removeAllListeners('onCallEstablished');
152
+ omiEmitter.removeAllListeners('onCallEnd');
153
+ omiEmitter.removeAllListeners('onMuted');
154
+ omiEmitter.removeAllListeners('onRinging');
155
+ };
156
+ }, []);
157
+
158
+ ```
30
159
 
31
- Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
160
+ * Event List: `We support 5 events`
161
+ * `onCallEnd`: Trigger when end the call.
162
+ * `onCallEstablished`: Trigger when we created the call.
163
+ * `onRinging`: Trigger when the phone is ringing.
164
+ * `onHold`: Trigger when user hold the call. From parameters, you can reviceved correct status from server through `isHold`
165
+ * `onMuted`: Trigger when user muted the call. From parameters, you can reviceved correct status from server through `isMuted`
@@ -105,7 +105,8 @@ dependencies {
105
105
  // For < 0.71, this will be from the local maven repo
106
106
  // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
107
107
  //noinspection GradleDynamicVersion
108
- implementation "com.facebook.react:react-native"
108
+ // implementation "com.facebook.react:react-native"
109
+ implementation "com.facebook.react:react-native:+" // From node_modules
109
110
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
110
111
 
111
112
  api 'vn.vihat.omicall:omi-sdk:0.9.12'
@@ -1,5 +1,5 @@
1
1
  OmikitPlugin_kotlinVersion=1.7.10
2
- OmikitPlugin_minSdkVersion=21
2
+ OmikitPlugin_minSdkVersion=24
3
3
  OmikitPlugin_targetSdkVersion=33
4
4
  OmikitPlugin_compileSdkVersion=33
5
5
  OmikitPlugin_ndkversion=21.4.7075529
@@ -1,4 +1,10 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
2
  package="com.omikitplugin">
3
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
4
+ <uses-permission android:name="android.permission.USE_SIP"/>
5
+ <uses-permission android:name="android.permission.CALL_PHONE"/>
6
+ <uses-permission android:name="android.permission.CAMERA"/>
7
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
8
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
3
9
 
4
10
  </manifest>
@@ -10,47 +10,51 @@ import vn.vihat.omicall.omisdk.OmiListener
10
10
  import vn.vihat.omicall.omisdk.OmiSDKUtils
11
11
 
12
12
 
13
- class OmikitPluginModule(reactContext: ReactApplicationContext) :
13
+ class OmikitPluginModule(reactContext: ReactApplicationContext?) :
14
14
  ReactContextBaseJavaModule(reactContext), OmiListener {
15
15
 
16
16
  override fun getName(): String {
17
17
  return NAME
18
18
  }
19
19
 
20
-
21
20
  @ReactMethod
22
21
  fun initCall(data: ReadableMap, promise: Promise) {
23
- val userName = data.getString("userName") as String
24
- val password = data.getString("password") as String
25
- val realm = data.getString("realm") as String
26
- OmiClient.register(reactApplicationContext!!, userName, password, realm)
27
- ActivityCompat.requestPermissions(
28
- currentActivity!!,
29
- arrayOf(
30
- Manifest.permission.USE_SIP,
31
- Manifest.permission.CALL_PHONE,
32
- Manifest.permission.CAMERA,
33
- Manifest.permission.MODIFY_AUDIO_SETTINGS,
34
- Manifest.permission.RECORD_AUDIO,
35
- ),
36
- 0,
37
- )
38
- OmiClient.instance.setListener(this)
39
- promise.resolve(true)
22
+ currentActivity?.runOnUiThread {
23
+ val userName = data.getString("userName") as String
24
+ val password = data.getString("password") as String
25
+ val realm = data.getString("realm") as String
26
+ OmiClient.register(reactApplicationContext, userName, password, realm)
27
+ ActivityCompat.requestPermissions(
28
+ currentActivity!!,
29
+ arrayOf(
30
+ Manifest.permission.USE_SIP,
31
+ Manifest.permission.CALL_PHONE,
32
+ Manifest.permission.POST_NOTIFICATIONS,
33
+ Manifest.permission.CAMERA,
34
+ Manifest.permission.MODIFY_AUDIO_SETTINGS,
35
+ Manifest.permission.RECORD_AUDIO,
36
+ ),
37
+ 0,
38
+ )
39
+ OmiClient.instance.setListener(this)
40
+ promise.resolve(true)
41
+ }
40
42
  }
41
43
 
42
44
  @ReactMethod
43
45
  fun updateToken(data: ReadableMap, promise: Promise) {
44
- val deviceTokenAndroid = data.getString("fcmToken") as String
45
- val appId = data.getString("appId") as String
46
- val deviceId = data.getString("deviceId") as String
47
- OmiClient.instance.updatePushToken(
48
- "",
49
- deviceTokenAndroid,
50
- deviceId,
51
- appId
52
- )
53
- promise.resolve(true)
46
+ currentActivity?.runOnUiThread {
47
+ val deviceTokenAndroid = data.getString("fcmToken") as String
48
+ val appId = data.getString("appId") as String
49
+ val deviceId = data.getString("deviceId") as String
50
+ OmiClient.instance.updatePushToken(
51
+ "",
52
+ deviceTokenAndroid,
53
+ deviceId,
54
+ appId
55
+ )
56
+ promise.resolve(true)
57
+ }
54
58
  }
55
59
 
56
60
 
@@ -146,15 +150,16 @@ class OmikitPluginModule(reactContext: ReactApplicationContext) :
146
150
  grantResults: IntArray,
147
151
  act: ReactActivity,
148
152
  ) {
149
- OmiSDKUtils.handlePermissionRequest(requestCode, permissions, grantResults, act)
153
+ act.runOnUiThread {
154
+ OmiSDKUtils.handlePermissionRequest(requestCode, permissions, grantResults, act)
155
+ }
150
156
  }
151
157
  }
152
158
 
153
159
  override fun incomingReceived(callerId: Int, phoneNumber: String?) {
154
- sendEvent("incomingReceived", mapOf(
155
- "callerId" to callerId,
156
- "phoneNumber" to phoneNumber,
157
- ))
160
+ val map: WritableMap = WritableNativeMap()
161
+ map.putInt("callerId", callerId)
162
+ sendEvent("phoneNumber", phoneNumber)
158
163
  }
159
164
 
160
165
  override fun onCallEnd() {
@@ -170,13 +175,13 @@ class OmikitPluginModule(reactContext: ReactApplicationContext) :
170
175
  }
171
176
 
172
177
  override fun onHold(isHold: Boolean) {
173
-
178
+ sendEvent("onHold", null)
174
179
  }
175
180
 
176
181
  override fun onMuted(isMuted: Boolean) {
177
- sendEvent("onMuted", mapOf(
178
- "isMuted" to isMuted,
179
- ))
182
+ val map: WritableMap = WritableNativeMap()
183
+ map.putBoolean("isMuted", isMuted)
184
+ sendEvent("onMuted", map)
180
185
  }
181
186
 
182
187
  override fun onRinging() {
@@ -184,7 +189,9 @@ class OmikitPluginModule(reactContext: ReactApplicationContext) :
184
189
  }
185
190
 
186
191
  private fun sendEvent(eventName: String?, params: Any?) {
187
- reactApplicationContext.getJSModule(RCTNativeAppEventEmitter::class.java)
188
- .emit(eventName, params)
192
+ currentActivity?.runOnUiThread {
193
+ reactApplicationContext.getJSModule(RCTNativeAppEventEmitter::class.java)
194
+ .emit(eventName, params)
195
+ }
189
196
  }
190
197
  }
@@ -78,7 +78,7 @@ class CallManager {
78
78
  }
79
79
  if (call.callState == .disconnected) {
80
80
  DispatchQueue.main.async {
81
- // SwiftOmikitPlugin.instance?.sendEvent(onCallEnd, [:])
81
+ OmikitPlugin.instance.sendEvent(withName: onCallEnd, body: [:])
82
82
  self.currentConfirmedCall = nil
83
83
  }
84
84
  }
@@ -95,7 +95,7 @@ class CallManager {
95
95
  case .calling:
96
96
  if (!call.isIncoming) {
97
97
  NSLog("Outgoing call, in CALLING state, with UUID \(call.uuid)")
98
- // SwiftOmikitPlugin.instance?.sendEvent(onRinging, [:])
98
+ OmikitPlugin.instance.sendEvent(withName: onRinging, body: [:])
99
99
  }
100
100
  break
101
101
  case .early:
@@ -112,15 +112,14 @@ class CallManager {
112
112
  DispatchQueue.main.async {
113
113
  if (!call.isIncoming) {
114
114
  NSLog("Outgoing call, in CONFIRMED state, with UUID: \(call.uuid)")
115
- // SwiftOmikitPlugin.instance?.sendEvent(onCallEstablished, [:])
116
- // SwiftOmikitPlugin.instance?.sendEvent(onMuted, ["isMuted": call.muted])
115
+ OmikitPlugin.instance.sendEvent(withName: onCallEstablished, body: [:])
116
+ OmikitPlugin.instance.sendEvent(withName: onMuted, body: ["isMuted": call.muted])
117
117
  self.currentConfirmedCall = call
118
118
  return
119
119
  }
120
- //call video
121
120
  NSLog("Outgoing call, in CONFIRMED state, with UUID: \(call.uuid)")
122
- // SwiftOmikitPlugin.instance?.sendEvent(onCallEstablished, [:])
123
- // SwiftOmikitPlugin.instance?.sendEvent(onMuted, ["isMuted": call.muted])
121
+ OmikitPlugin.instance.sendEvent(withName: onCallEstablished, body: [:])
122
+ OmikitPlugin.instance.sendEvent(withName: onMuted, body: ["isMuted": call.muted])
124
123
  self.currentConfirmedCall = call
125
124
  }
126
125
  break
@@ -133,30 +132,24 @@ class CallManager {
133
132
  print(omiLib.getCurrentCall()?.uuid.uuidString)
134
133
  print(call.uuid.uuidString)
135
134
  if let currentActiveCall = currentConfirmedCall, currentActiveCall.uuid.uuidString == call.uuid.uuidString {
136
- // SwiftOmikitPlugin.instance?.sendEvent(onCallEnd, [:])
135
+ OmikitPlugin.instance.sendEvent(withName: onCallEnd, body: [:])
137
136
  currentConfirmedCall = nil
138
137
  break
139
138
  }
140
139
  if currentConfirmedCall == nil {
141
- // SwiftOmikitPlugin.instance?.sendEvent(onCallEnd, [:])
140
+ OmikitPlugin.instance.sendEvent(withName: onCallEnd, body: [:])
142
141
  break
143
142
  }
144
143
  print(omiLib.getNewestCall()?.uuid.uuidString)
145
144
  break
146
145
  case .incoming:
147
- // SwiftOmikitPlugin.instance?.sendEvent(incomingReceived, [
148
- // "callerId": call.callId,
149
- // "phoneNumber": call.callerNumber
150
- // ])SwiftOmikitPlugin.instance?.sendEvent(incomingReceived, [
151
- // "callerId": call.callId,
152
- // "phoneNumber": call.callerNumber
153
- // ])
146
+ OmikitPlugin.instance.sendEvent(withName: incomingReceived, body: ["callerId": call.callId,"phoneNumber": call.callerNumber])
154
147
  break
155
148
  case .muted:
156
- // SwiftOmikitPlugin.instance?.sendEvent(onMuted, ["isMuted": call.muted])
149
+ OmikitPlugin.instance.sendEvent(withName: onMuted, body: ["isMuted": call.muted])
157
150
  break
158
151
  case .hold:
159
- // SwiftOmikitPlugin.instance?.sendEvent(onHold, ["isHold": call.onHold])
152
+ OmikitPlugin.instance.sendEvent(withName: onHold, body: ["isHold": call.onHold])
160
153
  break
161
154
  @unknown default:
162
155
  NSLog("Default call state")
@@ -183,6 +176,7 @@ class CallManager {
183
176
  NSLog("error hanging up call(\(call.uuid.uuidString)): \(error!)")
184
177
  }
185
178
  }
179
+ OmikitPlugin.instance.sendEvent(withName: onCallEnd, body: [:])
186
180
  NotificationCenter.default.removeObserver(self)
187
181
  }
188
182
 
@@ -196,13 +190,14 @@ class CallManager {
196
190
  NSLog("error hanging up call(\(call.uuid.uuidString)): \(error!)")
197
191
  }
198
192
  }
193
+ OmikitPlugin.instance.sendEvent(withName: onCallEnd, body: [:])
199
194
  NotificationCenter.default.removeObserver(self)
200
195
  }
201
196
 
202
197
 
203
198
  func endAllCalls() {
204
199
  omiLib.callManager.endAllCalls()
205
- // SwiftOmikitPlugin.instance?.sendEvent("onCallEnd", [:])
200
+ OmikitPlugin.instance.sendEvent(withName: onCallEnd, body: [:])
206
201
  NotificationCenter.default.removeObserver(self)
207
202
  }
208
203
 
@@ -36,12 +36,12 @@ let SETINPUT = "SET_INPUT"
36
36
  let SETOUTPUT = "SET_OUTPUT"
37
37
 
38
38
  //LISTENER
39
- let onCallEstablished = "CALL_ESTABLISHED"
40
- let onCallEnd = "CALL_END"
41
- let incomingReceived = "INCOMING_RECEIVED"
42
- let onRinging = "RINGING"
43
- let onConnectionTimeout = "CONNECTION_TIMEOUT"
44
- let onHold = "HOLD"
45
- let onMuted = "MUTED"
39
+ let onCallEstablished = "onCallEstablished"
40
+ let onCallEnd = "onCallEnd"
41
+ let incomingReceived = "incomingReceived"
42
+ let onRinging = "onRinging"
43
+ let onConnectionTimeout = "onConnectionTimeout"
44
+ let onHold = "onHold"
45
+ let onMuted = "onMuted"
46
46
 
47
47
 
@@ -8,10 +8,28 @@ RCT_EXTERN_METHOD(updateToken:(id)data
8
8
  RCT_EXTERN_METHOD(initCall:(id)data
9
9
  withResolver:(RCTPromiseResolveBlock)resolve
10
10
  withRejecter:(RCTPromiseRejectBlock)reject)
11
+ RCT_EXTERN_METHOD(startCall:(id)data
12
+ withResolver:(RCTPromiseResolveBlock)resolve
13
+ withRejecter:(RCTPromiseRejectBlock)reject)
14
+ RCT_EXTERN_METHOD(endCall:(RCTPromiseResolveBlock)resolve
15
+ withRejecter:(RCTPromiseRejectBlock)reject)
16
+ RCT_EXTERN_METHOD(toggleMute:
17
+ (RCTPromiseResolveBlock)resolve
18
+ withRejecter:(RCTPromiseRejectBlock)reject)
19
+ RCT_EXTERN_METHOD(toggleSpeak:(id)data
20
+ withResolver: (RCTPromiseResolveBlock)resolve
21
+ withRejecter:(RCTPromiseRejectBlock)reject)
22
+ RCT_EXTERN_METHOD(sendDTMF:(id)data
23
+ withResolver: (RCTPromiseResolveBlock)resolve
24
+ withRejecter:(RCTPromiseRejectBlock)reject)
11
25
 
12
26
  + (BOOL)requiresMainQueueSetup
13
27
  {
14
- return NO;
28
+ return YES;
29
+ }
30
+
31
+ - (dispatch_queue_t)methodQueue {
32
+ return dispatch_get_main_queue();
15
33
  }
16
34
 
17
35
  @end
@@ -1,19 +1,82 @@
1
1
  import Foundation
2
+ import React
2
3
 
3
4
  @objc(OmikitPlugin)
4
- class OmikitPlugin: NSObject {
5
+ class OmikitPlugin: RCTEventEmitter {
6
+
7
+ public static var instance : OmikitPlugin!
8
+
9
+ override init() {
10
+ super.init()
11
+ OmikitPlugin.instance = self
12
+ }
13
+
14
+
5
15
  @objc(initCall:withResolver:withRejecter:)
6
- func initCall(data: Any, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
16
+ func initCall(data: Any, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
7
17
  if let dataOmi = data as? [String: Any] {
8
18
  CallManager.shareInstance().initEndpoint(params: dataOmi)
9
19
  resolve(true)
10
20
  }
11
21
  }
22
+
12
23
  @objc(updateToken:withResolver:withRejecter:)
13
- func updateToken(data: Any, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
24
+ func updateToken(data: Any, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
14
25
  if let dataOmi = data as? [String: Any] {
15
26
  CallManager.shareInstance().updateToken(params: dataOmi)
16
27
  resolve(true)
17
28
  }
18
29
  }
30
+
31
+ @objc(startCall:withResolver:withRejecter:)
32
+ func startCall(data: Any, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
33
+ if let dataOmi = data as? [String: Any] {
34
+ let phoneNumber = dataOmi["phoneNumber"] as! String
35
+ var isVideo = false
36
+ if let isVideoCall = dataOmi["isVideo"] as? Bool {
37
+ isVideo = isVideoCall
38
+ }
39
+ CallManager.shareInstance().startCall(phoneNumber, isVideo: isVideo)
40
+ resolve(true)
41
+ }
42
+ }
43
+
44
+ @objc(endCall:withRejecter:)
45
+ func endCall(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) -> Void {
46
+ CallManager.shareInstance().endCurrentConfirmCall()
47
+ resolve(true)
48
+ }
49
+
50
+ @objc(toggleMute:withRejecter:)
51
+ func toggleMute(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
52
+ CallManager.shareInstance().toggleMute {
53
+ NSLog("done toggle mute")
54
+ }
55
+ resolve(true)
56
+ }
57
+
58
+ @objc(toggleSpeak:withResolver:withRejecter:)
59
+ func toggleSpeak(data: Any, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
60
+ CallManager.shareInstance().toogleSpeaker()
61
+ resolve(true)
62
+ }
63
+
64
+ @objc(sendDTMF:withResolver:withRejecter:)
65
+ func sendDTMF(data: Any, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
66
+ if let dataOmi = data as? [String: Any] {
67
+ CallManager.shareInstance().sendDTMF(character: dataOmi["character"] as! String)
68
+ resolve(true)
69
+ }
70
+ }
71
+
72
+ override func supportedEvents() -> [String]! {
73
+ return [
74
+ "incomingReceived",
75
+ "onCallEnd",
76
+ "onCallEstablished",
77
+ "onConnectionTimeout",
78
+ "onMuted",
79
+ "onRinging"
80
+ ]
81
+ }
19
82
  }
@@ -7,7 +7,6 @@ exports.endCall = endCall;
7
7
  exports.initCall = initCall;
8
8
  exports.omiEmitter = void 0;
9
9
  exports.onHold = onHold;
10
- exports.onMute = onMute;
11
10
  exports.sendDTMF = sendDTMF;
12
11
  exports.startCall = startCall;
13
12
  exports.toggleMute = toggleMute;
@@ -42,14 +41,11 @@ function toggleMute() {
42
41
  return OmikitPlugin.toggleMute();
43
42
  }
44
43
  function toggleSpeak(data) {
45
- return OmikitPlugin.toggleMute(data);
44
+ return OmikitPlugin.toggleSpeak(data);
46
45
  }
47
46
  function onHold(data) {
48
47
  return OmikitPlugin.onHold(data);
49
48
  }
50
- function onMute(data) {
51
- return OmikitPlugin.onMute(data);
52
- }
53
49
  function sendDTMF(data) {
54
50
  return OmikitPlugin.sendDTMF(data);
55
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","OmikitPlugin","NativeModules","Proxy","get","Error","initCall","data","console","log","updateToken","startCall","endCall","toggleMute","toggleSpeak","onHold","onMute","sendDTMF","omiEmitter","NativeEventEmitter","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAChB,wEAAuE,GACxEC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,YAAY,GAAGC,0BAAa,CAACD,YAAY,GAC3CC,0BAAa,CAACD,YAAY,GAC1B,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEE,SAASU,QAAQA,CAACC,IAAS,EAAoB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAON,YAAY,CAACK,QAAQ,CAACC,IAAI,CAAC;AACpC;AAEO,SAASG,WAAWA,CAACH,IAAS,EAAiB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAON,YAAY,CAACS,WAAW,CAACH,IAAI,CAAC;AACvC;AAEO,SAASI,SAASA,CAACJ,IAAS,EAAoB;EACrDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAON,YAAY,CAACU,SAAS,CAACJ,IAAI,CAAC;AACrC;AAEO,SAASK,OAAOA,CAAA,EAAqB;EAC1C,OAAOX,YAAY,CAACW,OAAO,EAAE;AAC/B;AAEO,SAASC,UAAUA,CAAA,EAAqB;EAC7C,OAAOZ,YAAY,CAACY,UAAU,EAAE;AAClC;AAEO,SAASC,WAAWA,CAACP,IAAS,EAAoB;EACvD,OAAON,YAAY,CAACY,UAAU,CAACN,IAAI,CAAC;AACtC;AAEO,SAASQ,MAAMA,CAACR,IAAS,EAAoB;EAClD,OAAON,YAAY,CAACc,MAAM,CAACR,IAAI,CAAC;AAClC;AAEO,SAASS,MAAMA,CAACT,IAAS,EAAoB;EAClD,OAAON,YAAY,CAACe,MAAM,CAACT,IAAI,CAAC;AAClC;AAEO,SAASU,QAAQA,CAACV,IAAS,EAAoB;EACpD,OAAON,YAAY,CAACgB,QAAQ,CAACV,IAAI,CAAC;AACpC;AAEO,MAAMW,UAAU,GAAG,IAAIC,+BAAkB,CAAClB,YAAY,CAAC;AAACmB,OAAA,CAAAF,UAAA,GAAAA,UAAA"}
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","OmikitPlugin","NativeModules","Proxy","get","Error","initCall","data","console","log","updateToken","startCall","endCall","toggleMute","toggleSpeak","onHold","sendDTMF","omiEmitter","NativeEventEmitter","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAChB,wEAAuE,GACxEC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,YAAY,GAAGC,0BAAa,CAACD,YAAY,GAC3CC,0BAAa,CAACD,YAAY,GAC1B,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEE,SAASU,QAAQA,CAACC,IAAS,EAAoB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAON,YAAY,CAACK,QAAQ,CAACC,IAAI,CAAC;AACpC;AAEO,SAASG,WAAWA,CAACH,IAAS,EAAiB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAON,YAAY,CAACS,WAAW,CAACH,IAAI,CAAC;AACvC;AAEO,SAASI,SAASA,CAACJ,IAAS,EAAoB;EACrDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAON,YAAY,CAACU,SAAS,CAACJ,IAAI,CAAC;AACrC;AAEO,SAASK,OAAOA,CAAA,EAAqB;EAC1C,OAAOX,YAAY,CAACW,OAAO,EAAE;AAC/B;AAEO,SAASC,UAAUA,CAAA,EAAqB;EAC7C,OAAOZ,YAAY,CAACY,UAAU,EAAE;AAClC;AAEO,SAASC,WAAWA,CAACP,IAAS,EAAoB;EACvD,OAAON,YAAY,CAACa,WAAW,CAACP,IAAI,CAAC;AACvC;AAEO,SAASQ,MAAMA,CAACR,IAAS,EAAoB;EAClD,OAAON,YAAY,CAACc,MAAM,CAACR,IAAI,CAAC;AAClC;AAEO,SAASS,QAAQA,CAACT,IAAS,EAAoB;EACpD,OAAON,YAAY,CAACe,QAAQ,CAACT,IAAI,CAAC;AACpC;AAEO,MAAMU,UAAU,GAAG,IAAIC,+BAAkB,CAACjB,YAAY,CAAC;AAACkB,OAAA,CAAAF,UAAA,GAAAA,UAAA"}
@@ -27,14 +27,11 @@ export function toggleMute() {
27
27
  return OmikitPlugin.toggleMute();
28
28
  }
29
29
  export function toggleSpeak(data) {
30
- return OmikitPlugin.toggleMute(data);
30
+ return OmikitPlugin.toggleSpeak(data);
31
31
  }
32
32
  export function onHold(data) {
33
33
  return OmikitPlugin.onHold(data);
34
34
  }
35
- export function onMute(data) {
36
- return OmikitPlugin.onMute(data);
37
- }
38
35
  export function sendDTMF(data) {
39
36
  return OmikitPlugin.sendDTMF(data);
40
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","LINKING_ERROR","select","ios","default","OmikitPlugin","Proxy","get","Error","initCall","data","console","log","updateToken","startCall","endCall","toggleMute","toggleSpeak","onHold","onMute","sendDTMF","omiEmitter"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAE1E,MAAMC,aAAa,GAChB,wEAAuE,GACxEF,QAAQ,CAACG,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,YAAY,GAAGP,aAAa,CAACO,YAAY,GAC3CP,aAAa,CAACO,YAAY,GAC1B,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,SAASQ,QAAQA,CAACC,IAAS,EAAoB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAOL,YAAY,CAACI,QAAQ,CAACC,IAAI,CAAC;AACpC;AAEA,OAAO,SAASG,WAAWA,CAACH,IAAS,EAAiB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAOL,YAAY,CAACQ,WAAW,CAACH,IAAI,CAAC;AACvC;AAEA,OAAO,SAASI,SAASA,CAACJ,IAAS,EAAoB;EACrDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAOL,YAAY,CAACS,SAAS,CAACJ,IAAI,CAAC;AACrC;AAEA,OAAO,SAASK,OAAOA,CAAA,EAAqB;EAC1C,OAAOV,YAAY,CAACU,OAAO,EAAE;AAC/B;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAqB;EAC7C,OAAOX,YAAY,CAACW,UAAU,EAAE;AAClC;AAEA,OAAO,SAASC,WAAWA,CAACP,IAAS,EAAoB;EACvD,OAAOL,YAAY,CAACW,UAAU,CAACN,IAAI,CAAC;AACtC;AAEA,OAAO,SAASQ,MAAMA,CAACR,IAAS,EAAoB;EAClD,OAAOL,YAAY,CAACa,MAAM,CAACR,IAAI,CAAC;AAClC;AAEA,OAAO,SAASS,MAAMA,CAACT,IAAS,EAAoB;EAClD,OAAOL,YAAY,CAACc,MAAM,CAACT,IAAI,CAAC;AAClC;AAEA,OAAO,SAASU,QAAQA,CAACV,IAAS,EAAoB;EACpD,OAAOL,YAAY,CAACe,QAAQ,CAACV,IAAI,CAAC;AACpC;AAEA,OAAO,MAAMW,UAAU,GAAG,IAAIrB,kBAAkB,CAACK,YAAY,CAAC"}
1
+ {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","LINKING_ERROR","select","ios","default","OmikitPlugin","Proxy","get","Error","initCall","data","console","log","updateToken","startCall","endCall","toggleMute","toggleSpeak","onHold","sendDTMF","omiEmitter"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAE1E,MAAMC,aAAa,GAChB,wEAAuE,GACxEF,QAAQ,CAACG,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,YAAY,GAAGP,aAAa,CAACO,YAAY,GAC3CP,aAAa,CAACO,YAAY,GAC1B,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,SAASQ,QAAQA,CAACC,IAAS,EAAoB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAOL,YAAY,CAACI,QAAQ,CAACC,IAAI,CAAC;AACpC;AAEA,OAAO,SAASG,WAAWA,CAACH,IAAS,EAAiB;EACpDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAOL,YAAY,CAACQ,WAAW,CAACH,IAAI,CAAC;AACvC;AAEA,OAAO,SAASI,SAASA,CAACJ,IAAS,EAAoB;EACrDC,OAAO,CAACC,GAAG,CAACF,IAAI,CAAC;EACjB,OAAOL,YAAY,CAACS,SAAS,CAACJ,IAAI,CAAC;AACrC;AAEA,OAAO,SAASK,OAAOA,CAAA,EAAqB;EAC1C,OAAOV,YAAY,CAACU,OAAO,EAAE;AAC/B;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAqB;EAC7C,OAAOX,YAAY,CAACW,UAAU,EAAE;AAClC;AAEA,OAAO,SAASC,WAAWA,CAACP,IAAS,EAAoB;EACvD,OAAOL,YAAY,CAACY,WAAW,CAACP,IAAI,CAAC;AACvC;AAEA,OAAO,SAASQ,MAAMA,CAACR,IAAS,EAAoB;EAClD,OAAOL,YAAY,CAACa,MAAM,CAACR,IAAI,CAAC;AAClC;AAEA,OAAO,SAASS,QAAQA,CAACT,IAAS,EAAoB;EACpD,OAAOL,YAAY,CAACc,QAAQ,CAACT,IAAI,CAAC;AACpC;AAEA,OAAO,MAAMU,UAAU,GAAG,IAAIpB,kBAAkB,CAACK,YAAY,CAAC"}
@@ -6,7 +6,6 @@ export declare function endCall(): Promise<boolean>;
6
6
  export declare function toggleMute(): Promise<boolean>;
7
7
  export declare function toggleSpeak(data: any): Promise<boolean>;
8
8
  export declare function onHold(data: any): Promise<boolean>;
9
- export declare function onMute(data: any): Promise<boolean>;
10
9
  export declare function sendDTMF(data: any): Promise<boolean>;
11
10
  export declare const omiEmitter: NativeEventEmitter;
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAmB3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrD;AAED,wBAAgB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAE1C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAE7C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAElD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpD;AAED,eAAO,MAAM,UAAU,oBAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAmB3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrD;AAED,wBAAgB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAE1C;AAED,wBAAgB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAE7C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpD;AAED,eAAO,MAAM,UAAU,oBAAuC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "omikit-plugin",
3
- "version": "0.1.0",
4
- "description": "test",
3
+ "version": "0.3.0",
4
+ "description": "Omikit Plugin by ViHAT",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/index.d.ts",
@@ -70,8 +70,8 @@
70
70
  "jest": "^28.1.1",
71
71
  "pod-install": "^0.1.0",
72
72
  "prettier": "^2.0.5",
73
- "react": "18.2.0",
74
- "react-native": "0.71.3",
73
+ "react": "^18.0.0",
74
+ "react-native": "^0.71.3",
75
75
  "react-native-builder-bob": "^0.20.0",
76
76
  "release-it": "^15.0.0",
77
77
  "typescript": "^4.5.2"
package/src/index.tsx CHANGED
@@ -41,17 +41,13 @@ export function toggleMute(): Promise<boolean> {
41
41
  }
42
42
 
43
43
  export function toggleSpeak(data: any): Promise<boolean> {
44
- return OmikitPlugin.toggleMute(data);
44
+ return OmikitPlugin.toggleSpeak(data);
45
45
  }
46
46
 
47
47
  export function onHold(data: any): Promise<boolean> {
48
48
  return OmikitPlugin.onHold(data);
49
49
  }
50
50
 
51
- export function onMute(data: any): Promise<boolean> {
52
- return OmikitPlugin.onMute(data);
53
- }
54
-
55
51
  export function sendDTMF(data: any): Promise<boolean> {
56
52
  return OmikitPlugin.sendDTMF(data);
57
53
  }