@stream-io/video-react-native-sdk 1.29.2 → 1.29.3-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/AndroidManifest.xml +8 -1
- package/android/src/main/AndroidManifestNew.xml +11 -0
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +42 -5
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +70 -6
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +6 -4
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +83 -0
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +149 -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/useCallingExpWithCallingStateEffect.js +121 -0
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +64 -97
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/index.js +1 -0
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/modules/call-manager/CallManager.js +26 -0
- package/dist/commonjs/modules/call-manager/CallManager.js.map +1 -1
- package/dist/commonjs/providers/StreamCall/index.js +6 -6
- package/dist/commonjs/providers/StreamCall/index.js.map +1 -1
- package/dist/commonjs/utils/StreamVideoRN/index.js +33 -21
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js +58 -0
- package/dist/commonjs/utils/internal/callingx/audioSessionPromise.js.map +1 -0
- package/dist/commonjs/utils/internal/callingx/callingx.js +109 -0
- package/dist/commonjs/utils/internal/callingx/callingx.js.map +1 -0
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +52 -3
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +48 -0
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +1 -0
- package/dist/commonjs/utils/push/android.js +155 -202
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/internal/ios.js +17 -34
- package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js +1 -45
- package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/commonjs/utils/push/internal/utils.js +32 -20
- package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
- package/dist/commonjs/utils/push/ios.js.map +1 -1
- package/dist/commonjs/utils/push/libs/callingx.js +75 -0
- package/dist/commonjs/utils/push/libs/callingx.js.map +1 -0
- package/dist/commonjs/utils/push/libs/index.js +8 -19
- package/dist/commonjs/utils/push/libs/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/notifee/index.js +0 -19
- package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/commonjs/utils/push/setupCallingExpEvents.js +108 -0
- package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +7 -6
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/commonjs/version.js.map +1 -1
- package/dist/module/hooks/push/index.js +0 -2
- package/dist/module/hooks/push/index.js.map +1 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +114 -0
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +1 -0
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +18 -31
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +66 -99
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/index.js +1 -0
- package/dist/module/index.js.map +1 -1
- package/dist/module/modules/call-manager/CallManager.js +26 -0
- package/dist/module/modules/call-manager/CallManager.js.map +1 -1
- package/dist/module/providers/StreamCall/index.js +6 -6
- package/dist/module/providers/StreamCall/index.js.map +1 -1
- package/dist/module/utils/StreamVideoRN/index.js +33 -21
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/internal/callingx/audioSessionPromise.js +51 -0
- package/dist/module/utils/internal/callingx/audioSessionPromise.js.map +1 -0
- package/dist/module/utils/internal/callingx/callingx.js +100 -0
- package/dist/module/utils/internal/callingx/callingx.js.map +1 -0
- package/dist/module/utils/internal/registerSDKGlobals.js +52 -3
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/module/utils/keepCallAliveHeadlessTask.js +42 -0
- package/dist/module/utils/keepCallAliveHeadlessTask.js.map +1 -0
- package/dist/module/utils/push/android.js +157 -204
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/internal/ios.js +17 -34
- package/dist/module/utils/push/internal/ios.js.map +1 -1
- package/dist/module/utils/push/internal/rxSubjects.js +0 -44
- package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/module/utils/push/internal/utils.js +29 -19
- package/dist/module/utils/push/internal/utils.js.map +1 -1
- package/dist/module/utils/push/ios.js.map +1 -1
- package/dist/module/utils/push/libs/callingx.js +67 -0
- package/dist/module/utils/push/libs/callingx.js.map +1 -0
- package/dist/module/utils/push/libs/index.js +1 -2
- package/dist/module/utils/push/libs/index.js.map +1 -1
- package/dist/module/utils/push/libs/notifee/index.js +0 -18
- package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/module/utils/push/setupCallingExpEvents.js +102 -0
- package/dist/module/utils/push/setupCallingExpEvents.js.map +1 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js +7 -6
- package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/version.js.map +1 -1
- package/dist/typescript/hooks/push/index.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +5 -0
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +1 -0
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/index.d.ts +1 -0
- package/dist/typescript/index.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/CallManager.d.ts +5 -0
- package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts +20 -2
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/types.d.ts +54 -29
- package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts +16 -0
- package/dist/typescript/utils/internal/callingx/audioSessionPromise.d.ts.map +1 -0
- package/dist/typescript/utils/internal/callingx/callingx.d.ts +13 -0
- package/dist/typescript/utils/internal/callingx/callingx.d.ts.map +1 -0
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +10 -0
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +1 -0
- package/dist/typescript/utils/push/android.d.ts +1 -2
- package/dist/typescript/utils/push/android.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts +0 -33
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/utils.d.ts +8 -1
- package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts +1 -2
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/callingx.d.ts +9 -0
- package/dist/typescript/utils/push/libs/callingx.d.ts.map +1 -0
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +16 -2
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/index.d.ts +1 -2
- package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts +0 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +8 -0
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +1 -0
- package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/dist/typescript/version.d.ts.map +1 -1
- package/expo-config-plugin/dist/withAndroidManifest.js +1 -33
- package/expo-config-plugin/dist/withAndroidPermissions.js +2 -7
- package/expo-config-plugin/dist/withAppDelegate.js +19 -197
- package/expo-config-plugin/dist/withMainActivity.js +1 -1
- package/expo-config-plugin/dist/withiOSInfoPlist.js +2 -3
- package/ios/StreamInCallManager.m +2 -0
- package/ios/StreamInCallManager.swift +19 -7
- package/ios/StreamVideoReactNative.h +7 -4
- package/ios/StreamVideoReactNative.m +189 -82
- package/package.json +14 -19
- package/src/hooks/push/index.ts +0 -2
- package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +147 -0
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +21 -34
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +94 -120
- package/src/index.ts +1 -0
- package/src/modules/call-manager/CallManager.ts +36 -0
- package/src/modules/call-manager/native-module.d.ts +7 -0
- package/src/providers/StreamCall/index.tsx +6 -6
- package/src/utils/StreamVideoRN/index.ts +40 -30
- package/src/utils/StreamVideoRN/types.ts +56 -29
- package/src/utils/internal/callingx/audioSessionPromise.ts +53 -0
- package/src/utils/internal/callingx/callingx.ts +146 -0
- package/src/utils/internal/registerSDKGlobals.ts +47 -4
- package/src/utils/keepCallAliveHeadlessTask.ts +54 -0
- package/src/utils/push/android.ts +231 -309
- package/src/utils/push/internal/ios.ts +28 -44
- package/src/utils/push/internal/rxSubjects.ts +0 -61
- package/src/utils/push/internal/utils.ts +45 -26
- package/src/utils/push/ios.ts +1 -6
- package/src/utils/push/libs/callingx.ts +90 -0
- package/src/utils/push/libs/index.ts +1 -2
- package/src/utils/push/libs/notifee/index.ts +0 -27
- package/src/utils/push/setupCallingExpEvents.ts +130 -0
- package/src/utils/push/setupIosVoipPushEvents.ts +11 -7
- package/src/version.ts +1 -1
- package/CHANGELOG.md +0 -3133
- package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +0 -95
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -160
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +0 -67
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +0 -1
- package/dist/commonjs/utils/push/libs/callkeep.js +0 -17
- package/dist/commonjs/utils/push/libs/callkeep.js.map +0 -1
- package/dist/commonjs/utils/push/libs/voipPushNotification.js +0 -17
- package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +0 -1
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +0 -205
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +0 -1
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +0 -153
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +0 -1
- package/dist/module/hooks/push/useProcessPushCallEffect.js +0 -60
- package/dist/module/hooks/push/useProcessPushCallEffect.js.map +0 -1
- package/dist/module/utils/push/libs/callkeep.js +0 -11
- package/dist/module/utils/push/libs/callkeep.js.map +0 -1
- package/dist/module/utils/push/libs/voipPushNotification.js +0 -11
- package/dist/module/utils/push/libs/voipPushNotification.js.map +0 -1
- package/dist/module/utils/push/setupIosCallKeepEvents.js +0 -199
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +0 -1
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts +0 -5
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +0 -1
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts +0 -8
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/callkeep.d.ts +0 -3
- package/dist/typescript/utils/push/libs/callkeep.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +0 -3
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +0 -1
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts +0 -6
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +0 -1
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +0 -235
- package/src/hooks/push/useProcessPushCallEffect.ts +0 -108
- package/src/utils/push/libs/callkeep.ts +0 -16
- package/src/utils/push/libs/voipPushNotification.ts +0 -17
- package/src/utils/push/setupIosCallKeepEvents.ts +0 -252
|
@@ -13,10 +13,8 @@ var _rxSubjects = require("./internal/rxSubjects");
|
|
|
13
13
|
var _constants = require("./internal/constants");
|
|
14
14
|
var _utils = require("./internal/utils");
|
|
15
15
|
var _pushLogoutCallback = require("../internal/pushLogoutCallback");
|
|
16
|
-
var _getAndroidDefaultRingtoneUrl = require("../getAndroidDefaultRingtoneUrl");
|
|
17
16
|
var _StreamVideoRN = require("../StreamVideoRN");
|
|
18
|
-
|
|
19
|
-
const DECLINE_CALL_ACTION_ID = 'decline';
|
|
17
|
+
var _callingx = require("./libs/callingx");
|
|
20
18
|
let lastFirebaseToken = {
|
|
21
19
|
token: '',
|
|
22
20
|
userId: ''
|
|
@@ -71,8 +69,7 @@ async function initAndroidPushToken(client, pushConfig, setUnsubscribeListener)
|
|
|
71
69
|
await setDeviceToken(token);
|
|
72
70
|
}
|
|
73
71
|
}
|
|
74
|
-
|
|
75
|
-
const messaging = pushConfig.isExpo && !pushConfig.android.incomingCallChannel ? (0, _libs.getFirebaseMessagingLibNoThrow)(true) : (0, _libs.getFirebaseMessagingLib)();
|
|
72
|
+
const messaging = pushConfig.isExpo ? (0, _libs.getFirebaseMessagingLibNoThrow)(true) : (0, _libs.getFirebaseMessagingLib)();
|
|
76
73
|
if (messaging) {
|
|
77
74
|
logger.debug(`setting firebase token listeners`);
|
|
78
75
|
const unsubscribe = messaging().onTokenRefresh(refreshedToken => setDeviceToken(refreshedToken));
|
|
@@ -86,8 +83,8 @@ async function initAndroidPushToken(client, pushConfig, setUnsubscribeListener)
|
|
|
86
83
|
* Creates notification from the push message data.
|
|
87
84
|
* For Ringing and Non-Ringing calls.
|
|
88
85
|
*/
|
|
86
|
+
|
|
89
87
|
const firebaseDataHandler = async data => {
|
|
90
|
-
if (_reactNative.Platform.OS !== 'android') return;
|
|
91
88
|
/* Example data from firebase
|
|
92
89
|
"message": {
|
|
93
90
|
"data": {
|
|
@@ -103,174 +100,175 @@ const firebaseDataHandler = async data => {
|
|
|
103
100
|
// other stuff
|
|
104
101
|
}
|
|
105
102
|
*/
|
|
103
|
+
if (_reactNative.Platform.OS !== 'android') return;
|
|
104
|
+
const logger = _videoClient.videoLoggerSystem.getLogger('firebaseDataHandler');
|
|
106
105
|
const pushConfig = _StreamVideoRN.StreamVideoRN.getConfig().push;
|
|
107
106
|
if (!pushConfig || !data || data.sender !== 'stream.video') {
|
|
108
107
|
return;
|
|
109
108
|
}
|
|
110
|
-
const notifeeLib = (0, _libs.getNotifeeLibThrowIfNotInstalledForPush)();
|
|
111
|
-
const notifee = notifeeLib.default;
|
|
112
|
-
const settings = await notifee.getNotificationSettings();
|
|
113
|
-
if (settings.authorizationStatus !== 1) {
|
|
114
|
-
const logger = _videoClient.videoLoggerSystem.getLogger('firebaseDataHandler');
|
|
115
|
-
logger.debug(`Notification permission not granted, unable to post ${data.type} notifications`);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
109
|
if (data.type === 'call.ring') {
|
|
119
110
|
const call_cid = data.call_cid;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
111
|
+
if (!call_cid) {
|
|
112
|
+
logger.debug(`call_cid is not provided, skipping the call.ring notification`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const callingx = (0, _callingx.getCallingxLib)();
|
|
116
|
+
if (!callingx.canPostNotifications) {
|
|
117
|
+
logger.warn(`Cannot post notifications, skipping the call.ring notification`);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
121
|
+
if (!client) {
|
|
122
|
+
logger.debug(`video client not found, skipping the call.ring notification`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const shouldRejectCallWhenBusy = client['rejectCallWhenBusy'] ?? false;
|
|
126
|
+
if (callingx.hasRegisteredCall() && shouldRejectCallWhenBusy) {
|
|
127
|
+
logger.debug(`registered call found, skipping the call.ring notification`);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const asForegroundService = (0, _utils.canListenToWS)();
|
|
131
|
+
const callerName = data.created_by_display_name;
|
|
132
|
+
const hasVideo = data.video === 'true';
|
|
132
133
|
if (asForegroundService) {
|
|
133
134
|
// Listen to call events from WS through fg service
|
|
134
135
|
// note: this will replace the current empty fg service runner
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
136
|
+
//we need to start service (e.g. by calling display incoming call) and than launch bg task, consider making those steps independent
|
|
137
|
+
callingx.registerBackgroundTask((_, stopTask) => {
|
|
138
|
+
return new Promise(resolve => {
|
|
139
|
+
const finishBackgroundTask = () => {
|
|
140
|
+
callingx.log(`Finishing background task for callCid: ${call_cid}`, 'debug');
|
|
141
|
+
resolve(undefined);
|
|
142
|
+
stopTask();
|
|
143
|
+
};
|
|
144
|
+
(async () => {
|
|
145
|
+
try {
|
|
146
|
+
const _client = await pushConfig.createStreamVideoClient();
|
|
147
|
+
if (!_client) {
|
|
148
|
+
logger.debug(`Closing fg service as there is no client to create from push config`);
|
|
149
|
+
finishBackgroundTask();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const callFromPush = await _client.onRingingCall(call_cid);
|
|
153
|
+
const {
|
|
154
|
+
mustEndCall,
|
|
155
|
+
endCallReason
|
|
156
|
+
} = (0, _utils.shouldCallBeClosed)(callFromPush, data);
|
|
157
|
+
if (mustEndCall) {
|
|
158
|
+
logger.debug(`Closing fg service callCid: ${call_cid} endCallReason: ${endCallReason}`);
|
|
159
|
+
finishBackgroundTask();
|
|
160
|
+
callingx.log(`Ending call with callCid: ${call_cid} endCallReason: ${endCallReason}`, 'debug');
|
|
161
|
+
callingx.endCallWithReason(call_cid, endCallReason);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const unsubscribeFunctions = [];
|
|
165
|
+
// check if service needs to be closed if accept/decline event was done on another device
|
|
166
|
+
const unsubscribe = callFromPush.on('all', event => {
|
|
167
|
+
const _canListenToWS = (0, _utils.canListenToWS)();
|
|
168
|
+
if (!_canListenToWS) {
|
|
169
|
+
logger.debug(`Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, {
|
|
170
|
+
event
|
|
171
|
+
});
|
|
172
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
173
|
+
finishBackgroundTask();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const {
|
|
177
|
+
mustEndCall: mustEndCallFromEvent,
|
|
178
|
+
endCallReason: endCallReasonFromEvent
|
|
179
|
+
} = (0, _utils.shouldCallBeClosed)(callFromPush, data);
|
|
180
|
+
if (mustEndCallFromEvent) {
|
|
181
|
+
logger.debug(`Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed`, {
|
|
182
|
+
event
|
|
183
|
+
});
|
|
184
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
185
|
+
finishBackgroundTask();
|
|
186
|
+
callingx.endCallWithReason(call_cid, endCallReasonFromEvent);
|
|
187
|
+
}
|
|
157
188
|
});
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
189
|
+
|
|
190
|
+
// check if service needs to be closed if call was left
|
|
191
|
+
const stateSubscription = callFromPush.state.callingState$.subscribe(callingState => {
|
|
192
|
+
if (callingState === _videoClient.CallingState.IDLE || callingState === _videoClient.CallingState.LEFT) {
|
|
193
|
+
logger.debug(`Closing fg service from callingState callCid: ${call_cid} callingState: ${callingState}`);
|
|
194
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
195
|
+
|
|
196
|
+
//TODO: think about sending appropriate reason for end call
|
|
197
|
+
callingx.log(`Ending call with callCid: ${call_cid} callingState: ${callingState}`, 'debug');
|
|
198
|
+
finishBackgroundTask();
|
|
199
|
+
callingx.endCallWithReason(call_cid, 'remote');
|
|
200
|
+
}
|
|
166
201
|
});
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
202
|
+
const endCallSubscription = callingx.addEventListener('endCall', async ({
|
|
203
|
+
callId
|
|
204
|
+
}) => {
|
|
205
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
206
|
+
try {
|
|
207
|
+
await callFromPush.leave({
|
|
208
|
+
reject: true,
|
|
209
|
+
reason: 'decline'
|
|
210
|
+
});
|
|
211
|
+
} catch (error) {
|
|
212
|
+
logger.error(`Failed to leave call with callCid: ${call_cid} error: ${error}`);
|
|
213
|
+
} finally {
|
|
214
|
+
callingx.log(`Ending call with callCid: ${call_cid} callId: ${callId}`, 'debug');
|
|
215
|
+
finishBackgroundTask();
|
|
216
|
+
callingx.endCallWithReason(callId, 'rejected');
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
//stop background task when app comes to foreground
|
|
221
|
+
const appStateSubscription = _reactNative.AppState.addEventListener('change', nextAppState => {
|
|
222
|
+
const _canListenToWS = (0, _utils.canListenToWS)();
|
|
223
|
+
callingx.log(`AppState changed to: ${nextAppState} for callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, 'debug');
|
|
224
|
+
if (!_canListenToWS) {
|
|
225
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
226
|
+
finishBackgroundTask();
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
unsubscribeFunctions.push(unsubscribe);
|
|
231
|
+
unsubscribeFunctions.push(() => stateSubscription.unsubscribe());
|
|
232
|
+
unsubscribeFunctions.push(() => endCallSubscription.remove());
|
|
233
|
+
unsubscribeFunctions.push(() => appStateSubscription.remove());
|
|
234
|
+
_constants.pushUnsubscriptionCallbacks.get(call_cid)?.forEach(cb => cb());
|
|
235
|
+
_constants.pushUnsubscriptionCallbacks.set(call_cid, unsubscribeFunctions);
|
|
236
|
+
} catch (error) {
|
|
237
|
+
callingx.log(`Failed to start background task with callCid: ${call_cid} error: ${error}`, 'error');
|
|
238
|
+
finishBackgroundTask();
|
|
177
239
|
}
|
|
178
|
-
});
|
|
179
|
-
unsubscribeFunctions.push(unsubscribe);
|
|
180
|
-
unsubscribeFunctions.push(() => subscription.unsubscribe());
|
|
181
|
-
_constants.pushUnsubscriptionCallbacks.get(call_cid)?.forEach(cb => cb());
|
|
182
|
-
_constants.pushUnsubscriptionCallbacks.set(call_cid, unsubscribeFunctions);
|
|
240
|
+
})();
|
|
183
241
|
});
|
|
184
242
|
});
|
|
185
243
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (!incomingCallChannel || !incomingCallNotificationTextGetters) {
|
|
189
|
-
const logger = _videoClient.videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler');
|
|
190
|
-
logger.error("Can't show incoming call notification as either or both incomingCallChannel and incomingCallNotificationTextGetters were not provided");
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
/*
|
|
194
|
-
* Sound has to be set on channel level for android 8 and above and cant be updated later after creation!
|
|
195
|
-
* For android 7 and below, sound should be set on notification level
|
|
196
|
-
*/
|
|
197
|
-
// set default ringtone if not provided
|
|
198
|
-
if (!incomingCallChannel.sound) {
|
|
199
|
-
incomingCallChannel.sound = await (0, _getAndroidDefaultRingtoneUrl.getAndroidDefaultRingtoneUrl)();
|
|
200
|
-
}
|
|
201
|
-
await notifee.createChannel(incomingCallChannel);
|
|
202
|
-
const {
|
|
203
|
-
getTitle,
|
|
204
|
-
getBody,
|
|
205
|
-
getAcceptButtonTitle,
|
|
206
|
-
getDeclineButtonTitle
|
|
207
|
-
} = incomingCallNotificationTextGetters;
|
|
208
|
-
const createdUserName = data.created_by_display_name;
|
|
209
|
-
const title = getTitle(createdUserName);
|
|
210
|
-
const body = getBody(createdUserName);
|
|
211
|
-
_videoClient.videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Displaying incoming call notification with callCid: ${call_cid} title: ${title} body: ${body} asForegroundService: ${asForegroundService}`);
|
|
212
|
-
const channelId = incomingCallChannel.id;
|
|
213
|
-
await notifee.displayNotification({
|
|
214
|
-
id: call_cid,
|
|
215
|
-
title: getTitle(createdUserName),
|
|
216
|
-
body: getBody(createdUserName),
|
|
217
|
-
data,
|
|
218
|
-
android: {
|
|
219
|
-
channelId,
|
|
220
|
-
smallIcon: pushConfig.android.smallIcon,
|
|
221
|
-
importance: 4,
|
|
222
|
-
// high importance
|
|
223
|
-
foregroundServiceTypes: (0, _libs.getIncomingCallForegroundServiceTypes)(),
|
|
224
|
-
asForegroundService,
|
|
225
|
-
ongoing: true,
|
|
226
|
-
sound: incomingCallChannel.sound,
|
|
227
|
-
vibrationPattern: incomingCallChannel.vibrationPattern,
|
|
228
|
-
loopSound: true,
|
|
229
|
-
pressAction: {
|
|
230
|
-
id: 'default',
|
|
231
|
-
launchActivity: 'default' // open the app when the notification is pressed
|
|
232
|
-
},
|
|
233
|
-
actions: [{
|
|
234
|
-
title: getDeclineButtonTitle?.() ?? 'Decline',
|
|
235
|
-
pressAction: {
|
|
236
|
-
id: DECLINE_CALL_ACTION_ID
|
|
237
|
-
}
|
|
238
|
-
}, {
|
|
239
|
-
title: getAcceptButtonTitle?.() ?? 'Accept',
|
|
240
|
-
pressAction: {
|
|
241
|
-
id: ACCEPT_CALL_ACTION_ID,
|
|
242
|
-
launchActivity: 'default' // open the app when the notification is pressed
|
|
243
|
-
}
|
|
244
|
-
}],
|
|
245
|
-
category: notifeeLib.AndroidCategory.CALL,
|
|
246
|
-
fullScreenAction: {
|
|
247
|
-
id: 'stream_ringing_incoming_call'
|
|
248
|
-
},
|
|
249
|
-
timeoutAfter: 60000 // 60 seconds, after which the notification will be dismissed automatically
|
|
250
|
-
}
|
|
251
|
-
});
|
|
244
|
+
await callingx.displayIncomingCall(call_cid, call_cid, callerName, hasVideo);
|
|
245
|
+
logger.debug(`Displaying incoming call notification with callCid: ${call_cid} asForegroundService: ${asForegroundService}`);
|
|
252
246
|
if (asForegroundService) {
|
|
253
247
|
// no need to check if call has be closed as that will be handled by the fg service
|
|
254
248
|
return;
|
|
255
249
|
}
|
|
256
|
-
|
|
257
|
-
// check if call needs to be closed if accept/decline event was done
|
|
258
|
-
// before the notification was shown
|
|
259
|
-
const client = await pushConfig.createStreamVideoClient();
|
|
260
|
-
if (!client) {
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
250
|
const callFromPush = await client.onRingingCall(call_cid);
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
251
|
+
const {
|
|
252
|
+
mustEndCall,
|
|
253
|
+
endCallReason
|
|
254
|
+
} = (0, _utils.shouldCallBeClosed)(callFromPush, data);
|
|
255
|
+
if (mustEndCall) {
|
|
256
|
+
logger.debug(`Removing incoming call notification immediately with callCid: ${call_cid} as it should be closed`);
|
|
257
|
+
callingx.endCallWithReason(call_cid, endCallReason);
|
|
267
258
|
}
|
|
268
259
|
} else {
|
|
260
|
+
const notifeeLib = (0, _libs.getNotifeeLibThrowIfNotInstalledForPush)();
|
|
261
|
+
const notifee = notifeeLib.default;
|
|
262
|
+
const settings = await notifee.getNotificationSettings();
|
|
263
|
+
if (settings.authorizationStatus !== 1) {
|
|
264
|
+
logger.debug(`Notification permission not granted, unable to post ${data.type} notifications`);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
|
|
269
268
|
// the other types are call.live_started and call.notification
|
|
270
269
|
const callChannel = pushConfig.android.callChannel;
|
|
271
270
|
const callNotificationTextGetters = pushConfig.android.callNotificationTextGetters;
|
|
272
271
|
if (!callChannel || !callNotificationTextGetters) {
|
|
273
|
-
const logger = _videoClient.videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler');
|
|
274
272
|
logger.debug("Can't show call notification as either or both callChannel and callNotificationTextGetters is not provided");
|
|
275
273
|
return;
|
|
276
274
|
}
|
|
@@ -285,10 +283,10 @@ const firebaseDataHandler = async data => {
|
|
|
285
283
|
const type = data.type;
|
|
286
284
|
const title = getTitle(type, createdUserName);
|
|
287
285
|
const body = getBody(type, createdUserName);
|
|
288
|
-
|
|
286
|
+
logger.debug(`Displaying NonRingingPushEvent ${type} notification with title: ${title} body: ${body}`);
|
|
289
287
|
await notifee.displayNotification({
|
|
290
|
-
title
|
|
291
|
-
body
|
|
288
|
+
title,
|
|
289
|
+
body,
|
|
292
290
|
data,
|
|
293
291
|
android: {
|
|
294
292
|
sound: callChannel.sound,
|
|
@@ -313,8 +311,7 @@ const firebaseDataHandler = async data => {
|
|
|
313
311
|
};
|
|
314
312
|
exports.firebaseDataHandler = firebaseDataHandler;
|
|
315
313
|
const onAndroidNotifeeEvent = async ({
|
|
316
|
-
event
|
|
317
|
-
isBackground
|
|
314
|
+
event
|
|
318
315
|
}) => {
|
|
319
316
|
if (_reactNative.Platform.OS !== 'android') return;
|
|
320
317
|
const {
|
|
@@ -322,8 +319,7 @@ const onAndroidNotifeeEvent = async ({
|
|
|
322
319
|
detail
|
|
323
320
|
} = event;
|
|
324
321
|
const {
|
|
325
|
-
notification
|
|
326
|
-
pressAction
|
|
322
|
+
notification
|
|
327
323
|
} = detail;
|
|
328
324
|
const notificationId = notification?.id;
|
|
329
325
|
const data = notification?.data;
|
|
@@ -334,53 +330,10 @@ const onAndroidNotifeeEvent = async ({
|
|
|
334
330
|
|
|
335
331
|
// we can safely cast to string because the data is from "stream.video"
|
|
336
332
|
const call_cid = data.call_cid;
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
const notifee = notifeeLib.default;
|
|
342
|
-
// Check if we need to decline the call
|
|
343
|
-
const didPressDecline = type === notifeeLib.EventType.ACTION_PRESS && pressAction?.id === DECLINE_CALL_ACTION_ID;
|
|
344
|
-
const didDismiss = type === notifeeLib.EventType.DISMISSED;
|
|
345
|
-
const mustDecline = didPressDecline || didDismiss;
|
|
346
|
-
// Check if we need to accept the call
|
|
347
|
-
const mustAccept = type === notifeeLib.EventType.ACTION_PRESS && pressAction?.id === ACCEPT_CALL_ACTION_ID;
|
|
348
|
-
if (mustAccept || mustDecline || type === notifeeLib.EventType.ACTION_PRESS) {
|
|
349
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`clearPushWSEventSubscriptions for callCId: ${call_cid} mustAccept: ${mustAccept} mustDecline: ${mustDecline}`);
|
|
350
|
-
(0, _utils.clearPushWSEventSubscriptions)(call_cid);
|
|
351
|
-
notifee.stopForegroundService();
|
|
352
|
-
}
|
|
353
|
-
if (mustAccept) {
|
|
354
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushAcceptedIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
355
|
-
_rxSubjects.pushAcceptedIncomingCallCId$.next(call_cid);
|
|
356
|
-
// NOTE: accept will be handled by the app with rxjs observers as the app will go to foreground always
|
|
357
|
-
} else if (mustDecline) {
|
|
358
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushRejectedIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
359
|
-
_rxSubjects.pushRejectedIncomingCallCId$.next(call_cid);
|
|
360
|
-
if (hasObservers) {
|
|
361
|
-
// if we had observers we can return here as the observers will handle the call as the app is in the foreground state
|
|
362
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`Skipped processCallFromPushInBackground for Declining call with callCId: ${call_cid} as the app is in the foreground state`);
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`start processCallFromPushInBackground - Declining call with callCId: ${call_cid}`);
|
|
366
|
-
await (0, _utils.processCallFromPushInBackground)(pushConfig, call_cid, 'decline');
|
|
367
|
-
} else {
|
|
368
|
-
if (type === notifeeLib.EventType.PRESS) {
|
|
369
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushTappedIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
370
|
-
_rxSubjects.pushTappedIncomingCallCId$.next(call_cid);
|
|
371
|
-
// pressed state will be handled by the app with rxjs observers as the app will go to foreground always
|
|
372
|
-
} else if (isBackground && type === notifeeLib.EventType.DELIVERED) {
|
|
373
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushAndroidBackgroundDeliveredIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
374
|
-
_rxSubjects.pushAndroidBackgroundDeliveredIncomingCallCId$.next(call_cid);
|
|
375
|
-
// background delivered state will be handled by the app with rxjs observers as processing needs to happen only when app is opened
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
} else {
|
|
379
|
-
const notifeeLib = (0, _libs.getNotifeeLibThrowIfNotInstalledForPush)();
|
|
380
|
-
if (type === notifeeLib.EventType.PRESS) {
|
|
381
|
-
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`onTapNonRingingCallNotification with callCId: ${call_cid}`);
|
|
382
|
-
pushConfig.onTapNonRingingCallNotification?.(call_cid, data.type);
|
|
383
|
-
}
|
|
333
|
+
const notifeeLib = (0, _libs.getNotifeeLibThrowIfNotInstalledForPush)();
|
|
334
|
+
if (type === notifeeLib.EventType.PRESS) {
|
|
335
|
+
_videoClient.videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`onTapNonRingingCallNotification with callCId: ${call_cid}`);
|
|
336
|
+
pushConfig.onTapNonRingingCallNotification?.(call_cid, data.type);
|
|
384
337
|
}
|
|
385
338
|
};
|
|
386
339
|
exports.onAndroidNotifeeEvent = onAndroidNotifeeEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_reactNative","_libs","_rxSubjects","_constants","_utils","_pushLogoutCallback","_getAndroidDefaultRingtoneUrl","_StreamVideoRN","ACCEPT_CALL_ACTION_ID","DECLINE_CALL_ACTION_ID","lastFirebaseToken","token","userId","initAndroidPushToken","client","pushConfig","setUnsubscribeListener","Platform","OS","android","pushProviderName","logger","videoLoggerSystem","getLogger","setDeviceToken","streamClient","_user","id","anonymous","debug","setPushLogoutCallback","removeDevice","err","warn","push_provider_name","addDevice","isExpo","expoNotificationsLib","onTapNonRingingCallNotification","getExpoNotificationsLib","getExpoNotificationsLibNoThrow","subscription","addPushTokenListener","devicePushToken","data","remove","getDevicePushTokenAsync","messaging","incomingCallChannel","getFirebaseMessagingLibNoThrow","getFirebaseMessagingLib","unsubscribe","onTokenRefresh","refreshedToken","getToken","firebaseDataHandler","StreamVideoRN","getConfig","push","sender","notifeeLib","getNotifeeLibThrowIfNotInstalledForPush","notifee","default","settings","getNotificationSettings","authorizationStatus","type","call_cid","created_by_id","receiver_id","video_client","createStreamVideoClient","onRingingCall","shouldCallBeClosed","callToCheck","mustEndCall","shouldCallBeEnded","canListenToWS","canAddPushWSSubscriptionsRef","current","AppState","currentState","asForegroundService","registerForegroundService","Promise","stopForegroundService","callFromPush","_shouldCallBeClosed","unsubscribeFunctions","on","event","_canListenToWS","forEach","fn","state","callingState$","subscribe","callingState","CallingState","IDLE","LEFT","pushUnsubscriptionCallbacks","get","cb","set","incomingCallNotificationTextGetters","error","sound","getAndroidDefaultRingtoneUrl","createChannel","getTitle","getBody","getAcceptButtonTitle","getDeclineButtonTitle","createdUserName","created_by_display_name","title","body","channelId","displayNotification","smallIcon","importance","foregroundServiceTypes","getIncomingCallForegroundServiceTypes","ongoing","vibrationPattern","loopSound","pressAction","launchActivity","actions","category","AndroidCategory","CALL","fullScreenAction","timeoutAfter","cancelDisplayedNotification","callChannel","callNotificationTextGetters","cid","pushNonRingingCallData$","next","exports","onAndroidNotifeeEvent","isBackground","detail","notification","notificationId","hasObservers","pushAcceptedIncomingCallCId$","observed","pushRejectedIncomingCallCId$","didPressDecline","EventType","ACTION_PRESS","didDismiss","DISMISSED","mustDecline","mustAccept","clearPushWSEventSubscriptions","processCallFromPushInBackground","PRESS","pushTappedIncomingCallCId$","DELIVERED","pushAndroidBackgroundDeliveredIncomingCallCId$"],"sourceRoot":"../../../../src","sources":["utils/push/android.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_reactNative","_libs","_rxSubjects","_constants","_utils","_pushLogoutCallback","_StreamVideoRN","_callingx","lastFirebaseToken","token","userId","initAndroidPushToken","client","pushConfig","setUnsubscribeListener","Platform","OS","android","pushProviderName","logger","videoLoggerSystem","getLogger","setDeviceToken","streamClient","_user","id","anonymous","debug","setPushLogoutCallback","removeDevice","err","warn","push_provider_name","addDevice","isExpo","expoNotificationsLib","onTapNonRingingCallNotification","getExpoNotificationsLib","getExpoNotificationsLibNoThrow","subscription","addPushTokenListener","devicePushToken","data","remove","getDevicePushTokenAsync","messaging","getFirebaseMessagingLibNoThrow","getFirebaseMessagingLib","unsubscribe","onTokenRefresh","refreshedToken","getToken","firebaseDataHandler","StreamVideoRN","getConfig","push","sender","type","call_cid","callingx","getCallingxLib","canPostNotifications","createStreamVideoClient","shouldRejectCallWhenBusy","hasRegisteredCall","asForegroundService","canListenToWS","callerName","created_by_display_name","hasVideo","video","registerBackgroundTask","_","stopTask","Promise","resolve","finishBackgroundTask","log","undefined","_client","callFromPush","onRingingCall","mustEndCall","endCallReason","shouldCallBeClosed","endCallWithReason","unsubscribeFunctions","on","event","_canListenToWS","forEach","fn","mustEndCallFromEvent","endCallReasonFromEvent","stateSubscription","state","callingState$","subscribe","callingState","CallingState","IDLE","LEFT","endCallSubscription","addEventListener","callId","leave","reject","reason","error","appStateSubscription","AppState","nextAppState","pushUnsubscriptionCallbacks","get","cb","set","displayIncomingCall","notifeeLib","getNotifeeLibThrowIfNotInstalledForPush","notifee","default","settings","getNotificationSettings","authorizationStatus","callChannel","callNotificationTextGetters","createChannel","channelId","getTitle","getBody","createdUserName","title","body","displayNotification","sound","smallIcon","vibrationPattern","importance","pressAction","launchActivity","timeoutAfter","cid","pushNonRingingCallData$","next","exports","onAndroidNotifeeEvent","detail","notification","notificationId","EventType","PRESS"],"sourceRoot":"../../../../src","sources":["utils/push/android.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,11 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.onVoipNotificationReceived = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
-
var _libs = require("../libs");
|
|
9
|
-
var _rxSubjects = require("./rxSubjects");
|
|
10
8
|
var _constants = require("./constants");
|
|
11
9
|
var _utils = require("./utils");
|
|
12
10
|
var _videoClient = require("@stream-io/video-client");
|
|
11
|
+
var _callingx = require("../libs/callingx");
|
|
13
12
|
const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
14
13
|
/* --- Example payload ---
|
|
15
14
|
{
|
|
@@ -33,6 +32,7 @@ const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
|
33
32
|
"version": "v2"
|
|
34
33
|
}
|
|
35
34
|
} */
|
|
35
|
+
const logger = _videoClient.videoLoggerSystem.getLogger('callingx - onVoipNotificationReceived');
|
|
36
36
|
const sender = notification?.stream?.sender;
|
|
37
37
|
const type = notification?.stream?.type;
|
|
38
38
|
// do not process any other notifications other than stream.video or ringing
|
|
@@ -43,50 +43,34 @@ const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
|
43
43
|
if (!call_cid || _reactNative.Platform.OS !== 'ios' || !pushConfig.ios.pushProviderName) {
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
|
-
const
|
|
46
|
+
const callingx = (0, _callingx.getCallingxLib)();
|
|
47
|
+
if (callingx.isCallTracked(call_cid)) {
|
|
48
|
+
//same call_cid is already tracked, so we skip the notification
|
|
49
|
+
logger.debug(`the same call_cid ${call_cid} is already tracked, skipping the call.ring notification`);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
47
52
|
const client = await pushConfig.createStreamVideoClient();
|
|
48
53
|
if (!client) {
|
|
49
54
|
logger.debug('client not found, not processing call.ring voip push notification');
|
|
50
55
|
return;
|
|
51
56
|
}
|
|
52
|
-
const shouldRejectCallWhenBusy = client['rejectCallWhenBusy'] ?? false;
|
|
53
|
-
if (shouldRejectCallWhenBusy) {
|
|
54
|
-
// inform the iOS native module that we should reject call when busy
|
|
55
|
-
_reactNative.NativeModules.StreamVideoReactNative.setShouldRejectCallWhenBusy(shouldRejectCallWhenBusy);
|
|
56
|
-
}
|
|
57
57
|
const callFromPush = await client.onRingingCall(call_cid);
|
|
58
|
-
let uuid = '';
|
|
59
|
-
try {
|
|
60
|
-
uuid = await _reactNative.NativeModules?.StreamVideoReactNative?.getIncomingCallUUid(call_cid);
|
|
61
|
-
} catch (error) {
|
|
62
|
-
logger.error('Error in getting call uuid from native module', error);
|
|
63
|
-
}
|
|
64
|
-
if (!uuid) {
|
|
65
|
-
logger.error(`Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const created_by_id = notification?.stream?.created_by_id;
|
|
69
|
-
const receiver_id = notification?.stream?.receiver_id;
|
|
70
58
|
function closeCallIfNecessary() {
|
|
71
59
|
const {
|
|
72
60
|
mustEndCall,
|
|
73
|
-
|
|
74
|
-
} = (0, _utils.
|
|
61
|
+
endCallReason
|
|
62
|
+
} = (0, _utils.shouldCallBeClosed)(callFromPush, notification?.stream);
|
|
75
63
|
if (mustEndCall) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
callkeep.reportEndCallWithUUID(uuid, callkeepReason);
|
|
79
|
-
const voipPushNotification = (0, _libs.getVoipPushNotificationLib)();
|
|
80
|
-
voipPushNotification.onVoipNotificationCompleted(uuid);
|
|
64
|
+
logger.debug(`callingx.endCallWithReason for call_cid: ${call_cid} endCallReason: ${endCallReason}`);
|
|
65
|
+
callingx.endCallWithReason(call_cid, endCallReason);
|
|
81
66
|
return true;
|
|
82
67
|
}
|
|
83
68
|
return false;
|
|
84
69
|
}
|
|
85
70
|
const closed = closeCallIfNecessary();
|
|
86
|
-
|
|
87
|
-
if (!closed && canListenToWS()) {
|
|
71
|
+
if (!closed && (0, _utils.canListenToWS)()) {
|
|
88
72
|
const unsubscribe = callFromPush.on('all', event => {
|
|
89
|
-
const _canListenToWS = canListenToWS();
|
|
73
|
+
const _canListenToWS = (0, _utils.canListenToWS)();
|
|
90
74
|
if (!_canListenToWS) {
|
|
91
75
|
logger.debug(`unsubscribe due to event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, event);
|
|
92
76
|
unsubscribe();
|
|
@@ -101,10 +85,9 @@ const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
|
101
85
|
_constants.pushUnsubscriptionCallbacks.get(call_cid)?.forEach(cb => cb());
|
|
102
86
|
_constants.pushUnsubscriptionCallbacks.set(call_cid, [unsubscribe]);
|
|
103
87
|
}
|
|
104
|
-
|
|
105
|
-
//
|
|
106
|
-
logger.debug(`call_cid:${call_cid}
|
|
107
|
-
_rxSubjects.voipPushNotificationCallCId$.next(call_cid);
|
|
88
|
+
|
|
89
|
+
// callingx event listeners (setupCallingExpEvents) will handle accept/reject
|
|
90
|
+
logger.debug(`call_cid:${call_cid} received and processed from call.ring push notification`);
|
|
108
91
|
};
|
|
109
92
|
exports.onVoipNotificationReceived = onVoipNotificationReceived;
|
|
110
93
|
//# sourceMappingURL=ios.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_constants","_utils","_videoClient","_callingx","onVoipNotificationReceived","notification","pushConfig","logger","videoLoggerSystem","getLogger","sender","stream","type","call_cid","Platform","OS","ios","pushProviderName","callingx","getCallingxLib","isCallTracked","debug","client","createStreamVideoClient","callFromPush","onRingingCall","closeCallIfNecessary","mustEndCall","endCallReason","shouldCallBeClosed","endCallWithReason","closed","canListenToWS","unsubscribe","on","event","_canListenToWS","_closed","pushUnsubscriptionCallbacks","get","forEach","cb","set","exports"],"sourceRoot":"../../../../../src","sources":["utils/push/internal/ios.ts"],"mappings":"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","ignoreList":[]}
|