@stream-io/video-react-native-sdk 1.44.0 → 2.0.0-beta.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 (106) hide show
  1. package/CHANGELOG.md +26 -3
  2. package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +112 -26
  3. package/android/src/main/java/com/streamvideo/reactnative/util/CallAlivePermissionsHelper.kt +68 -37
  4. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +12 -6
  5. package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -1
  6. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +38 -11
  7. package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  8. package/dist/commonjs/hooks/useLoopbackRecording.js +10 -127
  9. package/dist/commonjs/hooks/useLoopbackRecording.js.map +1 -1
  10. package/dist/commonjs/utils/StreamVideoRN/index.js +2 -0
  11. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  12. package/dist/commonjs/utils/internal/callingx/callingx.js +38 -56
  13. package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -1
  14. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +43 -4
  15. package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -1
  16. package/dist/commonjs/utils/push/android.js +7 -167
  17. package/dist/commonjs/utils/push/android.js.map +1 -1
  18. package/dist/commonjs/utils/push/internal/android.js +204 -0
  19. package/dist/commonjs/utils/push/internal/android.js.map +1 -0
  20. package/dist/commonjs/utils/push/libs/firebaseMessaging/index.js +9 -1
  21. package/dist/commonjs/utils/push/libs/firebaseMessaging/index.js.map +1 -1
  22. package/dist/commonjs/utils/push/libs/firebaseMessaging/lib.js +1 -1
  23. package/dist/commonjs/utils/push/libs/firebaseMessaging/lib.js.map +1 -1
  24. package/dist/commonjs/utils/push/setupAndroidPushEvents.js +25 -0
  25. package/dist/commonjs/utils/push/setupAndroidPushEvents.js.map +1 -0
  26. package/dist/commonjs/utils/push/setupCallingExpEvents.js +6 -2
  27. package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +1 -1
  28. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +6 -7
  29. package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
  30. package/dist/commonjs/utils/push/utils.js.map +1 -1
  31. package/dist/commonjs/version.js +1 -1
  32. package/dist/commonjs/version.js.map +1 -1
  33. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +12 -6
  34. package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -1
  35. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +39 -12
  36. package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
  37. package/dist/module/hooks/useLoopbackRecording.js +10 -127
  38. package/dist/module/hooks/useLoopbackRecording.js.map +1 -1
  39. package/dist/module/utils/StreamVideoRN/index.js +2 -0
  40. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  41. package/dist/module/utils/internal/callingx/callingx.js +38 -56
  42. package/dist/module/utils/internal/callingx/callingx.js.map +1 -1
  43. package/dist/module/utils/keepCallAliveHeadlessTask.js +41 -3
  44. package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -1
  45. package/dist/module/utils/push/android.js +9 -169
  46. package/dist/module/utils/push/android.js.map +1 -1
  47. package/dist/module/utils/push/internal/android.js +200 -0
  48. package/dist/module/utils/push/internal/android.js.map +1 -0
  49. package/dist/module/utils/push/libs/firebaseMessaging/index.js +9 -1
  50. package/dist/module/utils/push/libs/firebaseMessaging/index.js.map +1 -1
  51. package/dist/module/utils/push/libs/firebaseMessaging/lib.js +1 -1
  52. package/dist/module/utils/push/libs/firebaseMessaging/lib.js.map +1 -1
  53. package/dist/module/utils/push/setupAndroidPushEvents.js +21 -0
  54. package/dist/module/utils/push/setupAndroidPushEvents.js.map +1 -0
  55. package/dist/module/utils/push/setupCallingExpEvents.js +6 -2
  56. package/dist/module/utils/push/setupCallingExpEvents.js.map +1 -1
  57. package/dist/module/utils/push/setupIosVoipPushEvents.js +6 -7
  58. package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
  59. package/dist/module/utils/push/utils.js.map +1 -1
  60. package/dist/module/version.js +1 -1
  61. package/dist/module/version.js.map +1 -1
  62. package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -1
  63. package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
  64. package/dist/typescript/hooks/useLoopbackRecording.d.ts +12 -69
  65. package/dist/typescript/hooks/useLoopbackRecording.d.ts.map +1 -1
  66. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  67. package/dist/typescript/utils/StreamVideoRN/types.d.ts +1 -2
  68. package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
  69. package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -1
  70. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +9 -0
  71. package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -1
  72. package/dist/typescript/utils/push/android.d.ts +3 -4
  73. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  74. package/dist/typescript/utils/push/internal/android.d.ts +8 -0
  75. package/dist/typescript/utils/push/internal/android.d.ts.map +1 -0
  76. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +6 -4
  77. package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
  78. package/dist/typescript/utils/push/libs/firebaseMessaging/lib.d.ts +2 -2
  79. package/dist/typescript/utils/push/libs/firebaseMessaging/lib.d.ts.map +1 -1
  80. package/dist/typescript/utils/push/setupAndroidPushEvents.d.ts +3 -0
  81. package/dist/typescript/utils/push/setupAndroidPushEvents.d.ts.map +1 -0
  82. package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +1 -1
  83. package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
  84. package/dist/typescript/utils/push/utils.d.ts +2 -2
  85. package/dist/typescript/utils/push/utils.d.ts.map +1 -1
  86. package/dist/typescript/version.d.ts +1 -1
  87. package/dist/typescript/version.d.ts.map +1 -1
  88. package/expo-config-plugin/dist/withAndroidPermissions.js +1 -1
  89. package/ios/TracksRecorder/RecorderVideoSink.swift +92 -5
  90. package/package.json +4 -4
  91. package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +25 -11
  92. package/src/hooks/useAndroidKeepCallAliveEffect.ts +59 -21
  93. package/src/hooks/useLoopbackRecording.ts +36 -248
  94. package/src/utils/StreamVideoRN/index.ts +2 -0
  95. package/src/utils/StreamVideoRN/types.ts +1 -2
  96. package/src/utils/internal/callingx/callingx.ts +49 -68
  97. package/src/utils/keepCallAliveHeadlessTask.ts +45 -3
  98. package/src/utils/push/android.ts +12 -237
  99. package/src/utils/push/internal/android.ts +273 -0
  100. package/src/utils/push/libs/firebaseMessaging/index.ts +16 -5
  101. package/src/utils/push/libs/firebaseMessaging/lib.ts +3 -3
  102. package/src/utils/push/setupAndroidPushEvents.ts +25 -0
  103. package/src/utils/push/setupCallingExpEvents.ts +6 -3
  104. package/src/utils/push/setupIosVoipPushEvents.ts +8 -7
  105. package/src/utils/push/utils.ts +2 -4
  106. package/src/version.ts +1 -1
