omikit-plugin 4.0.2 → 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.
Files changed (62) hide show
  1. package/README.md +272 -24
  2. package/android/src/main/java/com/omikitplugin/OmiLocalCameraView.kt +112 -0
  3. package/android/src/main/java/com/omikitplugin/OmiRemoteCameraView.kt +99 -0
  4. package/android/src/main/java/com/omikitplugin/OmikitPluginModule.kt +5 -4
  5. package/android/src/main/java/com/omikitplugin/OmikitPluginPackage.kt +11 -8
  6. package/ios/CallProcess/CallManager.swift +99 -29
  7. package/ios/Library/OmikitPlugin.m +18 -0
  8. package/ios/Library/OmikitPlugin.swift +233 -1
  9. package/ios/OmikitPlugin-Bridging-Header.h +1 -0
  10. package/ios/OmikitPlugin.xcodeproj/project.pbxproj +4 -4
  11. package/ios/VideoCall/OmiLocalCameraViewBridge.m +14 -0
  12. package/ios/VideoCall/OmiLocalCameraViewManager.swift +41 -0
  13. package/ios/VideoCall/OmiRemoteCameraViewBridge.m +14 -0
  14. package/ios/VideoCall/OmiRemoteCameraViewManager.swift +40 -0
  15. package/lib/commonjs/NativeOmikitPlugin.js +2 -1
  16. package/lib/commonjs/NativeOmikitPlugin.js.map +1 -1
  17. package/lib/commonjs/index.js.map +1 -1
  18. package/lib/commonjs/omi_audio_type.js +5 -7
  19. package/lib/commonjs/omi_audio_type.js.map +1 -1
  20. package/lib/commonjs/omi_call_state.js +5 -3
  21. package/lib/commonjs/omi_call_state.js.map +1 -1
  22. package/lib/commonjs/omi_local_camera.js +19 -17
  23. package/lib/commonjs/omi_local_camera.js.map +1 -1
  24. package/lib/commonjs/omi_remote_camera.js +20 -17
  25. package/lib/commonjs/omi_remote_camera.js.map +1 -1
  26. package/lib/commonjs/omi_start_call_status.js +5 -24
  27. package/lib/commonjs/omi_start_call_status.js.map +1 -1
  28. package/lib/commonjs/omikit.js +56 -3
  29. package/lib/commonjs/omikit.js.map +1 -1
  30. package/lib/commonjs/types/index.d.js.map +1 -1
  31. package/lib/module/NativeOmikitPlugin.js.map +1 -1
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/omi_audio_type.js +4 -7
  34. package/lib/module/omi_audio_type.js.map +1 -1
  35. package/lib/module/omi_call_state.js +4 -3
  36. package/lib/module/omi_call_state.js.map +1 -1
  37. package/lib/module/omi_local_camera.js +19 -18
  38. package/lib/module/omi_local_camera.js.map +1 -1
  39. package/lib/module/omi_remote_camera.js +20 -18
  40. package/lib/module/omi_remote_camera.js.map +1 -1
  41. package/lib/module/omi_start_call_status.js +4 -24
  42. package/lib/module/omi_start_call_status.js.map +1 -1
  43. package/lib/module/omikit.js +49 -1
  44. package/lib/module/omikit.js.map +1 -1
  45. package/lib/module/types/index.d.js.map +1 -1
  46. package/omikit-plugin.podspec +1 -1
  47. package/package.json +2 -11
  48. package/react-native.config.js +14 -0
  49. package/src/NativeOmikitPlugin.ts +1 -0
  50. package/src/omi_call_state.tsx +1 -0
  51. package/src/omi_local_camera.tsx +15 -19
  52. package/src/omi_remote_camera.tsx +16 -19
  53. package/src/omikit.tsx +63 -0
  54. package/src/types/index.d.ts +344 -62
  55. package/android/src/main/java/com/omikitplugin/FLLocalCameraModule.kt +0 -34
  56. package/android/src/main/java/com/omikitplugin/FLLocalCameraView.kt +0 -44
  57. package/android/src/main/java/com/omikitplugin/FLRemoteCameraModule.kt +0 -37
  58. package/android/src/main/java/com/omikitplugin/FLRemoteCameraView.kt +0 -23
  59. package/ios/VideoCall/FLLocalCameraView.m +0 -17
  60. package/ios/VideoCall/FLLocalCameraView.swift +0 -44
  61. package/ios/VideoCall/FLRemoteCameraView.m +0 -18
  62. package/ios/VideoCall/FLRemoteCameraView.swift +0 -124
@@ -182,6 +182,44 @@ export function switchOmiCamera() {
182
182
  return OmikitPlugin.switchOmiCamera();
183
183
  }
184
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
+
185
223
  /**
186
224
  * Toggles the video stream on or off during a video call.
187
225
  * @returns {Promise<boolean>} A promise that resolves to `true` if the video is toggled successfully.
@@ -206,6 +244,15 @@ export function registerVideoEvent() {
206
244
  return OmikitPlugin.registerVideoEvent();
207
245
  }
208
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
+
209
256
  /**
210
257
  * Removes video call event listeners.
211
258
  * @returns {Promise<boolean>} A promise that resolves to `true` if the removal is successful.
@@ -358,7 +405,8 @@ export function checkPermissionStatus() {
358
405
  * @param {boolean} isVideo - Whether this is for video call (requires camera permission)
359
406
  * @returns {Promise<boolean>} True if all permissions granted (always true on iOS)
360
407
  */
