omikit-plugin 4.0.1 → 4.1.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 +344 -45
- package/android/build.gradle +21 -71
- package/android/gradle.properties +4 -4
- package/android/src/main/java/com/omikitplugin/OmiLocalCameraView.kt +112 -0
- package/android/src/main/java/com/omikitplugin/OmiRemoteCameraView.kt +99 -0
- package/android/src/main/java/com/omikitplugin/OmikitPluginModule.kt +57 -38
- package/android/src/main/java/com/omikitplugin/OmikitPluginPackage.kt +11 -8
- package/ios/CallProcess/CallManager.swift +99 -29
- package/ios/Library/OmikitPlugin.m +18 -0
- package/ios/Library/OmikitPlugin.swift +233 -1
- package/ios/OmikitPlugin-Bridging-Header.h +1 -0
- package/ios/OmikitPlugin.xcodeproj/project.pbxproj +4 -4
- package/ios/VideoCall/OmiLocalCameraViewBridge.m +14 -0
- package/ios/VideoCall/OmiLocalCameraViewManager.swift +41 -0
- package/ios/VideoCall/OmiRemoteCameraViewBridge.m +14 -0
- package/ios/VideoCall/OmiRemoteCameraViewManager.swift +40 -0
- package/lib/commonjs/NativeOmikitPlugin.js +2 -1
- package/lib/commonjs/NativeOmikitPlugin.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/omi_audio_type.js +5 -7
- package/lib/commonjs/omi_audio_type.js.map +1 -1
- package/lib/commonjs/omi_call_state.js +5 -3
- package/lib/commonjs/omi_call_state.js.map +1 -1
- package/lib/commonjs/omi_local_camera.js +20 -12
- package/lib/commonjs/omi_local_camera.js.map +1 -1
- package/lib/commonjs/omi_remote_camera.js +21 -12
- package/lib/commonjs/omi_remote_camera.js.map +1 -1
- package/lib/commonjs/omi_start_call_status.js +5 -24
- package/lib/commonjs/omi_start_call_status.js.map +1 -1
- package/lib/commonjs/omikit.js +91 -21
- package/lib/commonjs/omikit.js.map +1 -1
- package/lib/commonjs/types/index.d.js.map +1 -1
- package/lib/module/NativeOmikitPlugin.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/omi_audio_type.js +4 -7
- package/lib/module/omi_audio_type.js.map +1 -1
- package/lib/module/omi_call_state.js +4 -3
- package/lib/module/omi_call_state.js.map +1 -1
- package/lib/module/omi_local_camera.js +20 -13
- package/lib/module/omi_local_camera.js.map +1 -1
- package/lib/module/omi_remote_camera.js +21 -13
- package/lib/module/omi_remote_camera.js.map +1 -1
- package/lib/module/omi_start_call_status.js +4 -24
- package/lib/module/omi_start_call_status.js.map +1 -1
- package/lib/module/omikit.js +85 -20
- package/lib/module/omikit.js.map +1 -1
- package/lib/module/types/index.d.js.map +1 -1
- package/omikit-plugin.podspec +1 -1
- package/package.json +2 -11
- package/react-native.config.js +14 -0
- package/src/NativeOmikitPlugin.ts +1 -0
- package/src/omi_call_state.tsx +1 -0
- package/src/omi_local_camera.tsx +16 -15
- package/src/omi_remote_camera.tsx +17 -15
- package/src/omikit.tsx +104 -28
- package/src/types/index.d.ts +344 -62
- package/android/src/main/java/com/omikitplugin/FLLocalCameraModule.kt +0 -34
- package/android/src/main/java/com/omikitplugin/FLLocalCameraView.kt +0 -44
- package/android/src/main/java/com/omikitplugin/FLRemoteCameraModule.kt +0 -37
- package/android/src/main/java/com/omikitplugin/FLRemoteCameraView.kt +0 -23
- package/ios/VideoCall/FLLocalCameraView.m +0 -17
- package/ios/VideoCall/FLLocalCameraView.swift +0 -44
- package/ios/VideoCall/FLRemoteCameraView.m +0 -18
- package/ios/VideoCall/FLRemoteCameraView.swift +0 -124
|
@@ -2,43 +2,23 @@
|
|
|
2
2
|
* Status codes returned by startCall() function
|
|
3
3
|
* Use these to handle different call initiation results
|
|
4
4
|
*/
|
|
5
|
-
export let OmiStartCallStatus
|
|
6
|
-
|
|
5
|
+
export let OmiStartCallStatus; // No network connection available
|
|
6
|
+
(function (OmiStartCallStatus) {
|
|
7
7
|
OmiStartCallStatus[OmiStartCallStatus["invalidUuid"] = 0] = "invalidUuid";
|
|
8
|
-
// Invalid user UUID
|
|
9
8
|
OmiStartCallStatus[OmiStartCallStatus["invalidPhoneNumber"] = 1] = "invalidPhoneNumber";
|
|
10
|
-
// Invalid phone number format
|
|
11
9
|
OmiStartCallStatus[OmiStartCallStatus["samePhoneNumber"] = 2] = "samePhoneNumber";
|
|
12
|
-
// Cannot call same phone number
|
|
13
10
|
OmiStartCallStatus[OmiStartCallStatus["maxRetry"] = 3] = "maxRetry";
|
|
14
|
-
// Maximum retry attempts reached
|
|
15
|
-
// Permission errors (4, 450-452)
|
|
16
11
|
OmiStartCallStatus[OmiStartCallStatus["permissionDenied"] = 4] = "permissionDenied";
|
|
17
|
-
// Microphone/Camera permission denied
|
|
18
12
|
OmiStartCallStatus[OmiStartCallStatus["permissionMicrophone"] = 450] = "permissionMicrophone";
|
|
19
|
-
// Microphone permission required (Android 15+)
|
|
20
13
|
OmiStartCallStatus[OmiStartCallStatus["permissionCamera"] = 451] = "permissionCamera";
|
|
21
|
-
// Camera permission required (Android 15+)
|
|
22
14
|
OmiStartCallStatus[OmiStartCallStatus["permissionOverlay"] = 452] = "permissionOverlay";
|
|
23
|
-
// System alert window permission required (Android 15+)
|
|
24
|
-
// Call errors (5-7)
|
|
25
15
|
OmiStartCallStatus[OmiStartCallStatus["couldNotFindEndpoint"] = 5] = "couldNotFindEndpoint";
|
|
26
|
-
// Could not find endpoint
|
|
27
16
|
OmiStartCallStatus[OmiStartCallStatus["accountRegisterFailed"] = 6] = "accountRegisterFailed";
|
|
28
|
-
// Account registration failed
|
|
29
17
|
OmiStartCallStatus[OmiStartCallStatus["startCallFailed"] = 7] = "startCallFailed";
|
|
30
|
-
// Start call failed
|
|
31
|
-
// Success statuses (8, 407)
|
|
32
18
|
OmiStartCallStatus[OmiStartCallStatus["startCallSuccess"] = 8] = "startCallSuccess";
|
|
33
|
-
// Call initiated successfully (Android)
|
|
34
19
|
OmiStartCallStatus[OmiStartCallStatus["startCallSuccessIOS"] = 407] = "startCallSuccessIOS";
|
|
35
|
-
// Call initiated successfully (iOS)
|
|
36
|
-
// Other errors (9+)
|
|
37
20
|
OmiStartCallStatus[OmiStartCallStatus["haveAnotherCall"] = 9] = "haveAnotherCall";
|
|
38
|
-
// Already have another call in progress
|
|
39
21
|
OmiStartCallStatus[OmiStartCallStatus["accountTurnOffNumberInternal"] = 10] = "accountTurnOffNumberInternal";
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return OmiStartCallStatus;
|
|
43
|
-
}({});
|
|
22
|
+
OmiStartCallStatus[OmiStartCallStatus["noNetwork"] = 11] = "noNetwork";
|
|
23
|
+
})(OmiStartCallStatus || (OmiStartCallStatus = {}));
|
|
44
24
|
//# sourceMappingURL=omi_start_call_status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OmiStartCallStatus"],"sourceRoot":"../../src","sources":["omi_start_call_status.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA,WAAYA,kBAAkB,
|
|
1
|
+
{"version":3,"names":["OmiStartCallStatus"],"sourceRoot":"../../src","sources":["omi_start_call_status.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA,WAAYA,kBAAkB,EAyBE;AAC/B,WA1BWA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;EAAlBA,kBAAkB,CAAlBA,kBAAkB;AAAA,GAAlBA,kBAAkB,KAAlBA,kBAAkB"}
|
package/lib/module/omikit.js
CHANGED
|
@@ -4,32 +4,49 @@ const LINKING_ERROR = `The package 'omikit-plugin' doesn't seem to be linked. Ma
|
|
|
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
|
-
|
|
11
|
-
// New Architecture - use TurboModule
|
|
7
|
+
// Resolve native module: TurboModule (New Arch) → NativeModules (Old Arch) → null
|
|
8
|
+
const resolvedModule = (() => {
|
|
9
|
+
try {
|
|
10
|
+
// Try TurboModule first (New Architecture / bridgeless mode)
|
|
12
11
|
const turboModule = TurboModuleRegistry.get('OmikitPlugin');
|
|
13
|
-
if (turboModule)
|
|
14
|
-
|
|
12
|
+
if (turboModule) return turboModule;
|
|
13
|
+
} catch (_) {}
|
|
14
|
+
|
|
15
|
+
// Fallback to NativeModules (Old Architecture / bridge mode)
|
|
16
|
+
if (NativeModules.OmikitPlugin) {
|
|
17
|
+
return NativeModules.OmikitPlugin;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
})();
|
|
21
|
+
|
|
22
|
+
// Wrap in Proxy that throws LINKING_ERROR only when SDK methods are actually called
|
|
23
|
+
const OmikitPlugin = resolvedModule || new Proxy({}, {
|
|
24
|
+
get(_target, prop) {
|
|
25
|
+
if (prop === 'addListener' || prop === 'removeListeners') {
|
|
26
|
+
return () => {};
|
|
15
27
|
}
|
|
28
|
+
throw new Error(LINKING_ERROR);
|
|
16
29
|
}
|
|
30
|
+
});
|
|
17
31
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
// Setup omiEmitter — safe for Old Arch, New Arch, and bridgeless mode
|
|
33
|
+
const omiEmitter = (() => {
|
|
34
|
+
if (Platform.OS !== 'ios') {
|
|
35
|
+
return DeviceEventEmitter;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
// Best case: NativeEventEmitter with resolved native module
|
|
39
|
+
if (resolvedModule) {
|
|
40
|
+
return new NativeEventEmitter(resolvedModule);
|
|
22
41
|
}
|
|
23
|
-
|
|
42
|
+
// New Arch without interop: NativeEventEmitter without module arg (RN 0.74+)
|
|
43
|
+
return new NativeEventEmitter();
|
|
44
|
+
} catch (_) {
|
|
45
|
+
// Last resort fallback
|
|
46
|
+
return DeviceEventEmitter;
|
|
47
|
+
}
|
|
24
48
|
})();
|
|
25
49
|
|
|
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;
|
|
32
|
-
|
|
33
50
|
/**
|
|
34
51
|
* Starts the Omikit services.
|
|
35
52
|
* @returns {Promise<any>} A promise that resolves when the services start successfully.
|
|
@@ -165,6 +182,44 @@ export function switchOmiCamera() {
|
|
|
165
182
|
return OmikitPlugin.switchOmiCamera();
|
|
166
183
|
}
|
|
167
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Configure camera view style on iOS (Fabric mode — native window rendering).
|
|
187
|
+
* On Android, use style props on OmiLocalCameraView/OmiRemoteCameraView instead.
|
|
188
|
+
*
|
|
189
|
+
* @param config.target - "local" or "remote"
|
|
190
|
+
* @param config.x - X position
|
|
191
|
+
* @param config.y - Y position
|
|
192
|
+
* @param config.width - View width
|
|
193
|
+
* @param config.height - View height
|
|
194
|
+
* @param config.borderRadius - Corner radius
|
|
195
|
+
* @param config.borderWidth - Border width
|
|
196
|
+
* @param config.borderColor - Border color (hex: "#FF0000" or "#FF000080")
|
|
197
|
+
* @param config.backgroundColor - Background color (hex)
|
|
198
|
+
* @param config.opacity - View opacity (0.0 - 1.0)
|
|
199
|
+
* @param config.hidden - Show/hide the view
|
|
200
|
+
* @param config.scaleMode - Video scale: "fill" (aspect fill), "fit" (aspect fit), "stretch"
|
|
201
|
+
* @returns {Promise<boolean>}
|
|
202
|
+
*/
|
|
203
|
+
export function setCameraConfig(config) {
|
|
204
|
+
if (Platform.OS === 'ios') {
|
|
205
|
+
return OmikitPlugin.setCameraConfig(config);
|
|
206
|
+
}
|
|
207
|
+
return Promise.resolve(false);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Create video containers and add to window (iOS only).
|
|
212
|
+
* Call this when video call screen mounts and call is active.
|
|
213
|
+
* On Fabric, RCTViewManager.view() is not called, so containers must be created manually.
|
|
214
|
+
* @returns {Promise<boolean>}
|
|
215
|
+
*/
|
|
216
|
+
export function setupVideoContainers() {
|
|
217
|
+
if (Platform.OS === 'ios') {
|
|
218
|
+
return OmikitPlugin.setupVideoContainers();
|
|
219
|
+
}
|
|
220
|
+
return Promise.resolve(true);
|
|
221
|
+
}
|
|
222
|
+
|
|
168
223
|
/**
|
|
169
224
|
* Toggles the video stream on or off during a video call.
|
|
170
225
|
* @returns {Promise<boolean>} A promise that resolves to `true` if the video is toggled successfully.
|
|
@@ -189,6 +244,15 @@ export function registerVideoEvent() {
|
|
|
189
244
|
return OmikitPlugin.registerVideoEvent();
|
|
190
245
|
}
|
|
191
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Setup video views by attaching native containers to React view tags.
|
|
249
|
+
* Required for New Architecture (Fabric) where ViewManager.view() is not called.
|
|
250
|
+
*/
|
|
251
|
+
export function setupVideoViews(remoteTag, localTag) {
|
|
252
|
+
if (!OmikitPlugin.setupVideoViews) return Promise.resolve(false);
|
|
253
|
+
return OmikitPlugin.setupVideoViews(remoteTag, localTag);
|
|
254
|
+
}
|
|
255
|
+
|
|
192
256
|
/**
|
|
193
257
|
* Removes video call event listeners.
|
|
194
258
|
* @returns {Promise<boolean>} A promise that resolves to `true` if the removal is successful.
|
|
@@ -341,7 +405,8 @@ export function checkPermissionStatus() {
|
|
|
341
405
|
* @param {boolean} isVideo - Whether this is for video call (requires camera permission)
|
|
342
406
|
* @returns {Promise<boolean>} True if all permissions granted (always true on iOS)
|
|
343
407
|
*/
|
|
344
|
-
export function checkAndRequestPermissions(
|
|
408
|
+
export function checkAndRequestPermissions() {
|
|
409
|
+
let isVideo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
345
410
|
if (Platform.OS !== 'android') {
|
|
346
411
|
return Promise.resolve(true);
|
|
347
412
|
}
|
package/lib/module/omikit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","NativeEventEmitter","DeviceEventEmitter","TurboModuleRegistry","LINKING_ERROR","select","ios","default","
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","NativeEventEmitter","DeviceEventEmitter","TurboModuleRegistry","LINKING_ERROR","select","ios","default","resolvedModule","turboModule","get","_","OmikitPlugin","Proxy","_target","prop","Error","omiEmitter","OS","startServices","configPushNotification","data","getInitialCall","counter","initCallWithUserPassword","initCallWithApiKey","startCall","startCallWithUuid","joinCall","endCall","toggleMute","toggleSpeaker","toggleHold","onHold","sendDTMF","switchOmiCamera","setCameraConfig","config","Promise","resolve","setupVideoContainers","toggleOmiVideo","logout","registerVideoEvent","setupVideoViews","remoteTag","localTag","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","checkAndRequestPermissions","isVideo","arguments","length","undefined","requestSystemAlertWindowPermission","requestPermissionsByCodes","codes","getUserInfo","phone","getProjectId","getSipInfo","getAppId","getDeviceId","getFcmToken","getVoipToken"],"sourceRoot":"../../src","sources":["omikit.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.d.ts"],"mappings":""
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.d.ts"],"mappings":""}
|
package/omikit-plugin.podspec
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omikit-plugin",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "Omikit Plugin by ViHAT",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"ios",
|
|
15
15
|
"cpp",
|
|
16
16
|
"*.podspec",
|
|
17
|
+
"react-native.config.js",
|
|
17
18
|
"!lib/typescript/example",
|
|
18
19
|
"!ios/build",
|
|
19
20
|
"!android/build",
|
|
@@ -57,7 +58,6 @@
|
|
|
57
58
|
"@release-it/conventional-changelog": "^5.0.0",
|
|
58
59
|
"@types/jest": "^28.1.2",
|
|
59
60
|
"@types/react": "18.3.1",
|
|
60
|
-
"@types/react-native": "0.76.2",
|
|
61
61
|
"react": "18.3.1",
|
|
62
62
|
"react-native": "0.76.2",
|
|
63
63
|
"del-cli": "^5.0.0",
|
|
@@ -127,15 +127,6 @@
|
|
|
127
127
|
"module"
|
|
128
128
|
]
|
|
129
129
|
},
|
|
130
|
-
"react-native": {
|
|
131
|
-
"android": {
|
|
132
|
-
"sourceDir": "./android",
|
|
133
|
-
"packageImportPath": "import com.omikitplugin.OmikitPluginPackage;"
|
|
134
|
-
},
|
|
135
|
-
"ios": {
|
|
136
|
-
"podspecPath": "./omikit-plugin.podspec"
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
130
|
"directories": {
|
|
140
131
|
"example": "example"
|
|
141
132
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
dependency: {
|
|
3
|
+
platforms: {
|
|
4
|
+
ios: {},
|
|
5
|
+
android: {},
|
|
6
|
+
},
|
|
7
|
+
},
|
|
8
|
+
// Enable Fabric interop for legacy ViewManagers (OmiLocalCameraView, OmiRemoteCameraView)
|
|
9
|
+
// This allows requireNativeComponent to work with New Architecture (Fabric)
|
|
10
|
+
unstable_reactLegacyComponentNames: [
|
|
11
|
+
'OmiLocalCameraView',
|
|
12
|
+
'OmiRemoteCameraView',
|
|
13
|
+
],
|
|
14
|
+
};
|
|
@@ -67,6 +67,7 @@ export interface Spec extends TurboModule {
|
|
|
67
67
|
switchOmiCamera(): Promise<boolean>;
|
|
68
68
|
registerVideoEvent(): Promise<boolean>;
|
|
69
69
|
removeVideoEvent(): Promise<boolean>;
|
|
70
|
+
setupVideoViews(remoteTag: number, localTag: number): Promise<boolean>;
|
|
70
71
|
|
|
71
72
|
sendDTMF(data: {
|
|
72
73
|
character: string;
|
package/src/omi_call_state.tsx
CHANGED
package/src/omi_local_camera.tsx
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
|
|
1
|
+
import { NativeModules, Platform, View } from 'react-native';
|
|
3
2
|
|
|
4
|
-
//
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
// Safe requireNativeComponent — returns fallback View if native config not available
|
|
4
|
+
let OmiLocalCameraViewNative: any = View;
|
|
5
|
+
try {
|
|
6
|
+
const { UIManager, requireNativeComponent } = require('react-native');
|
|
7
|
+
if (Platform.OS === 'android' || UIManager.getViewManagerConfig?.('OmiLocalCameraView')) {
|
|
8
|
+
OmiLocalCameraViewNative = requireNativeComponent('OmiLocalCameraView');
|
|
9
|
+
}
|
|
10
|
+
} catch (_) {
|
|
11
|
+
// Fallback to plain View — iOS Fabric uses native window rendering instead
|
|
12
|
+
}
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
export const OmiLocalCameraView: HostComponent<ViewProps> = OmiLocalCameraViewPaper;
|
|
14
|
+
export const OmiLocalCameraView = OmiLocalCameraViewNative;
|
|
14
15
|
|
|
15
|
-
//
|
|
16
|
-
const
|
|
16
|
+
// Imperative refresh method
|
|
17
|
+
const OmiLocalCamera = NativeModules.OmiLocalCameraView;
|
|
17
18
|
export function refreshLocalCamera(): Promise<boolean> {
|
|
18
|
-
if (!
|
|
19
|
-
return
|
|
19
|
+
if (!OmiLocalCamera) return Promise.resolve(false);
|
|
20
|
+
return OmiLocalCamera.refresh();
|
|
20
21
|
}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
|
|
1
|
+
import { NativeModules, Platform, View } from 'react-native';
|
|
3
2
|
|
|
4
|
-
//
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
'
|
|
10
|
-
);
|
|
3
|
+
// Safe requireNativeComponent — returns fallback View if native config not available
|
|
4
|
+
let OmiRemoteCameraViewNative: any = View;
|
|
5
|
+
try {
|
|
6
|
+
const { UIManager, requireNativeComponent } = require('react-native');
|
|
7
|
+
// Only attempt on Android or Old Arch iOS where ViewManager config exists
|
|
8
|
+
if (Platform.OS === 'android' || UIManager.getViewManagerConfig?.('OmiRemoteCameraView')) {
|
|
9
|
+
OmiRemoteCameraViewNative = requireNativeComponent('OmiRemoteCameraView');
|
|
10
|
+
}
|
|
11
|
+
} catch (_) {
|
|
12
|
+
// Fallback to plain View — iOS Fabric uses native window rendering instead
|
|
13
|
+
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
export const OmiRemoteCameraView: HostComponent<ViewProps> = OmiRemoteCameraViewPaper;
|
|
15
|
+
export const OmiRemoteCameraView = OmiRemoteCameraViewNative;
|
|
14
16
|
|
|
15
|
-
//
|
|
16
|
-
const
|
|
17
|
+
// Imperative refresh method
|
|
18
|
+
const OmiRemoteCamera = NativeModules.OmiRemoteCameraView;
|
|
17
19
|
export function refreshRemoteCamera(): Promise<boolean> {
|
|
18
|
-
if (!
|
|
19
|
-
return
|
|
20
|
+
if (!OmiRemoteCamera) return Promise.resolve(false);
|
|
21
|
+
return OmiRemoteCamera.refresh();
|
|
20
22
|
}
|
package/src/omikit.tsx
CHANGED
|
@@ -7,39 +7,52 @@ const LINKING_ERROR =
|
|
|
7
7
|
'- You rebuilt the app after installing the package\n' +
|
|
8
8
|
'- You are not using Expo Go\n';
|
|
9
9
|
|
|
10
|
-
//
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (isTurboModuleEnabled) {
|
|
15
|
-
// New Architecture - use TurboModule
|
|
10
|
+
// Resolve native module: TurboModule (New Arch) → NativeModules (Old Arch) → null
|
|
11
|
+
const resolvedModule: Spec | null = (() => {
|
|
12
|
+
try {
|
|
13
|
+
// Try TurboModule first (New Architecture / bridgeless mode)
|
|
16
14
|
const turboModule = TurboModuleRegistry.get<Spec>('OmikitPlugin');
|
|
17
|
-
if (turboModule)
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
if (turboModule) return turboModule;
|
|
16
|
+
} catch (_) {}
|
|
17
|
+
|
|
18
|
+
// Fallback to NativeModules (Old Architecture / bridge mode)
|
|
19
|
+
if (NativeModules.OmikitPlugin) {
|
|
20
|
+
return NativeModules.OmikitPlugin;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
return NativeModules.OmikitPlugin || new Proxy(
|
|
24
|
-
{},
|
|
25
|
-
{
|
|
26
|
-
get() {
|
|
27
|
-
throw new Error(LINKING_ERROR);
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
);
|
|
23
|
+
return null;
|
|
31
24
|
})();
|
|
32
25
|
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
// Wrap in Proxy that throws LINKING_ERROR only when SDK methods are actually called
|
|
27
|
+
const OmikitPlugin: Spec = resolvedModule || new Proxy(
|
|
28
|
+
{} as Spec,
|
|
29
|
+
{
|
|
30
|
+
get(_target, prop) {
|
|
31
|
+
if (prop === 'addListener' || prop === 'removeListeners') {
|
|
32
|
+
return () => {};
|
|
33
|
+
}
|
|
34
|
+
throw new Error(LINKING_ERROR);
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
// Setup omiEmitter — safe for Old Arch, New Arch, and bridgeless mode
|
|
40
|
+
const omiEmitter = (() => {
|
|
41
|
+
if (Platform.OS !== 'ios') {
|
|
42
|
+
return DeviceEventEmitter;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
// Best case: NativeEventEmitter with resolved native module
|
|
46
|
+
if (resolvedModule) {
|
|
47
|
+
return new NativeEventEmitter(resolvedModule as any);
|
|
48
|
+
}
|
|
49
|
+
// New Arch without interop: NativeEventEmitter without module arg (RN 0.74+)
|
|
50
|
+
return new NativeEventEmitter();
|
|
51
|
+
} catch (_) {
|
|
52
|
+
// Last resort fallback
|
|
53
|
+
return DeviceEventEmitter;
|
|
54
|
+
}
|
|
55
|
+
})();
|
|
43
56
|
|
|
44
57
|
/**
|
|
45
58
|
* Starts the Omikit services.
|
|
@@ -172,6 +185,57 @@ export function switchOmiCamera(): Promise<boolean> {
|
|
|
172
185
|
return OmikitPlugin.switchOmiCamera();
|
|
173
186
|
}
|
|
174
187
|
|
|
188
|
+
/**
|
|
189
|
+
* Configure camera view style on iOS (Fabric mode — native window rendering).
|
|
190
|
+
* On Android, use style props on OmiLocalCameraView/OmiRemoteCameraView instead.
|
|
191
|
+
*
|
|
192
|
+
* @param config.target - "local" or "remote"
|
|
193
|
+
* @param config.x - X position
|
|
194
|
+
* @param config.y - Y position
|
|
195
|
+
* @param config.width - View width
|
|
196
|
+
* @param config.height - View height
|
|
197
|
+
* @param config.borderRadius - Corner radius
|
|
198
|
+
* @param config.borderWidth - Border width
|
|
199
|
+
* @param config.borderColor - Border color (hex: "#FF0000" or "#FF000080")
|
|
200
|
+
* @param config.backgroundColor - Background color (hex)
|
|
201
|
+
* @param config.opacity - View opacity (0.0 - 1.0)
|
|
202
|
+
* @param config.hidden - Show/hide the view
|
|
203
|
+
* @param config.scaleMode - Video scale: "fill" (aspect fill), "fit" (aspect fit), "stretch"
|
|
204
|
+
* @returns {Promise<boolean>}
|
|
205
|
+
*/
|
|
206
|
+
export function setCameraConfig(config: {
|
|
207
|
+
target: 'local' | 'remote';
|
|
208
|
+
x?: number;
|
|
209
|
+
y?: number;
|
|
210
|
+
width?: number;
|
|
211
|
+
height?: number;
|
|
212
|
+
borderRadius?: number;
|
|
213
|
+
borderWidth?: number;
|
|
214
|
+
borderColor?: string;
|
|
215
|
+
backgroundColor?: string;
|
|
216
|
+
opacity?: number;
|
|
217
|
+
hidden?: boolean;
|
|
218
|
+
scaleMode?: 'fill' | 'fit' | 'stretch';
|
|
219
|
+
}): Promise<boolean> {
|
|
220
|
+
if (Platform.OS === 'ios') {
|
|
221
|
+
return OmikitPlugin.setCameraConfig(config);
|
|
222
|
+
}
|
|
223
|
+
return Promise.resolve(false);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Create video containers and add to window (iOS only).
|
|
228
|
+
* Call this when video call screen mounts and call is active.
|
|
229
|
+
* On Fabric, RCTViewManager.view() is not called, so containers must be created manually.
|
|
230
|
+
* @returns {Promise<boolean>}
|
|
231
|
+
*/
|
|
232
|
+
export function setupVideoContainers(): Promise<boolean> {
|
|
233
|
+
if (Platform.OS === 'ios') {
|
|
234
|
+
return OmikitPlugin.setupVideoContainers();
|
|
235
|
+
}
|
|
236
|
+
return Promise.resolve(true);
|
|
237
|
+
}
|
|
238
|
+
|
|
175
239
|
/**
|
|
176
240
|
* Toggles the video stream on or off during a video call.
|
|
177
241
|
* @returns {Promise<boolean>} A promise that resolves to `true` if the video is toggled successfully.
|
|
@@ -196,6 +260,18 @@ export function registerVideoEvent(): Promise<boolean> {
|
|
|
196
260
|
return OmikitPlugin.registerVideoEvent();
|
|
197
261
|
}
|
|
198
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Setup video views by attaching native containers to React view tags.
|
|
265
|
+
* Required for New Architecture (Fabric) where ViewManager.view() is not called.
|
|
266
|
+
*/
|
|
267
|
+
export function setupVideoViews(
|
|
268
|
+
remoteTag: number,
|
|
269
|
+
localTag: number
|
|
270
|
+
): Promise<boolean> {
|
|
271
|
+
if (!OmikitPlugin.setupVideoViews) return Promise.resolve(false);
|
|
272
|
+
return OmikitPlugin.setupVideoViews(remoteTag, localTag);
|
|
273
|
+
}
|
|
274
|
+
|
|
199
275
|
/**
|
|
200
276
|
* Removes video call event listeners.
|
|
201
277
|
* @returns {Promise<boolean>} A promise that resolves to `true` if the removal is successful.
|