@@ -21,7 +21,7 @@ export const useCallingExpWithCallingStateEffect = () => {
21
21
  } = useCallStateHooks();
22
22
  const activeCall = useCall();
23
23
  const {
24
- isMute,
24
+ optimisticStatus,
25
25
  microphone
26
26
  } = useMicrophoneState();
27
27
  const callMembers = useCallMembers();
@@ -31,7 +31,7 @@ export const useCallingExpWithCallingStateEffect = () => {
31
31
  const callCustomDisplayName = activeCall?.state.custom?.display_name;
32
32
  const currentUserId = activeCall?.currentUserId;
33
33
  const isIncoming = activeCall?.ringing && !activeCall?.isCreatedByMe || false;
34
- const callDisplayName = useMemo(() => callCustomDisplayName ?? getCallDisplayName(callMembers, participants, currentUserId), [callMembers, participants, currentUserId, callCustomDisplayName]);
34
+ const callDisplayName = useMemo(() => callCustomDisplayName || getCallDisplayName(callMembers, participants, currentUserId), [callMembers, participants, currentUserId, callCustomDisplayName]);
35
35
  useEffect(() => {
36
36
  const callingx = getCallingxLibIfAvailable();
37
37
  if (!callingx?.isSetup || !activeCall) {
@@ -81,7 +81,9 @@ export const useCallingExpWithCallingStateEffect = () => {
81
81
  logger.debug(`useCallingExpWithCallingStateEffect:No active call cid to update callingx: ${activeCallCid} isCallTracked: ${isCallTracked}`);
82
82
  return;
83
83
  }
84
- callingx.updateDisplay(activeCallCid, createdByUserId ?? callDisplayName, callDisplayName, isIncoming);
84
+ callingx.updateDisplay(activeCallCid, createdByUserId ?? callDisplayName, callDisplayName, isIncoming).catch(error => {
85
+ logger.debug(`useCallingExpWithCallingStateEffect: Error updating display in callingx: ${activeCallCid}`, error);
86
+ });
85
87
  }, [activeCallCid, createdByUserId, callDisplayName, isIncoming]);
86
88
 
87
89
  // Sync microphone mute state from app → CallKit
@@ -95,8 +97,12 @@ export const useCallingExpWithCallingStateEffect = () => {
95
97
  logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked}`);
96
98
  return;
97
99
  }
98
- callingx.setMutedCall(activeCallCid, isMute);
99
- }, [activeCallCid, isMute]);
100
+ if (optimisticStatus === undefined) {
101
+ logger.debug(`useCallingExpWithCallingStateEffect: mic status is not resolved yet, skipping mute sync for: ${activeCallCid}`);
102
+ return;
103
+ }
104
+ callingx.setMutedCall(activeCallCid, optimisticStatus === 'disabled');
105
+ }, [activeCallCid, optimisticStatus]);
100
106
 
101
107
  // Sync mute state from CallKit → app (only for system-initiated mute actions)
102
108
  useEffect(() => {
@@ -120,7 +126,7 @@ export const useCallingExpWithCallingStateEffect = () => {
120
126
  logger.debug(`useCallingExpWithCallingStateEffect: No active call cid to set muted in calling exp: ${activeCallCid} isCallTracked: ${isCallTracked} callId: ${callId}`);
121
127
  return;
122
128
  }
123
- const isCurrentlyMuted = microphone.state.status === 'disabled';
129
+ const isCurrentlyMuted = microphone.state.optimisticStatus === 'disabled';
124
130
  if (isCurrentlyMuted === muted) {
125
131
  logger.debug(`useCallingExpWithCallingStateEffect: Mic toggle is already in the desired state: ${muted} for call: ${activeCallCid}`);
126
132
  return;
@@ -1 +1 @@
1
- {"version":3,"names":["CallingState","videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","Platform","AudioDeviceModule","filter","take","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","isMute","microphone","callMembers","participants","activeCallCid","cid","createdByUserId","state","createdBy","id","callCustomDisplayName","custom","display_name","currentUserId","isIncoming","ringing","isCreatedByMe","callDisplayName","callingx","isSetup","shouldMakeCallActive","call","isOngoingCallsEnabled","subscription","callingState$","pipe","callingState","JOINED","isCallTracked","subscribe","setCurrentCallActive","unsubscribe","debug","endCallWithReason","catch","error","updateDisplay","setMutedCall","addEventListener","event","callId","muted","isCurrentlyMuted","status","disable","enable","remove","activateSubscription","tracer","trace","deactivateSubscription","OS","timeouts","Set","traceRecordingState","trigger","isRecording","isEngineRunning","isMicrophoneMuted","warn","scheduleCheck","delayMs","timeout","setTimeout","delete","add","joinedSubscription","activationSubscription","forEach","clearTimeout","clear"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CallingState","videoLoggerSystem","useCall","useCallStateHooks","useEffect","useMemo","Platform","AudioDeviceModule","filter","take","getCallDisplayName","getCallingxLibIfAvailable","logger","getLogger","useCallingExpWithCallingStateEffect","useMicrophoneState","useParticipants","useCallMembers","activeCall","optimisticStatus","microphone","callMembers","participants","activeCallCid","cid","createdByUserId","state","createdBy","id","callCustomDisplayName","custom","display_name","currentUserId","isIncoming","ringing","isCreatedByMe","callDisplayName","callingx","isSetup","shouldMakeCallActive","call","isOngoingCallsEnabled","subscription","callingState$","pipe","callingState","JOINED","isCallTracked","subscribe","setCurrentCallActive","unsubscribe","debug","endCallWithReason","catch","error","updateDisplay","undefined","setMutedCall","addEventListener","event","callId","muted","isCurrentlyMuted","disable","enable","remove","activateSubscription","tracer","trace","deactivateSubscription","OS","timeouts","Set","traceRecordingState","trigger","status","isRecording","isEngineRunning","isMicrophoneMuted","warn","scheduleCheck","delayMs","timeout","setTimeout","delete","add","joinedSubscription","activationSubscription","forEach","clearTimeout","clear"],"sourceRoot":"../../../../src","sources":["hooks/push/useCallingExpWithCallingStateEffect.ts"],"mappings":";;AAAA,SAAeA,YAAY,EAAEC,iBAAiB,QAAQ,yBAAyB;AAC/E,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC1C,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,MAAM,EAAEC,IAAI,QAAQ,gBAAgB;AAC7C,SAASC,kBAAkB,QAAQ,wCAAwC;AAC3E,SAASC,yBAAyB,QAAQ,gCAAgC;AAE1E,MAAMC,MAAM,GAAGX,iBAAiB,CAACY,SAAS,CAAC,UAAU,CAAC;;AAEtD;AACA;AACA;AACA,OAAO,MAAMC,mCAAmC,GAAGA,CAAA,KAAM;EACvD,MAAM;IAAEC,kBAAkB;IAAEC,eAAe;IAAEC;EAAe,CAAC,GAC3Dd,iBAAiB,CAAC,CAAC;EAErB,MAAMe,UAAU,GAAGhB,OAAO,CAAC,CAAC;EAC5B,MAAM;IAAEiB,gBAAgB;IAAEC;EAAW,CAAC,GAAGL,kBAAkB,CAAC,CAAC;EAC7D,MAAMM,WAAW,GAAGJ,cAAc,CAAC,CAAC;EACpC,MAAMK,YAAY,GAAGN,eAAe,CAAC,CAAC;EAEtC,MAAMO,aAAa,GAAGL,UAAU,EAAEM,GAAG;EACrC,MAAMC,eAAe,GAAGP,UAAU,EAAEQ,KAAK,CAACC,SAAS,EAAEC,EAAE;EACvD,MAAMC,qBAAqB,GAAGX,UAAU,EAAEQ,KAAK,CAACI,MAAM,EAAEC,YAAY;EACpE,MAAMC,aAAa,GAAGd,UAAU,EAAEc,aAAa;EAC/C,MAAMC,UAAU,GACbf,UAAU,EAAEgB,OAAO,IAAI,CAAChB,UAAU,EAAEiB,aAAa,IAAK,KAAK;EAE9D,MAAMC,eAAe,GAAG/B,OAAO,CAC7B,MACEwB,qBAAqB,IACrBnB,kBAAkB,CAACW,WAAW,EAAEC,YAAY,EAAEU,aAAa,CAAC,EAC9D,CAACX,WAAW,EAAEC,YAAY,EAAEU,aAAa,EAAEH,qBAAqB,CAClE,CAAC;EAEDzB,SAAS,CAAC,MAAM;IACd,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;IAC5C,IAAI,CAAC0B,QAAQ,EAAEC,OAAO,IAAI,CAACpB,UAAU,EAAE;MACrC;IACF;IACA;IACA;IACA,MAAMqB,oBAAoB,GAAIC,IAAU,IAAc;MACpD;MACA;MACA,OACGA,IAAI,CAACN,OAAO,IAAIM,IAAI,CAACL,aAAa,IAClC,CAACK,IAAI,CAACN,OAAO,IAAIG,QAAQ,CAACI,qBAAsB;IAErD,CAAC;IACD,MAAMC,YAAY,GAAGxB,UAAU,CAACQ,KAAK,CAACiB,aAAa,CAChDC,IAAI,CACHpC,MAAM,CACHqC,YAAY,IACXN,oBAAoB,CAACrB,UAAU,CAAC,IAChC2B,YAAY,KAAK7C,YAAY,CAAC8C,MAAM,IACpCT,QAAQ,CAACU,aAAa,CAAC7B,UAAU,CAACM,GAAG,CACzC,CAAC,EACDf,IAAI,CAAC,CAAC,CAAC,CAAE;IACT;IACF,CAAC,CACAuC,SAAS,CAAC,MAAM;MACfX,QAAQ,CAACY,oBAAoB,CAAC/B,UAAU,CAACM,GAAG,CAAC;IAC/C,CAAC,CAAC;IACJ,OAAO,MAAM;MACXkB,YAAY,CAACQ,WAAW,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAAChC,UAAU,CAAC,CAAC;EAEhBd,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;MAC5C,IAAI,CAAC0B,QAAQ,EAAEC,OAAO,IAAI,CAACf,aAAa,EAAE;QACxC;MACF;MAEA,MAAMwB,aAAa,GAAGV,QAAQ,CAACU,aAAa,CAACxB,aAAa,CAAC;MAC3D,IAAI,CAACwB,aAAa,EAAE;QAClBnC,MAAM,CAACuC,KAAK,CACV,iFAAiF5B,aAAa,mBAAmBwB,aAAa,EAChI,CAAC;QACD;MACF;MACA;MACAnC,MAAM,CAACuC,KAAK,CACV,iEAAiE5B,aAAa,EAChF,CAAC;MACDc,QAAQ,CACLe,iBAAiB,CAAC7B,aAAa,EAAE,OAAO,CAAC,CACzC8B,KAAK,CAAEC,KAAc,IAAK;QACzB1C,MAAM,CAAC0C,KAAK,CACV,uEAAuE/B,aAAa,EAAE,EACtF+B,KACF,CAAC;MACH,CAAC,CAAC;IACN,CAAC;EACH,CAAC,EAAE,CAAC/B,aAAa,CAAC,CAAC;EAEnBnB,SAAS,CAAC,MAAM;IACd,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;IAC5C,IAAI,CAAC0B,QAAQ,EAAEC,OAAO,IAAI,CAACf,aAAa,EAAE;MACxC;IACF;IAEA,MAAMwB,aAAa,GAAGV,QAAQ,CAACU,aAAa,CAACxB,aAAa,CAAC;IAC3D,IAAI,CAACwB,aAAa,EAAE;MAClBnC,MAAM,CAACuC,KAAK,CACV,8EAA8E5B,aAAa,mBAAmBwB,aAAa,EAC7H,CAAC;MACD;IACF;IAEAV,QAAQ,CACLkB,aAAa,CACZhC,aAAa,EACbE,eAAe,IAAIW,eAAe,EAClCA,eAAe,EACfH,UACF,CAAC,CACAoB,KAAK,CAAEC,KAAc,IAAK;MACzB1C,MAAM,CAACuC,KAAK,CACV,4EAA4E5B,aAAa,EAAE,EAC3F+B,KACF,CAAC;IACH,CAAC,CAAC;EACN,CAAC,EAAE,CAAC/B,aAAa,EAAEE,eAAe,EAAEW,eAAe,EAAEH,UAAU,CAAC,CAAC;;EAEjE;EACA7B,SAAS,CAAC,MAAM;IACd,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;IAC5C,IAAI,CAAC0B,QAAQ,EAAEC,OAAO,IAAI,CAACf,aAAa,EAAE;MACxC;IACF;IAEA,MAAMwB,aAAa,GAAGV,QAAQ,CAACU,aAAa,CAACxB,aAAa,CAAC;IAC3D,IAAI,CAACwB,aAAa,EAAE;MAClBnC,MAAM,CAACuC,KAAK,CACV,wFAAwF5B,aAAa,mBAAmBwB,aAAa,EACvI,CAAC;MACD;IACF;IAEA,IAAI5B,gBAAgB,KAAKqC,SAAS,EAAE;MAClC5C,MAAM,CAACuC,KAAK,CACV,gGAAgG5B,aAAa,EAC/G,CAAC;MACD;IACF;IACAc,QAAQ,CAACoB,YAAY,CAAClC,aAAa,EAAEJ,gBAAgB,KAAK,UAAU,CAAC;EACvE,CAAC,EAAE,CAACI,aAAa,EAAEJ,gBAAgB,CAAC,CAAC;;EAErC;EACAf,SAAS,CAAC,MAAM;IACd,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;IAC5C,IAAI,CAAC0B,QAAQ,EAAEC,OAAO,IAAI,CAACf,aAAa,EAAE;MACxCX,MAAM,CAACuC,KAAK,CACV,wFAAwF5B,aAAa,sBAAsBc,QAAQ,EAAEC,OAAO,EAC9I,CAAC;MACD;IACF;;IAEA;IACA;IACA;IACA;IACA,MAAMI,YAAY,GAAGL,QAAQ,CAACqB,gBAAgB,CAC5C,8BAA8B,EAC9B,MAAOC,KAAyC,IAAK;MACnD,MAAM;QAAEC,MAAM;QAAEC;MAAM,CAAC,GAAGF,KAAK;MAE/B,MAAMZ,aAAa,GAAGV,QAAQ,CAACU,aAAa,CAACxB,aAAa,CAAC;MAC3D,IAAI,CAACwB,aAAa,IAAIa,MAAM,KAAKrC,aAAa,EAAE;QAC9CX,MAAM,CAACuC,KAAK,CACV,wFAAwF5B,aAAa,mBAAmBwB,aAAa,YAAYa,MAAM,EACzJ,CAAC;QACD;MACF;MAEA,MAAME,gBAAgB,GACpB1C,UAAU,CAACM,KAAK,CAACP,gBAAgB,KAAK,UAAU;MAClD,IAAI2C,gBAAgB,KAAKD,KAAK,EAAE;QAC9BjD,MAAM,CAACuC,KAAK,CACV,oFAAoFU,KAAK,cAActC,aAAa,EACtH,CAAC;QACD;MACF;MAEA,IAAI;QACF,IAAIsC,KAAK,EAAE;UACT,MAAMzC,UAAU,CAAC2C,OAAO,CAAC,CAAC;QAC5B,CAAC,MAAM;UACL,MAAM3C,UAAU,CAAC4C,MAAM,CAAC,CAAC;QAC3B;MACF,CAAC,CAAC,OAAOV,KAAc,EAAE;QACvB1C,MAAM,CAAC0C,KAAK,CACV,2EAA2E/B,aAAa,EAAE,EAC1F+B,KACF,CAAC;MACH;IACF,CACF,CAAC;IAED,OAAO,MAAM;MACXZ,YAAY,CAACuB,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAAC1C,aAAa,EAAEH,UAAU,CAAC,CAAC;;EAE/B;EACAhB,SAAS,CAAC,MAAM;IACd,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;IAC5C,IAAI,CAAC0B,QAAQ,EAAEC,OAAO,IAAI,CAACpB,UAAU,EAAE;MACrC;IACF;IAEA,MAAMgD,oBAAoB,GAAG7B,QAAQ,CAACqB,gBAAgB,CACpD,yBAAyB,EACzB,MAAM;MACJxC,UAAU,CAACiD,MAAM,CAACC,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC;IACnE,CACF,CAAC;IACD,MAAMC,sBAAsB,GAAGhC,QAAQ,CAACqB,gBAAgB,CACtD,2BAA2B,EAC3B,MAAM;MACJxC,UAAU,CAACiD,MAAM,CAACC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC;IACrE,CACF,CAAC;IAED,OAAO,MAAM;MACXF,oBAAoB,CAACD,MAAM,CAAC,CAAC;MAC7BI,sBAAsB,CAACJ,MAAM,CAAC,CAAC;IACjC,CAAC;EACH,CAAC,EAAE,CAAC/C,UAAU,CAAC,CAAC;;EAEhB;EACA;EACA;EACA;EACA;EACA;EACAd,SAAS,CAAC,MAAM;IACd,MAAMiC,QAAQ,GAAG1B,yBAAyB,CAAC,CAAC;IAC5C,IAAIL,QAAQ,CAACgE,EAAE,KAAK,KAAK,IAAI,CAACjC,QAAQ,EAAEC,OAAO,IAAI,CAACpB,UAAU,EAAE;MAC9D;IACF;IAEA,MAAMqD,QAAQ,GAAG,IAAIC,GAAG,CAAgC,CAAC;IAEzD,MAAMC,mBAAmB,GAAIC,OAAe,IAAK;MAC/C,IAAIxD,UAAU,CAACQ,KAAK,CAACmB,YAAY,KAAK7C,YAAY,CAAC8C,MAAM,EAAE;MAC3D,IAAI5B,UAAU,CAACE,UAAU,CAACM,KAAK,CAACiD,MAAM,KAAK,SAAS,EAAE;MAEtD,IAAIjD,KAAK;MACT,IAAI;QACFA,KAAK,GAAG;UACNgD,OAAO;UACPE,WAAW,EAAErE,iBAAiB,CAACqE,WAAW,CAAC,CAAC;UAC5CC,eAAe,EAAEtE,iBAAiB,CAACsE,eAAe,CAAC,CAAC;UACpDC,iBAAiB,EAAEvE,iBAAiB,CAACuE,iBAAiB,CAAC;QACzD,CAAC;MACH,CAAC,CAAC,OAAOxB,KAAc,EAAE;QACvB1C,MAAM,CAACmE,IAAI,CAAC,wCAAwC,EAAEzB,KAAK,CAAC;QAC5D;MACF;MAEApC,UAAU,CAACiD,MAAM,CAACC,KAAK,CAAC,0BAA0B,EAAE1C,KAAK,CAAC;MAC1D,IAAI,CAACA,KAAK,CAACkD,WAAW,EAAE;QACtBhE,MAAM,CAACmE,IAAI,CAAC,yCAAyC,EAAErD,KAAK,CAAC;MAC/D;IACF,CAAC;IAED,MAAMsD,aAAa,GAAGA,CAACN,OAAe,EAAEO,OAAe,KAAK;MAC1D,MAAMC,OAAO,GAAGC,UAAU,CAAC,MAAM;QAC/BZ,QAAQ,CAACa,MAAM,CAACF,OAAO,CAAC;QACxBT,mBAAmB,CAACC,OAAO,CAAC;MAC9B,CAAC,EAAEO,OAAO,CAAC;MACXV,QAAQ,CAACc,GAAG,CAACH,OAAO,CAAC;IACvB,CAAC;IAED,MAAMI,kBAAkB,GAAGpE,UAAU,CAACQ,KAAK,CAACiB,aAAa,CACtDC,IAAI,CACHpC,MAAM,CAAEqC,YAAY,IAAKA,YAAY,KAAK7C,YAAY,CAAC8C,MAAM,CAAC,EAC9DrC,IAAI,CAAC,CAAC,CACR;IACA;IAAA,CACCuC,SAAS,CAAC,MAAMgC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEjD,MAAMO,sBAAsB,GAAGlD,QAAQ,CAACqB,gBAAgB,CACtD,yBAAyB;IACzB;IACA,MAAMsB,aAAa,CAAC,uBAAuB,EAAE,IAAI,CACnD,CAAC;IAED,OAAO,MAAM;MACXM,kBAAkB,CAACpC,WAAW,CAAC,CAAC;MAChCqC,sBAAsB,CAACtB,MAAM,CAAC,CAAC;MAC/BM,QAAQ,CAACiB,OAAO,CAACC,YAAY,CAAC;MAC9BlB,QAAQ,CAACmB,KAAK,CAAC,CAAC;IAClB,CAAC;EACH,CAAC,EAAE,CAACxE,UAAU,CAAC,CAAC;AAClB,CAAC","ignoreList":[]}
@@ -5,7 +5,7 @@ import { useEffect, useRef } from 'react';
5
5
  import { StreamVideoRN } from '../utils';
6
6
  import { AppState, NativeModules, PermissionsAndroid, Platform } from 'react-native';
7
7
  import { CallingState, videoLoggerSystem } from '@stream-io/video-client';
8
- import { keepCallAliveCallRef } from '../utils/keepCallAliveHeadlessTask';
8
+ import { endKeepCallAliveHeadlessTask, keepCallAliveCallRef } from '../utils/keepCallAliveHeadlessTask';
9
9
  import { getCallingxLibIfAvailable } from '../utils/push/libs';
10
10
  async function stopForegroundServiceNoThrow() {
11
11
  const logger = videoLoggerSystem.getLogger('stopForegroundServiceNoThrow');
@@ -15,6 +15,10 @@ async function stopForegroundServiceNoThrow() {
15
15
  logger.warn('Failed to stop keep-call-alive foreground service', e);
16
16
  }
17
17
  }
18
+
19
+ /**
20
+ * @returns true when the native foreground service was asked to start.
21
+ */
18
22
  async function startForegroundService(call_cid) {
19
23
  const logger = videoLoggerSystem.getLogger('startForegroundService');
20
24
  const isCallAliveConfigured = await (async () => {
@@ -26,14 +30,14 @@ async function startForegroundService(call_cid) {
26
30
  }
27
31
  })();
28
32
  if (!isCallAliveConfigured) {
29
- logger.info('KeepCallAlive is not configured. Skipping foreground service setup.');
30
- return;
33
+ logger.warn('KeepCallAlive is not configured, the call will not survive the app going to the ' + 'background: audio publishing stops and the user is eventually dropped from the call. ' + 'Declare android.permission.FOREGROUND_SERVICE and ' + 'android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK in the app manifest (see logcat, ' + 'tag StreamVideoReactNative, for the exact list of missing permissions).');
34
+ return false;
31
35
  }
32
36
  // Check for notification permission (Android 13+) before starting the service.
33
37
  const hasPostNotificationsPermission = Number(Platform.Version) < 33 || (await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS));
34
38
  if (!hasPostNotificationsPermission) {
35
39
  logger.info('Notification permission not granted, can not start foreground service to keep the call alive');
36
- return;
40
+ return false;
37
41
  }
38
42
  const videoConfig = StreamVideoRN.getConfig();
39
43
  const foregroundServiceConfig = videoConfig.foregroundService;
@@ -44,12 +48,25 @@ async function startForegroundService(call_cid) {
44
48
  // NOTE: we use requestAnimationFrame to ensure that the foreground service is started after all the current UI operations are done
45
49
  // this is a workaround for the crash - android.app.RemoteServiceException$ForegroundServiceDidNotStartInTimeException: Context.startForegroundService() did not then call Service.startForeground()
46
50
  // this crash was reproducible only in some android devices
47
- requestAnimationFrame(async () => {
48
- try {
49
- await NativeModules.StreamVideoReactNative.startKeepCallAliveService(call_cid, channel.id, channel.name, notificationTexts.title, notificationTexts.body, smallIconName ?? null);
50
- } catch (e) {
51
- logger.warn('Failed to start keep-call-alive foreground service', e);
52
- }
51
+ return new Promise(resolve => {
52
+ requestAnimationFrame(async () => {
53
+ // The service declares the camera/microphone foreground service types, which are
54
+ // while-in-use permissions: Android requires startForegroundService() to be called while the
55
+ // app has a visible activity, otherwise the start is rejected. The frame we deferred to can
56
+ // land after the app left the foreground, so re-check before calling native.
57
+ if (AppState.currentState !== 'active') {
58
+ logger.info('App is no longer in the foreground, not starting the keep-call-alive foreground service');
59
+ resolve(false);
60
+ return;
61
+ }
62
+ try {
63
+ await NativeModules.StreamVideoReactNative.startKeepCallAliveService(call_cid, channel.id, channel.name, notificationTexts.title, notificationTexts.body, smallIconName ?? null);
64
+ resolve(true);
65
+ } catch (e) {
66
+ logger.warn('Failed to start keep-call-alive foreground service', e);
67
+ resolve(false);
68
+ }
69
+ });
53
70
  });
54
71
  }
55
72
 
@@ -110,8 +127,15 @@ export const useAndroidKeepCallAliveEffect = () => {
110
127
  if (foregroundServiceStartedRef.current) {
111
128
  return;
112
129
  }
113
- await startForegroundService(activeCallCid);
114
- foregroundServiceStartedRef.current = true;
130
+ try {
131
+ // only mark as started when native actually accepted the start, so that a later render
132
+ // while still joined can retry.
133
+ foregroundServiceStartedRef.current = await startForegroundService(activeCallCid);
134
+ } catch (e) {
135
+ // run() is intentionally not awaited, so anything thrown here would surface as an
136
+ // unhandled rejection. Leave the ref false so a later render can retry.
137
+ videoLoggerSystem.getLogger('useAndroidKeepCallAliveEffect').warn('Failed to start the keep-call-alive foreground service', e);
138
+ }
115
139
  };
116
140
 
117
141
  // ensure that app is active before running the function
@@ -130,6 +154,8 @@ export const useAndroidKeepCallAliveEffect = () => {
130
154
  } else if (isCallEnded) {
131
155
  if (foregroundServiceStartedRef.current) {
132
156
  keepCallAliveCallRef.current = undefined;
157
+ // let the headless task resolve so RN unwinds it, then stop the foreground service
158
+ endKeepCallAliveHeadlessTask();
133
159
  // stop foreground service when the call is not active
134
160
  stopForegroundServiceNoThrow();
135
161
  foregroundServiceStartedRef.current = false;
@@ -142,6 +168,7 @@ export const useAndroidKeepCallAliveEffect = () => {
142
168
  // stop foreground service when this effect is unmounted
143
169
  if (foregroundServiceStartedRef.current) {
144
170
  keepCallAliveCallRef.current = undefined;
171
+ endKeepCallAliveHeadlessTask();
145
172
  stopForegroundServiceNoThrow();
146
173
  foregroundServiceStartedRef.current = false;
147
174
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useCall","useCallStateHooks","useEffect","useRef","StreamVideoRN","AppState","NativeModules","PermissionsAndroid","Platform","CallingState","videoLoggerSystem","keepCallAliveCallRef","getCallingxLibIfAvailable","stopForegroundServiceNoThrow","logger","getLogger","StreamVideoReactNative","stopKeepCallAliveService","e","warn","startForegroundService","call_cid","isCallAliveConfigured","info","hasPostNotificationsPermission","Number","Version","check","PERMISSIONS","POST_NOTIFICATIONS","videoConfig","getConfig","foregroundServiceConfig","foregroundService","notificationTexts","android","channel","smallIconName","push","smallIcon","requestAnimationFrame","startKeepCallAliveService","id","name","title","body","useAndroidKeepCallAliveEffect","foregroundServiceStartedRef","callingxKeepAliveOwnerRef","undefined","call","current","activeCallCid","cid","useCallCallingState","callingState","isCallJoined","JOINED","isRingingCall","ringing","shouldStartForegroundService","OS","callingx","isCallingxManaged","isSetup","isOngoingCallsEnabled","isCallEnded","IDLE","LEFT","currentOwner","releaseBackgroundTask","catch","owner","acquireBackgroundTask","run","currentState","sub","addEventListener","nextAppState","remove"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCall","useCallStateHooks","useEffect","useRef","StreamVideoRN","AppState","NativeModules","PermissionsAndroid","Platform","CallingState","videoLoggerSystem","endKeepCallAliveHeadlessTask","keepCallAliveCallRef","getCallingxLibIfAvailable","stopForegroundServiceNoThrow","logger","getLogger","StreamVideoReactNative","stopKeepCallAliveService","e","warn","startForegroundService","call_cid","isCallAliveConfigured","hasPostNotificationsPermission","Number","Version","check","PERMISSIONS","POST_NOTIFICATIONS","info","videoConfig","getConfig","foregroundServiceConfig","foregroundService","notificationTexts","android","channel","smallIconName","push","smallIcon","Promise","resolve","requestAnimationFrame","currentState","startKeepCallAliveService","id","name","title","body","useAndroidKeepCallAliveEffect","foregroundServiceStartedRef","callingxKeepAliveOwnerRef","undefined","call","current","activeCallCid","cid","useCallCallingState","callingState","isCallJoined","JOINED","isRingingCall","ringing","shouldStartForegroundService","OS","callingx","isCallingxManaged","isSetup","isOngoingCallsEnabled","isCallEnded","IDLE","LEFT","currentOwner","releaseBackgroundTask","catch","owner","acquireBackgroundTask","run","sub","addEventListener","nextAppState","remove"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":"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","ignoreList":[]}
@@ -2,56 +2,29 @@
2
2
 
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { NativeModules } from 'react-native';
5
- import { combineLatest } from 'rxjs';
6
- import { CallingState, videoLoggerSystem } from '@stream-io/video-client';
5
+ import { CallingState, DEFAULT_LOOPBACK_RECORDING_DURATION_MS, LOOPBACK_STREAMS_WAIT_TIMEOUT_MS, clampLoopbackRecordingDuration, getLoopbackStreams, videoLoggerSystem, waitForLoopbackStreams, withLoopbackAudioEnabled } from '@stream-io/video-client';
7
6
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
8
7
 
9
8
  /** @internal */
10
9
  const {
11
10
  StreamVideoReactNative
12
11
  } = NativeModules;
13
-
14
- // Upper bound on how long `startRecording` will wait for the SFU to
15
- // echo loopback tracks back via the Subscriber. Tuned generously since
16
- // this includes connection setup; consumers that want shorter feedback
17
- // should call `stopRecording` to cancel the wait early.
18
- const STREAMS_WAIT_TIMEOUT_MS = 10 * 1000;
19
- const DEFAULT_RECORDING_DURATION = 10 * 1000;
20
- const MIN_RECORDING_DURATION = 5 * 1000;
21
- const MAX_RECORDING_DURATION = 2 * 60 * 1000;
22
- /**
23
- * Records the SFU loopback streams (audio + video) on the local participant
24
- * to a local MP4 file. Designed for the `allowOwnTracksLoopback` pre-call test mode:
25
- * the SFU echoes the caller's published tracks back through the Subscriber
26
- * peer connection. The hook identifies the loopback streams on the local
27
- * participant by reference inequality against
28
- * `call.camera.state.mediaStream` / `call.microphone.state.mediaStream` —
29
- * the canonical references to the local capture — and captures them.
30
- */
12
+ /** Records SFU loopback streams to a local MP4 file. */
31
13
  export function useLoopbackRecording() {
32
14
  const call = useCall();
33
15
  const {
34
16
  useCallCallingState,
35
17
  useParticipantCount,
36
- useLocalParticipant,
37
- useCameraState,
38
- useMicrophoneState
18
+ useLocalParticipant
39
19
  } = useCallStateHooks();
40
20
  const callingState = useCallCallingState();
41
21
  const participantCount = useParticipantCount();
42
22
  const localParticipant = useLocalParticipant();
43
- const {
44
- mediaStream: cameraStream
45
- } = useCameraState();
46
- const {
47
- mediaStream: microphoneStream
48
- } = useMicrophoneState();
49
23
  const [recordingState, setRecordingState] = useState('idle');
50
24
  const recordingStateRef = useRef('idle');
51
25
  const isMountedRef = useRef(true);
52
- // Used to abort the awaiting-streams wait on stop / leave / unmount.
53
26
  const awaitAbortRef = useRef(null);
54
- const loopbackStreams = useMemo(() => getLoopbackStreamsFor(localParticipant, cameraStream, microphoneStream), [localParticipant, cameraStream, microphoneStream]);
27
+ const loopbackStreams = useMemo(() => getLoopbackStreams(call, localParticipant), [call, localParticipant]);
55
28
  const updateState = useCallback(next => {
56
29
  recordingStateRef.current = next;
57
30
  if (isMountedRef.current) {
@@ -77,7 +50,7 @@ export function useLoopbackRecording() {
77
50
  }, []);
78
51
  const startRecording = useCallback(async ({
79
52
  includeVideo = true,
80
- maxDurationMs = DEFAULT_RECORDING_DURATION
53
+ maxDurationMs = DEFAULT_LOOPBACK_RECORDING_DURATION_MS
81
54
  } = {}) => {
82
55
  if (!call) {
83
56
  return null;
@@ -92,51 +65,30 @@ export function useLoopbackRecording() {
92
65
  }
93
66
  awaitAbortRef.current = new AbortController();
94
67
  updateState('awaiting-streams');
95
- let audioTrack;
96
68
  try {
97
69
  const streams = await waitForLoopbackStreams(call, {
98
70
  includeVideo,
99
71
  signal: awaitAbortRef.current.signal,
100
- timeoutMs: STREAMS_WAIT_TIMEOUT_MS
72
+ timeoutMs: LOOPBACK_STREAMS_WAIT_TIMEOUT_MS
101
73
  });
102
74
  if (streams === null) {
103
75
  videoLoggerSystem.getLogger('useLoopbackRecording').warn('timed out waiting for loopback streams');
104
76
  return null;
105
77
  }
106
- audioTrack = streams.audioTrack;
107
- const videoTrackId = streams.videoTrack?.id;
108
-
109
- // The loopback audio track lands disabled (the SDK default-mutes
110
- // it to prevent echo). Enable it so the native recording
111
- // pipeline receives PCM; `finally` returns it to muted.
112
- if (audioTrack) {
113
- audioTrack.enabled = true;
114
- }
115
78
  updateState('recording');
116
- const clampedDuration = Math.min(MAX_RECORDING_DURATION, Math.max(MIN_RECORDING_DURATION, maxDurationMs));
117
-
118
- // Pre-size the native encoder to the publisher's max video
119
- // publish-option dimension. Without this, the encoder locks to
120
- // whatever the SFU happens to echo *first* and stays there for the
121
- // rest of the recording even after the network improves and
122
- // higher layers arrive.
123
79
  const publishMaxDim = call.getMaxVideoPublishDimension();
124
80
  try {
125
- const uri = await StreamVideoReactNative.startTrackRecording({
126
- videoTrackId,
127
- maxDurationMs: Math.round(clampedDuration),
81
+ return await withLoopbackAudioEnabled(streams, () => StreamVideoReactNative.startTrackRecording({
82
+ videoTrackId: streams.videoTrack?.id,
83
+ maxDurationMs: clampLoopbackRecordingDuration(maxDurationMs),
128
84
  targetWidth: publishMaxDim?.width,
129
85
  targetHeight: publishMaxDim?.height
130
- });
131
- return uri;
86
+ }));
132
87
  } catch (error) {
133
88
  videoLoggerSystem.getLogger('useLoopbackRecording').error('failed to start recording', error);
134
89
  throw new Error('failed to start recording');
135
90
  }
136
91
  } finally {
137
- if (audioTrack) {
138
- audioTrack.enabled = false;
139
- }
140
92
  awaitAbortRef.current = null;
141
93
  updateState('idle');
142
94
  }
@@ -158,21 +110,12 @@ export function useLoopbackRecording() {
158
110
  throw new Error('failed to get recordings');
159
111
  }
160
112
  }, []);
161
-
162
- // Auto-stop on call leave / end. Aborts an awaiting-streams wait or
163
- // signals native finalisation depending on which phase we're in.
164
- // Without this, leaving the call mid-recording would leave native
165
- // encoders mid-write while the SFU subscriber tracks end under their
166
- // feet — undefined final file state.
167
113
  useEffect(() => {
168
114
  if (callingState === CallingState.LEFT || callingState === CallingState.IDLE) {
169
115
  videoLoggerSystem.getLogger('useLoopbackRecording').debug('auto-stopping recording on call leave / end');
170
116
  stopRecording().catch(() => {});
171
117
  }
172
118
  }, [callingState, stopRecording]);
173
-
174
- // Auto-stop if another participant joins. Loopback recording is a
175
- // single-user pre-call test.
176
119
  useEffect(() => {
177
120
  if (recordingState !== 'idle' && participantCount > 1) {
178
121
  stopRecording().catch(() => {});
@@ -197,64 +140,4 @@ export function useLoopbackRecording() {
197
140
  loopbackAudioStream: loopbackStreams.loopbackAudioStream
198
141
  };
199
142
  }
200
- function getLoopbackStreamsFor(participant, cameraStream, microphoneStream) {
201
- return {
202
- loopbackVideoStream: participant?.videoStream && participant.videoStream !== cameraStream ? participant.videoStream : undefined,
203
- loopbackAudioStream: participant?.audioStream && participant.audioStream !== microphoneStream ? participant.audioStream : undefined
204
- };
205
- }
206
-
207
- /**
208
- * Subscribe to `localParticipant$` and resolve once the requested loopback
209
- * streams are present on the participant. Aborts cleanly on `signal`
210
- * (resolves `null`) and rejects on timeout.
211
- */
212
- function waitForLoopbackStreams(call, opts) {
213
- return new Promise((resolve, reject) => {
214
- const initial = getLoopbackStreams(call.state.localParticipant, call.camera.state.mediaStream, call.microphone.state.mediaStream, opts.includeVideo);
215
- if (initial) {
216
- resolve(initial);
217
- return;
218
- }
219
- const cleanup = () => {
220
- subscription.unsubscribe();
221
- if (timeoutId !== undefined) {
222
- clearTimeout(timeoutId);
223
- }
224
- opts.signal.removeEventListener('abort', onAbort);
225
- };
226
- const onAbort = () => {
227
- cleanup();
228
- resolve(null);
229
- };
230
- opts.signal.addEventListener('abort', onAbort);
231
- const timeoutId = setTimeout(() => {
232
- cleanup();
233
- reject(new Error('useLoopbackRecording: timed out waiting for loopback streams. ' + 'Ensure the call was joined with `allowOwnTracksLoopback: true` and ' + 'that the SFU is configured to echo self-sub tracks.'));
234
- }, opts.timeoutMs);
235
- const subscription = combineLatest([call.state.localParticipant$, call.camera.state.mediaStream$, call.microphone.state.mediaStream$]).subscribe(([participant, cameraStream, microphoneStream]) => {
236
- const ready = getLoopbackStreams(participant, cameraStream, microphoneStream, opts.includeVideo);
237
- if (ready) {
238
- cleanup();
239
- resolve(ready);
240
- }
241
- });
242
- });
243
- }
244
- function getLoopbackStreams(participant, cameraStream, microphoneStream, includeVideo) {
245
- if (!participant) return undefined;
246
- const {
247
- loopbackAudioStream,
248
- loopbackVideoStream
249
- } = getLoopbackStreamsFor(participant, cameraStream, microphoneStream);
250
- const audioTrack = loopbackAudioStream?.getAudioTracks()[0];
251
- const videoTrack = includeVideo ? loopbackVideoStream?.getVideoTracks()[0] : undefined;
252
- if (!audioTrack || includeVideo && !videoTrack) {
253
- return undefined;
254
- }
255
- return {
256
- audioTrack,
257
- videoTrack
258
- };
259
- }
260
143
  //# sourceMappingURL=useLoopbackRecording.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","NativeModules","combineLatest","CallingState","videoLoggerSystem","useCall","useCallStateHooks","StreamVideoReactNative","STREAMS_WAIT_TIMEOUT_MS","DEFAULT_RECORDING_DURATION","MIN_RECORDING_DURATION","MAX_RECORDING_DURATION","useLoopbackRecording","call","useCallCallingState","useParticipantCount","useLocalParticipant","useCameraState","useMicrophoneState","callingState","participantCount","localParticipant","mediaStream","cameraStream","microphoneStream","recordingState","setRecordingState","recordingStateRef","isMountedRef","awaitAbortRef","loopbackStreams","getLoopbackStreamsFor","updateState","next","current","stopRecording","getLogger","debug","abort","stopTrackRecording","error","Error","startRecording","includeVideo","maxDurationMs","warn","state","AbortController","audioTrack","streams","waitForLoopbackStreams","signal","timeoutMs","videoTrackId","videoTrack","id","enabled","clampedDuration","Math","min","max","publishMaxDim","getMaxVideoPublishDimension","uri","startTrackRecording","round","targetWidth","width","targetHeight","height","clearRecordings","clearStreamRecordings","getRecordings","list","getStreamRecordings","LEFT","IDLE","catch","loopbackVideoStream","loopbackAudioStream","participant","videoStream","undefined","audioStream","opts","Promise","resolve","reject","initial","getLoopbackStreams","camera","microphone","cleanup","subscription","unsubscribe","timeoutId","clearTimeout","removeEventListener","onAbort","addEventListener","setTimeout","localParticipant$","mediaStream$","subscribe","ready","getAudioTracks","getVideoTracks"],"sourceRoot":"../../../src","sources":["hooks/useLoopbackRecording.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","NativeModules","CallingState","DEFAULT_LOOPBACK_RECORDING_DURATION_MS","LOOPBACK_STREAMS_WAIT_TIMEOUT_MS","clampLoopbackRecordingDuration","getLoopbackStreams","videoLoggerSystem","waitForLoopbackStreams","withLoopbackAudioEnabled","useCall","useCallStateHooks","StreamVideoReactNative","useLoopbackRecording","call","useCallCallingState","useParticipantCount","useLocalParticipant","callingState","participantCount","localParticipant","recordingState","setRecordingState","recordingStateRef","isMountedRef","awaitAbortRef","loopbackStreams","updateState","next","current","stopRecording","getLogger","debug","abort","stopTrackRecording","error","Error","startRecording","includeVideo","maxDurationMs","warn","state","AbortController","streams","signal","timeoutMs","publishMaxDim","getMaxVideoPublishDimension","startTrackRecording","videoTrackId","videoTrack","id","targetWidth","width","targetHeight","height","clearRecordings","clearStreamRecordings","getRecordings","list","getStreamRecordings","LEFT","IDLE","catch","loopbackVideoStream","loopbackAudioStream"],"sourceRoot":"../../../src","sources":["hooks/useLoopbackRecording.ts"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import pushLogoutCallbacks from '../internal/pushLogoutCallback';
4
4
  import { setupIosVoipPushEvents } from '../push/setupIosVoipPushEvents';
5
+ import { setupAndroidPushEvents } from '../push/setupAndroidPushEvents';
5
6
  import { setupCallingExpEvents } from '../push/setupCallingExpEvents';
6
7
  import { extractCallingExpOptions, getCallingxLib } from '../push/libs/callingx';
7
8
  import { NativeModules, Platform } from 'react-native';
@@ -104,6 +105,7 @@ export class StreamVideoRN {
104
105
  }
105
106
  setupCallingExpEvents(pushConfig);
106
107
  setupIosVoipPushEvents(pushConfig);
108
+ setupAndroidPushEvents(pushConfig);
107
109
  }
108
110
  static getConfig() {
109
111
  return this.config;
@@ -1 +1 @@
1
- {"version":3,"names":["pushLogoutCallbacks","setupIosVoipPushEvents","setupCallingExpEvents","extractCallingExpOptions","getCallingxLib","NativeModules","Platform","videoLoggerSystem","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","updateConfig","setPushConfig","pushConfig","push","callingx","getLogger","info","JSON","stringify","options","setup","Error","getConfig","onPushLogout","callbacks","current","resolve","all","map","callback","then","clearPushLogoutCallbacks","playBusyTone","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","OS","hasAudioOutputHardware","androidHasMicrophoneHardware","hasMicrophoneHardware","androidHasCameraHardware","hasCameraHardware"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["pushLogoutCallbacks","setupIosVoipPushEvents","setupAndroidPushEvents","setupCallingExpEvents","extractCallingExpOptions","getCallingxLib","NativeModules","Platform","videoLoggerSystem","deepMerge","target","source","result","key","undefined","Array","isArray","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","notificationTexts","title","body","taskToRun","Promise","StreamVideoRN","config","updateConfig","setPushConfig","pushConfig","push","callingx","getLogger","info","JSON","stringify","options","setup","Error","getConfig","onPushLogout","callbacks","current","resolve","all","map","callback","then","clearPushLogoutCallbacks","playBusyTone","StreamVideoReactNative","stopBusyTone","androidHasAudioOutputHardware","OS","hasAudioOutputHardware","androidHasMicrophoneHardware","hasMicrophoneHardware","androidHasCameraHardware","hasCameraHardware"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}