omikit-plugin 3.3.28 → 4.0.1
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 +949 -1223
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/omikitplugin/FLLocalCameraModule.kt +1 -1
- package/android/src/main/java/com/omikitplugin/FLRemoteCameraModule.kt +1 -1
- package/android/src/main/java/com/omikitplugin/OmikitPluginModule.kt +277 -325
- package/android/src/main/java/com/omikitplugin/constants/constant.kt +2 -1
- package/ios/CallProcess/CallManager.swift +45 -35
- package/ios/Constant/Constant.swift +1 -0
- package/ios/Library/OmikitPlugin.m +75 -1
- package/ios/Library/OmikitPlugin.swift +199 -16
- package/ios/OmikitPlugin-Protocol.h +161 -0
- package/lib/commonjs/NativeOmikitPlugin.js +9 -0
- package/lib/commonjs/NativeOmikitPlugin.js.map +1 -0
- package/lib/commonjs/index.js +11 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/omi_audio_type.js +20 -0
- package/lib/commonjs/omi_audio_type.js.map +1 -0
- package/lib/commonjs/omi_local_camera.js +12 -2
- package/lib/commonjs/omi_local_camera.js.map +1 -1
- package/lib/commonjs/omi_remote_camera.js +12 -2
- package/lib/commonjs/omi_remote_camera.js.map +1 -1
- package/lib/commonjs/omi_start_call_status.js +30 -0
- package/lib/commonjs/omi_start_call_status.js.map +1 -1
- package/lib/commonjs/omikit.js +110 -16
- package/lib/commonjs/omikit.js.map +1 -1
- package/lib/module/NativeOmikitPlugin.js +3 -0
- package/lib/module/NativeOmikitPlugin.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/omi_audio_type.js +14 -0
- package/lib/module/omi_audio_type.js.map +1 -0
- package/lib/module/omi_local_camera.js +13 -2
- package/lib/module/omi_local_camera.js.map +1 -1
- package/lib/module/omi_remote_camera.js +13 -2
- package/lib/module/omi_remote_camera.js.map +1 -1
- package/lib/module/omi_start_call_status.js +30 -0
- package/lib/module/omi_start_call_status.js.map +1 -1
- package/lib/module/omikit.js +104 -17
- package/lib/module/omikit.js.map +1 -1
- package/omikit-plugin.podspec +26 -24
- package/package.json +11 -2
- package/src/NativeOmikitPlugin.ts +160 -0
- package/src/index.tsx +2 -1
- package/src/omi_audio_type.tsx +9 -0
- package/src/omi_local_camera.tsx +12 -3
- package/src/omi_remote_camera.tsx +12 -3
- package/src/omi_start_call_status.tsx +29 -10
- package/src/omikit.tsx +96 -19
- package/src/types/index.d.ts +111 -11
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { NativeModules, requireNativeComponent } from 'react-native';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
// Camera Views always use Paper (requireNativeComponent) because:
|
|
4
|
+
// - iOS native code doesn't have Fabric ComponentView implementation yet
|
|
5
|
+
// - Paper components work fine even when New Architecture is enabled
|
|
6
|
+
// - This avoids undefined symbol errors (_FLLocalCameraViewCls)
|
|
7
|
+
const OmiLocalCameraViewPaper = requireNativeComponent('FLLocalCameraView');
|
|
8
|
+
|
|
9
|
+
// Export the Paper component
|
|
10
|
+
export const OmiLocalCameraView = OmiLocalCameraViewPaper;
|
|
11
|
+
|
|
12
|
+
// Module name separated from ViewManager name to avoid name collision
|
|
13
|
+
const FLLocalCamera = NativeModules.FLLocalCameraModule || NativeModules.FLLocalCameraView;
|
|
4
14
|
export function refreshLocalCamera() {
|
|
15
|
+
if (!FLLocalCamera) return Promise.resolve(false);
|
|
5
16
|
return FLLocalCamera.refresh();
|
|
6
17
|
}
|
|
7
18
|
//# sourceMappingURL=omi_local_camera.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","requireNativeComponent","FLLocalCamera","
|
|
1
|
+
{"version":3,"names":["NativeModules","requireNativeComponent","OmiLocalCameraViewPaper","OmiLocalCameraView","FLLocalCamera","FLLocalCameraModule","FLLocalCameraView","refreshLocalCamera","Promise","resolve","refresh"],"sourceRoot":"../../src","sources":["omi_local_camera.tsx"],"mappings":"AACA,SAASA,aAAa,EAAEC,sBAAsB,QAAmB,cAAc;;AAE/E;AACA;AACA;AACA;AACA,MAAMC,uBAAiD,GAAGD,sBAAsB,CAC9E,mBACF,CAAC;;AAED;AACA,OAAO,MAAME,kBAA4C,GAAGD,uBAAuB;;AAEnF;AACA,MAAME,aAAa,GAAGJ,aAAa,CAACK,mBAAmB,IAAIL,aAAa,CAACM,iBAAiB;AAC1F,OAAO,SAASC,kBAAkBA,CAAA,EAAqB;EACrD,IAAI,CAACH,aAAa,EAAE,OAAOI,OAAO,CAACC,OAAO,CAAC,KAAK,CAAC;EACjD,OAAOL,aAAa,CAACM,OAAO,CAAC,CAAC;AAChC","ignoreList":[]}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { NativeModules, requireNativeComponent } from 'react-native';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
// Camera Views always use Paper (requireNativeComponent) because:
|
|
4
|
+
// - iOS native code doesn't have Fabric ComponentView implementation yet
|
|
5
|
+
// - Paper components work fine even when New Architecture is enabled
|
|
6
|
+
// - This avoids undefined symbol errors (_FLRemoteCameraViewCls)
|
|
7
|
+
const OmiRemoteCameraViewPaper = requireNativeComponent('FLRemoteCameraView');
|
|
8
|
+
|
|
9
|
+
// Export the Paper component
|
|
10
|
+
export const OmiRemoteCameraView = OmiRemoteCameraViewPaper;
|
|
11
|
+
|
|
12
|
+
// Module name separated from ViewManager name to avoid name collision
|
|
13
|
+
const FLRemoteCamera = NativeModules.FLRemoteCameraModule || NativeModules.FLRemoteCameraView;
|
|
4
14
|
export function refreshRemoteCamera() {
|
|
15
|
+
if (!FLRemoteCamera) return Promise.resolve(false);
|
|
5
16
|
return FLRemoteCamera.refresh();
|
|
6
17
|
}
|
|
7
18
|
//# sourceMappingURL=omi_remote_camera.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","requireNativeComponent","FLRemoteCamera","
|
|
1
|
+
{"version":3,"names":["NativeModules","requireNativeComponent","OmiRemoteCameraViewPaper","OmiRemoteCameraView","FLRemoteCamera","FLRemoteCameraModule","FLRemoteCameraView","refreshRemoteCamera","Promise","resolve","refresh"],"sourceRoot":"../../src","sources":["omi_remote_camera.tsx"],"mappings":"AACA,SAASA,aAAa,EAAEC,sBAAsB,QAAmB,cAAc;;AAE/E;AACA;AACA;AACA;AACA,MAAMC,wBAAkD,GAAGD,sBAAsB,CAC/E,oBACF,CAAC;;AAED;AACA,OAAO,MAAME,mBAA6C,GAAGD,wBAAwB;;AAErF;AACA,MAAME,cAAc,GAAGJ,aAAa,CAACK,oBAAoB,IAAIL,aAAa,CAACM,kBAAkB;AAC7F,OAAO,SAASC,mBAAmBA,CAAA,EAAqB;EACtD,IAAI,CAACH,cAAc,EAAE,OAAOI,OAAO,CAACC,OAAO,CAAC,KAAK,CAAC;EAClD,OAAOL,cAAc,CAACM,OAAO,CAAC,CAAC;AACjC","ignoreList":[]}
|
|
@@ -1,14 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status codes returned by startCall() function
|
|
3
|
+
* Use these to handle different call initiation results
|
|
4
|
+
*/
|
|
1
5
|
export let OmiStartCallStatus = /*#__PURE__*/function (OmiStartCallStatus) {
|
|
6
|
+
// Validation errors (0-3)
|
|
2
7
|
OmiStartCallStatus[OmiStartCallStatus["invalidUuid"] = 0] = "invalidUuid";
|
|
8
|
+
// Invalid user UUID
|
|
3
9
|
OmiStartCallStatus[OmiStartCallStatus["invalidPhoneNumber"] = 1] = "invalidPhoneNumber";
|
|
10
|
+
// Invalid phone number format
|
|
4
11
|
OmiStartCallStatus[OmiStartCallStatus["samePhoneNumber"] = 2] = "samePhoneNumber";
|
|
12
|
+
// Cannot call same phone number
|
|
5
13
|
OmiStartCallStatus[OmiStartCallStatus["maxRetry"] = 3] = "maxRetry";
|
|
14
|
+
// Maximum retry attempts reached
|
|
15
|
+
// Permission errors (4, 450-452)
|
|
6
16
|
OmiStartCallStatus[OmiStartCallStatus["permissionDenied"] = 4] = "permissionDenied";
|
|
17
|
+
// Microphone/Camera permission denied
|
|
18
|
+
OmiStartCallStatus[OmiStartCallStatus["permissionMicrophone"] = 450] = "permissionMicrophone";
|
|
19
|
+
// Microphone permission required (Android 15+)
|
|
20
|
+
OmiStartCallStatus[OmiStartCallStatus["permissionCamera"] = 451] = "permissionCamera";
|
|
21
|
+
// Camera permission required (Android 15+)
|
|
22
|
+
OmiStartCallStatus[OmiStartCallStatus["permissionOverlay"] = 452] = "permissionOverlay";
|
|
23
|
+
// System alert window permission required (Android 15+)
|
|
24
|
+
// Call errors (5-7)
|
|
7
25
|
OmiStartCallStatus[OmiStartCallStatus["couldNotFindEndpoint"] = 5] = "couldNotFindEndpoint";
|
|
26
|
+
// Could not find endpoint
|
|
8
27
|
OmiStartCallStatus[OmiStartCallStatus["accountRegisterFailed"] = 6] = "accountRegisterFailed";
|
|
28
|
+
// Account registration failed
|
|
9
29
|
OmiStartCallStatus[OmiStartCallStatus["startCallFailed"] = 7] = "startCallFailed";
|
|
30
|
+
// Start call failed
|
|
31
|
+
// Success statuses (8, 407)
|
|
10
32
|
OmiStartCallStatus[OmiStartCallStatus["startCallSuccess"] = 8] = "startCallSuccess";
|
|
33
|
+
// Call initiated successfully (Android)
|
|
34
|
+
OmiStartCallStatus[OmiStartCallStatus["startCallSuccessIOS"] = 407] = "startCallSuccessIOS";
|
|
35
|
+
// Call initiated successfully (iOS)
|
|
36
|
+
// Other errors (9+)
|
|
11
37
|
OmiStartCallStatus[OmiStartCallStatus["haveAnotherCall"] = 9] = "haveAnotherCall";
|
|
38
|
+
// Already have another call in progress
|
|
39
|
+
OmiStartCallStatus[OmiStartCallStatus["accountTurnOffNumberInternal"] = 10] = "accountTurnOffNumberInternal";
|
|
40
|
+
// Internal number has been deactivated
|
|
41
|
+
OmiStartCallStatus[OmiStartCallStatus["noNetwork"] = 11] = "noNetwork"; // No network connection available
|
|
12
42
|
return OmiStartCallStatus;
|
|
13
43
|
}({});
|
|
14
44
|
//# sourceMappingURL=omi_start_call_status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OmiStartCallStatus"],"sourceRoot":"../../src","sources":["omi_start_call_status.tsx"],"mappings":"AAAA,WAAYA,kBAAkB,0BAAlBA,kBAAkB;
|
|
1
|
+
{"version":3,"names":["OmiStartCallStatus"],"sourceRoot":"../../src","sources":["omi_start_call_status.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA,WAAYA,kBAAkB,0BAAlBA,kBAAkB;EAC5B;EADUA,kBAAkB,CAAlBA,kBAAkB;EAEE;EAFpBA,kBAAkB,CAAlBA,kBAAkB;EAGE;EAHpBA,kBAAkB,CAAlBA,kBAAkB;EAIE;EAJpBA,kBAAkB,CAAlBA,kBAAkB;EAKE;EAE9B;EAPUA,kBAAkB,CAAlBA,kBAAkB;EAQE;EARpBA,kBAAkB,CAAlBA,kBAAkB;EASE;EATpBA,kBAAkB,CAAlBA,kBAAkB;EAUE;EAVpBA,kBAAkB,CAAlBA,kBAAkB;EAWE;EAE9B;EAbUA,kBAAkB,CAAlBA,kBAAkB;EAcE;EAdpBA,kBAAkB,CAAlBA,kBAAkB;EAeE;EAfpBA,kBAAkB,CAAlBA,kBAAkB;EAgBE;EAE9B;EAlBUA,kBAAkB,CAAlBA,kBAAkB;EAmBE;EAnBpBA,kBAAkB,CAAlBA,kBAAkB;EAoBE;EAE9B;EAtBUA,kBAAkB,CAAlBA,kBAAkB;EAuBE;EAvBpBA,kBAAkB,CAAlBA,kBAAkB;EAwBO;EAxBzBA,kBAAkB,CAAlBA,kBAAkB,mCAyBE;EAAA,OAzBpBA,kBAAkB;AAAA","ignoreList":[]}
|
package/lib/module/omikit.js
CHANGED
|
@@ -1,18 +1,34 @@
|
|
|
1
|
-
import { NativeModules, Platform, NativeEventEmitter, DeviceEventEmitter } from 'react-native';
|
|
1
|
+
import { NativeModules, Platform, NativeEventEmitter, DeviceEventEmitter, TurboModuleRegistry } from 'react-native';
|
|
2
2
|
const LINKING_ERROR = `The package 'omikit-plugin' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
|
|
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
6
|
|
|
7
|
-
//
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
// Runtime detection: Try TurboModule first, fallback to NativeModule
|
|
8
|
+
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
9
|
+
const OmikitPlugin = (() => {
|
|
10
|
+
if (isTurboModuleEnabled) {
|
|
11
|
+
// New Architecture - use TurboModule
|
|
12
|
+
const turboModule = TurboModuleRegistry.get('OmikitPlugin');
|
|
13
|
+
if (turboModule) {
|
|
14
|
+
return turboModule;
|
|
15
|
+
}
|
|
11
16
|
}
|
|
12
|
-
});
|
|
13
17
|
|
|
14
|
-
//
|
|
15
|
-
|
|
18
|
+
// Old Architecture - fallback to NativeModule
|
|
19
|
+
return NativeModules.OmikitPlugin || new Proxy({}, {
|
|
20
|
+
get() {
|
|
21
|
+
throw new Error(LINKING_ERROR);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
})();
|
|
25
|
+
|
|
26
|
+
// Setup omiEmitter for iOS and Android
|
|
27
|
+
// In bridgeless mode, NativeModules is empty — use TurboModule instance instead
|
|
28
|
+
const omiEmitter = Platform.OS === 'ios' ? new NativeEventEmitter(NativeModules.OmikitPlugin ?? OmikitPlugin ?? {
|
|
29
|
+
addListener: () => {},
|
|
30
|
+
removeListeners: () => {}
|
|
31
|
+
}) : DeviceEventEmitter;
|
|
16
32
|
|
|
17
33
|
/**
|
|
18
34
|
* Starts the Omikit services.
|
|
@@ -32,14 +48,18 @@ export function configPushNotification(data) {
|
|
|
32
48
|
}
|
|
33
49
|
|
|
34
50
|
/**
|
|
35
|
-
* Retrieves the initial call details when start call
|
|
51
|
+
* Retrieves the initial call details when start call
|
|
36
52
|
* @returns {Promise<any>} A promise containing the initial call details.
|
|
37
53
|
*/
|
|
38
54
|
export function getInitialCall() {
|
|
39
55
|
if (Platform.OS == "ios") {
|
|
40
|
-
return OmikitPlugin.getInitialCall(
|
|
56
|
+
return OmikitPlugin.getInitialCall({
|
|
57
|
+
counter: 0
|
|
58
|
+
});
|
|
41
59
|
} else {
|
|
42
|
-
return OmikitPlugin.getInitialCall(
|
|
60
|
+
return OmikitPlugin.getInitialCall({
|
|
61
|
+
counter: 4
|
|
62
|
+
});
|
|
43
63
|
}
|
|
44
64
|
}
|
|
45
65
|
|
|
@@ -64,7 +84,7 @@ export function initCallWithApiKey(data) {
|
|
|
64
84
|
/**
|
|
65
85
|
* Starts a new call with the given data.
|
|
66
86
|
* @param {any} data - Call configuration data.
|
|
67
|
-
* @returns {Promise<
|
|
87
|
+
* @returns {Promise<any>} A promise that resolves with call details if successful.
|
|
68
88
|
*/
|
|
69
89
|
export function startCall(data) {
|
|
70
90
|
return OmikitPlugin.startCall(data);
|
|
@@ -97,7 +117,7 @@ export function endCall() {
|
|
|
97
117
|
|
|
98
118
|
/**
|
|
99
119
|
* Toggles the mute status of the microphone.
|
|
100
|
-
* @returns {Promise<boolean>} A promise that resolves to `true` if the microphone is muted, `false` otherwise.
|
|
120
|
+
* @returns {Promise<boolean | null>} A promise that resolves to `true` if the microphone is muted, `false` otherwise, or `null` if unavailable.
|
|
101
121
|
*/
|
|
102
122
|
export function toggleMute() {
|
|
103
123
|
return OmikitPlugin.toggleMute();
|
|
@@ -113,7 +133,7 @@ export function toggleSpeaker() {
|
|
|
113
133
|
|
|
114
134
|
/**
|
|
115
135
|
* Toggles the hold call.
|
|
116
|
-
* @returns {Promise<
|
|
136
|
+
* @returns {Promise<void>} A promise that resolves when hold call is toggled.
|
|
117
137
|
*/
|
|
118
138
|
export function toggleHold() {
|
|
119
139
|
return OmikitPlugin.toggleHold();
|
|
@@ -269,7 +289,9 @@ export function hideSystemNotificationOnly() {
|
|
|
269
289
|
return OmikitPlugin.hideSystemNotificationOnly();
|
|
270
290
|
}
|
|
271
291
|
export function hideSystemNotificationAndUnregister(reason) {
|
|
272
|
-
return OmikitPlugin.hideSystemNotificationAndUnregister(
|
|
292
|
+
return OmikitPlugin.hideSystemNotificationAndUnregister({
|
|
293
|
+
reason
|
|
294
|
+
});
|
|
273
295
|
}
|
|
274
296
|
export const OmiCallEvent = {
|
|
275
297
|
onCallStateChanged: 'CALL_STATE_CHANGED',
|
|
@@ -323,7 +345,9 @@ export function checkAndRequestPermissions(isVideo = false) {
|
|
|
323
345
|
if (Platform.OS !== 'android') {
|
|
324
346
|
return Promise.resolve(true);
|
|
325
347
|
}
|
|
326
|
-
return OmikitPlugin.checkAndRequestPermissions(
|
|
348
|
+
return OmikitPlugin.checkAndRequestPermissions({
|
|
349
|
+
isVideo
|
|
350
|
+
});
|
|
327
351
|
}
|
|
328
352
|
|
|
329
353
|
/**
|
|
@@ -347,6 +371,69 @@ export function requestPermissionsByCodes(codes) {
|
|
|
347
371
|
if (Platform.OS !== 'android') {
|
|
348
372
|
return Promise.resolve(true);
|
|
349
373
|
}
|
|
350
|
-
return OmikitPlugin.requestPermissionsByCodes(
|
|
374
|
+
return OmikitPlugin.requestPermissionsByCodes({
|
|
375
|
+
codes
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// MARK: - Getter Functions
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Retrieves user info by phone number.
|
|
383
|
+
* @param {string} phone - The phone number to look up.
|
|
384
|
+
* @returns {Promise<any>} User info object or null.
|
|
385
|
+
*/
|
|
386
|
+
export function getUserInfo(phone) {
|
|
387
|
+
return OmikitPlugin.getUserInfo({
|
|
388
|
+
phone
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Retrieves the project ID from OmiClient.
|
|
394
|
+
* @returns {Promise<string | null>} The project ID or null.
|
|
395
|
+
*/
|
|
396
|
+
export function getProjectId() {
|
|
397
|
+
return OmikitPlugin.getProjectId();
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Retrieves SIP connection info (user@realm).
|
|
402
|
+
* @returns {Promise<string | null>} SIP info string or null.
|
|
403
|
+
*/
|
|
404
|
+
export function getSipInfo() {
|
|
405
|
+
return OmikitPlugin.getSipInfo();
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Retrieves the app ID from OmiClient.
|
|
410
|
+
* @returns {Promise<string | null>} The app ID or null.
|
|
411
|
+
*/
|
|
412
|
+
export function getAppId() {
|
|
413
|
+
return OmikitPlugin.getAppId();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* Retrieves the device ID from OmiClient.
|
|
418
|
+
* @returns {Promise<string | null>} The device ID or null.
|
|
419
|
+
*/
|
|
420
|
+
export function getDeviceId() {
|
|
421
|
+
return OmikitPlugin.getDeviceId();
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Retrieves the FCM token from OmiClient.
|
|
426
|
+
* @returns {Promise<string | null>} The FCM token or null.
|
|
427
|
+
*/
|
|
428
|
+
export function getFcmToken() {
|
|
429
|
+
return OmikitPlugin.getFcmToken();
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Retrieves the VoIP token (iOS only, Android returns null).
|
|
434
|
+
* @returns {Promise<string | null>} The VoIP token or null.
|
|
435
|
+
*/
|
|
436
|
+
export function getVoipToken() {
|
|
437
|
+
return OmikitPlugin.getVoipToken();
|
|
351
438
|
}
|
|
352
439
|
//# sourceMappingURL=omikit.js.map
|
package/lib/module/omikit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","NativeEventEmitter","DeviceEventEmitter","LINKING_ERROR","select","ios","default","OmikitPlugin","
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","NativeEventEmitter","DeviceEventEmitter","TurboModuleRegistry","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","OmikitPlugin","turboModule","get","Proxy","Error","omiEmitter","OS","addListener","removeListeners","startServices","configPushNotification","data","getInitialCall","counter","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","dropCall","hideSystemNotificationSafely","hideSystemNotificationOnly","hideSystemNotificationAndUnregister","reason","OmiCallEvent","onCallStateChanged","onSpeaker","onMuted","onRemoteVideoReady","onClickMissedCall","onSwitchboardAnswer","onCallQuality","onAudioChange","onRequestPermissionAndroid","checkCredentials","registerWithOptions","checkPermissionStatus","Promise","resolve","checkAndRequestPermissions","isVideo","requestSystemAlertWindowPermission","requestPermissionsByCodes","codes","getUserInfo","phone","getProjectId","getSipInfo","getAppId","getDeviceId","getFcmToken","getVoipToken"],"sourceRoot":"../../src","sources":["omikit.tsx"],"mappings":"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","ignoreList":[]}
|
package/omikit-plugin.podspec
CHANGED
|
@@ -14,49 +14,51 @@ Pod::Spec.new do |s|
|
|
|
14
14
|
s.platforms = { :ios => "13.0" }
|
|
15
15
|
s.source = { :git => "https://github.com/VIHATTeam/OMICALL-React-Native-SDK.git", :tag => "#{s.version}" }
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# Source files configuration
|
|
18
18
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
19
19
|
s.public_header_files = "ios/**/*.h"
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Swift support
|
|
22
22
|
s.swift_versions = ["5.0"]
|
|
23
23
|
|
|
24
|
-
#
|
|
24
|
+
# Module configuration for Swift bridging
|
|
25
25
|
s.static_framework = true
|
|
26
|
-
s.pod_target_xcconfig = {
|
|
27
|
-
"DEFINES_MODULE" => "YES",
|
|
28
|
-
"SWIFT_OPTIMIZATION_LEVEL" => "-Onone",
|
|
29
|
-
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" => "arm64"
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
# Xác định module name
|
|
33
26
|
s.module_name = "OmikitPlugin"
|
|
27
|
+
s.requires_arc = true
|
|
34
28
|
|
|
35
|
-
#
|
|
29
|
+
# Dependencies
|
|
36
30
|
s.dependency "React-Core"
|
|
37
|
-
|
|
38
|
-
s.dependency "OmiKit", "1.10.11"
|
|
39
|
-
|
|
31
|
+
s.dependency "OmiKit", "1.10.34"
|
|
40
32
|
|
|
41
|
-
|
|
33
|
+
# Base build settings (for both Old and New Architecture)
|
|
34
|
+
base_xcconfig = {
|
|
35
|
+
"DEFINES_MODULE" => "YES",
|
|
36
|
+
# Note: arm64 simulator excluded due to OmiKit binary compatibility
|
|
37
|
+
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" => "arm64"
|
|
38
|
+
}
|
|
42
39
|
|
|
43
|
-
#
|
|
40
|
+
# New Architecture (TurboModule/Fabric) support
|
|
44
41
|
if ENV['RCT_NEW_ARCH_ENABLED'] == '1'
|
|
45
42
|
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
|
|
50
|
-
}
|
|
51
|
-
s.pod_target_xcconfig = {
|
|
43
|
+
|
|
44
|
+
# Merge base config with New Architecture config
|
|
45
|
+
new_arch_xcconfig = base_xcconfig.merge({
|
|
52
46
|
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
|
|
53
47
|
"OTHER_CPLUSPLUSFLAGS" => folly_compiler_flags,
|
|
54
|
-
"CLANG_CXX_LANGUAGE_STANDARD" => "c++
|
|
55
|
-
}
|
|
48
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => "c++20"
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
s.xcconfig = new_arch_xcconfig
|
|
52
|
+
s.pod_target_xcconfig = new_arch_xcconfig
|
|
53
|
+
|
|
54
|
+
# New Architecture dependencies
|
|
56
55
|
s.dependency "React-Codegen"
|
|
57
56
|
s.dependency "RCT-Folly"
|
|
58
57
|
s.dependency "RCTRequired"
|
|
59
58
|
s.dependency "RCTTypeSafety"
|
|
60
59
|
s.dependency "ReactCommon/turbomodule/core"
|
|
60
|
+
else
|
|
61
|
+
# Old Architecture - use base config only
|
|
62
|
+
s.pod_target_xcconfig = base_xcconfig
|
|
61
63
|
end
|
|
62
64
|
end
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omikit-plugin",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Omikit Plugin by ViHAT",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -73,7 +73,16 @@
|
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
75
|
"react": "*",
|
|
76
|
-
"react-native": "
|
|
76
|
+
"react-native": ">=0.74.0"
|
|
77
|
+
},
|
|
78
|
+
"codegenConfig": {
|
|
79
|
+
"name": "RNOmikitPluginSpec",
|
|
80
|
+
"type": "all",
|
|
81
|
+
"jsSrcsDir": "src",
|
|
82
|
+
"android": {
|
|
83
|
+
"javaPackageName": "com.omikitplugin"
|
|
84
|
+
},
|
|
85
|
+
"ios": {}
|
|
77
86
|
},
|
|
78
87
|
"engines": {
|
|
79
88
|
"node": ">= 16.0.0"
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export interface Spec extends TurboModule {
|
|
5
|
+
// Registration & Authentication (2 methods)
|
|
6
|
+
initCallWithUserPassword(data: {
|
|
7
|
+
userName: string;
|
|
8
|
+
password: string;
|
|
9
|
+
realm: string;
|
|
10
|
+
host?: string;
|
|
11
|
+
isVideo: boolean;
|
|
12
|
+
fcmToken: string;
|
|
13
|
+
projectId?: string;
|
|
14
|
+
isSkipDevices?: boolean;
|
|
15
|
+
}): Promise<boolean>;
|
|
16
|
+
|
|
17
|
+
initCallWithApiKey(data: {
|
|
18
|
+
fullName: string;
|
|
19
|
+
usrUuid: string;
|
|
20
|
+
apiKey: string;
|
|
21
|
+
isVideo: boolean;
|
|
22
|
+
phone: string;
|
|
23
|
+
fcmToken: string;
|
|
24
|
+
projectId?: string;
|
|
25
|
+
}): Promise<boolean>;
|
|
26
|
+
|
|
27
|
+
// Call Control (10 methods)
|
|
28
|
+
startServices(): Promise<boolean>;
|
|
29
|
+
|
|
30
|
+
startCall(data: {
|
|
31
|
+
phoneNumber: string;
|
|
32
|
+
isVideo: boolean;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
status: number;
|
|
35
|
+
message: string;
|
|
36
|
+
_id: string;
|
|
37
|
+
}>;
|
|
38
|
+
|
|
39
|
+
startCallWithUuid(data: {
|
|
40
|
+
usrUuid: string;
|
|
41
|
+
isVideo: boolean;
|
|
42
|
+
}): Promise<boolean>;
|
|
43
|
+
|
|
44
|
+
joinCall(): Promise<boolean>;
|
|
45
|
+
endCall(): Promise<boolean>;
|
|
46
|
+
rejectCall(): Promise<boolean>;
|
|
47
|
+
dropCall(): Promise<boolean>;
|
|
48
|
+
|
|
49
|
+
transferCall(data: {
|
|
50
|
+
phoneNumber: string;
|
|
51
|
+
}): Promise<boolean>;
|
|
52
|
+
|
|
53
|
+
getInitialCall(data: {
|
|
54
|
+
counter: number;
|
|
55
|
+
}): Promise<any>;
|
|
56
|
+
|
|
57
|
+
// Media Control (11 methods)
|
|
58
|
+
toggleMute(): Promise<boolean | null>;
|
|
59
|
+
toggleHold(): Promise<void>;
|
|
60
|
+
|
|
61
|
+
onHold(data: {
|
|
62
|
+
holdStatus: boolean;
|
|
63
|
+
}): Promise<boolean>;
|
|
64
|
+
|
|
65
|
+
toggleSpeaker(): Promise<boolean>;
|
|
66
|
+
toggleOmiVideo(): Promise<boolean>;
|
|
67
|
+
switchOmiCamera(): Promise<boolean>;
|
|
68
|
+
registerVideoEvent(): Promise<boolean>;
|
|
69
|
+
removeVideoEvent(): Promise<boolean>;
|
|
70
|
+
|
|
71
|
+
sendDTMF(data: {
|
|
72
|
+
character: string;
|
|
73
|
+
}): Promise<boolean>;
|
|
74
|
+
|
|
75
|
+
getAudio(): Promise<any>;
|
|
76
|
+
getCurrentAudio(): Promise<any>;
|
|
77
|
+
|
|
78
|
+
setAudio(data: {
|
|
79
|
+
portType: number;
|
|
80
|
+
}): Promise<void>;
|
|
81
|
+
|
|
82
|
+
// User & Info (3 methods)
|
|
83
|
+
getCurrentUser(): Promise<Object | null>;
|
|
84
|
+
getGuestUser(): Promise<Object | null>;
|
|
85
|
+
|
|
86
|
+
getUserInfo(data: {
|
|
87
|
+
phone: string;
|
|
88
|
+
}): Promise<any>;
|
|
89
|
+
|
|
90
|
+
// Notifications (4 methods)
|
|
91
|
+
configPushNotification(data: Object): Promise<any>;
|
|
92
|
+
hideSystemNotificationSafely(): Promise<boolean>;
|
|
93
|
+
hideSystemNotificationOnly(): Promise<boolean>;
|
|
94
|
+
|
|
95
|
+
hideSystemNotificationAndUnregister(data: {
|
|
96
|
+
reason: string;
|
|
97
|
+
}): Promise<boolean>;
|
|
98
|
+
|
|
99
|
+
// Permissions (6 methods)
|
|
100
|
+
checkAndRequestPermissions(data: {
|
|
101
|
+
isVideo: boolean;
|
|
102
|
+
}): Promise<boolean>;
|
|
103
|
+
|
|
104
|
+
checkPermissionStatus(): Promise<any>;
|
|
105
|
+
|
|
106
|
+
requestPermissionsByCodes(data: {
|
|
107
|
+
codes: number[];
|
|
108
|
+
}): Promise<boolean>;
|
|
109
|
+
|
|
110
|
+
systemAlertWindow(): Promise<boolean>;
|
|
111
|
+
requestSystemAlertWindowPermission(): Promise<boolean>;
|
|
112
|
+
openSystemAlertSetting(): Promise<void>;
|
|
113
|
+
|
|
114
|
+
// Advanced Features (4 methods)
|
|
115
|
+
checkCredentials(data: Object): Promise<{
|
|
116
|
+
success: boolean;
|
|
117
|
+
statusCode: number;
|
|
118
|
+
message: string;
|
|
119
|
+
}>;
|
|
120
|
+
|
|
121
|
+
registerWithOptions(data: Object): Promise<{
|
|
122
|
+
success: boolean;
|
|
123
|
+
statusCode: number;
|
|
124
|
+
message: string;
|
|
125
|
+
}>;
|
|
126
|
+
|
|
127
|
+
getKeepAliveStatus(): Promise<any>;
|
|
128
|
+
triggerKeepAlivePing(): Promise<boolean>;
|
|
129
|
+
|
|
130
|
+
// Logout
|
|
131
|
+
logout(): Promise<boolean>;
|
|
132
|
+
|
|
133
|
+
// Getter Functions (6 methods)
|
|
134
|
+
getProjectId(): Promise<string | null>;
|
|
135
|
+
getSipInfo(): Promise<string | null>;
|
|
136
|
+
getAppId(): Promise<string | null>;
|
|
137
|
+
getDeviceId(): Promise<string | null>;
|
|
138
|
+
getFcmToken(): Promise<string | null>;
|
|
139
|
+
getVoipToken(): Promise<string | null>;
|
|
140
|
+
|
|
141
|
+
// Event emitter methods (required for bridgeless mode)
|
|
142
|
+
addListener(eventName: string): void;
|
|
143
|
+
removeListeners(count: number): void;
|
|
144
|
+
|
|
145
|
+
// Constants
|
|
146
|
+
getConstants(): {
|
|
147
|
+
CALL_STATE_CHANGED: string;
|
|
148
|
+
MUTED: string;
|
|
149
|
+
HOLD: string;
|
|
150
|
+
SPEAKER: string;
|
|
151
|
+
REMOTE_VIDEO_READY: string;
|
|
152
|
+
CLICK_MISSED_CALL: string;
|
|
153
|
+
SWITCHBOARD_ANSWER: string;
|
|
154
|
+
CALL_QUALITY: string;
|
|
155
|
+
AUDIO_CHANGE: string;
|
|
156
|
+
REQUEST_PERMISSION: string;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export default TurboModuleRegistry.get<Spec>('OmikitPlugin') as Spec | null;
|
package/src/index.tsx
CHANGED
package/src/omi_local_camera.tsx
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import type { HostComponent } from 'react-native';
|
|
2
2
|
import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// Camera Views always use Paper (requireNativeComponent) because:
|
|
5
|
+
// - iOS native code doesn't have Fabric ComponentView implementation yet
|
|
6
|
+
// - Paper components work fine even when New Architecture is enabled
|
|
7
|
+
// - This avoids undefined symbol errors (_FLLocalCameraViewCls)
|
|
8
|
+
const OmiLocalCameraViewPaper: HostComponent<ViewProps> = requireNativeComponent(
|
|
9
|
+
'FLLocalCameraView'
|
|
10
|
+
);
|
|
5
11
|
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
// Export the Paper component
|
|
13
|
+
export const OmiLocalCameraView: HostComponent<ViewProps> = OmiLocalCameraViewPaper;
|
|
8
14
|
|
|
15
|
+
// Module name separated from ViewManager name to avoid name collision
|
|
16
|
+
const FLLocalCamera = NativeModules.FLLocalCameraModule || NativeModules.FLLocalCameraView;
|
|
9
17
|
export function refreshLocalCamera(): Promise<boolean> {
|
|
18
|
+
if (!FLLocalCamera) return Promise.resolve(false);
|
|
10
19
|
return FLLocalCamera.refresh();
|
|
11
20
|
}
|