@stream-io/video-react-native-sdk 1.10.13 → 1.10.14
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 +7 -0
- package/dist/commonjs/hooks/push/index.js +0 -2
- package/dist/commonjs/hooks/push/index.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +20 -23
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +6 -103
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/utils/StreamVideoRN/index.js +4 -0
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/push/ios.js +95 -1
- package/dist/commonjs/utils/push/ios.js.map +1 -1
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +150 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +27 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/module/hooks/push/index.js +0 -2
- package/dist/module/hooks/push/index.js.map +1 -1
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +21 -24
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -1
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +10 -108
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/utils/StreamVideoRN/index.js +4 -0
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/push/ios.js +97 -4
- package/dist/module/utils/push/ios.js.map +1 -1
- package/dist/module/utils/push/setupIosCallKeepEvents.js +145 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js +21 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -0
- package/dist/module/version.js +1 -1
- package/dist/typescript/hooks/push/index.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts +1 -0
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +6 -0
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts +3 -0
- package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -0
- package/dist/typescript/version.d.ts +1 -1
- package/ios/StreamVideoReactNative.m +72 -22
- package/package.json +1 -1
- package/src/hooks/push/index.ts +0 -2
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +37 -31
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +10 -145
- package/src/utils/StreamVideoRN/index.ts +5 -0
- package/src/utils/push/ios.ts +135 -3
- package/src/utils/push/setupIosCallKeepEvents.ts +187 -0
- package/src/utils/push/setupIosVoipPushEvents.ts +29 -0
- package/src/version.ts +1 -1
- package/dist/commonjs/hooks/push/useIosCallKeepEventsSetupEffect.js +0 -109
- package/dist/commonjs/hooks/push/useIosCallKeepEventsSetupEffect.js.map +0 -1
- package/dist/module/hooks/push/useIosCallKeepEventsSetupEffect.js +0 -103
- package/dist/module/hooks/push/useIosCallKeepEventsSetupEffect.js.map +0 -1
- package/dist/typescript/hooks/push/useIosCallKeepEventsSetupEffect.d.ts +0 -5
- package/dist/typescript/hooks/push/useIosCallKeepEventsSetupEffect.d.ts.map +0 -1
- package/src/hooks/push/useIosCallKeepEventsSetupEffect.ts +0 -132
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.10.14](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.10.13...@stream-io/video-react-native-sdk-1.10.14) (2025-03-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* setup ios accept/decline events before user is connected RN-153 ([#1716](https://github.com/GetStream/stream-video-js/issues/1716)) ([b5fb06a](https://github.com/GetStream/stream-video-js/commit/b5fb06af636c9e38b0ef7b90d51548bdf89961f8))
|
|
11
|
+
|
|
5
12
|
## [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
13
|
|
|
7
14
|
### Dependency Updates
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.usePushRegisterEffect = void 0;
|
|
7
|
-
var _useIosCallKeepEventsSetupEffect = require("./useIosCallKeepEventsSetupEffect");
|
|
8
7
|
var _useIosVoipPushEventsSetupEffect = require("./useIosVoipPushEventsSetupEffect");
|
|
9
8
|
var _useProcessPushCallEffect = require("./useProcessPushCallEffect");
|
|
10
9
|
var _useInitAndroidTokenAndRest = require("./useInitAndroidTokenAndRest");
|
|
@@ -16,7 +15,6 @@ var _useProcessPushNonRingingCallEffect = require("./useProcessPushNonRingingCal
|
|
|
16
15
|
*/
|
|
17
16
|
const usePushRegisterEffect = () => {
|
|
18
17
|
(0, _useIosInitRemoteNotifications.useIosInitRemoteNotifications)();
|
|
19
|
-
(0, _useIosCallKeepEventsSetupEffect.useIosCallKeepEventsSetupEffect)();
|
|
20
18
|
(0, _useIosVoipPushEventsSetupEffect.useIosVoipPushEventsSetupEffect)();
|
|
21
19
|
(0, _useProcessPushNonRingingCallEffect.useProcessPushNonRingingCallEffect)();
|
|
22
20
|
(0, _useProcessPushCallEffect.useProcessPushCallEffect)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_useIosVoipPushEventsSetupEffect","require","_useProcessPushCallEffect","_useInitAndroidTokenAndRest","_useIosInitRemoteNotifications","_useProcessPushNonRingingCallEffect","usePushRegisterEffect","useIosInitRemoteNotifications","useIosVoipPushEventsSetupEffect","useProcessPushNonRingingCallEffect","useProcessPushCallEffect","useInitAndroidTokenAndRest","exports"],"sourceRoot":"../../../../src","sources":["hooks/push/index.ts"],"mappings":";;;;;;AAAA,IAAAA,gCAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AACA,IAAAG,8BAAA,GAAAH,OAAA;AACA,IAAAI,mCAAA,GAAAJ,OAAA;AAEA;AACA;AACA;AACA;AACO,MAAMK,qBAAqB,GAAGA,CAAA,KAAM;EACzC,IAAAC,4DAA6B,EAAC,CAAC;EAC/B,IAAAC,gEAA+B,EAAC,CAAC;EACjC,IAAAC,sEAAkC,EAAC,CAAC;EACpC,IAAAC,kDAAwB,EAAC,CAAC;EAC1B,IAAAC,sDAA0B,EAAC,CAAC;AAC9B,CAAC;AAACC,OAAA,CAAAN,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -17,14 +17,18 @@ const isNonActiveCallingState = callingState => {
|
|
|
17
17
|
const isAcceptedCallingState = callingState => {
|
|
18
18
|
return callingState === _videoClient.CallingState.JOINING || callingState === _videoClient.CallingState.JOINED;
|
|
19
19
|
};
|
|
20
|
-
const unsubscribeCallkeepEvents = activeCallCid => {
|
|
20
|
+
const unsubscribeCallkeepEvents = async activeCallCid => {
|
|
21
21
|
const voipPushNotificationCallCId = _videoClient.RxUtils.getCurrentValue(_rxSubjects.voipPushNotificationCallCId$);
|
|
22
22
|
if (activeCallCid && activeCallCid === voipPushNotificationCallCId) {
|
|
23
23
|
// callkeep events should not be listened anymore so clear the call cid
|
|
24
24
|
_rxSubjects.voipPushNotificationCallCId$.next(undefined);
|
|
25
25
|
}
|
|
26
|
+
return await _reactNative.NativeModules.StreamVideoReactNative?.removeIncomingCall(activeCallCid);
|
|
26
27
|
};
|
|
27
28
|
const logger = (0, _videoClient.getLogger)(['useIosCallkeepWithCallingStateEffect']);
|
|
29
|
+
const log = message => {
|
|
30
|
+
logger('warn', message);
|
|
31
|
+
};
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
34
|
* This hook is used to inform the callkeep library that the call has been joined or ended.
|
|
@@ -45,10 +49,8 @@ const useIosCallkeepWithCallingStateEffect = () => {
|
|
|
45
49
|
const callkeep = (0, _libs.getCallKeepLib)();
|
|
46
50
|
// if the component is unmounted and the callID was not reported to callkeep, then report it now
|
|
47
51
|
if (acceptedForegroundCallkeepMap) {
|
|
48
|
-
|
|
49
|
-
unsubscribeCallkeepEvents(acceptedForegroundCallkeepMap.cid);
|
|
50
|
-
// this call should be ended in callkeep
|
|
51
|
-
callkeep.endCall(acceptedForegroundCallkeepMap.uuid);
|
|
52
|
+
log(`Ending call in callkeep: ${acceptedForegroundCallkeepMap.cid}, reason: component unmounted and call was present in acceptedForegroundCallkeepMap`);
|
|
53
|
+
unsubscribeCallkeepEvents(acceptedForegroundCallkeepMap.cid).then(() => callkeep.endCall(acceptedForegroundCallkeepMap.uuid));
|
|
52
54
|
}
|
|
53
55
|
};
|
|
54
56
|
}, [acceptedForegroundCallkeepMap]);
|
|
@@ -63,17 +65,13 @@ const useIosCallkeepWithCallingStateEffect = () => {
|
|
|
63
65
|
const foregroundIncomingCallkeepMap = _videoClient.RxUtils.getCurrentValue(_rxSubjects.voipCallkeepCallOnForegroundMap$);
|
|
64
66
|
const callkeep = (0, _libs.getCallKeepLib)();
|
|
65
67
|
if (activeCallCid === nativeDialerAcceptedCallMap?.cid) {
|
|
66
|
-
|
|
67
|
-
unsubscribeCallkeepEvents(activeCallCid);
|
|
68
|
-
callkeep.endCall(nativeDialerAcceptedCallMap.uuid);
|
|
68
|
+
log(`Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in nativeDialerAcceptedCallMap`);
|
|
69
|
+
unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(nativeDialerAcceptedCallMap.uuid));
|
|
69
70
|
// no need to keep this reference anymore
|
|
70
71
|
_rxSubjects.voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
|
|
71
72
|
} else if (activeCallCid === foregroundIncomingCallkeepMap?.cid) {
|
|
72
|
-
|
|
73
|
-
unsubscribeCallkeepEvents(activeCallCid);
|
|
74
|
-
callkeep.endCall(foregroundIncomingCallkeepMap.uuid);
|
|
75
|
-
// no need to keep this reference anymore
|
|
76
|
-
_rxSubjects.voipCallkeepCallOnForegroundMap$.next(undefined);
|
|
73
|
+
log(`Ending call in callkeep: ${activeCallCid}, reason: activeCallCid changed or was removed and call was present in foregroundIncomingCallkeepMap`);
|
|
74
|
+
unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(foregroundIncomingCallkeepMap.uuid));
|
|
77
75
|
}
|
|
78
76
|
};
|
|
79
77
|
}, [activeCallCid]);
|
|
@@ -91,13 +89,13 @@ const useIosCallkeepWithCallingStateEffect = () => {
|
|
|
91
89
|
// but the call has been accepted through the app and not through the native dialer
|
|
92
90
|
const foregroundCallkeepMap = _videoClient.RxUtils.getCurrentValue(_rxSubjects.voipCallkeepCallOnForegroundMap$);
|
|
93
91
|
if (foregroundCallkeepMap && foregroundCallkeepMap.cid === activeCallCid) {
|
|
94
|
-
|
|
92
|
+
log(
|
|
95
93
|
// @ts-ignore
|
|
96
94
|
`Accepting call in callkeep: ${activeCallCid}, reason: callingstate went to ${_videoClient.CallingState[callingState]} and call was present in foregroundCallkeepMap`);
|
|
97
|
-
// this call should be accepted in callkeep
|
|
98
|
-
callkeep.answerIncomingCall(foregroundCallkeepMap.uuid);
|
|
99
95
|
// no need to keep this reference anymore
|
|
100
96
|
_rxSubjects.voipCallkeepCallOnForegroundMap$.next(undefined);
|
|
97
|
+
_reactNative.NativeModules.StreamVideoReactNative?.removeIncomingCall(activeCallCid).then(() => callkeep.answerIncomingCall(foregroundCallkeepMap.uuid));
|
|
98
|
+
// this call should be accepted in callkeep
|
|
101
99
|
setAcceptedForegroundCallkeepMap(foregroundCallkeepMap);
|
|
102
100
|
}
|
|
103
101
|
}
|
|
@@ -107,16 +105,15 @@ const useIosCallkeepWithCallingStateEffect = () => {
|
|
|
107
105
|
*/
|
|
108
106
|
if (isNonActiveCallingState(callingState)) {
|
|
109
107
|
const callkeep = (0, _libs.getCallKeepLib)();
|
|
110
|
-
unsubscribeCallkeepEvents(activeCallCid);
|
|
111
108
|
|
|
112
109
|
// this was a previously joined call which had push notification displayed
|
|
113
110
|
// the call was accepted through the app and not through native dialer
|
|
114
111
|
// the call was left using the leave button in the app and not through native dialer
|
|
115
112
|
if (activeCallCid === acceptedForegroundCallkeepMap?.cid) {
|
|
116
|
-
|
|
113
|
+
log(
|
|
117
114
|
// @ts-ignore
|
|
118
115
|
`Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${_videoClient.CallingState[callingState]} and call was present in acceptedForegroundCallkeepMap`);
|
|
119
|
-
callkeep.endCall(acceptedForegroundCallkeepMap.uuid);
|
|
116
|
+
unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(acceptedForegroundCallkeepMap.uuid));
|
|
120
117
|
setAcceptedForegroundCallkeepMap(undefined);
|
|
121
118
|
return;
|
|
122
119
|
}
|
|
@@ -124,10 +121,10 @@ const useIosCallkeepWithCallingStateEffect = () => {
|
|
|
124
121
|
// the user rejected in the app and not from native dialer
|
|
125
122
|
const foregroundIncomingCallkeepMap = _videoClient.RxUtils.getCurrentValue(_rxSubjects.voipCallkeepCallOnForegroundMap$);
|
|
126
123
|
if (activeCallCid === foregroundIncomingCallkeepMap?.cid) {
|
|
127
|
-
|
|
124
|
+
log(
|
|
128
125
|
// @ts-ignore
|
|
129
126
|
`Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${_videoClient.CallingState[callingState]} and call was present in foregroundIncomingCallkeepMap`);
|
|
130
|
-
callkeep.endCall(foregroundIncomingCallkeepMap.uuid);
|
|
127
|
+
unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(foregroundIncomingCallkeepMap.uuid));
|
|
131
128
|
// no need to keep this reference anymore
|
|
132
129
|
_rxSubjects.voipCallkeepCallOnForegroundMap$.next(undefined);
|
|
133
130
|
return;
|
|
@@ -137,10 +134,10 @@ const useIosCallkeepWithCallingStateEffect = () => {
|
|
|
137
134
|
// the user left using the leave button in the app
|
|
138
135
|
const nativeDialerAcceptedCallMap = _videoClient.RxUtils.getCurrentValue(_rxSubjects.voipCallkeepAcceptedCallOnNativeDialerMap$);
|
|
139
136
|
if (activeCallCid === nativeDialerAcceptedCallMap?.cid) {
|
|
140
|
-
|
|
137
|
+
log(
|
|
141
138
|
// @ts-ignore
|
|
142
139
|
`Ending call in callkeep: ${activeCallCid}, reason: callingstate went to ${_videoClient.CallingState[callingState]} and call was present in nativeDialerAcceptedCallMap`);
|
|
143
|
-
callkeep.endCall(nativeDialerAcceptedCallMap.uuid);
|
|
140
|
+
unsubscribeCallkeepEvents(activeCallCid).then(() => callkeep.endCall(nativeDialerAcceptedCallMap.uuid));
|
|
144
141
|
// no need to keep this reference anymore
|
|
145
142
|
_rxSubjects.voipCallkeepAcceptedCallOnNativeDialerMap$.next(undefined);
|
|
146
143
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_videoReactBindings","_reactNative","_react","_utils","_libs","_rxSubjects","isNonActiveCallingState","callingState","CallingState","IDLE","UNKNOWN","LEFT","isAcceptedCallingState","JOINING","JOINED","unsubscribeCallkeepEvents","activeCallCid","voipPushNotificationCallCId","RxUtils","getCurrentValue","voipPushNotificationCallCId$","next","undefined","logger","getLogger","useIosCallkeepWithCallingStateEffect","activeCall","useCall","useCallCallingState","useCallStateHooks","acceptedForegroundCallkeepMap","setAcceptedForegroundCallkeepMap","useState","useEffect","pushConfig","StreamVideoRN","getConfig","push","Platform","OS","callkeep","getCallKeepLib","cid","endCall","uuid","nativeDialerAcceptedCallMap","voipCallkeepAcceptedCallOnNativeDialerMap$","foregroundIncomingCallkeepMap","voipCallkeepCallOnForegroundMap$","foregroundCallkeepMap","answerIncomingCall","exports"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosCallkeepWithCallingStateEffect.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAMA,MAAMO,uBAAuB,GAAIC,YAA0B,IAAK;EAC9D,OACEA,YAAY,KAAKC,yBAAY,CAACC,IAAI,IAClCF,YAAY,KAAKC,yBAAY,CAACE,OAAO,IACrCH,YAAY,KAAKC,yBAAY,CAACG,IAAI;AAEtC,CAAC;AAED,MAAMC,sBAAsB,GAAIL,YAA0B,IAAK;EAC7D,OACEA,YAAY,KAAKC,yBAAY,CAACK,OAAO,IACrCN,YAAY,KAAKC,yBAAY,CAACM,MAAM;AAExC,CAAC;AAED,MAAMC,yBAAyB,
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_videoReactBindings","_reactNative","_react","_utils","_libs","_rxSubjects","isNonActiveCallingState","callingState","CallingState","IDLE","UNKNOWN","LEFT","isAcceptedCallingState","JOINING","JOINED","unsubscribeCallkeepEvents","activeCallCid","voipPushNotificationCallCId","RxUtils","getCurrentValue","voipPushNotificationCallCId$","next","undefined","NativeModules","StreamVideoReactNative","removeIncomingCall","logger","getLogger","log","message","useIosCallkeepWithCallingStateEffect","activeCall","useCall","useCallCallingState","useCallStateHooks","acceptedForegroundCallkeepMap","setAcceptedForegroundCallkeepMap","useState","useEffect","pushConfig","StreamVideoRN","getConfig","push","Platform","OS","callkeep","getCallKeepLib","cid","then","endCall","uuid","nativeDialerAcceptedCallMap","voipCallkeepAcceptedCallOnNativeDialerMap$","foregroundIncomingCallkeepMap","voipCallkeepCallOnForegroundMap$","foregroundCallkeepMap","answerIncomingCall","exports"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosCallkeepWithCallingStateEffect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,8 +10,6 @@ var _reactNative = require("react-native");
|
|
|
10
10
|
var _utils = require("../../utils");
|
|
11
11
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
12
12
|
var _pushLogoutCallback = require("../../utils/internal/pushLogoutCallback");
|
|
13
|
-
var _utils2 = require("../../utils/push/internal/utils");
|
|
14
|
-
var _rxSubjects = require("../../utils/push/internal/rxSubjects");
|
|
15
13
|
var _videoClient = require("@stream-io/video-client");
|
|
16
14
|
const logger = (0, _videoClient.getLogger)(['useIosVoipPushEventsSetupEffect']);
|
|
17
15
|
|
|
@@ -48,6 +46,8 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
48
46
|
userId: ''
|
|
49
47
|
});
|
|
50
48
|
const [unsentToken, setUnsentToken] = (0, _react.useState)();
|
|
49
|
+
|
|
50
|
+
// this effect is used to send the unsent token to stream
|
|
51
51
|
(0, _react.useEffect)(() => {
|
|
52
52
|
const pushConfig = _utils.StreamVideoRN.getConfig().push;
|
|
53
53
|
// we need to wait for user to be connected before we can send the push token
|
|
@@ -69,7 +69,8 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
69
69
|
}, [client, connectedUserId, unsentToken]);
|
|
70
70
|
(0, _react.useEffect)(() => {
|
|
71
71
|
const pushConfig = _utils.StreamVideoRN.getConfig().push;
|
|
72
|
-
|
|
72
|
+
const pushProviderName = pushConfig?.ios.pushProviderName;
|
|
73
|
+
if (_reactNative.Platform.OS !== 'ios' || !pushConfig || !client || !pushProviderName) {
|
|
73
74
|
return;
|
|
74
75
|
}
|
|
75
76
|
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
@@ -90,12 +91,8 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
90
91
|
logger('debug', `Skipped sending voip token to stream as it is same as last token - token: ${token}, userId: ${userId}`);
|
|
91
92
|
return;
|
|
92
93
|
}
|
|
93
|
-
const push_provider_name = pushConfig.ios.pushProviderName;
|
|
94
|
-
if (!push_provider_name) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
94
|
logger('debug', `Sending voip token to stream, token: ${token} userId: ${userId}`);
|
|
98
|
-
client.addVoipDevice(token, 'apn',
|
|
95
|
+
client.addVoipDevice(token, 'apn', pushProviderName).then(() => {
|
|
99
96
|
logger('debug', `Sent voip token to stream, token: ${token} userId: ${userId}`);
|
|
100
97
|
setLogoutCallback(client, token, lastVoipTokenRef);
|
|
101
98
|
lastVoipTokenRef.current = {
|
|
@@ -111,9 +108,6 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
111
108
|
voipPushNotification.addEventListener('register', token => {
|
|
112
109
|
onTokenReceived(token);
|
|
113
110
|
});
|
|
114
|
-
voipPushNotification.addEventListener('notification', notification => {
|
|
115
|
-
onNotificationReceived(notification);
|
|
116
|
-
});
|
|
117
111
|
|
|
118
112
|
// this will fire when there are events occured before js bridge initialized
|
|
119
113
|
voipPushNotification.addEventListener('didLoadWithEvents', events => {
|
|
@@ -128,7 +122,7 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
128
122
|
if (name === 'RNVoipPushRemoteNotificationsRegisteredEvent') {
|
|
129
123
|
onTokenReceived(data);
|
|
130
124
|
} else if (name === 'RNVoipPushRemoteNotificationReceivedEvent') {
|
|
131
|
-
|
|
125
|
+
(0, _utils.onVoipNotificationReceived)(data);
|
|
132
126
|
}
|
|
133
127
|
}
|
|
134
128
|
});
|
|
@@ -143,99 +137,8 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
143
137
|
logger('debug', 'Voip event listeners are removed for user: ' + userId);
|
|
144
138
|
voipPushNotification.removeEventListener('didLoadWithEvents');
|
|
145
139
|
voipPushNotification.removeEventListener('register');
|
|
146
|
-
voipPushNotification.removeEventListener('notification');
|
|
147
140
|
};
|
|
148
141
|
}, [client]);
|
|
149
142
|
};
|
|
150
143
|
exports.useIosVoipPushEventsSetupEffect = useIosVoipPushEventsSetupEffect;
|
|
151
|
-
const onNotificationReceived = async notification => {
|
|
152
|
-
/* --- Example payload ---
|
|
153
|
-
{
|
|
154
|
-
"aps": {
|
|
155
|
-
"alert": {
|
|
156
|
-
"body": "",
|
|
157
|
-
"title": "Vishal Narkhede is calling you"
|
|
158
|
-
},
|
|
159
|
-
"badge": 0,
|
|
160
|
-
"category": "stream.video",
|
|
161
|
-
"mutable-content": 1
|
|
162
|
-
},
|
|
163
|
-
"stream": {
|
|
164
|
-
"call_cid": "default:ixbm7y0k74pbjnq",
|
|
165
|
-
"call_display_name": "",
|
|
166
|
-
"created_by_display_name": "Vishal Narkhede",
|
|
167
|
-
"created_by_id": "vishalexpo",
|
|
168
|
-
"receiver_id": "santhoshexpo",
|
|
169
|
-
"sender": "stream.video",
|
|
170
|
-
"type": "call.ring",
|
|
171
|
-
"version": "v2"
|
|
172
|
-
}
|
|
173
|
-
} */
|
|
174
|
-
const sender = notification?.stream?.sender;
|
|
175
|
-
const type = notification?.stream?.type;
|
|
176
|
-
// do not process any other notifications other than stream.video or ringing
|
|
177
|
-
if (sender !== 'stream.video' && type !== 'call.ring') {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
const call_cid = notification?.stream?.call_cid;
|
|
181
|
-
const pushConfig = _utils.StreamVideoRN.getConfig().push;
|
|
182
|
-
if (!call_cid || _reactNative.Platform.OS !== 'ios' || !pushConfig) {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
const client = await pushConfig.createStreamVideoClient();
|
|
186
|
-
if (!client) {
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
const callFromPush = await client.onRingingCall(call_cid);
|
|
190
|
-
let uuid = '';
|
|
191
|
-
try {
|
|
192
|
-
uuid = await _reactNative.NativeModules?.StreamVideoReactNative?.getIncomingCallUUid(call_cid);
|
|
193
|
-
} catch (error) {
|
|
194
|
-
logger('error', 'Error in getting call uuid from native module', error);
|
|
195
|
-
}
|
|
196
|
-
if (!uuid) {
|
|
197
|
-
logger('error', `Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
const created_by_id = notification?.stream?.created_by_id;
|
|
201
|
-
const receiver_id = notification?.stream?.receiver_id;
|
|
202
|
-
function closeCallIfNecessary() {
|
|
203
|
-
const {
|
|
204
|
-
mustEndCall,
|
|
205
|
-
callkeepReason
|
|
206
|
-
} = (0, _utils2.shouldCallBeEnded)(callFromPush, created_by_id, receiver_id);
|
|
207
|
-
if (mustEndCall) {
|
|
208
|
-
const callkeep = (0, _libs.getCallKeepLib)();
|
|
209
|
-
logger('debug', `callkeep.reportEndCallWithUUID for uuid: ${uuid}, call_cid: ${call_cid}, reason: ${callkeepReason}`);
|
|
210
|
-
callkeep.reportEndCallWithUUID(uuid, callkeepReason);
|
|
211
|
-
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
212
|
-
voipPushNotification.onVoipNotificationCompleted(uuid);
|
|
213
|
-
return true;
|
|
214
|
-
}
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
const closed = closeCallIfNecessary();
|
|
218
|
-
const canListenToWS = () => _utils2.canAddPushWSSubscriptionsRef.current && _reactNative.AppState.currentState !== 'active';
|
|
219
|
-
if (!closed && canListenToWS()) {
|
|
220
|
-
const unsubscribe = callFromPush.on('all', event => {
|
|
221
|
-
const _canListenToWS = canListenToWS();
|
|
222
|
-
if (!_canListenToWS) {
|
|
223
|
-
logger('debug', `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, event);
|
|
224
|
-
unsubscribe();
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
const _closed = closeCallIfNecessary();
|
|
228
|
-
if (_closed) {
|
|
229
|
-
logger('debug', `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed: ${_closed}`, event);
|
|
230
|
-
unsubscribe();
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
const unsubscriptionCallbacks = _videoClient.RxUtils.getCurrentValue(_rxSubjects.pushUnsubscriptionCallbacks$) ?? [];
|
|
234
|
-
_rxSubjects.pushUnsubscriptionCallbacks$.next([...unsubscriptionCallbacks, unsubscribe]);
|
|
235
|
-
}
|
|
236
|
-
// send the info to this subject, it is listened by callkeep events
|
|
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`);
|
|
239
|
-
_rxSubjects.voipPushNotificationCallCId$.next(call_cid);
|
|
240
|
-
};
|
|
241
144
|
//# sourceMappingURL=useIosVoipPushEventsSetupEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_libs","_reactNative","_utils","_videoReactBindings","_pushLogoutCallback","
|
|
1
|
+
{"version":3,"names":["_react","require","_libs","_reactNative","_utils","_videoReactBindings","_pushLogoutCallback","_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","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","onVoipNotificationReceived","currentListenerCount","removeEventListener","exports"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.StreamVideoRN = void 0;
|
|
7
7
|
var _pushLogoutCallback = _interopRequireDefault(require("../internal/pushLogoutCallback"));
|
|
8
8
|
var _newNotificationCallbacks = _interopRequireDefault(require("../internal/newNotificationCallbacks"));
|
|
9
|
+
var _setupIosCallKeepEvents = require("../push/setupIosCallKeepEvents");
|
|
10
|
+
var _setupIosVoipPushEvents = require("../push/setupIosVoipPushEvents");
|
|
9
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
12
|
const DEFAULT_STREAM_VIDEO_CONFIG = {
|
|
11
13
|
foregroundService: {
|
|
@@ -74,6 +76,8 @@ class StreamVideoRN {
|
|
|
74
76
|
Please see https://getstream.io/video/docs/react-native/advanced/ringing-calls/#watch-for-incoming-and-outgoing-calls for more information.`);
|
|
75
77
|
}
|
|
76
78
|
this.config.push = pushConfig;
|
|
79
|
+
(0, _setupIosCallKeepEvents.setupIosCallKeepEvents)(pushConfig);
|
|
80
|
+
(0, _setupIosVoipPushEvents.setupIosVoipPushEvents)(pushConfig);
|
|
77
81
|
}
|
|
78
82
|
static getConfig() {
|
|
79
83
|
return this.config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pushLogoutCallback","_interopRequireDefault","require","_newNotificationCallbacks","e","__esModule","default","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","lights","vibration","importance","notificationTexts","title","body","StreamVideoRN","config","updateConfig","updateAndroidIncomingCallChannel","updateChannel","prevChannel","push","incomingCallChannel","setPushConfig","pushConfig","__DEV__","navigateAcceptCall","navigateToIncomingCall","Error","getConfig","onPushLogout","pushLogoutCallbacks","current","Promise","all","map","callback","then","resolve","clearPushLogoutCallbacks","addOnNewCallNotificationListener","newNotificationCallbacks","filter","cb","exports"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":";;;;;;AACA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAF,sBAAA,CAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_pushLogoutCallback","_interopRequireDefault","require","_newNotificationCallbacks","_setupIosCallKeepEvents","_setupIosVoipPushEvents","e","__esModule","default","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","lights","vibration","importance","notificationTexts","title","body","StreamVideoRN","config","updateConfig","updateAndroidIncomingCallChannel","updateChannel","prevChannel","push","incomingCallChannel","setPushConfig","pushConfig","__DEV__","navigateAcceptCall","navigateToIncomingCall","Error","setupIosCallKeepEvents","setupIosVoipPushEvents","getConfig","onPushLogout","pushLogoutCallbacks","current","Promise","all","map","callback","then","resolve","clearPushLogoutCallbacks","addOnNewCallNotificationListener","newNotificationCallbacks","filter","cb","exports"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,13 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.initIosNonVoipToken = initIosNonVoipToken;
|
|
7
7
|
exports.onPushNotificationiOSStreamVideoEvent = onPushNotificationiOSStreamVideoEvent;
|
|
8
|
-
exports.oniOSNotifeeEvent = exports.oniOSExpoNotificationEvent = void 0;
|
|
8
|
+
exports.oniOSNotifeeEvent = exports.oniOSExpoNotificationEvent = exports.onVoipNotificationReceived = void 0;
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
10
|
var _rxSubjects = require("./internal/rxSubjects");
|
|
11
11
|
var _libs = require("./libs");
|
|
12
12
|
var _videoClient = require("@stream-io/video-client");
|
|
13
13
|
var _pushLogoutCallback = require("../internal/pushLogoutCallback");
|
|
14
14
|
var _StreamVideoRN = require("../StreamVideoRN");
|
|
15
|
+
var _utils = require("./internal/utils");
|
|
15
16
|
let lastApnToken = {
|
|
16
17
|
token: '',
|
|
17
18
|
userId: ''
|
|
@@ -153,4 +154,97 @@ async function initIosNonVoipToken(client, pushConfig, setUnsubscribeListener) {
|
|
|
153
154
|
});
|
|
154
155
|
}
|
|
155
156
|
}
|
|
157
|
+
const onVoipNotificationReceived = async notification => {
|
|
158
|
+
/* --- Example payload ---
|
|
159
|
+
{
|
|
160
|
+
"aps": {
|
|
161
|
+
"alert": {
|
|
162
|
+
"body": "",
|
|
163
|
+
"title": "Vishal Narkhede is calling you"
|
|
164
|
+
},
|
|
165
|
+
"badge": 0,
|
|
166
|
+
"category": "stream.video",
|
|
167
|
+
"mutable-content": 1
|
|
168
|
+
},
|
|
169
|
+
"stream": {
|
|
170
|
+
"call_cid": "default:ixbm7y0k74pbjnq",
|
|
171
|
+
"call_display_name": "",
|
|
172
|
+
"created_by_display_name": "Vishal Narkhede",
|
|
173
|
+
"created_by_id": "vishalexpo",
|
|
174
|
+
"receiver_id": "santhoshexpo",
|
|
175
|
+
"sender": "stream.video",
|
|
176
|
+
"type": "call.ring",
|
|
177
|
+
"version": "v2"
|
|
178
|
+
}
|
|
179
|
+
} */
|
|
180
|
+
const sender = notification?.stream?.sender;
|
|
181
|
+
const type = notification?.stream?.type;
|
|
182
|
+
// do not process any other notifications other than stream.video or ringing
|
|
183
|
+
if (sender !== 'stream.video' && type !== 'call.ring') {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const call_cid = notification?.stream?.call_cid;
|
|
187
|
+
const pushConfig = _StreamVideoRN.StreamVideoRN.getConfig().push;
|
|
188
|
+
if (!call_cid || _reactNative.Platform.OS !== 'ios' || !pushConfig) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const logger = (0, _videoClient.getLogger)(['setupIosVoipPushEvents']);
|
|
192
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
193
|
+
if (!client) {
|
|
194
|
+
logger('debug', 'client not found, not processing call.ring voip push notification');
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const callFromPush = await client.onRingingCall(call_cid);
|
|
198
|
+
let uuid = '';
|
|
199
|
+
try {
|
|
200
|
+
uuid = await _reactNative.NativeModules?.StreamVideoReactNative?.getIncomingCallUUid(call_cid);
|
|
201
|
+
} catch (error) {
|
|
202
|
+
logger('error', 'Error in getting call uuid from native module', error);
|
|
203
|
+
}
|
|
204
|
+
if (!uuid) {
|
|
205
|
+
logger('error', `Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const created_by_id = notification?.stream?.created_by_id;
|
|
209
|
+
const receiver_id = notification?.stream?.receiver_id;
|
|
210
|
+
function closeCallIfNecessary() {
|
|
211
|
+
const {
|
|
212
|
+
mustEndCall,
|
|
213
|
+
callkeepReason
|
|
214
|
+
} = (0, _utils.shouldCallBeEnded)(callFromPush, created_by_id, receiver_id);
|
|
215
|
+
if (mustEndCall) {
|
|
216
|
+
const callkeep = (0, _libs.getCallKeepLib)();
|
|
217
|
+
logger('debug', `callkeep.reportEndCallWithUUID for uuid: ${uuid}, call_cid: ${call_cid}, reason: ${callkeepReason}`);
|
|
218
|
+
callkeep.reportEndCallWithUUID(uuid, callkeepReason);
|
|
219
|
+
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
220
|
+
voipPushNotification.onVoipNotificationCompleted(uuid);
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
const closed = closeCallIfNecessary();
|
|
226
|
+
const canListenToWS = () => _utils.canAddPushWSSubscriptionsRef.current && _reactNative.AppState.currentState !== 'active';
|
|
227
|
+
if (!closed && canListenToWS()) {
|
|
228
|
+
const unsubscribe = callFromPush.on('all', event => {
|
|
229
|
+
const _canListenToWS = canListenToWS();
|
|
230
|
+
if (!_canListenToWS) {
|
|
231
|
+
logger('debug', `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, event);
|
|
232
|
+
unsubscribe();
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const _closed = closeCallIfNecessary();
|
|
236
|
+
if (_closed) {
|
|
237
|
+
logger('debug', `unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed: ${_closed}`, event);
|
|
238
|
+
unsubscribe();
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
const unsubscriptionCallbacks = _videoClient.RxUtils.getCurrentValue(_rxSubjects.pushUnsubscriptionCallbacks$) ?? [];
|
|
242
|
+
_rxSubjects.pushUnsubscriptionCallbacks$.next([...unsubscriptionCallbacks, unsubscribe]);
|
|
243
|
+
}
|
|
244
|
+
// send the info to this subject, it is listened by callkeep events
|
|
245
|
+
// callkeep events will then accept/reject the call
|
|
246
|
+
logger('debug', `call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`);
|
|
247
|
+
_rxSubjects.voipPushNotificationCallCId$.next(call_cid);
|
|
248
|
+
};
|
|
249
|
+
exports.onVoipNotificationReceived = onVoipNotificationReceived;
|
|
156
250
|
//# sourceMappingURL=ios.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_rxSubjects","_libs","_videoClient","_pushLogoutCallback","_StreamVideoRN","lastApnToken","token","userId","processNonRingingNotificationStreamPayload","streamPayload","sender","type","cid","call_cid","logger","getLogger","pushNonRingingCallData$","next","undefined","oniOSExpoNotificationEvent","event","pushConfig","StreamVideoRN","getConfig","push","trigger","request","payload","stream","JSON","stringify","exports","oniOSNotifeeEvent","Platform","OS","detail","notifeeLib","getNotifeeLibThrowIfNotInstalledForPush","EventType","PRESS","notification","data","result","onTapNonRingingCallNotification","onPushNotificationiOSStreamVideoEvent","pushNotificationIosLib","getPushNotificationIosLib","getData","isClicked","userInteraction","finish","FetchResult","NoData","initIosNonVoipToken","client","setUnsubscribeListener","ios","pushProviderName","setDeviceToken","streamClient","_user","id","setPushLogoutCallback","removeDevice","err","push_provider_name","addDevice","then","catch","isExpo","expoNotificationsLib","getExpoNotificationsLib","getDevicePushTokenAsync","devicePushToken","subscription","addPushTokenListener","remove","addEventListener","removeEventListener"],"sourceRoot":"../../../../src","sources":["utils/push/ios.ts"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_rxSubjects","_libs","_videoClient","_pushLogoutCallback","_StreamVideoRN","_utils","lastApnToken","token","userId","processNonRingingNotificationStreamPayload","streamPayload","sender","type","cid","call_cid","logger","getLogger","pushNonRingingCallData$","next","undefined","oniOSExpoNotificationEvent","event","pushConfig","StreamVideoRN","getConfig","push","trigger","request","payload","stream","JSON","stringify","exports","oniOSNotifeeEvent","Platform","OS","detail","notifeeLib","getNotifeeLibThrowIfNotInstalledForPush","EventType","PRESS","notification","data","result","onTapNonRingingCallNotification","onPushNotificationiOSStreamVideoEvent","pushNotificationIosLib","getPushNotificationIosLib","getData","isClicked","userInteraction","finish","FetchResult","NoData","initIosNonVoipToken","client","setUnsubscribeListener","ios","pushProviderName","setDeviceToken","streamClient","_user","id","setPushLogoutCallback","removeDevice","err","push_provider_name","addDevice","then","catch","isExpo","expoNotificationsLib","getExpoNotificationsLib","getDevicePushTokenAsync","devicePushToken","subscription","addPushTokenListener","remove","addEventListener","removeEventListener","onVoipNotificationReceived","createStreamVideoClient","callFromPush","onRingingCall","uuid","NativeModules","StreamVideoReactNative","getIncomingCallUUid","error","created_by_id","receiver_id","closeCallIfNecessary","mustEndCall","callkeepReason","shouldCallBeEnded","callkeep","getCallKeepLib","reportEndCallWithUUID","voipPushNotification","getVoipPushNotificationLib","onVoipNotificationCompleted","closed","canListenToWS","canAddPushWSSubscriptionsRef","current","AppState","currentState","unsubscribe","on","_canListenToWS","_closed","unsubscriptionCallbacks","RxUtils","getCurrentValue","pushUnsubscriptionCallbacks$","voipPushNotificationCallCId$"],"sourceRoot":"../../../../src","sources":["utils/push/ios.ts"],"mappings":"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","ignoreList":[]}
|