@stream-io/video-react-native-sdk 0.3.18 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/commonjs/components/Call/CallControls/AcceptCallButton.js +0 -5
- package/dist/commonjs/components/Call/CallControls/AcceptCallButton.js.map +1 -1
- package/dist/commonjs/components/Call/CallControls/RejectCallButton.js +0 -5
- package/dist/commonjs/components/Call/CallControls/RejectCallButton.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +58 -7
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +15 -6
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/providers/MediaStreamManagement.js +25 -34
- package/dist/commonjs/providers/MediaStreamManagement.js.map +1 -1
- package/dist/commonjs/providers/StreamCall.js +22 -5
- package/dist/commonjs/providers/StreamCall.js.map +1 -1
- package/dist/commonjs/utils/push/android.js +60 -1
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/ios.js +2 -0
- package/dist/commonjs/utils/push/ios.js.map +1 -1
- package/dist/commonjs/utils/push/rxSubjects.js +6 -1
- package/dist/commonjs/utils/push/rxSubjects.js.map +1 -1
- package/dist/commonjs/utils/push/utils.js +68 -1
- package/dist/commonjs/utils/push/utils.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/commonjs/version.js.map +1 -1
- package/dist/module/components/Call/CallControls/AcceptCallButton.js +0 -5
- package/dist/module/components/Call/CallControls/AcceptCallButton.js.map +1 -1
- package/dist/module/components/Call/CallControls/RejectCallButton.js +0 -5
- package/dist/module/components/Call/CallControls/RejectCallButton.js.map +1 -1
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +61 -9
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +16 -7
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/providers/MediaStreamManagement.js +25 -34
- package/dist/module/providers/MediaStreamManagement.js.map +1 -1
- package/dist/module/providers/StreamCall.js +19 -3
- package/dist/module/providers/StreamCall.js.map +1 -1
- package/dist/module/utils/push/android.js +63 -4
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/ios.js +3 -1
- package/dist/module/utils/push/ios.js.map +1 -1
- package/dist/module/utils/push/rxSubjects.js +5 -0
- package/dist/module/utils/push/rxSubjects.js.map +1 -1
- package/dist/module/utils/push/utils.js +65 -0
- package/dist/module/utils/push/utils.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/version.js.map +1 -1
- package/dist/typescript/components/Call/CallControls/AcceptCallButton.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallControls/RejectCallButton.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts +1 -0
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/providers/MediaStreamManagement.d.ts.map +1 -1
- package/dist/typescript/providers/StreamCall.d.ts +3 -1
- package/dist/typescript/providers/StreamCall.d.ts.map +1 -1
- package/dist/typescript/utils/push/android.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/rxSubjects.d.ts +6 -0
- package/dist/typescript/utils/push/rxSubjects.d.ts.map +1 -1
- package/dist/typescript/utils/push/utils.d.ts +22 -1
- package/dist/typescript/utils/push/utils.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/dist/typescript/version.d.ts.map +1 -1
- package/expo-config-plugin/dist/withAndroidPermissions.js +1 -0
- package/expo-config-plugin/dist/withPushAppDelegate.js +7 -1
- package/ios/StreamVideoReactNative.h +3 -1
- package/ios/StreamVideoReactNative.m +24 -1
- package/package.json +1 -1
- package/src/components/Call/CallControls/AcceptCallButton.tsx +0 -5
- package/src/components/Call/CallControls/RejectCallButton.tsx +0 -5
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +76 -8
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +18 -7
- package/src/providers/MediaStreamManagement.tsx +30 -39
- package/src/providers/StreamCall.tsx +25 -3
- package/src/utils/push/android.ts +82 -4
- package/src/utils/push/ios.ts +6 -1
- package/src/utils/push/rxSubjects.ts +10 -0
- package/src/utils/push/utils.ts +70 -1
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [0.4.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.3.18...@stream-io/video-react-native-sdk-0.4.0) (2024-02-12)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* **react-native:** add missing push call.cancellation support in app terminated state (#1264)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **react-native:** add missing push call.cancellation support in app terminated state ([#1264](https://github.com/GetStream/stream-video-js/issues/1264)) ([e5dae2e](https://github.com/GetStream/stream-video-js/commit/e5dae2e7f2a99185b5329d5dd5634fbfad318b63))
|
|
15
|
+
|
|
5
16
|
### [0.3.18](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.3.17...@stream-io/video-react-native-sdk-0.3.18) (2024-02-06)
|
|
6
17
|
|
|
7
18
|
### Dependency Updates
|
|
@@ -9,8 +9,6 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
var _CallControlsButton = require("./CallControlsButton");
|
|
10
10
|
var _icons = require("../../../icons");
|
|
11
11
|
var _ThemeContext = require("../../../contexts/ThemeContext");
|
|
12
|
-
var _reactNative = require("react-native");
|
|
13
|
-
var _reactNative2 = _interopRequireDefault(require("@notifee/react-native"));
|
|
14
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
13
|
/**
|
|
16
14
|
* The props for the Accept Call button.
|
|
@@ -42,9 +40,6 @@ const AcceptCallButton = _ref => {
|
|
|
42
40
|
return;
|
|
43
41
|
}
|
|
44
42
|
try {
|
|
45
|
-
if (_reactNative.Platform.OS === 'android' && call !== null && call !== void 0 && call.cid) {
|
|
46
|
-
_reactNative2.default.cancelDisplayedNotification(call === null || call === void 0 ? void 0 : call.cid);
|
|
47
|
-
}
|
|
48
43
|
await (call === null || call === void 0 ? void 0 : call.join());
|
|
49
44
|
if (onAcceptCallHandler) {
|
|
50
45
|
onAcceptCallHandler();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireDefault","_CallControlsButton","_icons","_ThemeContext","
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireDefault","_CallControlsButton","_icons","_ThemeContext","obj","__esModule","default","AcceptCallButton","_ref","onPressHandler","onAcceptCallHandler","call","useCall","theme","colors","variants","buttonSizes","acceptCallButton","useTheme","acceptCallHandler","join","error","console","log","createElement","CallControlsButton","onPress","color","info","size","lg","style","Phone","static_white","exports"],"sourceRoot":"../../../../../src","sources":["components/Call/CallControls/AcceptCallButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAA0D,SAAAE,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1D;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACO,MAAMG,gBAAgB,GAAGC,IAAA,IAGH;EAAA,IAHI;IAC/BC,cAAc;IACdC;EACqB,CAAC,GAAAF,IAAA;EACtB,MAAMG,IAAI,GAAG,IAAAC,2BAAO,EAAC,CAAC;EACtB,MAAM;IACJC,KAAK,EAAE;MACLC,MAAM;MACNC,QAAQ,EAAE;QAAEC;MAAY,CAAC;MACzBC;IACF;EACF,CAAC,GAAG,IAAAC,sBAAQ,EAAC,CAAC;EACd,MAAMC,iBAAiB,GAAG,MAAAA,CAAA,KAAY;IACpC,IAAIV,cAAc,EAAE;MAClBA,cAAc,CAAC,CAAC;MAChB;IACF;IACA,IAAI;MACF,OAAME,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAES,IAAI,CAAC,CAAC;MAClB,IAAIV,mBAAmB,EAAE;QACvBA,mBAAmB,CAAC,CAAC;MACvB;IACF,CAAC,CAAC,OAAOW,KAAK,EAAE;MACdC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEF,KAAK,CAAC;IAC1C;EACF,CAAC;EAED,oBACEtB,MAAA,CAAAO,OAAA,CAAAkB,aAAA,CAACvB,mBAAA,CAAAwB,kBAAkB;IACjBC,OAAO,EAAEP,iBAAkB;IAC3BQ,KAAK,EAAEb,MAAM,CAACc,IAAK;IACnBC,IAAI,EAAEb,WAAW,CAACc,EAAG;IACrBC,KAAK,EAAEd;EAAiB,gBAExBlB,MAAA,CAAAO,OAAA,CAAAkB,aAAA,CAACtB,MAAA,CAAA8B,KAAK;IAACL,KAAK,EAAEb,MAAM,CAACmB;EAAa,CAAE,CAClB,CAAC;AAEzB,CAAC;AAACC,OAAA,CAAA3B,gBAAA,GAAAA,gBAAA"}
|
|
@@ -10,8 +10,6 @@ var _CallControlsButton = require("./CallControlsButton");
|
|
|
10
10
|
var _icons = require("../../../icons");
|
|
11
11
|
var _videoClient = require("@stream-io/video-client");
|
|
12
12
|
var _ThemeContext = require("../../../contexts/ThemeContext");
|
|
13
|
-
var _reactNative = require("react-native");
|
|
14
|
-
var _reactNative2 = _interopRequireDefault(require("@notifee/react-native"));
|
|
15
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
14
|
/**
|
|
17
15
|
* The props for the Reject Call button.
|
|
@@ -50,9 +48,6 @@ const RejectCallButton = _ref => {
|
|
|
50
48
|
if (callingState === _videoClient.CallingState.LEFT) {
|
|
51
49
|
return;
|
|
52
50
|
}
|
|
53
|
-
if (_reactNative.Platform.OS === 'android' && call !== null && call !== void 0 && call.cid) {
|
|
54
|
-
_reactNative2.default.cancelDisplayedNotification(call === null || call === void 0 ? void 0 : call.cid);
|
|
55
|
-
}
|
|
56
51
|
await (call === null || call === void 0 ? void 0 : call.leave({
|
|
57
52
|
reject: true
|
|
58
53
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireDefault","_CallControlsButton","_icons","_videoClient","_ThemeContext","
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireDefault","_CallControlsButton","_icons","_videoClient","_ThemeContext","obj","__esModule","default","RejectCallButton","_ref","onPressHandler","onRejectCallHandler","call","useCall","useCallCallingState","useCallStateHooks","callingState","theme","colors","rejectCallButton","variants","buttonSizes","useTheme","rejectCallHandler","CallingState","LEFT","leave","reject","error","console","log","createElement","CallControlsButton","onPress","color","size","lg","style","PhoneDown","static_white","exports"],"sourceRoot":"../../../../../src","sources":["components/Call/CallControls/RejectCallButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AAA0D,SAAAE,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE1D;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACO,MAAMG,gBAAgB,GAAGC,IAAA,IAGH;EAAA,IAHI;IAC/BC,cAAc;IACdC;EACqB,CAAC,GAAAF,IAAA;EACtB,MAAMG,IAAI,GAAG,IAAAC,2BAAO,EAAC,CAAC;EACtB,MAAM;IAAEC;EAAoB,CAAC,GAAG,IAAAC,qCAAiB,EAAC,CAAC;EACnD,MAAMC,YAAY,GAAGF,mBAAmB,CAAC,CAAC;EAC1C,MAAM;IACJG,KAAK,EAAE;MACLC,MAAM;MACNC,gBAAgB;MAChBC,QAAQ,EAAE;QAAEC;MAAY;IAC1B;EACF,CAAC,GAAG,IAAAC,sBAAQ,EAAC,CAAC;EACd,MAAMC,iBAAiB,GAAG,MAAAA,CAAA,KAAY;IACpC,IAAIb,cAAc,EAAE;MAClBA,cAAc,CAAC,CAAC;MAChB;IACF;IACA,IAAI;MACF,IAAIM,YAAY,KAAKQ,yBAAY,CAACC,IAAI,EAAE;QACtC;MACF;MACA,OAAMb,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEc,KAAK,CAAC;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;MACnC,IAAIhB,mBAAmB,EAAE;QACvBA,mBAAmB,CAAC,CAAC;MACvB;IACF,CAAC,CAAC,OAAOiB,KAAK,EAAE;MACdC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEF,KAAK,CAAC;IAC5C;EACF,CAAC;EAED,oBACE7B,MAAA,CAAAQ,OAAA,CAAAwB,aAAA,CAAC9B,mBAAA,CAAA+B,kBAAkB;IACjBC,OAAO,EAAEV,iBAAkB;IAC3BW,KAAK,EAAEhB,MAAM,CAACU,KAAM;IACpBO,IAAI,EAAEd,WAAW,CAACe;IAClB;IACA;IAAA;IACAC,KAAK,EAAElB;EAAiB,gBAExBpB,MAAA,CAAAQ,OAAA,CAAAwB,aAAA,CAAC7B,MAAA,CAAAoC,SAAS;IAACJ,KAAK,EAAEhB,MAAM,CAACqB;EAAa,CAAE,CACtB,CAAC;AAEzB,CAAC;AAACC,OAAA,CAAAhC,gBAAA,GAAAA,gBAAA"}
|
|
@@ -9,8 +9,10 @@ var _libs = require("../../utils/push/libs");
|
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
10
|
var _utils = require("../../utils");
|
|
11
11
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
12
|
-
var _rxSubjects = require("../../utils/push/rxSubjects");
|
|
13
12
|
var _pushLogoutCallback = require("../../utils/internal/pushLogoutCallback");
|
|
13
|
+
var _utils2 = require("../../utils/push/utils");
|
|
14
|
+
var _rxSubjects = require("../../utils/push/rxSubjects");
|
|
15
|
+
var _videoClient = require("@stream-io/video-client");
|
|
14
16
|
let lastVoipToken = '';
|
|
15
17
|
|
|
16
18
|
/**
|
|
@@ -95,8 +97,8 @@ const useIosVoipPushEventsSetupEffect = () => {
|
|
|
95
97
|
}, []);
|
|
96
98
|
};
|
|
97
99
|
exports.useIosVoipPushEventsSetupEffect = useIosVoipPushEventsSetupEffect;
|
|
98
|
-
const onNotificationReceived = notification => {
|
|
99
|
-
var _notification$stream, _notification$stream2, _notification$stream3;
|
|
100
|
+
const onNotificationReceived = async notification => {
|
|
101
|
+
var _notification$stream, _notification$stream2, _notification$stream3, _notification$stream4, _notification$stream5;
|
|
100
102
|
/* --- Example payload ---
|
|
101
103
|
{
|
|
102
104
|
"aps": {
|
|
@@ -126,10 +128,59 @@ const onNotificationReceived = notification => {
|
|
|
126
128
|
return;
|
|
127
129
|
}
|
|
128
130
|
const call_cid = notification === null || notification === void 0 || (_notification$stream3 = notification.stream) === null || _notification$stream3 === void 0 ? void 0 : _notification$stream3.call_cid;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
const pushConfig = _utils.StreamVideoRN.getConfig().push;
|
|
132
|
+
if (!call_cid || _reactNative.Platform.OS !== 'ios' || !pushConfig) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
136
|
+
if (!client) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const callFromPush = await client.onRingingCall(call_cid);
|
|
140
|
+
let uuid = '';
|
|
141
|
+
try {
|
|
142
|
+
var _NativeModules$Stream;
|
|
143
|
+
uuid = await (_reactNative.NativeModules === null || _reactNative.NativeModules === void 0 || (_NativeModules$Stream = _reactNative.NativeModules.StreamVideoReactNative) === null || _NativeModules$Stream === void 0 ? void 0 : _NativeModules$Stream.getIncomingCallUUid(call_cid));
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.log('Error in getting call uuid', error);
|
|
146
|
+
}
|
|
147
|
+
if (!uuid) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const created_by_id = notification === null || notification === void 0 || (_notification$stream4 = notification.stream) === null || _notification$stream4 === void 0 ? void 0 : _notification$stream4.created_by_id;
|
|
151
|
+
const receiver_id = notification === null || notification === void 0 || (_notification$stream5 = notification.stream) === null || _notification$stream5 === void 0 ? void 0 : _notification$stream5.receiver_id;
|
|
152
|
+
function closeCallIfNecessary() {
|
|
153
|
+
const {
|
|
154
|
+
mustEndCall,
|
|
155
|
+
callkeepReason
|
|
156
|
+
} = (0, _utils2.shouldCallBeEnded)(callFromPush, created_by_id, receiver_id);
|
|
157
|
+
if (mustEndCall) {
|
|
158
|
+
const callkeep = (0, _libs.getCallKeepLib)();
|
|
159
|
+
callkeep.reportEndCallWithUUID(uuid, callkeepReason);
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
const closed = closeCallIfNecessary();
|
|
165
|
+
const canListenToWS = () => _utils2.canAddPushWSSubscriptionsRef.current && _reactNative.AppState.currentState !== 'active';
|
|
166
|
+
if (!closed && canListenToWS()) {
|
|
167
|
+
const unsubscribe = callFromPush.on('all', () => {
|
|
168
|
+
if (!canListenToWS()) {
|
|
169
|
+
unsubscribe();
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const _closed = closeCallIfNecessary();
|
|
173
|
+
if (_closed) {
|
|
174
|
+
unsubscribe();
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
const unsubscriptionCallbacks = _videoClient.RxUtils.getCurrentValue(_rxSubjects.pushUnsubscriptionCallbacks$) ?? [];
|
|
178
|
+
_rxSubjects.pushUnsubscriptionCallbacks$.next([...unsubscriptionCallbacks, unsubscribe]);
|
|
133
179
|
}
|
|
180
|
+
// send the info to this subject, it is listened by callkeep events
|
|
181
|
+
// callkeep events will then accept/reject the call
|
|
182
|
+
_rxSubjects.voipPushNotificationCallCId$.next(call_cid);
|
|
183
|
+
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
184
|
+
voipPushNotification.onVoipNotificationCompleted(uuid);
|
|
134
185
|
};
|
|
135
186
|
//# sourceMappingURL=useIosVoipPushEventsSetupEffect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_libs","_reactNative","_utils","_videoReactBindings","_rxSubjects","
|
|
1
|
+
{"version":3,"names":["_react","require","_libs","_reactNative","_utils","_videoReactBindings","_pushLogoutCallback","_utils2","_rxSubjects","_videoClient","lastVoipToken","useIosVoipPushEventsSetupEffect","client","useStreamVideoClient","useEffect","pushConfig","StreamVideoRN","getConfig","push","Platform","OS","push_provider_name","ios","pushProviderName","addVoipDevice","catch","err","console","warn","voipPushNotification","getVoipPushNotificationLib","onTokenReceived","token","setPushLogoutCallback","removeDevice","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","onNotificationReceived","removeEventListener","notification","exports","_notification$stream","_notification$stream2","_notification$stream3","_notification$stream4","_notification$stream5","sender","stream","type","call_cid","createStreamVideoClient","callFromPush","onRingingCall","uuid","_NativeModules$Stream","NativeModules","StreamVideoReactNative","getIncomingCallUUid","error","log","created_by_id","receiver_id","closeCallIfNecessary","mustEndCall","callkeepReason","shouldCallBeEnded","callkeep","getCallKeepLib","reportEndCallWithUUID","closed","canListenToWS","canAddPushWSSubscriptionsRef","current","AppState","currentState","unsubscribe","on","_closed","unsubscriptionCallbacks","RxUtils","getCurrentValue","pushUnsubscriptionCallbacks$","next","voipPushNotificationCallCId$","onVoipNotificationCompleted"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"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"}
|
|
@@ -71,13 +71,16 @@ let isSetForegroundServiceRan = false;
|
|
|
71
71
|
* This hook is used to keep the call alive in the background for Android.
|
|
72
72
|
* It starts a foreground service to keep the call alive as soon as the call is joined
|
|
73
73
|
* and stops the foreground Service when the call is left.
|
|
74
|
+
* Additonally: also responsible for cancelling any notifee displayed notification when the call has transitioned out of ringing
|
|
74
75
|
*/
|
|
75
76
|
const useAndroidKeepCallAliveEffect = () => {
|
|
77
|
+
var _useCall;
|
|
76
78
|
if (!isSetForegroundServiceRan && _reactNative2.Platform.OS === 'android') {
|
|
77
79
|
isSetForegroundServiceRan = true;
|
|
78
80
|
setForegroundService();
|
|
79
81
|
}
|
|
80
82
|
const foregroundServiceStartedRef = (0, _react.useRef)(false);
|
|
83
|
+
const activeCallCid = (_useCall = (0, _videoReactBindings.useCall)()) === null || _useCall === void 0 ? void 0 : _useCall.cid;
|
|
81
84
|
const {
|
|
82
85
|
useCallCallingState
|
|
83
86
|
} = (0, _videoReactBindings.useCallStateHooks)();
|
|
@@ -98,16 +101,22 @@ const useAndroidKeepCallAliveEffect = () => {
|
|
|
98
101
|
foregroundServiceStartedRef.current = true;
|
|
99
102
|
};
|
|
100
103
|
run();
|
|
104
|
+
} else if (callingState === _videoClient.CallingState.RINGING) {
|
|
105
|
+
// cancel any notifee displayed notification when the call has transitioned out of ringing
|
|
101
106
|
return () => {
|
|
102
|
-
if (
|
|
103
|
-
|
|
107
|
+
if (activeCallCid) {
|
|
108
|
+
_reactNative.default.cancelDisplayedNotification(activeCallCid);
|
|
104
109
|
}
|
|
105
|
-
// stop foreground service when the call is not active
|
|
106
|
-
stopForegroundService();
|
|
107
|
-
foregroundServiceStartedRef.current = false;
|
|
108
110
|
};
|
|
111
|
+
} else if (callingState === _videoClient.CallingState.IDLE || callingState === _videoClient.CallingState.LEFT) {
|
|
112
|
+
if (!foregroundServiceStartedRef.current) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// stop foreground service when the call is not active
|
|
116
|
+
stopForegroundService();
|
|
117
|
+
foregroundServiceStartedRef.current = false;
|
|
109
118
|
}
|
|
110
|
-
}, [callingState]);
|
|
119
|
+
}, [activeCallCid, callingState]);
|
|
111
120
|
(0, _react.useEffect)(() => {
|
|
112
121
|
return () => {
|
|
113
122
|
// stop foreground service when this effect is unmounted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoReactBindings","require","_react","_reactNative","_interopRequireWildcard","_utils","_reactNative2","_videoClient","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","setForegroundService","Platform","OS","notifee","registerForegroundService","Promise","console","log","startForegroundService","foregroundServiceConfig","StreamVideoRN","getConfig","foregroundService","title","body","android","notificationTexts","channelId","channel","id","settings","getNotificationSettings","authorizationStatus","AuthorizationStatus","AUTHORIZED","warn","createChannel","displayNotification","asForegroundService","ongoing","colorized","pressAction","launchActivity","stopForegroundService","isSetForegroundServiceRan","useAndroidKeepCallAliveEffect","foregroundServiceStartedRef","useRef","useCallCallingState","useCallStateHooks","callingState","useEffect","CallingState","JOINED","run","current","exports"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","_reactNative","_interopRequireWildcard","_utils","_reactNative2","_videoClient","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","setForegroundService","Platform","OS","notifee","registerForegroundService","Promise","console","log","startForegroundService","foregroundServiceConfig","StreamVideoRN","getConfig","foregroundService","title","body","android","notificationTexts","channelId","channel","id","settings","getNotificationSettings","authorizationStatus","AuthorizationStatus","AUTHORIZED","warn","createChannel","displayNotification","asForegroundService","ongoing","colorized","pressAction","launchActivity","stopForegroundService","isSetForegroundServiceRan","useAndroidKeepCallAliveEffect","_useCall","foregroundServiceStartedRef","useRef","activeCallCid","useCall","cid","useCallCallingState","useCallStateHooks","callingState","useEffect","CallingState","JOINED","run","current","RINGING","cancelDisplayedNotification","IDLE","LEFT","exports"],"sourceRoot":"../../../src","sources":["hooks/useAndroidKeepCallAliveEffect.ts"],"mappings":"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"}
|
|
@@ -36,14 +36,14 @@ const MediaStreamManagement = _ref => {
|
|
|
36
36
|
// Memoization is needed to avoid unnecessary useEffect triggers
|
|
37
37
|
const targetResolutionSetting = (0, _react.useMemo)(() => {
|
|
38
38
|
var _settings$video$targe, _settings$video$targe2, _settings$video$targe3;
|
|
39
|
-
if ((settings === null || settings === void 0 || (_settings$video$targe = settings.video.target_resolution) === null || _settings$video$targe === void 0 ? void 0 : _settings$video$targe.width)
|
|
40
|
-
return
|
|
39
|
+
if ((settings === null || settings === void 0 || (_settings$video$targe = settings.video.target_resolution) === null || _settings$video$targe === void 0 ? void 0 : _settings$video$targe.width) !== undefined || (settings === null || settings === void 0 || (_settings$video$targe2 = settings.video.target_resolution) === null || _settings$video$targe2 === void 0 ? void 0 : _settings$video$targe2.height) !== undefined || (settings === null || settings === void 0 || (_settings$video$targe3 = settings.video.target_resolution) === null || _settings$video$targe3 === void 0 ? void 0 : _settings$video$targe3.bitrate) !== undefined) {
|
|
40
|
+
return {
|
|
41
|
+
width: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width,
|
|
42
|
+
height: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height,
|
|
43
|
+
bitrate: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate
|
|
44
|
+
};
|
|
41
45
|
}
|
|
42
|
-
return
|
|
43
|
-
width: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width,
|
|
44
|
-
height: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height,
|
|
45
|
-
bitrate: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate
|
|
46
|
-
};
|
|
46
|
+
return undefined;
|
|
47
47
|
}, [settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width, settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height, settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate]);
|
|
48
48
|
|
|
49
49
|
// Resume/Disable video stream tracks when app goes to background/foreground
|
|
@@ -72,52 +72,43 @@ const MediaStreamManagement = _ref => {
|
|
|
72
72
|
* This is the object is used to track the initial audio/video enablement
|
|
73
73
|
* Uses backend settings or the Prop to set initial audio/video enabled
|
|
74
74
|
* Backend settings is applied only if the prop was undefined -- meaning user did not provide any value
|
|
75
|
+
* Memoization is needed to avoid unnecessary useEffect triggers
|
|
75
76
|
*/
|
|
76
77
|
const {
|
|
77
78
|
initialAudioEnabled,
|
|
78
79
|
initialVideoEnabled
|
|
79
80
|
} = (0, _react.useMemo)(() => {
|
|
80
|
-
let _initialAudioEnabled;
|
|
81
|
-
let _initialVideoEnabled;
|
|
82
|
-
if (propInitialAudioEnabled !== undefined) {
|
|
83
|
-
_initialAudioEnabled = propInitialAudioEnabled;
|
|
84
|
-
} else if ((settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on) !== undefined) {
|
|
85
|
-
_initialAudioEnabled = settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on;
|
|
86
|
-
}
|
|
87
|
-
if (propInitialVideoEnabled !== undefined) {
|
|
88
|
-
_initialVideoEnabled = propInitialVideoEnabled;
|
|
89
|
-
} else if ((settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on) !== undefined) {
|
|
90
|
-
_initialVideoEnabled = settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on;
|
|
91
|
-
}
|
|
92
81
|
return {
|
|
93
|
-
initialAudioEnabled:
|
|
94
|
-
initialVideoEnabled:
|
|
82
|
+
initialAudioEnabled: propInitialAudioEnabled ?? (settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on),
|
|
83
|
+
initialVideoEnabled: propInitialVideoEnabled ?? (settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on)
|
|
95
84
|
};
|
|
96
85
|
}, [settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on, settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on, propInitialAudioEnabled, propInitialVideoEnabled]);
|
|
97
86
|
|
|
98
87
|
// The main logic
|
|
99
88
|
// Enable or Disable the audio/video stream based on the initial state
|
|
100
89
|
(0, _react.useEffect)(() => {
|
|
101
|
-
if (
|
|
90
|
+
if (!call) {
|
|
102
91
|
return;
|
|
103
92
|
}
|
|
104
|
-
if (
|
|
105
|
-
|
|
93
|
+
if (initialAudioEnabled !== undefined) {
|
|
94
|
+
if (initialAudioEnabled) {
|
|
95
|
+
call.microphone.enable();
|
|
96
|
+
} else {
|
|
97
|
+
call.microphone.disable();
|
|
98
|
+
}
|
|
106
99
|
}
|
|
100
|
+
|
|
107
101
|
// we wait until we receive the resolution settings from the backend
|
|
108
|
-
if (!
|
|
102
|
+
if (!targetResolutionSetting) {
|
|
109
103
|
return;
|
|
110
104
|
}
|
|
111
|
-
if (initialAudioEnabled) {
|
|
112
|
-
call.microphone.enable();
|
|
113
|
-
} else {
|
|
114
|
-
call.microphone.disable();
|
|
115
|
-
}
|
|
116
105
|
call.camera.selectTargetResolution(targetResolutionSetting);
|
|
117
|
-
if (initialVideoEnabled) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
106
|
+
if (initialVideoEnabled !== undefined) {
|
|
107
|
+
if (initialVideoEnabled) {
|
|
108
|
+
call.camera.enable();
|
|
109
|
+
} else {
|
|
110
|
+
call.camera.disable();
|
|
111
|
+
}
|
|
121
112
|
}
|
|
122
113
|
}, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
|
|
123
114
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_hooks","_reactNative","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MediaStreamManagement","_ref","initialAudioEnabled","propInitialAudioEnabled","initialVideoEnabled","propInitialVideoEnabled","children","useCall","useCallSettings","useCallStateHooks","settings","targetResolutionSetting","useMemo","_settings$video$targe","_settings$video$targe2","_settings$video$targe3","video","target_resolution","width","undefined","height","bitrate","useAppStateListener","_call$camera","camera","resume","Platform","OS","_NativeModules$Stream","NativeModules","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_hooks","_reactNative","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MediaStreamManagement","_ref","initialAudioEnabled","propInitialAudioEnabled","initialVideoEnabled","propInitialVideoEnabled","children","useCall","useCallSettings","useCallStateHooks","settings","targetResolutionSetting","useMemo","_settings$video$targe","_settings$video$targe2","_settings$video$targe3","video","target_resolution","width","undefined","height","bitrate","useAppStateListener","_call$camera","camera","resume","Platform","OS","_NativeModules$Stream","NativeModules","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","audio","mic_default_on","camera_default_on","useEffect","microphone","enable","selectTargetResolution","createElement","Fragment","exports"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"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"}
|
|
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.StreamCall = void 0;
|
|
7
7
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
8
|
-
var _react =
|
|
9
|
-
var _hooks = require("../hooks");
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
9
|
var _useIosCallkeepWithCallingStateEffect = require("../hooks/push/useIosCallkeepWithCallingStateEffect");
|
|
11
10
|
var _MediaStreamManagement = require("./MediaStreamManagement");
|
|
12
|
-
|
|
11
|
+
var _utils = require("../utils/push/utils");
|
|
12
|
+
var _useAndroidKeepCallAliveEffect = require("../hooks/useAndroidKeepCallAliveEffect");
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
15
|
/**
|
|
14
16
|
* StreamCall is a wrapper component that orchestrates the call life cycle logic and
|
|
15
17
|
* provides the call object to the children components.
|
|
@@ -25,7 +27,7 @@ const StreamCall = _ref => {
|
|
|
25
27
|
} = _ref;
|
|
26
28
|
return /*#__PURE__*/_react.default.createElement(_videoReactBindings.StreamCallProvider, {
|
|
27
29
|
call: call
|
|
28
|
-
}, /*#__PURE__*/_react.default.createElement(_MediaStreamManagement.MediaStreamManagement, mediaDeviceInitialState, /*#__PURE__*/_react.default.createElement(AndroidKeepCallAlive, null), /*#__PURE__*/_react.default.createElement(IosInformCallkeepCallEnd, null), children));
|
|
30
|
+
}, /*#__PURE__*/_react.default.createElement(_MediaStreamManagement.MediaStreamManagement, mediaDeviceInitialState, /*#__PURE__*/_react.default.createElement(AndroidKeepCallAlive, null), /*#__PURE__*/_react.default.createElement(IosInformCallkeepCallEnd, null), /*#__PURE__*/_react.default.createElement(ClearPushWSSubscriptions, null), children));
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
/**
|
|
@@ -34,7 +36,7 @@ const StreamCall = _ref => {
|
|
|
34
36
|
*/
|
|
35
37
|
exports.StreamCall = StreamCall;
|
|
36
38
|
const AndroidKeepCallAlive = () => {
|
|
37
|
-
(0,
|
|
39
|
+
(0, _useAndroidKeepCallAliveEffect.useAndroidKeepCallAliveEffect)();
|
|
38
40
|
return null;
|
|
39
41
|
};
|
|
40
42
|
|
|
@@ -46,4 +48,19 @@ const IosInformCallkeepCallEnd = () => {
|
|
|
46
48
|
(0, _useIosCallkeepWithCallingStateEffect.useIosCallkeepWithCallingStateEffect)();
|
|
47
49
|
return null;
|
|
48
50
|
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* This is a renderless component to clear all push ws event subscriptions
|
|
54
|
+
* and set whether push ws subscriptions can be added or not.
|
|
55
|
+
*/
|
|
56
|
+
const ClearPushWSSubscriptions = () => {
|
|
57
|
+
(0, _react.useEffect)(() => {
|
|
58
|
+
(0, _utils.clearPushWSEventSubscriptions)();
|
|
59
|
+
_utils.canAddPushWSSubscriptionsRef.current = false;
|
|
60
|
+
return () => {
|
|
61
|
+
_utils.canAddPushWSSubscriptionsRef.current = true;
|
|
62
|
+
};
|
|
63
|
+
}, []);
|
|
64
|
+
return null;
|
|
65
|
+
};
|
|
49
66
|
//# sourceMappingURL=StreamCall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoReactBindings","require","_react","
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","_interopRequireWildcard","_useIosCallkeepWithCallingStateEffect","_MediaStreamManagement","_utils","_useAndroidKeepCallAliveEffect","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","StreamCall","_ref","mediaDeviceInitialState","children","createElement","StreamCallProvider","MediaStreamManagement","AndroidKeepCallAlive","IosInformCallkeepCallEnd","ClearPushWSSubscriptions","exports","useAndroidKeepCallAliveEffect","useIosCallkeepWithCallingStateEffect","useEffect","clearPushWSEventSubscriptions","canAddPushWSSubscriptionsRef","current"],"sourceRoot":"../../../src","sources":["providers/StreamCall.tsx"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.initAndroidPushToken = initAndroidPushToken;
|
|
7
7
|
exports.setupFirebaseHandlerAndroid = setupFirebaseHandlerAndroid;
|
|
8
8
|
var _reactNative = _interopRequireWildcard(require("@notifee/react-native"));
|
|
9
|
+
var _videoClient = require("@stream-io/video-client");
|
|
9
10
|
var _reactNative2 = require("react-native");
|
|
10
11
|
var _libs = require("./libs");
|
|
11
12
|
var _rxSubjects = require("./rxSubjects");
|
|
@@ -130,6 +131,43 @@ const firebaseMessagingOnMessageHandler = async (data, pushConfig) => {
|
|
|
130
131
|
return;
|
|
131
132
|
}
|
|
132
133
|
if (data.type === 'call.ring') {
|
|
134
|
+
const call_cid = data.call_cid;
|
|
135
|
+
const created_by_id = data.created_by_id;
|
|
136
|
+
const receiver_id = data.receiver_id;
|
|
137
|
+
function shouldCallBeClosed(callToCheck) {
|
|
138
|
+
const {
|
|
139
|
+
mustEndCall
|
|
140
|
+
} = (0, _utils.shouldCallBeEnded)(callToCheck, created_by_id, receiver_id);
|
|
141
|
+
return mustEndCall;
|
|
142
|
+
}
|
|
143
|
+
const canListenToWS = () => _utils.canAddPushWSSubscriptionsRef.current && _reactNative2.AppState.currentState !== 'active';
|
|
144
|
+
const asForegroundService = canListenToWS();
|
|
145
|
+
if (asForegroundService) {
|
|
146
|
+
// Listen to call events from WS through fg service
|
|
147
|
+
// note: this will replace the current empty fg service runner
|
|
148
|
+
_reactNative.default.registerForegroundService(() => {
|
|
149
|
+
return new Promise(async () => {
|
|
150
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
151
|
+
if (!client) {
|
|
152
|
+
_reactNative.default.stopForegroundService();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const callFromPush = await client.onRingingCall(call_cid);
|
|
156
|
+
if (shouldCallBeClosed(callFromPush)) {
|
|
157
|
+
_reactNative.default.stopForegroundService();
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const unsubscribe = callFromPush.on('all', () => {
|
|
161
|
+
if (!canListenToWS() || shouldCallBeClosed(callFromPush)) {
|
|
162
|
+
unsubscribe();
|
|
163
|
+
_reactNative.default.stopForegroundService();
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
const unsubscriptionCallbacks = _videoClient.RxUtils.getCurrentValue(_rxSubjects.pushUnsubscriptionCallbacks$) ?? [];
|
|
167
|
+
_rxSubjects.pushUnsubscriptionCallbacks$.next([...unsubscriptionCallbacks, unsubscribe]);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
133
171
|
const incomingCallChannel = pushConfig.android.incomingCallChannel;
|
|
134
172
|
const incomingCallNotificationTextGetters = pushConfig.android.incomingCallNotificationTextGetters;
|
|
135
173
|
if (!incomingCallChannel || !incomingCallNotificationTextGetters) {
|
|
@@ -148,12 +186,13 @@ const firebaseMessagingOnMessageHandler = async (data, pushConfig) => {
|
|
|
148
186
|
const createdUserName = data.created_by_display_name;
|
|
149
187
|
const channelId = incomingCallChannel.id;
|
|
150
188
|
await _reactNative.default.displayNotification({
|
|
151
|
-
id:
|
|
189
|
+
id: call_cid,
|
|
152
190
|
title: getTitle(createdUserName),
|
|
153
191
|
body: getBody(createdUserName),
|
|
154
192
|
data,
|
|
155
193
|
android: {
|
|
156
194
|
channelId,
|
|
195
|
+
asForegroundService,
|
|
157
196
|
sound: incomingCallChannel.sound,
|
|
158
197
|
vibrationPattern: incomingCallChannel.vibrationPattern,
|
|
159
198
|
pressAction: {
|
|
@@ -177,6 +216,22 @@ const firebaseMessagingOnMessageHandler = async (data, pushConfig) => {
|
|
|
177
216
|
timeoutAfter: 60000 // 60 seconds, after which the notification will be dismissed automatically
|
|
178
217
|
}
|
|
179
218
|
});
|
|
219
|
+
|
|
220
|
+
// check if call needs to be closed if accept/decline event was done
|
|
221
|
+
// before the notification was shown
|
|
222
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
223
|
+
if (!client) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const callFromPush = await client.onRingingCall(call_cid);
|
|
227
|
+
if (shouldCallBeClosed(callFromPush)) {
|
|
228
|
+
if (asForegroundService) {
|
|
229
|
+
_reactNative.default.stopForegroundService();
|
|
230
|
+
} else {
|
|
231
|
+
_reactNative.default.cancelDisplayedNotification(call_cid);
|
|
232
|
+
}
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
180
235
|
} else {
|
|
181
236
|
// the other types are call.live_started and call.notification
|
|
182
237
|
const callChannel = pushConfig.android.callChannel;
|
|
@@ -245,6 +300,10 @@ const onNotifeeEvent = async (event, pushConfig) => {
|
|
|
245
300
|
const mustDecline = didPressDecline || didDismiss;
|
|
246
301
|
// Check if we need to accept the call
|
|
247
302
|
const mustAccept = type === _reactNative.EventType.ACTION_PRESS && pressAction.id === ACCEPT_CALL_ACTION_ID;
|
|
303
|
+
if (mustAccept || mustDecline || type === _reactNative.EventType.ACTION_PRESS) {
|
|
304
|
+
(0, _utils.clearPushWSEventSubscriptions)();
|
|
305
|
+
_reactNative.default.stopForegroundService();
|
|
306
|
+
}
|
|
248
307
|
if (mustAccept) {
|
|
249
308
|
_rxSubjects.pushAcceptedIncomingCallCId$.next(call_cid);
|
|
250
309
|
// NOTE: accept will be handled by the app with rxjs observers as the app will go to foreground always
|