361
- export function checkAndRequestPermissions(isVideo = false) {
408
+ export function checkAndRequestPermissions() {
409
+ let isVideo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
362
410
  if (Platform.OS !== 'android') {
363
411
  return Promise.resolve(true);
364
412
  }
@@ -1 +1 @@
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","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":[]}
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":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.d.ts"],"mappings":""}
@@ -28,7 +28,7 @@ Pod::Spec.new do |s|
28
28
 
29
29
  # Dependencies
30
30
  s.dependency "React-Core"
31
- s.dependency "OmiKit", "1.10.34"
31
+ s.dependency "OmiKit", "1.11.4"
32
32
 
33
33
  # Base build settings (for both Old and New Architecture)
34
34
  base_xcconfig = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omikit-plugin",
3
- "version": "4.0.2",
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;
@@ -7,5 +7,6 @@ export enum OmiCallState {
7
7
  confirmed = 5,
8
8
  disconnected = 6,
9
9
  hold = 7,
10
+ disconnecting = 12,
10
11
  }
11
12
 
@@ -1,25 +1,21 @@
1
- import type { HostComponent } from 'react-native';
2
- import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
1
+ import { NativeModules, Platform, View } from 'react-native';
3
2
 
4
- // Safe lazy loading requireNativeComponent can throw in bridgeless mode
5
- // if the native view is not registered for Fabric
6
- let _localCameraView: HostComponent<ViewProps> | null = null;
7
- const getLocalCameraView = (): HostComponent<ViewProps> => {
8
- if (!_localCameraView) {
9
- _localCameraView = requireNativeComponent('FLLocalCameraView');
3
+ // Safe requireNativeComponentreturns 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');
10
9
  }
11
- return _localCameraView;
12
- };
10
+ } catch (_) {
11
+ // Fallback to plain View — iOS Fabric uses native window rendering instead
12
+ }
13
13
 
14
- export const OmiLocalCameraView = new Proxy({} as HostComponent<ViewProps>, {
15
- get(_target, prop) {
16
- return (getLocalCameraView() as any)[prop];
17
- },
18
- });
14
+ export const OmiLocalCameraView = OmiLocalCameraViewNative;
19
15
 
20
- // Module name separated from ViewManager name to avoid name collision
21
- const FLLocalCamera = NativeModules.FLLocalCameraModule || NativeModules.FLLocalCameraView;
16
+ // Imperative refresh method
17
+ const OmiLocalCamera = NativeModules.OmiLocalCameraView;
22
18
  export function refreshLocalCamera(): Promise<boolean> {
23
- if (!FLLocalCamera) return Promise.resolve(false);
24
- return FLLocalCamera.refresh();
19
+ if (!OmiLocalCamera) return Promise.resolve(false);
20
+ return OmiLocalCamera.refresh();
25
21
  }
@@ -1,25 +1,22 @@
1
- import type { HostComponent } from 'react-native';
2
- import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
1
+ import { NativeModules, Platform, View } from 'react-native';
3
2
 
4
- // Safe lazy loading requireNativeComponent can throw in bridgeless mode
5
- // if the native view is not registered for Fabric
6
- let _remoteCameraView: HostComponent<ViewProps> | null = null;
7
- const getRemoteCameraView = (): HostComponent<ViewProps> => {
8
- if (!_remoteCameraView) {
9
- _remoteCameraView = requireNativeComponent('FLRemoteCameraView');
3
+ // Safe requireNativeComponentreturns 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
10
  }
11
- return _remoteCameraView;
12
- };
11
+ } catch (_) {
12
+ // Fallback to plain View — iOS Fabric uses native window rendering instead
13
+ }
13
14
 
14
- export const OmiRemoteCameraView = new Proxy({} as HostComponent<ViewProps>, {
15
- get(_target, prop) {
16
- return (getRemoteCameraView() as any)[prop];
17
- },
18
- });
15
+ export const OmiRemoteCameraView = OmiRemoteCameraViewNative;
19
16
 
20
- // Module name separated from ViewManager name to avoid name collision
21
- const FLRemoteCamera = NativeModules.FLRemoteCameraModule || NativeModules.FLRemoteCameraView;
17
+ // Imperative refresh method
18
+ const OmiRemoteCamera = NativeModules.OmiRemoteCameraView;
22
19
  export function refreshRemoteCamera(): Promise<boolean> {
23
- if (!FLRemoteCamera) return Promise.resolve(false);
24
- return FLRemoteCamera.refresh();
20
+ if (!OmiRemoteCamera) return Promise.resolve(false);
21
+ return OmiRemoteCamera.refresh();
25
22
  }
package/src/omikit.tsx CHANGED
@@ -185,6 +185,57 @@ export function switchOmiCamera(): Promise<boolean> {
185
185
  return OmikitPlugin.switchOmiCamera();
186
186
  }
187
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
+
188
239
  /**
189
240
  * Toggles the video stream on or off during a video call.
190
241
  * @returns {Promise<boolean>} A promise that resolves to `true` if the video is toggled successfully.
@@ -209,6 +260,18 @@ export function registerVideoEvent(): Promise<boolean> {
209
260
  return OmikitPlugin.registerVideoEvent();
210
261
  }
211
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
+
212
275
  /**
213
276
  * Removes video call event listeners.
214
277
  * @returns {Promise<boolean>} A promise that resolves to `true` if the removal is successful.