@stream-io/video-react-native-sdk 1.10.11 → 1.10.13
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 +32 -0
- package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +7 -17
- package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
- package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +34 -0
- package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -0
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +6 -14
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +9 -19
- package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
- package/dist/module/components/Call/CallContent/RTCViewPipNative.js +26 -0
- package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -0
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +6 -14
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts +8 -0
- package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -0
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/expo-config-plugin/dist/withiOSInfoPlist.js +12 -7
- package/ios/PictureInPicture/StreamPictureInPictureController.swift +7 -0
- package/ios/RTCViewPip.swift +52 -25
- package/ios/RTCViewPipManager.swift +5 -5
- package/package.json +3 -3
- package/src/components/Call/CallContent/RTCViewPipIOS.tsx +15 -38
- package/src/components/Call/CallContent/RTCViewPipNative.tsx +51 -0
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +13 -15
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.10.13](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.10.12...@stream-io/video-react-native-sdk-1.10.13) (2025-03-10)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
* `@stream-io/video-client` updated to version `1.18.4`
|
|
10
|
+
* `@stream-io/video-react-bindings` updated to version `1.5.6`
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* ios PiP track not fetched sometimes ([#1709](https://github.com/GetStream/stream-video-js/issues/1709)) ([ec20f97](https://github.com/GetStream/stream-video-js/commit/ec20f97dbb305c50f315bcd1293b9f160cfa1408))
|
|
15
|
+
|
|
16
|
+
## [1.10.12](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.10.11...@stream-io/video-react-native-sdk-1.10.12) (2025-03-06)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
* **@stream-io/video-react-native-sdk:** release version 1.10.12 ([8730ef6](https://github.com/GetStream/stream-video-js/commit/8730ef61b38c7c48d90a959a1573a5612b9102bd))
|
|
20
|
+
* add background modes in our plugin as fallback if other plugins are not installed ([dd23ab8](https://github.com/GetStream/stream-video-js/commit/dd23ab87706d86b8181830ff1f44c421aabfb432))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* do not remove notification type voip listener on unmount ([#1712](https://github.com/GetStream/stream-video-js/issues/1712)) ([51b7059](https://github.com/GetStream/stream-video-js/commit/51b7059ed8345c474edc4e30fed91b0339d3d36d))
|
|
26
|
+
|
|
27
|
+
## [1.10.12](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.10.11...@stream-io/video-react-native-sdk-1.10.12) (2025-03-05)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
* add background modes in our plugin as fallback if other plugins are not installed ([dd23ab8](https://github.com/GetStream/stream-video-js/commit/dd23ab87706d86b8181830ff1f44c421aabfb432))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* do not remove notification type voip listener on unmount ([#1712](https://github.com/GetStream/stream-video-js/issues/1712)) ([51b7059](https://github.com/GetStream/stream-video-js/commit/51b7059ed8345c474edc4e30fed91b0339d3d36d))
|
|
36
|
+
|
|
5
37
|
## [1.10.11](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.10.10...@stream-io/video-react-native-sdk-1.10.11) (2025-03-05)
|
|
6
38
|
|
|
7
39
|
### Dependency Updates
|
|
@@ -8,23 +8,11 @@ var _videoClient = require("@stream-io/video-client");
|
|
|
8
8
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _reactNative = require("react-native");
|
|
11
|
+
var _RTCViewPipNative = require("./RTCViewPipNative");
|
|
11
12
|
var _useDebouncedValue = require("../../../utils/hooks/useDebouncedValue");
|
|
12
13
|
var _shouldDisableIOSLocalVideoOnBackground = require("../../../utils/internal/shouldDisableIOSLocalVideoOnBackground");
|
|
13
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
-
const COMPONENT_NAME = 'RTCViewPip';
|
|
16
|
-
const RTCViewPipNative = (0, _reactNative.requireNativeComponent)(COMPONENT_NAME);
|
|
17
|
-
|
|
18
|
-
/** Wrapper for the native view
|
|
19
|
-
* meant to stay private and not exposed */
|
|
20
|
-
const RTCViewPip = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
21
|
-
if (_reactNative.Platform.OS !== 'ios') return null;
|
|
22
|
-
// @ts-ignore
|
|
23
|
-
return /*#__PURE__*/_react.default.createElement(RTCViewPipNative, {
|
|
24
|
-
streamURL: props.streamURL,
|
|
25
|
-
ref: ref
|
|
26
|
-
});
|
|
27
|
-
}));
|
|
28
16
|
const RTCViewPipIOS = /*#__PURE__*/_react.default.memo(({
|
|
29
17
|
includeLocalParticipantVideo
|
|
30
18
|
}) => {
|
|
@@ -58,17 +46,19 @@ const RTCViewPipIOS = /*#__PURE__*/_react.default.memo(({
|
|
|
58
46
|
callClosedInvokedOnce = true;
|
|
59
47
|
const node = (0, _reactNative.findNodeHandle)(nativeRef.current);
|
|
60
48
|
if (node !== null) {
|
|
61
|
-
|
|
62
|
-
// @ts-ignore
|
|
63
|
-
_reactNative.UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
|
|
49
|
+
(0, _RTCViewPipNative.onNativeCallClosed)(node);
|
|
64
50
|
}
|
|
65
51
|
_shouldDisableIOSLocalVideoOnBackground.shouldDisableIOSLocalVideoOnBackgroundRef.current = true;
|
|
66
52
|
};
|
|
67
53
|
const unsubFunc = call?.on('call.ended', () => {
|
|
54
|
+
(0, _videoClient.getLogger)(['RTCViewPipIOS'])('debug', `onCallClosed due to call.ended event`);
|
|
55
|
+
unsubFunc?.();
|
|
68
56
|
onCallClosed();
|
|
69
57
|
});
|
|
70
58
|
const subscription = call?.state.callingState$.subscribe(state => {
|
|
71
59
|
if (state === _videoClient.CallingState.LEFT || state === _videoClient.CallingState.IDLE) {
|
|
60
|
+
(0, _videoClient.getLogger)(['RTCViewPipIOS'])('debug', `onCallClosed due to callingState: ${state}`);
|
|
61
|
+
subscription?.unsubscribe();
|
|
72
62
|
onCallClosed();
|
|
73
63
|
}
|
|
74
64
|
});
|
|
@@ -90,7 +80,7 @@ const RTCViewPipIOS = /*#__PURE__*/_react.default.memo(({
|
|
|
90
80
|
const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
|
|
91
81
|
return videoStreamToRender?.toURL();
|
|
92
82
|
}, [participantInSpotlight]);
|
|
93
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
83
|
+
return /*#__PURE__*/_react.default.createElement(_RTCViewPipNative.RTCViewPipNative, {
|
|
94
84
|
streamURL: streamURL,
|
|
95
85
|
ref: nativeRef
|
|
96
86
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_interopRequireWildcard","_reactNative","_useDebouncedValue","_shouldDisableIOSLocalVideoOnBackground","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_interopRequireWildcard","_reactNative","_RTCViewPipNative","_useDebouncedValue","_shouldDisableIOSLocalVideoOnBackground","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","RTCViewPipIOS","React","memo","includeLocalParticipantVideo","useCall","useParticipants","useCallStateHooks","_allParticipants","sortBy","speakerLayoutSortPreset","allParticipants","useDebouncedValue","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","useEffect","shouldDisableIOSLocalVideoOnBackgroundRef","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","findNodeHandle","onNativeCallClosed","unsubFunc","on","getLogger","subscription","state","callingState$","subscribe","CallingState","LEFT","IDLE","unsubscribe","streamURL","useMemo","undefined","videoStream","screenShareStream","isScreenSharing","hasScreenShare","videoStreamToRender","toURL","createElement","RTCViewPipNative","ref","_default","exports"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA,IAAAC,mBAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AACA,IAAAM,kBAAA,GAAAN,OAAA;AACA,IAAAO,uCAAA,GAAAP,OAAA;AAA2H,SAAAQ,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAM3H,MAAMW,aAAa,gBAAGC,cAAK,CAACC,IAAI,CAAC,CAAC;EAAEC;AAAoC,CAAC,KAAK;EAC5E,MAAMN,IAAI,GAAG,IAAAO,2BAAO,EAAC,CAAC;EACtB,MAAM;IAAEC;EAAgB,CAAC,GAAG,IAAAC,qCAAiB,EAAC,CAAC;EAC/C,MAAMC,gBAAgB,GAAGF,eAAe,CAAC;IACvCG,MAAM,EAAEC;EACV,CAAC,CAAC;EACF,MAAMC,eAAe,GAAG,IAAAC,oCAAiB,EAACJ,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;;EAElE,MAAM,CAACK,eAAe,EAAEC,gBAAgB,CAAC,GAAGH,eAAe,CAACI,MAAM,CAC/DC,WAAW,IACVZ,4BAA4B,GAAG,IAAI,GAAG,CAACY,WAAW,CAACC,kBACvD,CAAC;;EAED;EACA;EACA,IAAIC,sBAAsB,GAAGL,eAAe;EAC5C,IAAIA,eAAe,EAAEI,kBAAkB,IAAIH,gBAAgB,EAAE;IAC3DI,sBAAsB,GAAGJ,gBAAgB;EAC3C;EAEA,IAAAK,gBAAS,EAAC,MAAM;IACdC,iFAAyC,CAACC,OAAO,GAC/C,CAACjB,4BAA4B;EACjC,CAAC,EAAE,CAACA,4BAA4B,CAAC,CAAC;EAElC,MAAMkB,SAAS,GAAGpB,cAAK,CAACqB,MAAM,CAAM,IAAI,CAAC;EAEzCrB,cAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,IAAIK,qBAAqB,GAAG,KAAK;IACjC,MAAMC,YAAY,GAAGA,CAAA,KAAM;MACzB,IAAID,qBAAqB,EAAE;QACzB;MACF;MACAA,qBAAqB,GAAG,IAAI;MAC5B,MAAME,IAAI,GAAG,IAAAC,2BAAc,EAACL,SAAS,CAACD,OAAO,CAAC;MAC9C,IAAIK,IAAI,KAAK,IAAI,EAAE;QACjB,IAAAE,oCAAkB,EAACF,IAAI,CAAC;MAC1B;MACAN,iFAAyC,CAACC,OAAO,GAAG,IAAI;IAC1D,CAAC;IACD,MAAMQ,SAAS,GAAG/B,IAAI,EAAEgC,EAAE,CAAC,YAAY,EAAE,MAAM;MAC7C,IAAAC,sBAAS,EAAC,CAAC,eAAe,CAAC,CAAC,CAC1B,OAAO,EACP,sCACF,CAAC;MACDF,SAAS,GAAG,CAAC;MACbJ,YAAY,CAAC,CAAC;IAChB,CAAC,CAAC;IACF,MAAMO,YAAY,GAAGlC,IAAI,EAAEmC,KAAK,CAACC,aAAa,CAACC,SAAS,CAAEF,KAAK,IAAK;MAClE,IAAIA,KAAK,KAAKG,yBAAY,CAACC,IAAI,IAAIJ,KAAK,KAAKG,yBAAY,CAACE,IAAI,EAAE;QAC9D,IAAAP,sBAAS,EAAC,CAAC,eAAe,CAAC,CAAC,CAC1B,OAAO,EACP,qCAAqCE,KAAK,EAC5C,CAAC;QACDD,YAAY,EAAEO,WAAW,CAAC,CAAC;QAC3Bd,YAAY,CAAC,CAAC;MAChB;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACXA,YAAY,CAAC,CAAC;MACdI,SAAS,GAAG,CAAC;MACbG,YAAY,EAAEO,WAAW,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACzC,IAAI,CAAC,CAAC;EAEV,MAAM0C,SAAS,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC9B,IAAI,CAACvB,sBAAsB,EAAE;MAC3B,OAAOwB,SAAS;IAClB;IAEA,MAAM;MAAEC,WAAW;MAAEC;IAAkB,CAAC,GAAG1B,sBAAsB;IAEjE,MAAM2B,eAAe,GAAG,IAAAC,2BAAc,EAAC5B,sBAAsB,CAAC;IAE9D,MAAM6B,mBAAmB,GAAIF,eAAe,GACxCD,iBAAiB,GACjBD,WAAkD;IAEtD,OAAOI,mBAAmB,EAAEC,KAAK,CAAC,CAAC;EACrC,CAAC,EAAE,CAAC9B,sBAAsB,CAAC,CAAC;EAE5B,oBAAO3C,MAAA,CAAAY,OAAA,CAAA8D,aAAA,CAACvE,iBAAA,CAAAwE,gBAAgB;IAACV,SAAS,EAAEA,SAAU;IAACW,GAAG,EAAE7B;EAAU,CAAE,CAAC;AACnE,CAAC,CAAC;AAAC,IAAA8B,QAAA,GAAAC,OAAA,CAAAlE,OAAA,GAEYc,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RTCViewPipNative = void 0;
|
|
7
|
+
exports.onNativeCallClosed = onNativeCallClosed;
|
|
8
|
+
var _videoClient = require("@stream-io/video-client");
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _reactNative = require("react-native");
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
const COMPONENT_NAME = 'RTCViewPip';
|
|
13
|
+
const NativeComponent = (0, _reactNative.requireNativeComponent)(COMPONENT_NAME);
|
|
14
|
+
function onNativeCallClosed(reactTag) {
|
|
15
|
+
(0, _videoClient.getLogger)(['RTCViewPipNative'])('debug', 'onNativeCallClosed');
|
|
16
|
+
_reactNative.UIManager.dispatchViewManagerCommand(reactTag,
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
_reactNative.UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Wrapper for the native view
|
|
22
|
+
* meant to stay private and not exposed */
|
|
23
|
+
const RTCViewPipNative = exports.RTCViewPipNative = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
24
|
+
if (_reactNative.Platform.OS !== 'ios') return null;
|
|
25
|
+
return /*#__PURE__*/_react.default.createElement(NativeComponent, {
|
|
26
|
+
style: _reactNative.StyleSheet.absoluteFill,
|
|
27
|
+
pointerEvents: 'none',
|
|
28
|
+
streamURL: props.streamURL
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
,
|
|
31
|
+
ref: ref
|
|
32
|
+
});
|
|
33
|
+
}));
|
|
34
|
+
//# sourceMappingURL=RTCViewPipNative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_react","_interopRequireDefault","_reactNative","e","__esModule","default","COMPONENT_NAME","NativeComponent","requireNativeComponent","onNativeCallClosed","reactTag","getLogger","UIManager","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","RTCViewPipNative","exports","React","memo","forwardRef","props","ref","Platform","OS","createElement","style","StyleSheet","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAMsB,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEtB,MAAMG,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzD,IAAAC,mCAAsB,EAACF,cAAc,CAAC;AAEjC,SAASG,kBAAkBA,CAACC,QAAgB,EAAE;EACnD,IAAAC,sBAAS,EAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DC,sBAAS,CAACC,0BAA0B,CAClCH,QAAQ;EACR;EACAE,sBAAS,CAACE,oBAAoB,CAACR,cAAc,CAAC,CAACS,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;;AAEA;AACA;AACO,MAAMC,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,gBAAGE,cAAK,CAACC,IAAI,cACxCD,cAAK,CAACE,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACEzB,MAAA,CAAAK,OAAA,CAAAqB,aAAA,CAACnB,eAAe;IACdoB,KAAK,EAAEC,uBAAU,CAACC,YAAa;IAC/BC,aAAa,EAAE,MAAO;IACtBC,SAAS,EAAET,KAAK,CAACS;IACjB;IAAA;IACAR,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
|
|
@@ -111,6 +111,9 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
111
111
|
voipPushNotification.addEventListener('register', token => {
|
|
112
112
|
onTokenReceived(token);
|
|
113
113
|
});
|
|
114
|
+
voipPushNotification.addEventListener('notification', notification => {
|
|
115
|
+
onNotificationReceived(notification);
|
|
116
|
+
});
|
|
114
117
|
|
|
115
118
|
// this will fire when there are events occured before js bridge initialized
|
|
116
119
|
voipPushNotification.addEventListener('didLoadWithEvents', events => {
|
|
@@ -140,22 +143,9 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
140
143
|
logger('debug', 'Voip event listeners are removed for user: ' + userId);
|
|
141
144
|
voipPushNotification.removeEventListener('didLoadWithEvents');
|
|
142
145
|
voipPushNotification.removeEventListener('register');
|
|
143
|
-
};
|
|
144
|
-
}, [client]);
|
|
145
|
-
(0, _react.useEffect)(() => {
|
|
146
|
-
const pushConfig = _utils.StreamVideoRN.getConfig().push;
|
|
147
|
-
if (_reactNative.Platform.OS !== 'ios' || !pushConfig) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
151
|
-
// fired when we received a voip push notification
|
|
152
|
-
voipPushNotification.addEventListener('notification', notification => {
|
|
153
|
-
onNotificationReceived(notification);
|
|
154
|
-
});
|
|
155
|
-
return () => {
|
|
156
146
|
voipPushNotification.removeEventListener('notification');
|
|
157
147
|
};
|
|
158
|
-
}, []);
|
|
148
|
+
}, [client]);
|
|
159
149
|
};
|
|
160
150
|
exports.useIosVoipPushEventsSetupEffect = useIosVoipPushEventsSetupEffect;
|
|
161
151
|
const onNotificationReceived = async notification => {
|
|
@@ -204,6 +194,7 @@ const onNotificationReceived = async notification => {
|
|
|
204
194
|
logger('error', 'Error in getting call uuid from native module', error);
|
|
205
195
|
}
|
|
206
196
|
if (!uuid) {
|
|
197
|
+
logger('error', `Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
|
|
207
198
|
return;
|
|
208
199
|
}
|
|
209
200
|
const created_by_id = notification?.stream?.created_by_id;
|
|
@@ -244,6 +235,7 @@ const onNotificationReceived = async notification => {
|
|
|
244
235
|
}
|
|
245
236
|
// send the info to this subject, it is listened by callkeep events
|
|
246
237
|
// callkeep events will then accept/reject the call
|
|
238
|
+
logger('debug', `call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`);
|
|
247
239
|
_rxSubjects.voipPushNotificationCallCId$.next(call_cid);
|
|
248
240
|
};
|
|
249
241
|
//# sourceMappingURL=useIosVoipPushEventsSetupEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_libs","_reactNative","_utils","_videoReactBindings","_pushLogoutCallback","_utils2","_rxSubjects","_videoClient","logger","getLogger","lastListener","count","setLogoutCallback","client","token","lastVoipTokenRef","setPushLogoutCallback","current","userId","removeDevice","err","useIosVoipPushEventsSetupEffect","useStreamVideoClient","connectedUserId","useConnectedUser","id","useRef","unsentToken","setUnsentToken","useState","useEffect","pushConfig","StreamVideoRN","getConfig","push","ios","pushProviderName","addVoipDevice","then","undefined","catch","error","Platform","OS","voipPushNotification","getVoipPushNotificationLib","registerVoipToken","onTokenReceived","streamClient","_user","lastVoipToken","push_provider_name","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","
|
|
1
|
+
{"version":3,"names":["_react","require","_libs","_reactNative","_utils","_videoReactBindings","_pushLogoutCallback","_utils2","_rxSubjects","_videoClient","logger","getLogger","lastListener","count","setLogoutCallback","client","token","lastVoipTokenRef","setPushLogoutCallback","current","userId","removeDevice","err","useIosVoipPushEventsSetupEffect","useStreamVideoClient","connectedUserId","useConnectedUser","id","useRef","unsentToken","setUnsentToken","useState","useEffect","pushConfig","StreamVideoRN","getConfig","push","ios","pushProviderName","addVoipDevice","then","undefined","catch","error","Platform","OS","voipPushNotification","getVoipPushNotificationLib","registerVoipToken","onTokenReceived","streamClient","_user","lastVoipToken","push_provider_name","addEventListener","notification","onNotificationReceived","events","Array","isArray","length","voipPushEvent","name","data","currentListenerCount","removeEventListener","exports","sender","stream","type","call_cid","createStreamVideoClient","callFromPush","onRingingCall","uuid","NativeModules","StreamVideoReactNative","getIncomingCallUUid","created_by_id","receiver_id","closeCallIfNecessary","mustEndCall","callkeepReason","shouldCallBeEnded","callkeep","getCallKeepLib","reportEndCallWithUUID","onVoipNotificationCompleted","closed","canListenToWS","canAddPushWSSubscriptionsRef","AppState","currentState","unsubscribe","on","event","_canListenToWS","_closed","unsubscriptionCallbacks","RxUtils","getCurrentValue","pushUnsubscriptionCallbacks$","next","voipPushNotificationCallCId$"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/version.js
CHANGED
|
@@ -1,22 +1,10 @@
|
|
|
1
|
-
import { CallingState, hasScreenShare, speakerLayoutSortPreset } from '@stream-io/video-client';
|
|
1
|
+
import { CallingState, getLogger, hasScreenShare, speakerLayoutSortPreset } from '@stream-io/video-client';
|
|
2
2
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
3
3
|
import React, { useEffect, useMemo } from 'react';
|
|
4
|
-
import { findNodeHandle
|
|
4
|
+
import { findNodeHandle } from 'react-native';
|
|
5
|
+
import { RTCViewPipNative, onNativeCallClosed } from './RTCViewPipNative';
|
|
5
6
|
import { useDebouncedValue } from '../../../utils/hooks/useDebouncedValue';
|
|
6
7
|
import { shouldDisableIOSLocalVideoOnBackgroundRef } from '../../../utils/internal/shouldDisableIOSLocalVideoOnBackground';
|
|
7
|
-
const COMPONENT_NAME = 'RTCViewPip';
|
|
8
|
-
const RTCViewPipNative = requireNativeComponent(COMPONENT_NAME);
|
|
9
|
-
|
|
10
|
-
/** Wrapper for the native view
|
|
11
|
-
* meant to stay private and not exposed */
|
|
12
|
-
const RTCViewPip = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref) => {
|
|
13
|
-
if (Platform.OS !== 'ios') return null;
|
|
14
|
-
// @ts-ignore
|
|
15
|
-
return /*#__PURE__*/React.createElement(RTCViewPipNative, {
|
|
16
|
-
streamURL: props.streamURL,
|
|
17
|
-
ref: ref
|
|
18
|
-
});
|
|
19
|
-
}));
|
|
20
8
|
const RTCViewPipIOS = /*#__PURE__*/React.memo(({
|
|
21
9
|
includeLocalParticipantVideo
|
|
22
10
|
}) => {
|
|
@@ -50,17 +38,19 @@ const RTCViewPipIOS = /*#__PURE__*/React.memo(({
|
|
|
50
38
|
callClosedInvokedOnce = true;
|
|
51
39
|
const node = findNodeHandle(nativeRef.current);
|
|
52
40
|
if (node !== null) {
|
|
53
|
-
|
|
54
|
-
// @ts-ignore
|
|
55
|
-
UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
|
|
41
|
+
onNativeCallClosed(node);
|
|
56
42
|
}
|
|
57
43
|
shouldDisableIOSLocalVideoOnBackgroundRef.current = true;
|
|
58
44
|
};
|
|
59
45
|
const unsubFunc = call?.on('call.ended', () => {
|
|
46
|
+
getLogger(['RTCViewPipIOS'])('debug', `onCallClosed due to call.ended event`);
|
|
47
|
+
unsubFunc?.();
|
|
60
48
|
onCallClosed();
|
|
61
49
|
});
|
|
62
50
|
const subscription = call?.state.callingState$.subscribe(state => {
|
|
63
51
|
if (state === CallingState.LEFT || state === CallingState.IDLE) {
|
|
52
|
+
getLogger(['RTCViewPipIOS'])('debug', `onCallClosed due to callingState: ${state}`);
|
|
53
|
+
subscription?.unsubscribe();
|
|
64
54
|
onCallClosed();
|
|
65
55
|
}
|
|
66
56
|
});
|
|
@@ -82,7 +72,7 @@ const RTCViewPipIOS = /*#__PURE__*/React.memo(({
|
|
|
82
72
|
const videoStreamToRender = isScreenSharing ? screenShareStream : videoStream;
|
|
83
73
|
return videoStreamToRender?.toURL();
|
|
84
74
|
}, [participantInSpotlight]);
|
|
85
|
-
return /*#__PURE__*/React.createElement(
|
|
75
|
+
return /*#__PURE__*/React.createElement(RTCViewPipNative, {
|
|
86
76
|
streamURL: streamURL,
|
|
87
77
|
ref: nativeRef
|
|
88
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CallingState","hasScreenShare","speakerLayoutSortPreset","useCall","useCallStateHooks","React","useEffect","useMemo","findNodeHandle","
|
|
1
|
+
{"version":3,"names":["CallingState","getLogger","hasScreenShare","speakerLayoutSortPreset","useCall","useCallStateHooks","React","useEffect","useMemo","findNodeHandle","RTCViewPipNative","onNativeCallClosed","useDebouncedValue","shouldDisableIOSLocalVideoOnBackgroundRef","RTCViewPipIOS","memo","includeLocalParticipantVideo","call","useParticipants","_allParticipants","sortBy","allParticipants","dominantSpeaker","dominantSpeaker2","filter","participant","isLocalParticipant","participantInSpotlight","current","nativeRef","useRef","callClosedInvokedOnce","onCallClosed","node","unsubFunc","on","subscription","state","callingState$","subscribe","LEFT","IDLE","unsubscribe","streamURL","undefined","videoStream","screenShareStream","isScreenSharing","videoStreamToRender","toURL","createElement","ref"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipIOS.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { getLogger } from '@stream-io/video-client';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Platform, requireNativeComponent, UIManager, StyleSheet } from 'react-native';
|
|
4
|
+
const COMPONENT_NAME = 'RTCViewPip';
|
|
5
|
+
const NativeComponent = requireNativeComponent(COMPONENT_NAME);
|
|
6
|
+
export function onNativeCallClosed(reactTag) {
|
|
7
|
+
getLogger(['RTCViewPipNative'])('debug', 'onNativeCallClosed');
|
|
8
|
+
UIManager.dispatchViewManagerCommand(reactTag,
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed, []);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Wrapper for the native view
|
|
14
|
+
* meant to stay private and not exposed */
|
|
15
|
+
export const RTCViewPipNative = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((props, ref) => {
|
|
16
|
+
if (Platform.OS !== 'ios') return null;
|
|
17
|
+
return /*#__PURE__*/React.createElement(NativeComponent, {
|
|
18
|
+
style: StyleSheet.absoluteFill,
|
|
19
|
+
pointerEvents: 'none',
|
|
20
|
+
streamURL: props.streamURL
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
,
|
|
23
|
+
ref: ref
|
|
24
|
+
});
|
|
25
|
+
}));
|
|
26
|
+
//# sourceMappingURL=RTCViewPipNative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getLogger","React","Platform","requireNativeComponent","UIManager","StyleSheet","COMPONENT_NAME","NativeComponent","onNativeCallClosed","reactTag","dispatchViewManagerCommand","getViewManagerConfig","Commands","onCallClosed","RTCViewPipNative","memo","forwardRef","props","ref","OS","createElement","style","absoluteFill","pointerEvents","streamURL"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/RTCViewPipNative.tsx"],"mappings":"AAAA,SAASA,SAAS,QAAQ,yBAAyB;AACnD,OAAOC,KAAK,MAAM,OAAO;AACzB,SAEEC,QAAQ,EACRC,sBAAsB,EACtBC,SAAS,EACTC,UAAU,QACL,cAAc;AAErB,MAAMC,cAAc,GAAG,YAAY;AAMnC,MAAMC,eAAqD,GACzDJ,sBAAsB,CAACG,cAAc,CAAC;AAExC,OAAO,SAASE,kBAAkBA,CAACC,QAAgB,EAAE;EACnDT,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC;EAC9DI,SAAS,CAACM,0BAA0B,CAClCD,QAAQ;EACR;EACAL,SAAS,CAACO,oBAAoB,CAACL,cAAc,CAAC,CAACM,QAAQ,CAACC,YAAY,EACpE,EACF,CAAC;AACH;;AAEA;AACA;AACA,OAAO,MAAMC,gBAAgB,gBAAGb,KAAK,CAACc,IAAI,cACxCd,KAAK,CAACe,UAAU,CAKd,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChB,IAAIhB,QAAQ,CAACiB,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,oBACElB,KAAA,CAAAmB,aAAA,CAACb,eAAe;IACdc,KAAK,EAAEhB,UAAU,CAACiB,YAAa;IAC/BC,aAAa,EAAE,MAAO;IACtBC,SAAS,EAAEP,KAAK,CAACO;IACjB;IAAA;IACAN,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN,CAAC,CACH,CAAC","ignoreList":[]}
|
|
@@ -106,6 +106,9 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
106
106
|
voipPushNotification.addEventListener('register', token => {
|
|
107
107
|
onTokenReceived(token);
|
|
108
108
|
});
|
|
109
|
+
voipPushNotification.addEventListener('notification', notification => {
|
|
110
|
+
onNotificationReceived(notification);
|
|
111
|
+
});
|
|
109
112
|
|
|
110
113
|
// this will fire when there are events occured before js bridge initialized
|
|
111
114
|
voipPushNotification.addEventListener('didLoadWithEvents', events => {
|
|
@@ -135,22 +138,9 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
135
138
|
logger('debug', 'Voip event listeners are removed for user: ' + userId);
|
|
136
139
|
voipPushNotification.removeEventListener('didLoadWithEvents');
|
|
137
140
|
voipPushNotification.removeEventListener('register');
|
|
138
|
-
};
|
|
139
|
-
}, [client]);
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
const pushConfig = StreamVideoRN.getConfig().push;
|
|
142
|
-
if (Platform.OS !== 'ios' || !pushConfig) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
const voipPushNotification = getVoipPushNotificationLib();
|
|
146
|
-
// fired when we received a voip push notification
|
|
147
|
-
voipPushNotification.addEventListener('notification', notification => {
|
|
148
|
-
onNotificationReceived(notification);
|
|
149
|
-
});
|
|
150
|
-
return () => {
|
|
151
141
|
voipPushNotification.removeEventListener('notification');
|
|
152
142
|
};
|
|
153
|
-
}, []);
|
|
143
|
+
}, [client]);
|
|
154
144
|
};
|
|
155
145
|
const onNotificationReceived = async notification => {
|
|
156
146
|
/* --- Example payload ---
|
|
@@ -198,6 +188,7 @@ const onNotificationReceived = async notification => {
|
|
|
198
188
|
logger('error', 'Error in getting call uuid from native module', error);
|
|
199
189
|
}
|
|
200
190
|
if (!uuid) {
|
|
191
|
+
logger('error', `Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
|
|
201
192
|
return;
|
|
202
193
|
}
|
|
203
194
|
const created_by_id = notification?.stream?.created_by_id;
|
|
@@ -238,6 +229,7 @@ const onNotificationReceived = async notification => {
|
|
|
238
229
|
}
|
|
239
230
|
// send the info to this subject, it is listened by callkeep events
|
|
240
231
|
// callkeep events will then accept/reject the call
|
|
232
|
+
logger('debug', `call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`);
|
|
241
233
|
voipPushNotificationCallCId$.next(call_cid);
|
|
242
234
|
};
|
|
243
235
|
//# sourceMappingURL=useIosVoipPushEventsSetupEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useState","getCallKeepLib","getVoipPushNotificationLib","AppState","Platform","StreamVideoRN","useConnectedUser","useStreamVideoClient","setPushLogoutCallback","NativeModules","canAddPushWSSubscriptionsRef","shouldCallBeEnded","pushUnsubscriptionCallbacks$","voipPushNotificationCallCId$","RxUtils","getLogger","logger","lastListener","count","setLogoutCallback","client","token","lastVoipTokenRef","current","userId","removeDevice","err","useIosVoipPushEventsSetupEffect","connectedUserId","id","unsentToken","setUnsentToken","pushConfig","getConfig","push","ios","pushProviderName","addVoipDevice","then","undefined","catch","error","OS","voipPushNotification","registerVoipToken","onTokenReceived","streamClient","_user","lastVoipToken","push_provider_name","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","getCallKeepLib","getVoipPushNotificationLib","AppState","Platform","StreamVideoRN","useConnectedUser","useStreamVideoClient","setPushLogoutCallback","NativeModules","canAddPushWSSubscriptionsRef","shouldCallBeEnded","pushUnsubscriptionCallbacks$","voipPushNotificationCallCId$","RxUtils","getLogger","logger","lastListener","count","setLogoutCallback","client","token","lastVoipTokenRef","current","userId","removeDevice","err","useIosVoipPushEventsSetupEffect","connectedUserId","id","unsentToken","setUnsentToken","pushConfig","getConfig","push","ios","pushProviderName","addVoipDevice","then","undefined","catch","error","OS","voipPushNotification","registerVoipToken","onTokenReceived","streamClient","_user","lastVoipToken","push_provider_name","addEventListener","notification","onNotificationReceived","events","Array","isArray","length","voipPushEvent","name","data","currentListenerCount","removeEventListener","sender","stream","type","call_cid","createStreamVideoClient","callFromPush","onRingingCall","uuid","StreamVideoReactNative","getIncomingCallUUid","created_by_id","receiver_id","closeCallIfNecessary","mustEndCall","callkeepReason","callkeep","reportEndCallWithUUID","onVoipNotificationCompleted","closed","canListenToWS","currentState","unsubscribe","on","event","_canListenToWS","_closed","unsubscriptionCallbacks","getCurrentValue","next"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"AAAA,SAAgCA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1E,SACEC,cAAc,EACdC,0BAA0B,QACrB,uBAAuB;AAE9B,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,cAAc;AACjD,SAASC,aAAa,QAAQ,aAAa;AAC3C,SACEC,gBAAgB,EAChBC,oBAAoB,QACf,iCAAiC;AACxC,SAASC,qBAAqB,QAAQ,yCAAyC;AAC/E,SAASC,aAAa,QAAQ,cAAc;AAC5C,SACEC,4BAA4B,EAC5BC,iBAAiB,QACZ,iCAAiC;AACxC,SACEC,4BAA4B,EAC5BC,4BAA4B,QACvB,sCAAsC;AAC7C,SAASC,OAAO,EAAqBC,SAAS,QAAQ,yBAAyB;AAE/E,MAAMC,MAAM,GAAGD,SAAS,CAAC,CAAC,iCAAiC,CAAC,CAAC;;AAE7D;AACA;AACA;AACA;AACA,IAAIE,YAAY,GAAG;EAAEC,KAAK,EAAE;AAAE,CAAC;AAE/B,SAASC,iBAAiBA,CACxBC,MAAyB,EACzBC,KAAa,EACbC,gBAAqE,EACrE;EACAd,qBAAqB,CAAC,YAAY;IAChCc,gBAAgB,CAACC,OAAO,GAAG;MAAEF,KAAK,EAAE,EAAE;MAAEG,MAAM,EAAE;IAAG,CAAC;IACpD,IAAI;MACF,MAAMJ,MAAM,CAACK,YAAY,CAACJ,KAAK,CAAC;IAClC,CAAC,CAAC,OAAOK,GAAG,EAAE;MACZV,MAAM,CACJ,MAAM,EACN,8DAA8D,EAC9DU,GACF,CAAC;IACH;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMC,+BAA+B,GAAGA,CAAA,KAAM;EACnD,MAAMP,MAAM,GAAGb,oBAAoB,CAAC,CAAC;EACrC,MAAMqB,eAAe,GAAGtB,gBAAgB,CAAC,CAAC,EAAEuB,EAAE;EAC9C,MAAMP,gBAAgB,GAAGvB,MAAM,CAAC;IAAEsB,KAAK,EAAE,EAAE;IAAEG,MAAM,EAAE;EAAG,CAAC,CAAC;EAC1D,MAAM,CAACM,WAAW,EAAEC,cAAc,CAAC,GAAG/B,QAAQ,CAAS,CAAC;EAExDF,SAAS,CAAC,MAAM;IACd,MAAMkC,UAAU,GAAG3B,aAAa,CAAC4B,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD;IACA,IACE,CAACF,UAAU,EAAEG,GAAG,CAACC,gBAAgB,IACjC,CAAChB,MAAM,IACP,CAACQ,eAAe,IAChB,CAACE,WAAW,EACZ;MACA;IACF;IACAd,MAAM,CACJ,OAAO,EACP,yFAAyF,GACvFc,WACJ,CAAC;IACDV,MAAM,CACHiB,aAAa,CAACP,WAAW,EAAE,KAAK,EAAEE,UAAU,CAACG,GAAG,CAACC,gBAAgB,CAAC,CAClEE,IAAI,CAAC,MAAM;MACVnB,iBAAiB,CAACC,MAAM,EAAEU,WAAW,EAAER,gBAAgB,CAAC;MACxDN,MAAM,CACJ,OAAO,EACP,4CAA4C,GAAGc,WACjD,CAAC;MACDR,gBAAgB,CAACC,OAAO,GAAG;QACzBF,KAAK,EAAES,WAAW;QAClBN,MAAM,EAAEI;MACV,CAAC;MACDG,cAAc,CAACQ,SAAS,CAAC;IAC3B,CAAC,CAAC,CACDC,KAAK,CAAEC,KAAK,IAAK;MAChBzB,MAAM,CAAC,MAAM,EAAE,8CAA8C,EAAEyB,KAAK,CAAC;IACvE,CAAC,CAAC;EACN,CAAC,EAAE,CAACrB,MAAM,EAAEQ,eAAe,EAAEE,WAAW,CAAC,CAAC;EAE1ChC,SAAS,CAAC,MAAM;IACd,MAAMkC,UAAU,GAAG3B,aAAa,CAAC4B,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD,IAAI9B,QAAQ,CAACsC,EAAE,KAAK,KAAK,IAAI,CAACV,UAAU,IAAI,CAACZ,MAAM,EAAE;MACnD;IACF;IACA,MAAMuB,oBAAoB,GAAGzC,0BAA0B,CAAC,CAAC;;IAEzD;IACA;IACA;IACAyC,oBAAoB,CAACC,iBAAiB,CAAC,CAAC;IAExC,MAAMC,eAAe,GAAIxB,KAAa,IAAK;MACzC,MAAMG,MAAM,GAAGJ,MAAM,CAAC0B,YAAY,CAACC,KAAK,EAAElB,EAAE,IAAI,EAAE;MAClD,IAAI,CAACL,MAAM,EAAE;QACXR,MAAM,CACJ,OAAO,EACP,wEAAwEK,KAAK,EAC/E,CAAC;QACDU,cAAc,CAACV,KAAK,CAAC;QACrB;MACF;MACA,MAAM2B,aAAa,GAAG1B,gBAAgB,CAACC,OAAO;MAC9C,IAAIyB,aAAa,CAAC3B,KAAK,KAAKA,KAAK,IAAI2B,aAAa,CAACxB,MAAM,KAAKA,MAAM,EAAE;QACpER,MAAM,CACJ,OAAO,EACP,6EAA6EK,KAAK,aAAaG,MAAM,EACvG,CAAC;QACD;MACF;MACA,MAAMyB,kBAAkB,GAAGjB,UAAU,CAACG,GAAG,CAACC,gBAAgB;MAC1D,IAAI,CAACa,kBAAkB,EAAE;QACvB;MACF;MACAjC,MAAM,CACJ,OAAO,EACP,wCAAwCK,KAAK,YAAYG,MAAM,EACjE,CAAC;MACDJ,MAAM,CACHiB,aAAa,CAAChB,KAAK,EAAE,KAAK,EAAE4B,kBAAkB,CAAC,CAC/CX,IAAI,CAAC,MAAM;QACVtB,MAAM,CACJ,OAAO,EACP,qCAAqCK,KAAK,YAAYG,MAAM,EAC9D,CAAC;QACDL,iBAAiB,CAACC,MAAM,EAAEC,KAAK,EAAEC,gBAAgB,CAAC;QAClDA,gBAAgB,CAACC,OAAO,GAAG;UAAEF,KAAK;UAAEG;QAAO,CAAC;MAC9C,CAAC,CAAC,CACDgB,KAAK,CAAEd,GAAG,IAAK;QACdK,cAAc,CAACV,KAAK,CAAC;QACrBL,MAAM,CAAC,MAAM,EAAE,qCAAqC,EAAEU,GAAG,CAAC;MAC5D,CAAC,CAAC;IACN,CAAC;IACD;IACAiB,oBAAoB,CAACO,gBAAgB,CAAC,UAAU,EAAG7B,KAAK,IAAK;MAC3DwB,eAAe,CAACxB,KAAK,CAAC;IACxB,CAAC,CAAC;IAEFsB,oBAAoB,CAACO,gBAAgB,CAAC,cAAc,EAAGC,YAAY,IAAK;MACtEC,sBAAsB,CAACD,YAAY,CAAC;IACtC,CAAC,CAAC;;IAEF;IACAR,oBAAoB,CAACO,gBAAgB,CAAC,mBAAmB,EAAGG,MAAM,IAAK;MACrE,IAAI,CAACA,MAAM,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,IAAIA,MAAM,CAACG,MAAM,GAAG,CAAC,EAAE;QAC1D;MACF;MACA,KAAK,IAAIC,aAAa,IAAIJ,MAAM,EAAE;QAChC,IAAI;UAAEK,IAAI;UAAEC;QAAK,CAAC,GAAGF,aAAa;QAClC,IAAIC,IAAI,KAAK,8CAA8C,EAAE;UAC3Db,eAAe,CAACc,IAAI,CAAC;QACvB,CAAC,MAAM,IAAID,IAAI,KAAK,2CAA2C,EAAE;UAC/DN,sBAAsB,CAACO,IAAI,CAAC;QAC9B;MACF;IACF,CAAC,CAAC;IACF1C,YAAY,CAACC,KAAK,IAAI,CAAC;IACvB,MAAM0C,oBAAoB,GAAG3C,YAAY,CAACC,KAAK;IAE/C,OAAO,MAAM;MACX,MAAMM,MAAM,GAAGJ,MAAM,CAAC0B,YAAY,CAACC,KAAK,EAAElB,EAAE;MAC5C,IAAI+B,oBAAoB,KAAK3C,YAAY,CAACC,KAAK,EAAE;QAC/CF,MAAM,CACJ,OAAO,EACP,kDAAkD,GAAGQ,MACvD,CAAC;QACD;MACF;MACAR,MAAM,CAAC,OAAO,EAAE,6CAA6C,GAAGQ,MAAM,CAAC;MACvEmB,oBAAoB,CAACkB,mBAAmB,CAAC,mBAAmB,CAAC;MAC7DlB,oBAAoB,CAACkB,mBAAmB,CAAC,UAAU,CAAC;MACpDlB,oBAAoB,CAACkB,mBAAmB,CAAC,cAAc,CAAC;IAC1D,CAAC;EACH,CAAC,EAAE,CAACzC,MAAM,CAAC,CAAC;AACd,CAAC;AAED,MAAMgC,sBAAsB,GAAG,MAAOD,YAAiB,IAAK;EAC1D;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMW,MAAM,GAAGX,YAAY,EAAEY,MAAM,EAAED,MAAM;EAC3C,MAAME,IAAI,GAAGb,YAAY,EAAEY,MAAM,EAAEC,IAAI;EACvC;EACA,IAAIF,MAAM,KAAK,cAAc,IAAIE,IAAI,KAAK,WAAW,EAAE;IACrD;EACF;EACA,MAAMC,QAAQ,GAAGd,YAAY,EAAEY,MAAM,EAAEE,QAAQ;EAC/C,MAAMjC,UAAU,GAAG3B,aAAa,CAAC4B,SAAS,CAAC,CAAC,CAACC,IAAI;EACjD,IAAI,CAAC+B,QAAQ,IAAI7D,QAAQ,CAACsC,EAAE,KAAK,KAAK,IAAI,CAACV,UAAU,EAAE;IACrD;EACF;EACA,MAAMZ,MAAM,GAAG,MAAMY,UAAU,CAACkC,uBAAuB,CAAC,CAAC;EACzD,IAAI,CAAC9C,MAAM,EAAE;IACX;EACF;EACA,MAAM+C,YAAY,GAAG,MAAM/C,MAAM,CAACgD,aAAa,CAACH,QAAQ,CAAC;EACzD,IAAII,IAAI,GAAG,EAAE;EACb,IAAI;IACFA,IAAI,GACF,MAAM5D,aAAa,EAAE6D,sBAAsB,EAAEC,mBAAmB,CAC9DN,QACF,CAAC;EACL,CAAC,CAAC,OAAOxB,KAAK,EAAE;IACdzB,MAAM,CAAC,OAAO,EAAE,+CAA+C,EAAEyB,KAAK,CAAC;EACzE;EACA,IAAI,CAAC4B,IAAI,EAAE;IACTrD,MAAM,CACJ,OAAO,EACP,8EAA8EiD,QAAQ,EACxF,CAAC;IACD;EACF;EACA,MAAMO,aAAa,GAAGrB,YAAY,EAAEY,MAAM,EAAES,aAAa;EACzD,MAAMC,WAAW,GAAGtB,YAAY,EAAEY,MAAM,EAAEU,WAAW;EACrD,SAASC,oBAAoBA,CAAA,EAAG;IAC9B,MAAM;MAAEC,WAAW;MAAEC;IAAe,CAAC,GAAGjE,iBAAiB,CACvDwD,YAAY,EACZK,aAAa,EACbC,WACF,CAAC;IACD,IAAIE,WAAW,EAAE;MACf,MAAME,QAAQ,GAAG5E,cAAc,CAAC,CAAC;MACjCe,MAAM,CACJ,OAAO,EACP,4CAA4CqD,IAAI,eAAeJ,QAAQ,aAAaW,cAAc,EACpG,CAAC;MACDC,QAAQ,CAACC,qBAAqB,CAACT,IAAI,EAAEO,cAAc,CAAC;MACpD,MAAMjC,oBAAoB,GAAGzC,0BAA0B,CAAC,CAAC;MACzDyC,oBAAoB,CAACoC,2BAA2B,CAACV,IAAI,CAAC;MACtD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EACA,MAAMW,MAAM,GAAGN,oBAAoB,CAAC,CAAC;EACrC,MAAMO,aAAa,GAAGA,CAAA,KACpBvE,4BAA4B,CAACa,OAAO,IAAIpB,QAAQ,CAAC+E,YAAY,KAAK,QAAQ;EAC5E,IAAI,CAACF,MAAM,IAAIC,aAAa,CAAC,CAAC,EAAE;IAC9B,MAAME,WAAW,GAAGhB,YAAY,CAACiB,EAAE,CAAC,KAAK,EAAGC,KAAK,IAAK;MACpD,MAAMC,cAAc,GAAGL,aAAa,CAAC,CAAC;MACtC,IAAI,CAACK,cAAc,EAAE;QACnBtE,MAAM,CACJ,OAAO,EACP,qCAAqCiD,QAAQ,mBAAmBqB,cAAc,EAAE,EAChFD,KACF,CAAC;QACDF,WAAW,CAAC,CAAC;QACb;MACF;MACA,MAAMI,OAAO,GAAGb,oBAAoB,CAAC,CAAC;MACtC,IAAIa,OAAO,EAAE;QACXvE,MAAM,CACJ,OAAO,EACP,qCAAqCiD,QAAQ,mBAAmBqB,cAAc,wBAAwBC,OAAO,EAAE,EAC/GF,KACF,CAAC;QACDF,WAAW,CAAC,CAAC;MACf;IACF,CAAC,CAAC;IACF,MAAMK,uBAAuB,GAC3B1E,OAAO,CAAC2E,eAAe,CAAC7E,4BAA4B,CAAC,IAAI,EAAE;IAC7DA,4BAA4B,CAAC8E,IAAI,CAAC,CAChC,GAAGF,uBAAuB,EAC1BL,WAAW,CACZ,CAAC;EACJ;EACA;EACA;EACAnE,MAAM,CACJ,OAAO,EACP,YAAYiD,QAAQ,SAASI,IAAI,0DACnC,CAAC;EACDxD,4BAA4B,CAAC6E,IAAI,CAACzB,QAAQ,CAAC;AAC7C,CAAC","ignoreList":[]}
|
package/dist/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '1.10.
|
|
1
|
+
export const version = '1.10.13';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RTCViewPipIOS.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipIOS.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RTCViewPipIOS.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipIOS.tsx"],"names":[],"mappings":"AAQA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAMlD,KAAK,KAAK,GAAG;IACX,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,QAAA,MAAM,aAAa,+DAAiD,KAAK,uBAkFvE,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function onNativeCallClosed(reactTag: number): void;
|
|
3
|
+
/** Wrapper for the native view
|
|
4
|
+
* meant to stay private and not exposed */
|
|
5
|
+
export declare const RTCViewPipNative: React.MemoExoticComponent<React.ForwardRefExoticComponent<{
|
|
6
|
+
streamURL?: string;
|
|
7
|
+
} & React.RefAttributes<React.Ref<any>>>>;
|
|
8
|
+
//# sourceMappingURL=RTCViewPipNative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RTCViewPipNative.d.ts","sourceRoot":"","sources":["../../../../../src/components/Call/CallContent/RTCViewPipNative.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAkB1B,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,QAQlD;AAED;2CAC2C;AAC3C,eAAO,MAAM,gBAAgB;gBAIX,MAAM;yCAevB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIosVoipPushEventsSetupEffect.d.ts","sourceRoot":"","sources":["../../../../src/hooks/push/useIosVoipPushEventsSetupEffect.ts"],"names":[],"mappings":"AAmDA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,
|
|
1
|
+
{"version":3,"file":"useIosVoipPushEventsSetupEffect.d.ts","sourceRoot":"","sources":["../../../../src/hooks/push/useIosVoipPushEventsSetupEffect.ts"],"names":[],"mappings":"AAmDA;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAuI3C,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.10.
|
|
1
|
+
export declare const version = "1.10.13";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -3,16 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const config_plugins_1 = require("@expo/config-plugins");
|
|
4
4
|
const withStreamVideoReactNativeSDKiOSInfoPList = (configuration, props) => {
|
|
5
5
|
return (0, config_plugins_1.withInfoPlist)(configuration, (config) => {
|
|
6
|
-
|
|
7
|
-
config.modResults.UIBackgroundModes
|
|
6
|
+
function addBackgroundMode(mode) {
|
|
7
|
+
if (!Array.isArray(config.modResults.UIBackgroundModes)) {
|
|
8
|
+
config.modResults.UIBackgroundModes = [];
|
|
9
|
+
}
|
|
10
|
+
if (!config.modResults.UIBackgroundModes.includes(mode)) {
|
|
11
|
+
config.modResults.UIBackgroundModes.push(mode);
|
|
12
|
+
}
|
|
8
13
|
}
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
addBackgroundMode('audio');
|
|
15
|
+
if (props?.ringingPushNotifications) {
|
|
16
|
+
addBackgroundMode('voip');
|
|
17
|
+
addBackgroundMode('fetch');
|
|
11
18
|
}
|
|
12
19
|
if (props?.enableNonRingingPushNotifications) {
|
|
13
|
-
|
|
14
|
-
config.modResults.UIBackgroundModes.push('remote-notification');
|
|
15
|
-
}
|
|
20
|
+
addBackgroundMode('remote-notification');
|
|
16
21
|
}
|
|
17
22
|
return config;
|
|
18
23
|
});
|
|
@@ -104,6 +104,7 @@ import Foundation
|
|
|
104
104
|
_ pictureInPictureController: AVPictureInPictureController,
|
|
105
105
|
failedToStartPictureInPictureWithError error: Error
|
|
106
106
|
) {
|
|
107
|
+
NSLog("PiP - failedToStartPictureInPictureWithError:\(error)")
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
public func pictureInPictureControllerWillStopPictureInPicture(
|
|
@@ -184,4 +185,10 @@ import Foundation
|
|
|
184
185
|
private func didUpdatePictureInPictureActiveState(_ isActive: Bool) {
|
|
185
186
|
trackStateAdapter.isEnabled = isActive
|
|
186
187
|
}
|
|
188
|
+
|
|
189
|
+
func stopPictureInPicture() {
|
|
190
|
+
if (pictureInPictureController?.isPictureInPictureActive ?? false) {
|
|
191
|
+
pictureInPictureController?.stopPictureInPicture()
|
|
192
|
+
}
|
|
193
|
+
}
|
|
187
194
|
}
|
package/ios/RTCViewPip.swift
CHANGED
|
@@ -10,52 +10,76 @@ import Foundation
|
|
|
10
10
|
@objc(RTCViewPip)
|
|
11
11
|
class RTCViewPip: UIView {
|
|
12
12
|
|
|
13
|
-
private
|
|
13
|
+
private var pictureInPictureController = StreamPictureInPictureController()
|
|
14
14
|
private var webRtcModule: WebRTCModule?
|
|
15
15
|
|
|
16
16
|
override init(frame: CGRect) {
|
|
17
17
|
super.init(frame: frame)
|
|
18
|
-
|
|
18
|
+
setupNotificationObserver()
|
|
19
|
+
self.pictureInPictureController?.sourceView = self
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
required init?(coder aDecoder: NSCoder) {
|
|
22
23
|
super.init(coder: aDecoder)
|
|
23
|
-
|
|
24
|
+
setupNotificationObserver()
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
private func
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
private func setupNotificationObserver() {
|
|
28
|
+
NotificationCenter.default.addObserver(
|
|
29
|
+
self,
|
|
30
|
+
selector: #selector(appBecameActive),
|
|
31
|
+
name: UIApplication.didBecomeActiveNotification,
|
|
32
|
+
object: nil
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
deinit {
|
|
37
|
+
NotificationCenter.default.removeObserver(self)
|
|
31
38
|
}
|
|
32
39
|
|
|
33
40
|
func setWebRtcModule(_ module: WebRTCModule) {
|
|
34
41
|
webRtcModule = module
|
|
35
42
|
}
|
|
36
43
|
|
|
37
|
-
@objc
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
let
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
@objc public var streamURL: NSString? = nil {
|
|
45
|
+
didSet {
|
|
46
|
+
// https://github.com/react-native-webrtc/react-native-webrtc/blob/8dfc9c394b4bf627c0214255466ebd3b160ca563/ios/RCTWebRTC/RTCVideoViewManager.m#L405-L418
|
|
47
|
+
guard let streamURLString = streamURL as String? else {
|
|
48
|
+
NSLog("PiP - No streamURL set")
|
|
49
|
+
return
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
guard let stream = self.webRtcModule?.stream(forReactTag: streamURLString) else {
|
|
53
|
+
NSLog("PiP - No stream for streamURL: -\(streamURLString)")
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
guard let videoTrack = stream.videoTracks.first else {
|
|
58
|
+
NSLog("PiP - No video track for streamURL: -\(streamURLString)")
|
|
59
|
+
return
|
|
60
|
+
}
|
|
61
|
+
if (self.pictureInPictureController?.track == videoTrack) {
|
|
62
|
+
NSLog("PiP - Skipping video track for streamURL: -\(streamURLString)")
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
DispatchQueue.main.async {
|
|
67
|
+
NSLog("PiP - Setting video track for streamURL: -\(streamURLString)")
|
|
68
|
+
self.pictureInPictureController?.track = videoTrack
|
|
49
69
|
}
|
|
50
70
|
}
|
|
51
71
|
}
|
|
52
72
|
|
|
73
|
+
@objc func appBecameActive() {
|
|
74
|
+
self.pictureInPictureController?.stopPictureInPicture()
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
53
78
|
@objc
|
|
54
79
|
func onCallClosed() {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
80
|
+
NSLog("PiP - pictureInPictureController cleanup called")
|
|
81
|
+
self.pictureInPictureController?.cleanup()
|
|
82
|
+
self.pictureInPictureController = nil
|
|
59
83
|
}
|
|
60
84
|
|
|
61
85
|
override func didMoveToWindow() {
|
|
@@ -64,7 +88,10 @@ class RTCViewPip: UIView {
|
|
|
64
88
|
if (!isVisible) {
|
|
65
89
|
// view is detached so we cleanup the pip controller
|
|
66
90
|
// taken from: https://github.com/software-mansion/react-native-screens/blob/main/Example/ios/ScreensExample/RNSSampleLifecycleAwareView.m
|
|
67
|
-
|
|
91
|
+
DispatchQueue.main.async {
|
|
92
|
+
NSLog("PiP - onCallClosed called due to view detaching")
|
|
93
|
+
self.onCallClosed()
|
|
94
|
+
}
|
|
68
95
|
}
|
|
69
96
|
}
|
|
70
97
|
}
|
|
@@ -22,13 +22,13 @@ class RTCViewPipManager: RCTViewManager {
|
|
|
22
22
|
|
|
23
23
|
@objc func onCallClosed(_ reactTag: NSNumber) {
|
|
24
24
|
self.bridge!.uiManager.addUIBlock { (_: RCTUIManager?, viewRegistry: [NSNumber: UIView]?) in
|
|
25
|
-
guard let
|
|
26
|
-
|
|
27
|
-
print("Invalid view returned from registry, expecting RTCViewPip")
|
|
28
|
-
}
|
|
25
|
+
guard let pipView = viewRegistry?[reactTag] as? RTCViewPip else {
|
|
26
|
+
NSLog("PiP - onCallClosed cant be called, Invalid view returned from registry, expecting RTCViewPip")
|
|
29
27
|
return
|
|
30
28
|
}
|
|
31
|
-
|
|
29
|
+
DispatchQueue.main.async {
|
|
30
|
+
pipView.onCallClosed()
|
|
31
|
+
}
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/video-react-native-sdk",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.13",
|
|
4
4
|
"packageManager": "yarn@3.2.4",
|
|
5
5
|
"description": "Stream Video SDK for React Native",
|
|
6
6
|
"author": "https://getstream.io",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"!**/.*"
|
|
47
47
|
],
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@stream-io/video-client": "1.18.
|
|
50
|
-
"@stream-io/video-react-bindings": "1.5.
|
|
49
|
+
"@stream-io/video-client": "1.18.4",
|
|
50
|
+
"@stream-io/video-react-bindings": "1.5.6",
|
|
51
51
|
"intl-pluralrules": "2.0.1",
|
|
52
52
|
"lodash.merge": "^4.6.2",
|
|
53
53
|
"react-native-url-polyfill": "1.3.0",
|
|
@@ -1,45 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CallingState,
|
|
3
|
+
getLogger,
|
|
3
4
|
hasScreenShare,
|
|
4
5
|
speakerLayoutSortPreset,
|
|
5
6
|
} from '@stream-io/video-client';
|
|
6
7
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
7
8
|
import type { MediaStream } from '@stream-io/react-native-webrtc';
|
|
8
9
|
import React, { useEffect, useMemo } from 'react';
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
type HostComponent,
|
|
12
|
-
Platform,
|
|
13
|
-
requireNativeComponent,
|
|
14
|
-
UIManager,
|
|
15
|
-
} from 'react-native';
|
|
10
|
+
import { findNodeHandle } from 'react-native';
|
|
11
|
+
import { RTCViewPipNative, onNativeCallClosed } from './RTCViewPipNative';
|
|
16
12
|
import { useDebouncedValue } from '../../../utils/hooks/useDebouncedValue';
|
|
17
13
|
import { shouldDisableIOSLocalVideoOnBackgroundRef } from '../../../utils/internal/shouldDisableIOSLocalVideoOnBackground';
|
|
18
14
|
|
|
19
|
-
const COMPONENT_NAME = 'RTCViewPip';
|
|
20
|
-
|
|
21
|
-
type RTCViewPipNativeProps = {
|
|
22
|
-
streamURL?: string;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const RTCViewPipNative: HostComponent<RTCViewPipNativeProps> =
|
|
26
|
-
requireNativeComponent(COMPONENT_NAME);
|
|
27
|
-
|
|
28
|
-
/** Wrapper for the native view
|
|
29
|
-
* meant to stay private and not exposed */
|
|
30
|
-
const RTCViewPip = React.memo(
|
|
31
|
-
React.forwardRef<
|
|
32
|
-
React.Ref<any>,
|
|
33
|
-
{
|
|
34
|
-
streamURL?: string;
|
|
35
|
-
}
|
|
36
|
-
>((props, ref) => {
|
|
37
|
-
if (Platform.OS !== 'ios') return null;
|
|
38
|
-
// @ts-ignore
|
|
39
|
-
return <RTCViewPipNative streamURL={props.streamURL} ref={ref} />;
|
|
40
|
-
})
|
|
41
|
-
);
|
|
42
|
-
|
|
43
15
|
type Props = {
|
|
44
16
|
includeLocalParticipantVideo?: boolean;
|
|
45
17
|
};
|
|
@@ -80,20 +52,25 @@ const RTCViewPipIOS = React.memo(({ includeLocalParticipantVideo }: Props) => {
|
|
|
80
52
|
callClosedInvokedOnce = true;
|
|
81
53
|
const node = findNodeHandle(nativeRef.current);
|
|
82
54
|
if (node !== null) {
|
|
83
|
-
|
|
84
|
-
node,
|
|
85
|
-
// @ts-ignore
|
|
86
|
-
UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed,
|
|
87
|
-
[]
|
|
88
|
-
);
|
|
55
|
+
onNativeCallClosed(node);
|
|
89
56
|
}
|
|
90
57
|
shouldDisableIOSLocalVideoOnBackgroundRef.current = true;
|
|
91
58
|
};
|
|
92
59
|
const unsubFunc = call?.on('call.ended', () => {
|
|
60
|
+
getLogger(['RTCViewPipIOS'])(
|
|
61
|
+
'debug',
|
|
62
|
+
`onCallClosed due to call.ended event`
|
|
63
|
+
);
|
|
64
|
+
unsubFunc?.();
|
|
93
65
|
onCallClosed();
|
|
94
66
|
});
|
|
95
67
|
const subscription = call?.state.callingState$.subscribe((state) => {
|
|
96
68
|
if (state === CallingState.LEFT || state === CallingState.IDLE) {
|
|
69
|
+
getLogger(['RTCViewPipIOS'])(
|
|
70
|
+
'debug',
|
|
71
|
+
`onCallClosed due to callingState: ${state}`
|
|
72
|
+
);
|
|
73
|
+
subscription?.unsubscribe();
|
|
97
74
|
onCallClosed();
|
|
98
75
|
}
|
|
99
76
|
});
|
|
@@ -120,7 +97,7 @@ const RTCViewPipIOS = React.memo(({ includeLocalParticipantVideo }: Props) => {
|
|
|
120
97
|
return videoStreamToRender?.toURL();
|
|
121
98
|
}, [participantInSpotlight]);
|
|
122
99
|
|
|
123
|
-
return <
|
|
100
|
+
return <RTCViewPipNative streamURL={streamURL} ref={nativeRef} />;
|
|
124
101
|
});
|
|
125
102
|
|
|
126
103
|
export default RTCViewPipIOS;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getLogger } from '@stream-io/video-client';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import {
|
|
4
|
+
type HostComponent,
|
|
5
|
+
Platform,
|
|
6
|
+
requireNativeComponent,
|
|
7
|
+
UIManager,
|
|
8
|
+
StyleSheet,
|
|
9
|
+
} from 'react-native';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_NAME = 'RTCViewPip';
|
|
12
|
+
|
|
13
|
+
type RTCViewPipNativeProps = {
|
|
14
|
+
streamURL?: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const NativeComponent: HostComponent<RTCViewPipNativeProps> =
|
|
18
|
+
requireNativeComponent(COMPONENT_NAME);
|
|
19
|
+
|
|
20
|
+
export function onNativeCallClosed(reactTag: number) {
|
|
21
|
+
getLogger(['RTCViewPipNative'])('debug', 'onNativeCallClosed');
|
|
22
|
+
UIManager.dispatchViewManagerCommand(
|
|
23
|
+
reactTag,
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
UIManager.getViewManagerConfig(COMPONENT_NAME).Commands.onCallClosed,
|
|
26
|
+
[]
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Wrapper for the native view
|
|
31
|
+
* meant to stay private and not exposed */
|
|
32
|
+
export const RTCViewPipNative = React.memo(
|
|
33
|
+
React.forwardRef<
|
|
34
|
+
React.Ref<any>,
|
|
35
|
+
{
|
|
36
|
+
streamURL?: string;
|
|
37
|
+
}
|
|
38
|
+
>((props, ref) => {
|
|
39
|
+
if (Platform.OS !== 'ios') return null;
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<NativeComponent
|
|
43
|
+
style={StyleSheet.absoluteFill}
|
|
44
|
+
pointerEvents={'none'}
|
|
45
|
+
streamURL={props.streamURL}
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
ref={ref}
|
|
48
|
+
/>
|
|
49
|
+
);
|
|
50
|
+
})
|
|
51
|
+
);
|
|
@@ -152,6 +152,10 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
152
152
|
onTokenReceived(token);
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
+
voipPushNotification.addEventListener('notification', (notification) => {
|
|
156
|
+
onNotificationReceived(notification);
|
|
157
|
+
});
|
|
158
|
+
|
|
155
159
|
// this will fire when there are events occured before js bridge initialized
|
|
156
160
|
voipPushNotification.addEventListener('didLoadWithEvents', (events) => {
|
|
157
161
|
if (!events || !Array.isArray(events) || events.length < 1) {
|
|
@@ -181,23 +185,9 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
181
185
|
logger('debug', 'Voip event listeners are removed for user: ' + userId);
|
|
182
186
|
voipPushNotification.removeEventListener('didLoadWithEvents');
|
|
183
187
|
voipPushNotification.removeEventListener('register');
|
|
184
|
-
};
|
|
185
|
-
}, [client]);
|
|
186
|
-
|
|
187
|
-
useEffect(() => {
|
|
188
|
-
const pushConfig = StreamVideoRN.getConfig().push;
|
|
189
|
-
if (Platform.OS !== 'ios' || !pushConfig) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
const voipPushNotification = getVoipPushNotificationLib();
|
|
193
|
-
// fired when we received a voip push notification
|
|
194
|
-
voipPushNotification.addEventListener('notification', (notification) => {
|
|
195
|
-
onNotificationReceived(notification);
|
|
196
|
-
});
|
|
197
|
-
return () => {
|
|
198
188
|
voipPushNotification.removeEventListener('notification');
|
|
199
189
|
};
|
|
200
|
-
}, []);
|
|
190
|
+
}, [client]);
|
|
201
191
|
};
|
|
202
192
|
|
|
203
193
|
const onNotificationReceived = async (notification: any) => {
|
|
@@ -249,6 +239,10 @@ const onNotificationReceived = async (notification: any) => {
|
|
|
249
239
|
logger('error', 'Error in getting call uuid from native module', error);
|
|
250
240
|
}
|
|
251
241
|
if (!uuid) {
|
|
242
|
+
logger(
|
|
243
|
+
'error',
|
|
244
|
+
`Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`
|
|
245
|
+
);
|
|
252
246
|
return;
|
|
253
247
|
}
|
|
254
248
|
const created_by_id = notification?.stream?.created_by_id;
|
|
@@ -306,5 +300,9 @@ const onNotificationReceived = async (notification: any) => {
|
|
|
306
300
|
}
|
|
307
301
|
// send the info to this subject, it is listened by callkeep events
|
|
308
302
|
// callkeep events will then accept/reject the call
|
|
303
|
+
logger(
|
|
304
|
+
'debug',
|
|
305
|
+
`call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`
|
|
306
|
+
);
|
|
309
307
|
voipPushNotificationCallCId$.next(call_cid);
|
|
310
308
|
};
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.10.
|
|
1
|
+
export const version = '1.10.13';
|