@stream-io/video-react-native-sdk 1.29.4-beta.0 → 1.30.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/CHANGELOG.md +3162 -0
- package/android/src/main/AndroidManifest.xml +1 -8
- package/android/src/main/AndroidManifestNew.xml +0 -11
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +5 -42
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +6 -70
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +4 -6
- package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +95 -0
- package/dist/commonjs/components/Call/CallContent/CallContent.js +13 -7
- package/dist/commonjs/components/Call/CallContent/CallContent.js.map +1 -1
- package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +50 -14
- package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
- package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +27 -0
- package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsGrid.js +19 -10
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsGrid.js.map +1 -1
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js +12 -9
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
- package/dist/commonjs/components/Call/CallParticipantsList/CallParticipantsList.js +19 -4
- package/dist/commonjs/components/Call/CallParticipantsList/CallParticipantsList.js.map +1 -1
- package/dist/commonjs/hooks/push/index.js +2 -0
- package/dist/commonjs/hooks/push/index.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +160 -0
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -0
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +31 -18
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +67 -0
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +1 -0
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +97 -64
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/index.js +0 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/modules/call-manager/CallManager.js +0 -26
- package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
- package/dist/commonjs/providers/StreamCall/index.js +6 -6
- package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
- package/dist/commonjs/utils/StreamVideoRN/index.js +21 -33
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/hooks/index.js +0 -11
- package/dist/commonjs/utils/hooks/index.js.map +1 -1
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +3 -52
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/commonjs/utils/push/android.js +202 -151
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/internal/ios.js +34 -17
- package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js +45 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/commonjs/utils/push/internal/utils.js +20 -32
- package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
- package/dist/commonjs/utils/push/ios.js.map +1 -1
- package/dist/commonjs/utils/push/libs/callkeep.js +17 -0
- package/dist/commonjs/utils/push/libs/callkeep.js.map +1 -0
- package/dist/commonjs/utils/push/libs/index.js +19 -8
- package/dist/commonjs/utils/push/libs/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/notifee/index.js +19 -0
- package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/voipPushNotification.js +17 -0
- package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +205 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +6 -7
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/commonjs/version.js.map +1 -1
- package/dist/module/components/Call/CallContent/CallContent.js +10 -4
- package/dist/module/components/Call/CallContent/CallContent.js.map +1 -1
- package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +52 -16
- package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
- package/dist/module/components/Call/CallContent/RTCViewPipNative.js +27 -0
- package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
- package/dist/module/components/Call/CallLayout/CallParticipantsGrid.js +19 -10
- package/dist/module/components/Call/CallLayout/CallParticipantsGrid.js.map +1 -1
- package/dist/module/components/Call/CallLayout/CallParticipantsSpotlight.js +15 -12
- package/dist/module/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
- package/dist/module/components/Call/CallParticipantsList/CallParticipantsList.js +20 -5
- package/dist/module/components/Call/CallParticipantsList/CallParticipantsList.js.map +1 -1
- package/dist/module/hooks/push/index.js +2 -0
- package/dist/module/hooks/push/index.js.map +1 -1
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +153 -0
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -0
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +31 -18
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/push/useProcessPushCallEffect.js +60 -0
- package/dist/module/hooks/push/useProcessPushCallEffect.js.map +1 -0
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +99 -66
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/index.js +0 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/modules/call-manager/CallManager.js +0 -26
- package/dist/module/modules/call-manager/CallManager.js.map +1 -1
- package/dist/module/providers/StreamCall/index.js +6 -6
- package/dist/module/providers/StreamCall/index.js.map +1 -1
- package/dist/module/utils/StreamVideoRN/index.js +21 -33
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/hooks/index.js +0 -1
- package/dist/module/utils/hooks/index.js.map +1 -1
- package/dist/module/utils/internal/registerSDKGlobals.js +3 -52
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/module/utils/push/android.js +204 -153
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/internal/ios.js +34 -17
- package/dist/module/utils/push/internal/ios.js.map +1 -1
- package/dist/module/utils/push/internal/rxSubjects.js +44 -0
- package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/module/utils/push/internal/utils.js +19 -29
- package/dist/module/utils/push/internal/utils.js.map +1 -1
- package/dist/module/utils/push/ios.js.map +1 -1
- package/dist/module/utils/push/libs/callkeep.js +11 -0
- package/dist/module/utils/push/libs/callkeep.js.map +1 -0
- package/dist/module/utils/push/libs/index.js +2 -1
- package/dist/module/utils/push/libs/index.js.map +1 -1
- package/dist/module/utils/push/libs/notifee/index.js +18 -0
- package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/module/utils/push/libs/voipPushNotification.js +11 -0
- package/dist/module/utils/push/libs/voipPushNotification.js.map +1 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js +199 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js +6 -7
- package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/version.js.map +1 -1
- package/dist/typescript/components/Call/CallContent/CallContent.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts +18 -0
- package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallLayout/CallParticipantsGrid.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallLayout/CallParticipantsSpotlight.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallParticipantsList/CallParticipantsList.d.ts.map +1 -1
- package/dist/typescript/hooks/push/index.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +5 -0
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +1 -0
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts +8 -0
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +1 -0
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/index.d.ts +0 -1
- package/dist/typescript/index.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/CallManager.d.ts +0 -5
- package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts +2 -20
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/types.d.ts +29 -54
- package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
- package/dist/typescript/utils/hooks/index.d.ts +0 -1
- package/dist/typescript/utils/hooks/index.d.ts.map +1 -1
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
- package/dist/typescript/utils/push/android.d.ts +2 -1
- package/dist/typescript/utils/push/android.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts +33 -0
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/utils.d.ts +1 -8
- package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts +2 -1
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/callkeep.d.ts +3 -0
- package/dist/typescript/utils/push/libs/callkeep.d.ts.map +1 -0
- package/dist/typescript/utils/push/libs/index.d.ts +2 -1
- package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts +1 -0
- package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +3 -0
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +6 -0
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/dist/typescript/version.d.ts.map +1 -1
- package/expo-config-plugin/dist/withAndroidManifest.js +33 -1
- package/expo-config-plugin/dist/withAndroidPermissions.js +7 -2
- package/expo-config-plugin/dist/withAppDelegate.js +197 -19
- package/expo-config-plugin/dist/withMainActivity.js +1 -1
- package/expo-config-plugin/dist/withiOSInfoPlist.js +3 -2
- package/ios/PictureInPicture/PictureInPictureAvatarView.swift +273 -0
- package/ios/PictureInPicture/PictureInPictureConnectionQualityIndicator.swift +162 -0
- package/ios/PictureInPicture/PictureInPictureContent.swift +173 -0
- package/ios/PictureInPicture/PictureInPictureContentState.swift +123 -0
- package/ios/PictureInPicture/PictureInPictureDelegateProxy.swift +89 -0
- package/ios/PictureInPicture/PictureInPictureEnforcedStopAdapter.swift +166 -0
- package/ios/PictureInPicture/PictureInPictureLogger.swift +16 -0
- package/ios/PictureInPicture/PictureInPictureParticipantOverlayView.swift +217 -0
- package/ios/PictureInPicture/PictureInPictureReconnectionView.swift +193 -0
- package/ios/PictureInPicture/StreamAVPictureInPictureVideoCallViewController.swift +125 -7
- package/ios/PictureInPicture/StreamPictureInPictureController.swift +237 -63
- package/ios/PictureInPicture/StreamPictureInPictureControllerProtocol.swift +30 -0
- package/ios/PictureInPicture/StreamPictureInPictureVideoRenderer.swift +384 -12
- package/ios/RTCViewPip.swift +187 -21
- package/ios/RTCViewPipManager.mm +9 -0
- package/ios/RTCViewPipManager.swift +3 -3
- package/ios/StreamInCallManager.m +0 -2
- package/ios/StreamInCallManager.swift +7 -19
- package/ios/StreamVideoReactNative.h +4 -7
- package/ios/StreamVideoReactNative.m +82 -189
- package/package.json +19 -14
- package/src/components/Call/CallContent/CallContent.tsx +16 -8
- package/src/components/Call/CallContent/RTCViewPipIOS.tsx +81 -15
- package/src/components/Call/CallContent/RTCViewPipNative.tsx +36 -0
- package/src/components/Call/CallLayout/CallParticipantsGrid.tsx +28 -14
- package/src/components/Call/CallLayout/CallParticipantsSpotlight.tsx +19 -10
- package/src/components/Call/CallParticipantsList/CallParticipantsList.tsx +20 -5
- package/src/hooks/push/index.ts +2 -0
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +235 -0
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +34 -21
- package/src/hooks/push/useProcessPushCallEffect.ts +108 -0
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +120 -94
- package/src/index.ts +0 -1
- package/src/modules/call-manager/CallManager.ts +0 -36
- package/src/modules/call-manager/native-module.d.ts +0 -7
- package/src/providers/StreamCall/index.tsx +6 -6
- package/src/utils/StreamVideoRN/index.ts +30 -40
- package/src/utils/StreamVideoRN/types.ts +29 -56
- package/src/utils/hooks/index.ts +0 -1
- package/src/utils/internal/registerSDKGlobals.ts +4 -47
- package/src/utils/push/android.ts +309 -227
- package/src/utils/push/internal/ios.ts +44 -28
- package/src/utils/push/internal/rxSubjects.ts +61 -0
- package/src/utils/push/internal/utils.ts +26 -45
- package/src/utils/push/ios.ts +6 -1
- package/src/utils/push/libs/callkeep.ts +16 -0
- package/src/utils/push/libs/index.ts +2 -1
- package/src/utils/push/libs/notifee/index.ts +27 -0
- package/src/utils/push/libs/voipPushNotification.ts +17 -0
- package/src/utils/push/setupIosCallKeepEvents.ts +252 -0
- package/src/utils/push/setupIosVoipPushEvents.ts +7 -11
- package/src/version.ts +1 -1
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +0 -83
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +0 -149
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +0 -121
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +0 -1
- package/dist/commonjs/utils/hooks/useDebouncedValue.js +0 -24
- package/dist/commonjs/utils/hooks/useDebouncedValue.js.map +0 -1
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js +0 -58
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js.map +0 -1
- package/dist/commonjs/utils/internal/callingx/callingx.js +0 -109
- package/dist/commonjs/utils/internal/callingx/callingx.js.map +0 -1
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +0 -48
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +0 -1
- package/dist/commonjs/utils/push/libs/callingx.js +0 -75
- package/dist/commonjs/utils/push/libs/callingx.js.map +0 -1
- package/dist/commonjs/utils/push/setupCallingExpEvents.js +0 -108
- package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +0 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +0 -114
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +0 -1
- package/dist/module/utils/hooks/useDebouncedValue.js +0 -19
- package/dist/module/utils/hooks/useDebouncedValue.js.map +0 -1
- package/dist/module/utils/internal/callingx/audioSessionPromise.js +0 -51
- package/dist/module/utils/internal/callingx/audioSessionPromise.js.map +0 -1
- package/dist/module/utils/internal/callingx/callingx.js +0 -100
- package/dist/module/utils/internal/callingx/callingx.js.map +0 -1
- package/dist/module/utils/keepCallAliveHeadlessTask.js +0 -42
- package/dist/module/utils/keepCallAliveHeadlessTask.js.map +0 -1
- package/dist/module/utils/push/libs/callingx.js +0 -67
- package/dist/module/utils/push/libs/callingx.js.map +0 -1
- package/dist/module/utils/push/setupCallingExpEvents.js +0 -102
- package/dist/module/utils/push/setupCallingExpEvents.js.map +0 -1
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +0 -5
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +0 -1
- package/dist/typescript/utils/hooks/useDebouncedValue.d.ts +0 -8
- package/dist/typescript/utils/hooks/useDebouncedValue.d.ts.map +0 -1
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts +0 -16
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts.map +0 -1
- package/dist/typescript/utils/internal/callingx/callingx.d.ts +0 -14
- package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +0 -1
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +0 -10
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/callingx.d.ts +0 -9
- package/dist/typescript/utils/push/libs/callingx.d.ts.map +0 -1
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +0 -8
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +0 -1
- package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +0 -147
- package/src/utils/hooks/useDebouncedValue.ts +0 -21
- package/src/utils/internal/callingx/audioSessionPromise.ts +0 -53
- package/src/utils/internal/callingx/callingx.ts +0 -146
- package/src/utils/keepCallAliveHeadlessTask.ts +0 -54
- package/src/utils/push/libs/callingx.ts +0 -90
- package/src/utils/push/setupCallingExpEvents.ts +0 -130
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_videoClient","_StreamVideoRN","KEEP_CALL_ALIVE_HEADLESS_TASK_NAME","exports","keepCallAliveCallRef","current","undefined","registerKeepCallAliveHeadlessTaskOnce","Platform","OS","AppRegistry","registerHeadlessTask","data","logger","videoLoggerSystem","getLogger","callCid","call","warn","cid","activeCallCid","config","StreamVideoRN","getConfig","taskToRun","foregroundService","android","e","error"],"sourceRoot":"../../../src","sources":["utils/keepCallAliveHeadlessTask.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEO,MAAMG,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAAG,0BAA0B;;AAE5E;AACA;AACA;AACA;AACO,MAAME,oBAAmD,GAAAD,OAAA,CAAAC,oBAAA,GAAG;EACjEC,OAAO,EAAEC;AACX,CAAC;AAED,SAASC,qCAAqCA,CAAA,EAAG;EAC/C,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;EAE/BC,wBAAW,CAACC,oBAAoB,CAC9BT,kCAAkC,EAClC,MAAM,MAAOU,IAAsC,IAAK;IACtD,MAAMC,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CACxC,+BACF,CAAC;IACD,MAAMC,OAAO,GAAGJ,IAAI,EAAEI,OAAO;IAE7B,MAAMC,IAAI,GAAGb,oBAAoB,CAACC,OAAO;IACzC,IAAI,CAACY,IAAI,EAAE;MACTJ,MAAM,CAACK,IAAI,CACT,kEAAkE,EAClE;QAAEF;MAAQ,CACZ,CAAC;MACD;IACF;IACA,IAAIA,OAAO,IAAIC,IAAI,CAACE,GAAG,IAAIF,IAAI,CAACE,GAAG,KAAKH,OAAO,EAAE;MAC/CH,MAAM,CAACK,IAAI,CACT,+DAA+D,EAC/D;QAAEF,OAAO;QAAEI,aAAa,EAAEH,IAAI,CAACE;MAAI,CACrC,CAAC;MACD;IACF;IAEA,MAAME,MAAM,GAAGC,4BAAa,CAACC,SAAS,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGH,MAAM,CAACI,iBAAiB,CAACC,OAAO,CAACF,SAAS;IAC5D,IAAI;MACF,MAAMA,SAAS,CAACP,IAAI,CAAC;IACvB,CAAC,CAAC,OAAOU,CAAC,EAAE;MACVd,MAAM,CAACe,KAAK,CAAC,iCAAiC,EAAED,CAAC,CAAC;IACpD;EACF,CACF,CAAC;AACH;AAEApB,qCAAqC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.extractCallingExpOptions = extractCallingExpOptions;
|
|
7
|
-
exports.getCallingxLib = getCallingxLib;
|
|
8
|
-
exports.getCallingxLibIfAvailable = getCallingxLibIfAvailable;
|
|
9
|
-
let callingx;
|
|
10
|
-
try {
|
|
11
|
-
callingx = require('@stream-io/react-native-callingx').CallingxModule;
|
|
12
|
-
} catch {}
|
|
13
|
-
function getCallingxLib() {
|
|
14
|
-
if (!callingx) {
|
|
15
|
-
throw Error('react-native-callingx library is not installed.');
|
|
16
|
-
}
|
|
17
|
-
return callingx;
|
|
18
|
-
}
|
|
19
|
-
function getCallingxLibIfAvailable() {
|
|
20
|
-
return callingx ?? undefined;
|
|
21
|
-
}
|
|
22
|
-
function extractCallingExpOptions(config) {
|
|
23
|
-
const {
|
|
24
|
-
push: pushConfig,
|
|
25
|
-
foregroundService: foregroundServiceConfig
|
|
26
|
-
} = config;
|
|
27
|
-
const callingExpOptions = {};
|
|
28
|
-
if (pushConfig?.ios) {
|
|
29
|
-
const iosOptions = {};
|
|
30
|
-
if (pushConfig.ios.supportsVideo !== undefined) {
|
|
31
|
-
iosOptions.supportsVideo = pushConfig.ios.supportsVideo;
|
|
32
|
-
}
|
|
33
|
-
if (pushConfig.ios.sound !== undefined) {
|
|
34
|
-
iosOptions.sound = pushConfig.ios.sound;
|
|
35
|
-
}
|
|
36
|
-
if (pushConfig.ios.imageName !== undefined) {
|
|
37
|
-
iosOptions.imageName = pushConfig.ios.imageName;
|
|
38
|
-
}
|
|
39
|
-
if (pushConfig.ios.callsHistory !== undefined) {
|
|
40
|
-
iosOptions.callsHistory = pushConfig.ios.callsHistory;
|
|
41
|
-
}
|
|
42
|
-
if (pushConfig.ios.displayCallTimeout !== undefined) {
|
|
43
|
-
iosOptions.displayCallTimeout = pushConfig.ios.displayCallTimeout;
|
|
44
|
-
}
|
|
45
|
-
if (Object.keys(iosOptions).length > 0) {
|
|
46
|
-
callingExpOptions.ios = iosOptions;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const androidOptions = {};
|
|
50
|
-
if (pushConfig?.android) {
|
|
51
|
-
if (pushConfig.android.incomingChannel) {
|
|
52
|
-
androidOptions.incomingChannel = pushConfig.android.incomingChannel;
|
|
53
|
-
}
|
|
54
|
-
if (pushConfig.android.titleTransformer) {
|
|
55
|
-
androidOptions.titleTransformer = pushConfig.android.titleTransformer;
|
|
56
|
-
}
|
|
57
|
-
if (pushConfig.android.subtitleTransformer) {
|
|
58
|
-
androidOptions.subtitleTransformer = pushConfig.android.subtitleTransformer;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (foregroundServiceConfig.android.channel) {
|
|
62
|
-
androidOptions.ongoingChannel = foregroundServiceConfig.android.channel;
|
|
63
|
-
}
|
|
64
|
-
if (Object.keys(androidOptions).length > 0) {
|
|
65
|
-
callingExpOptions.android = androidOptions;
|
|
66
|
-
}
|
|
67
|
-
if (pushConfig?.shouldRejectCallWhenBusy !== undefined) {
|
|
68
|
-
callingExpOptions.shouldRejectCallWhenBusy = pushConfig.shouldRejectCallWhenBusy;
|
|
69
|
-
}
|
|
70
|
-
if (pushConfig?.enableOngoingCalls !== undefined) {
|
|
71
|
-
callingExpOptions.enableOngoingCalls = pushConfig?.enableOngoingCalls;
|
|
72
|
-
}
|
|
73
|
-
return callingExpOptions;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=callingx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["callingx","require","CallingxModule","getCallingxLib","Error","getCallingxLibIfAvailable","undefined","extractCallingExpOptions","config","push","pushConfig","foregroundService","foregroundServiceConfig","callingExpOptions","ios","iosOptions","supportsVideo","sound","imageName","callsHistory","displayCallTimeout","Object","keys","length","androidOptions","android","incomingChannel","titleTransformer","subtitleTransformer","channel","ongoingChannel","shouldRejectCallWhenBusy","enableOngoingCalls"],"sourceRoot":"../../../../../src","sources":["utils/push/libs/callingx.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.setupCallingExpEvents = setupCallingExpEvents;
|
|
7
|
-
var _videoClient = require("@stream-io/video-client");
|
|
8
|
-
var _utils = require("./internal/utils");
|
|
9
|
-
var _pushLogoutCallback = require("../internal/pushLogoutCallback");
|
|
10
|
-
var _audioSessionPromise = require("../internal/callingx/audioSessionPromise");
|
|
11
|
-
var _callingx = require("./libs/callingx");
|
|
12
|
-
var _reactNative = require("react-native");
|
|
13
|
-
const logger = _videoClient.videoLoggerSystem.getLogger('callingx');
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Sets up callingx event listeners for handling call actions from the native calling UI.
|
|
17
|
-
*/
|
|
18
|
-
function setupCallingExpEvents(pushConfig) {
|
|
19
|
-
const hasPushProvider = _reactNative.Platform.OS === 'android' && pushConfig.android?.pushProviderName || _reactNative.Platform.OS === 'ios' && pushConfig.ios?.pushProviderName;
|
|
20
|
-
if (!hasPushProvider) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const callingx = (0, _callingx.getCallingxLib)();
|
|
24
|
-
const {
|
|
25
|
-
remove: removeAnswerCall
|
|
26
|
-
} = callingx.addEventListener('answerCall', params => {
|
|
27
|
-
onAcceptCall(pushConfig)(params).catch(err => {
|
|
28
|
-
logger.error('Failed to process answerCall event', err);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
const {
|
|
32
|
-
remove: removeEndCall
|
|
33
|
-
} = callingx.addEventListener('endCall', params => {
|
|
34
|
-
onEndCall(pushConfig)(params).catch(err => {
|
|
35
|
-
logger.error('Failed to process endCall event', err);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
const {
|
|
39
|
-
remove: removeDidActivateAudioSession
|
|
40
|
-
} = callingx.addEventListener('didActivateAudioSession', onDidActivateAudioSession);
|
|
41
|
-
const {
|
|
42
|
-
remove: removeDidDeactivateAudioSession
|
|
43
|
-
} = callingx.addEventListener('didDeactivateAudioSession', onDidDeactivateAudioSession);
|
|
44
|
-
|
|
45
|
-
//NOTE: until getInitialEvents invocation, events are delayed and won't be sent to event listeners, this is a way to make sure none of required events are missed
|
|
46
|
-
//in most cases there will be no delayed answers or ends, but it we don't want to miss any of them
|
|
47
|
-
const events = callingx.getInitialEvents();
|
|
48
|
-
events.forEach(event => {
|
|
49
|
-
const {
|
|
50
|
-
eventName,
|
|
51
|
-
params
|
|
52
|
-
} = event;
|
|
53
|
-
if (eventName === 'answerCall') {
|
|
54
|
-
logger.debug(`answerCall delayed event callId: ${params?.callId}`);
|
|
55
|
-
onAcceptCall(pushConfig)(params).catch(err => {
|
|
56
|
-
logger.error('Failed to process delayed answerCall event', err);
|
|
57
|
-
});
|
|
58
|
-
} else if (eventName === 'endCall') {
|
|
59
|
-
logger.debug(`endCall delayed event callId: ${params?.callId}`);
|
|
60
|
-
onEndCall(pushConfig)(params).catch(err => {
|
|
61
|
-
logger.error('Failed to process delayed endCall event', err);
|
|
62
|
-
});
|
|
63
|
-
} else if (eventName === 'didActivateAudioSession') {
|
|
64
|
-
onDidActivateAudioSession();
|
|
65
|
-
} else if (eventName === 'didDeactivateAudioSession') {
|
|
66
|
-
onDidDeactivateAudioSession();
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
(0, _pushLogoutCallback.setPushLogoutCallback)(async () => {
|
|
70
|
-
removeAnswerCall();
|
|
71
|
-
removeEndCall();
|
|
72
|
-
removeDidActivateAudioSession();
|
|
73
|
-
removeDidDeactivateAudioSession();
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
const onDidActivateAudioSession = () => {
|
|
77
|
-
logger.debug('callingExpDidActivateAudioSession');
|
|
78
|
-
(0, _audioSessionPromise.resolvePendingAudioSession)();
|
|
79
|
-
};
|
|
80
|
-
const onDidDeactivateAudioSession = () => {
|
|
81
|
-
logger.debug('callingExpDidDeactivateAudioSession');
|
|
82
|
-
};
|
|
83
|
-
const onAcceptCall = pushConfig => async ({
|
|
84
|
-
callId: call_cid,
|
|
85
|
-
source
|
|
86
|
-
}) => {
|
|
87
|
-
logger.debug(`onAcceptCall event callId: ${call_cid} source: ${source}`);
|
|
88
|
-
if (source === 'app' || !call_cid) {
|
|
89
|
-
//we only need to process the call if the call was answered from the system
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
(0, _utils.clearPushWSEventSubscriptions)(call_cid);
|
|
93
|
-
// to process the call in the app
|
|
94
|
-
await (0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'accept');
|
|
95
|
-
};
|
|
96
|
-
const onEndCall = pushConfig => async ({
|
|
97
|
-
callId: call_cid,
|
|
98
|
-
source
|
|
99
|
-
}) => {
|
|
100
|
-
logger.debug(`onEndCall event callId: ${call_cid} source: ${source}`);
|
|
101
|
-
if (source === 'app' || !call_cid) {
|
|
102
|
-
//we only need to process the call if the call was rejected from the system
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
(0, _utils.clearPushWSEventSubscriptions)(call_cid);
|
|
106
|
-
await (0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'decline');
|
|
107
|
-
};
|
|
108
|
-
//# sourceMappingURL=setupCallingExpEvents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_utils","_pushLogoutCallback","_audioSessionPromise","_callingx","_reactNative","logger","videoLoggerSystem","getLogger","setupCallingExpEvents","pushConfig","hasPushProvider","Platform","OS","android","pushProviderName","ios","callingx","getCallingxLib","remove","removeAnswerCall","addEventListener","params","onAcceptCall","catch","err","error","removeEndCall","onEndCall","removeDidActivateAudioSession","onDidActivateAudioSession","removeDidDeactivateAudioSession","onDidDeactivateAudioSession","events","getInitialEvents","forEach","event","eventName","debug","callId","setPushLogoutCallback","resolvePendingAudioSession","call_cid","source","clearPushWSEventSubscriptions","processCallFromPushInBackground"],"sourceRoot":"../../../../src","sources":["utils/push/setupCallingExpEvents.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
2
|
-
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
|
-
import { useEffect, useMemo } from 'react';
|
|
4
|
-
import { getCallDisplayName } from '../../utils/internal/callingx/callingx';
|
|
5
|
-
import { getCallingxLibIfAvailable } from '../../utils/push/libs/callingx';
|
|
6
|
-
const logger = videoLoggerSystem.getLogger('callingx');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* This hook is used to inform sync call state with CallKit/Telecom (i.e. start call, end call, mute/unmute call).
|
|
10
|
-
*/
|
|
11
|
-
export const useCallingExpWithCallingStateEffect = () => {
|
|
12
|
-
const {
|
|
13
|
-
useMicrophoneState,
|
|
14
|
-
useParticipants,
|
|
15
|
-
useCallMembers
|
|
16
|
-
} = useCallStateHooks();
|
|
17
|
-
const activeCall = useCall();
|
|
18
|
-
const {
|
|
19
|
-
isMute,
|
|
20
|
-
microphone
|
|
21
|
-
} = useMicrophoneState();
|
|
22
|
-
const callMembers = useCallMembers();
|
|
23
|
-
const participants = useParticipants();
|
|
24
|
-
const activeCallCid = activeCall?.cid;
|
|
25
|
-
const currentUserId = activeCall?.currentUserId;
|
|
26
|
-
const callDisplayName = useMemo(() => getCallDisplayName(callMembers, participants, currentUserId), [callMembers, participants, currentUserId]);
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
return () => {
|
|
29
|
-
const callingx = getCallingxLibIfAvailable();
|
|
30
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
34
|
-
if (!isCallTracked) {
|
|
35
|
-
logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to end in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
//if incoming stream call was unmounted, we need to end the call in CallKit/Telecom
|
|
39
|
-
logger.debug(`useCallingExpWithCallingStateEffect: Ending call in callingx: ${activeCallCid}`);
|
|
40
|
-
callingx.endCallWithReason(activeCallCid, 'local').catch(error => {
|
|
41
|
-
logger.error(`useCallingExpWithCallingStateEffect: Error ending call in callingx: ${activeCallCid}`, error);
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
}, [activeCallCid]);
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
const callingx = getCallingxLibIfAvailable();
|
|
47
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
51
|
-
if (!isCallTracked) {
|
|
52
|
-
logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to update callingx: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
callingx.updateDisplay(activeCallCid, activeCallCid, callDisplayName);
|
|
56
|
-
}, [activeCallCid, callDisplayName]);
|
|
57
|
-
|
|
58
|
-
// Sync microphone mute state from app → CallKit
|
|
59
|
-
useEffect(() => {
|
|
60
|
-
const callingx = getCallingxLibIfAvailable();
|
|
61
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
65
|
-
if (!isCallTracked) {
|
|
66
|
-
logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
callingx.setMutedCall(activeCallCid, isMute);
|
|
70
|
-
}, [activeCallCid, isMute]);
|
|
71
|
-
|
|
72
|
-
// Sync mute state from CallKit → app (only for system-initiated mute actions)
|
|
73
|
-
useEffect(() => {
|
|
74
|
-
const callingx = getCallingxLibIfAvailable();
|
|
75
|
-
if (!callingx?.isSetup || !activeCallCid) {
|
|
76
|
-
logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} callingx isSetup: ${callingx?.isSetup}`);
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Listen to mic toggle events from CallKit/Telecom and update stream call microphone state.
|
|
81
|
-
// Only system-initiated mute actions (e.g. user tapped mute on the native CallKit UI)
|
|
82
|
-
// are sent here — app-initiated actions are filtered out on the native side to prevent
|
|
83
|
-
// the feedback loop: app mutes mic → setMutedCall → CallKit delegate → event to JS → loop.
|
|
84
|
-
const subscription = callingx.addEventListener('didPerformSetMutedCallAction', async event => {
|
|
85
|
-
const {
|
|
86
|
-
callId,
|
|
87
|
-
muted
|
|
88
|
-
} = event;
|
|
89
|
-
const isCallTracked = callingx.isCallTracked(activeCallCid);
|
|
90
|
-
if (!isCallTracked || callId !== activeCallCid) {
|
|
91
|
-
logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked} callId: ${callId}`);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
const isCurrentlyMuted = microphone.state.status === 'disabled';
|
|
95
|
-
if (isCurrentlyMuted === muted) {
|
|
96
|
-
logger.debug(`useCallingExpWithCallingStateEffect: Mic toggle is already in the desired state: ${muted} for call: ${activeCallCid}`);
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
try {
|
|
100
|
-
if (muted) {
|
|
101
|
-
await microphone.disable();
|
|
102
|
-
} else {
|
|
103
|
-
await microphone.enable();
|
|
104
|
-
}
|
|
105
|
-
} catch (error) {
|
|
106
|
-
logger.error(`useCallingExpWithCallingStateEffect: Error toggling mic in calling exp: ${activeCallCid}`, error);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
return () => {
|
|
110
|
-
subscription.remove();
|
|
111
|
-
};
|
|
112
|
-
}, [activeCallCid, microphone]);
|
|
113
|
-
};
|
|
114
|
-
//# sourceMappingURL=useCallingExpWithCallingStateEffect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","isMute","microphone","callMembers","participants","activeCallCid","cid","currentUserId","callDisplayName","callingx","isSetup","isCallTracked","debug","endCallWithReason","catch","error","updateDisplay","setMutedCall","subscription","addEventListener","event","callId","muted","isCurrentlyMuted","state","status","disable","enable","remove"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* this is a custom hook that takes a value and a delay and returns a debounced value
|
|
5
|
-
* @param {T} value
|
|
6
|
-
* @param {number} delay
|
|
7
|
-
* @returns {T}
|
|
8
|
-
*/
|
|
9
|
-
export function useDebouncedValue(value, delay) {
|
|
10
|
-
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
13
|
-
return () => {
|
|
14
|
-
clearTimeout(timer);
|
|
15
|
-
};
|
|
16
|
-
}, [value, delay]);
|
|
17
|
-
return debouncedValue;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=useDebouncedValue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","useDebouncedValue","value","delay","debouncedValue","setDebouncedValue","timer","setTimeout","clearTimeout"],"sourceRoot":"../../../../src","sources":["utils/hooks/useDebouncedValue.ts"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAIC,KAAQ,EAAEC,KAAa,EAAK;EAC/D,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGL,QAAQ,CAAIE,KAAK,CAAC;EAE9DH,SAAS,CAAC,MAAM;IACd,MAAMO,KAAK,GAAGC,UAAU,CAAC,MAAMF,iBAAiB,CAACH,KAAK,CAAC,EAAEC,KAAK,CAAC;IAE/D,OAAO,MAAM;MACXK,YAAY,CAACF,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACJ,KAAK,EAAEC,KAAK,CAAC,CAAC;EAElB,OAAOC,cAAc;AACvB","ignoreList":[]}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Module to manage pending promise for audio session activation.
|
|
3
|
-
* Used to wait for iOS CallKit's didActivateAudioSession event after starting a call.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
let pendingResolve = null;
|
|
7
|
-
let pendingTimeout = null;
|
|
8
|
-
/**
|
|
9
|
-
* Flag to check if the audio session is already activated.
|
|
10
|
-
* This solves race condition for a cold start case, when the audio session is activated before the promise is created.
|
|
11
|
-
*/
|
|
12
|
-
let isAudioSessionAlreadyActivated = false;
|
|
13
|
-
const AUDIO_SESSION_TIMEOUT_MS = 5000;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Creates a promise that resolves when the audio session is activated,
|
|
17
|
-
* or after a timeout to prevent hanging indefinitely.
|
|
18
|
-
* @returns Promise that resolves when audio session is activated or timeout occurs
|
|
19
|
-
*/
|
|
20
|
-
export function waitForAudioSessionActivation() {
|
|
21
|
-
if (isAudioSessionAlreadyActivated) {
|
|
22
|
-
isAudioSessionAlreadyActivated = false;
|
|
23
|
-
return Promise.resolve();
|
|
24
|
-
}
|
|
25
|
-
return new Promise(resolve => {
|
|
26
|
-
pendingResolve = resolve;
|
|
27
|
-
pendingTimeout = setTimeout(() => {
|
|
28
|
-
// Resolve on timeout to prevent hanging
|
|
29
|
-
resolvePendingAudioSession();
|
|
30
|
-
}, AUDIO_SESSION_TIMEOUT_MS);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Resolves the pending audio session activation promise.
|
|
36
|
-
* Called when the didActivateAudioSession event fires or on timeout.
|
|
37
|
-
*/
|
|
38
|
-
export function resolvePendingAudioSession() {
|
|
39
|
-
if (pendingTimeout) {
|
|
40
|
-
clearTimeout(pendingTimeout);
|
|
41
|
-
pendingTimeout = null;
|
|
42
|
-
}
|
|
43
|
-
if (pendingResolve) {
|
|
44
|
-
pendingResolve();
|
|
45
|
-
pendingResolve = null;
|
|
46
|
-
isAudioSessionAlreadyActivated = false;
|
|
47
|
-
} else {
|
|
48
|
-
isAudioSessionAlreadyActivated = true;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=audioSessionPromise.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["pendingResolve","pendingTimeout","isAudioSessionAlreadyActivated","AUDIO_SESSION_TIMEOUT_MS","waitForAudioSessionActivation","Promise","resolve","setTimeout","resolvePendingAudioSession","clearTimeout"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/audioSessionPromise.ts"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA,IAAIA,cAAmC,GAAG,IAAI;AAC9C,IAAIC,cAAoD,GAAG,IAAI;AAC/D;AACA;AACA;AACA;AACA,IAAIC,8BAA8B,GAAG,KAAK;AAE1C,MAAMC,wBAAwB,GAAG,IAAI;;AAErC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,6BAA6BA,CAAA,EAAkB;EAC7D,IAAIF,8BAA8B,EAAE;IAClCA,8BAA8B,GAAG,KAAK;IACtC,OAAOG,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEA,OAAO,IAAID,OAAO,CAAEC,OAAO,IAAK;IAC9BN,cAAc,GAAGM,OAAO;IACxBL,cAAc,GAAGM,UAAU,CAAC,MAAM;MAChC;MACAC,0BAA0B,CAAC,CAAC;IAC9B,CAAC,EAAEL,wBAAwB,CAAC;EAC9B,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,0BAA0BA,CAAA,EAAS;EACjD,IAAIP,cAAc,EAAE;IAClBQ,YAAY,CAACR,cAAc,CAAC;IAC5BA,cAAc,GAAG,IAAI;EACvB;EAEA,IAAID,cAAc,EAAE;IAClBA,cAAc,CAAC,CAAC;IAChBA,cAAc,GAAG,IAAI;IACrBE,8BAA8B,GAAG,KAAK;EACxC,CAAC,MAAM;IACLA,8BAA8B,GAAG,IAAI;EACvC;AACF","ignoreList":[]}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/***
|
|
2
|
-
* Internal utils for callingx library usage from video-client.
|
|
3
|
-
* See @./registerSDKGlobals.ts for more usage details.
|
|
4
|
-
*/
|
|
5
|
-
import { Platform } from 'react-native';
|
|
6
|
-
import { getCallingxLibIfAvailable } from '../../push/libs/callingx';
|
|
7
|
-
import { waitForAudioSessionActivation } from './audioSessionPromise';
|
|
8
|
-
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
9
|
-
const CallingxModule = getCallingxLibIfAvailable();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Gets the call display name. To be used for display in native call screen.
|
|
13
|
-
*/
|
|
14
|
-
export function getCallDisplayName(callMembers, participants, currentUserId) {
|
|
15
|
-
if (!callMembers || !participants || !currentUserId) {
|
|
16
|
-
return 'Call';
|
|
17
|
-
}
|
|
18
|
-
let names = [];
|
|
19
|
-
if (callMembers.length > 0) {
|
|
20
|
-
// for ringing calls, members array contains all call members from the very early state and participants array is empty in the beginning
|
|
21
|
-
names = callMembers.filter(member => member.user.id !== currentUserId).map(member => member.user.name).filter(name => name !== undefined);
|
|
22
|
-
} else if (participants.length > 0) {
|
|
23
|
-
// for non-ringing calls, members array is empty and we rely on participants array there
|
|
24
|
-
names = participants.filter(participant => participant.userId !== currentUserId).map(participant => participant.name).filter(Boolean);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// if no names are found, we use the name of the current user
|
|
28
|
-
if (names.length === 0) {
|
|
29
|
-
names = [participants.find(participant => participant.userId === currentUserId)?.name ?? 'Call'];
|
|
30
|
-
}
|
|
31
|
-
return names.sort().join(', ');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Starts the call in the callingx library.
|
|
36
|
-
* Must be called for all outgoing calls
|
|
37
|
-
* and optionally for non-ringing calls when ongoing calls are enabled.
|
|
38
|
-
*/
|
|
39
|
-
export async function startCallingxCall(call) {
|
|
40
|
-
if (!CallingxModule || !CallingxModule.isSetup) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const logger = videoLoggerSystem.getLogger('callingx');
|
|
44
|
-
const isOutcomingCall = call.ringing && call.isCreatedByMe;
|
|
45
|
-
const isIncomingCall = call.ringing && !call.isCreatedByMe;
|
|
46
|
-
const callDisplayName = getCallDisplayName(call.state.members, call.state.participants, call.currentUserId);
|
|
47
|
-
if (!CallingxModule.isCallTracked(call.cid) && (isOutcomingCall || !call.ringing && CallingxModule.isOngoingCallsEnabled)) {
|
|
48
|
-
try {
|
|
49
|
-
await CallingxModule.startCall(call.cid,
|
|
50
|
-
// unique id for call
|
|
51
|
-
call.id,
|
|
52
|
-
// phone number for display in dialer (we use call id as phone number)
|
|
53
|
-
callDisplayName,
|
|
54
|
-
// display name for display in call screen
|
|
55
|
-
call.state.settings?.video?.enabled ?? false // is video call?
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
// Wait for audio session activation on iOS only
|
|
59
|
-
if (Platform.OS === 'ios') {
|
|
60
|
-
await waitForAudioSessionActivation();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// TODO: this must be done after join call is complete
|
|
64
|
-
CallingxModule.setCurrentCallActive(call.cid);
|
|
65
|
-
} catch (error) {
|
|
66
|
-
logger.error(`startCallingxCall: Error starting call in callingx: ${call.cid}`, error);
|
|
67
|
-
}
|
|
68
|
-
} else if (isIncomingCall) {
|
|
69
|
-
try {
|
|
70
|
-
// Awaits native CallKit/Telecom registration before answering.
|
|
71
|
-
// Safe to call even if the call is already registered (e.g. from VoIP push) --
|
|
72
|
-
// iOS early-returns with no error, Android sends the registered broadcast.
|
|
73
|
-
await CallingxModule.displayIncomingCall(call.cid,
|
|
74
|
-
// unique id for call
|
|
75
|
-
call.id,
|
|
76
|
-
// phone number for display in dialer (we use call id as phone number)
|
|
77
|
-
callDisplayName,
|
|
78
|
-
// display name for display in call screen
|
|
79
|
-
call.state.settings?.video?.enabled ?? false // is video call?
|
|
80
|
-
);
|
|
81
|
-
await CallingxModule.answerIncomingCall(call.cid);
|
|
82
|
-
if (Platform.OS === 'ios') {
|
|
83
|
-
await waitForAudioSessionActivation();
|
|
84
|
-
}
|
|
85
|
-
} catch (error) {
|
|
86
|
-
logger.error(`Error displaying incoming call in callingx: ${call.cid}`, error);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
export async function endCallingxCall(call, reason) {
|
|
91
|
-
if (!CallingxModule || !CallingxModule.isSetup || !CallingxModule.isCallTracked(call.cid)) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
await CallingxModule.endCallWithReason(call.cid, reason ?? 'local');
|
|
96
|
-
} catch (error) {
|
|
97
|
-
videoLoggerSystem.getLogger('callingx').error(`endCallingxCall: Error ending call in callingx: ${call.cid}`, error);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=callingx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","getCallingxLibIfAvailable","waitForAudioSessionActivation","videoLoggerSystem","CallingxModule","getCallDisplayName","callMembers","participants","currentUserId","names","length","filter","member","user","id","map","name","undefined","participant","userId","Boolean","find","sort","join","startCallingxCall","call","isSetup","logger","getLogger","isOutcomingCall","ringing","isCreatedByMe","isIncomingCall","callDisplayName","state","members","isCallTracked","cid","isOngoingCallsEnabled","startCall","settings","video","enabled","OS","setCurrentCallActive","error","displayIncomingCall","answerIncomingCall","endCallingxCall","reason","endCallWithReason"],"sourceRoot":"../../../../../src","sources":["utils/internal/callingx/callingx.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { AppRegistry, Platform } from 'react-native';
|
|
2
|
-
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
3
|
-
import { StreamVideoRN } from './StreamVideoRN';
|
|
4
|
-
export const KEEP_CALL_ALIVE_HEADLESS_TASK_NAME = 'StreamVideoKeepCallAlive';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* The keep-alive headless task needs access to the active `Call` instance.
|
|
8
|
-
* The keep-alive hook will set this reference before starting the native service.
|
|
9
|
-
*/
|
|
10
|
-
export const keepCallAliveCallRef = {
|
|
11
|
-
current: undefined
|
|
12
|
-
};
|
|
13
|
-
function registerKeepCallAliveHeadlessTaskOnce() {
|
|
14
|
-
if (Platform.OS !== 'android') return;
|
|
15
|
-
AppRegistry.registerHeadlessTask(KEEP_CALL_ALIVE_HEADLESS_TASK_NAME, () => async data => {
|
|
16
|
-
const logger = videoLoggerSystem.getLogger('KEEP_CALL_ALIVE_HEADLESS_TASK');
|
|
17
|
-
const callCid = data?.callCid;
|
|
18
|
-
const call = keepCallAliveCallRef.current;
|
|
19
|
-
if (!call) {
|
|
20
|
-
logger.warn('No active call instance available for keep-alive task; skipping.', {
|
|
21
|
-
callCid
|
|
22
|
-
});
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
if (callCid && call.cid && call.cid !== callCid) {
|
|
26
|
-
logger.warn('Keep-alive task callCid does not match active call; skipping.', {
|
|
27
|
-
callCid,
|
|
28
|
-
activeCallCid: call.cid
|
|
29
|
-
});
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const config = StreamVideoRN.getConfig();
|
|
33
|
-
const taskToRun = config.foregroundService.android.taskToRun;
|
|
34
|
-
try {
|
|
35
|
-
await taskToRun(call);
|
|
36
|
-
} catch (e) {
|
|
37
|
-
logger.error('Keep-alive headless task failed', e);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
registerKeepCallAliveHeadlessTaskOnce();
|
|
42
|
-
//# sourceMappingURL=keepCallAliveHeadlessTask.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["AppRegistry","Platform","videoLoggerSystem","StreamVideoRN","KEEP_CALL_ALIVE_HEADLESS_TASK_NAME","keepCallAliveCallRef","current","undefined","registerKeepCallAliveHeadlessTaskOnce","OS","registerHeadlessTask","data","logger","getLogger","callCid","call","warn","cid","activeCallCid","config","getConfig","taskToRun","foregroundService","android","e","error"],"sourceRoot":"../../../src","sources":["utils/keepCallAliveHeadlessTask.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,cAAc;AAEpD,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,aAAa,QAAQ,iBAAiB;AAE/C,OAAO,MAAMC,kCAAkC,GAAG,0BAA0B;;AAE5E;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAmD,GAAG;EACjEC,OAAO,EAAEC;AACX,CAAC;AAED,SAASC,qCAAqCA,CAAA,EAAG;EAC/C,IAAIP,QAAQ,CAACQ,EAAE,KAAK,SAAS,EAAE;EAE/BT,WAAW,CAACU,oBAAoB,CAC9BN,kCAAkC,EAClC,MAAM,MAAOO,IAAsC,IAAK;IACtD,MAAMC,MAAM,GAAGV,iBAAiB,CAACW,SAAS,CACxC,+BACF,CAAC;IACD,MAAMC,OAAO,GAAGH,IAAI,EAAEG,OAAO;IAE7B,MAAMC,IAAI,GAAGV,oBAAoB,CAACC,OAAO;IACzC,IAAI,CAACS,IAAI,EAAE;MACTH,MAAM,CAACI,IAAI,CACT,kEAAkE,EAClE;QAAEF;MAAQ,CACZ,CAAC;MACD;IACF;IACA,IAAIA,OAAO,IAAIC,IAAI,CAACE,GAAG,IAAIF,IAAI,CAACE,GAAG,KAAKH,OAAO,EAAE;MAC/CF,MAAM,CAACI,IAAI,CACT,+DAA+D,EAC/D;QAAEF,OAAO;QAAEI,aAAa,EAAEH,IAAI,CAACE;MAAI,CACrC,CAAC;MACD;IACF;IAEA,MAAME,MAAM,GAAGhB,aAAa,CAACiB,SAAS,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGF,MAAM,CAACG,iBAAiB,CAACC,OAAO,CAACF,SAAS;IAC5D,IAAI;MACF,MAAMA,SAAS,CAACN,IAAI,CAAC;IACvB,CAAC,CAAC,OAAOS,CAAC,EAAE;MACVZ,MAAM,CAACa,KAAK,CAAC,iCAAiC,EAAED,CAAC,CAAC;IACpD;EACF,CACF,CAAC;AACH;AAEAhB,qCAAqC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
let callingx;
|
|
2
|
-
try {
|
|
3
|
-
callingx = require('@stream-io/react-native-callingx').CallingxModule;
|
|
4
|
-
} catch {}
|
|
5
|
-
export function getCallingxLib() {
|
|
6
|
-
if (!callingx) {
|
|
7
|
-
throw Error('react-native-callingx library is not installed.');
|
|
8
|
-
}
|
|
9
|
-
return callingx;
|
|
10
|
-
}
|
|
11
|
-
export function getCallingxLibIfAvailable() {
|
|
12
|
-
return callingx ?? undefined;
|
|
13
|
-
}
|
|
14
|
-
export function extractCallingExpOptions(config) {
|
|
15
|
-
const {
|
|
16
|
-
push: pushConfig,
|
|
17
|
-
foregroundService: foregroundServiceConfig
|
|
18
|
-
} = config;
|
|
19
|
-
const callingExpOptions = {};
|
|
20
|
-
if (pushConfig?.ios) {
|
|
21
|
-
const iosOptions = {};
|
|
22
|
-
if (pushConfig.ios.supportsVideo !== undefined) {
|
|
23
|
-
iosOptions.supportsVideo = pushConfig.ios.supportsVideo;
|
|
24
|
-
}
|
|
25
|
-
if (pushConfig.ios.sound !== undefined) {
|
|
26
|
-
iosOptions.sound = pushConfig.ios.sound;
|
|
27
|
-
}
|
|
28
|
-
if (pushConfig.ios.imageName !== undefined) {
|
|
29
|
-
iosOptions.imageName = pushConfig.ios.imageName;
|
|
30
|
-
}
|
|
31
|
-
if (pushConfig.ios.callsHistory !== undefined) {
|
|
32
|
-
iosOptions.callsHistory = pushConfig.ios.callsHistory;
|
|
33
|
-
}
|
|
34
|
-
if (pushConfig.ios.displayCallTimeout !== undefined) {
|
|
35
|
-
iosOptions.displayCallTimeout = pushConfig.ios.displayCallTimeout;
|
|
36
|
-
}
|
|
37
|
-
if (Object.keys(iosOptions).length > 0) {
|
|
38
|
-
callingExpOptions.ios = iosOptions;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
const androidOptions = {};
|
|
42
|
-
if (pushConfig?.android) {
|
|
43
|
-
if (pushConfig.android.incomingChannel) {
|
|
44
|
-
androidOptions.incomingChannel = pushConfig.android.incomingChannel;
|
|
45
|
-
}
|
|
46
|
-
if (pushConfig.android.titleTransformer) {
|
|
47
|
-
androidOptions.titleTransformer = pushConfig.android.titleTransformer;
|
|
48
|
-
}
|
|
49
|
-
if (pushConfig.android.subtitleTransformer) {
|
|
50
|
-
androidOptions.subtitleTransformer = pushConfig.android.subtitleTransformer;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (foregroundServiceConfig.android.channel) {
|
|
54
|
-
androidOptions.ongoingChannel = foregroundServiceConfig.android.channel;
|
|
55
|
-
}
|
|
56
|
-
if (Object.keys(androidOptions).length > 0) {
|
|
57
|
-
callingExpOptions.android = androidOptions;
|
|
58
|
-
}
|
|
59
|
-
if (pushConfig?.shouldRejectCallWhenBusy !== undefined) {
|
|
60
|
-
callingExpOptions.shouldRejectCallWhenBusy = pushConfig.shouldRejectCallWhenBusy;
|
|
61
|
-
}
|
|
62
|
-
if (pushConfig?.enableOngoingCalls !== undefined) {
|
|
63
|
-
callingExpOptions.enableOngoingCalls = pushConfig?.enableOngoingCalls;
|
|
64
|
-
}
|
|
65
|
-
return callingExpOptions;
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=callingx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["callingx","require","CallingxModule","getCallingxLib","Error","getCallingxLibIfAvailable","undefined","extractCallingExpOptions","config","push","pushConfig","foregroundService","foregroundServiceConfig","callingExpOptions","ios","iosOptions","supportsVideo","sound","imageName","callsHistory","displayCallTimeout","Object","keys","length","androidOptions","android","incomingChannel","titleTransformer","subtitleTransformer","channel","ongoingChannel","shouldRejectCallWhenBusy","enableOngoingCalls"],"sourceRoot":"../../../../../src","sources":["utils/push/libs/callingx.ts"],"mappings":"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","ignoreList":[]}
|