@stream-io/video-react-native-sdk 1.29.0-beta.1 → 1.29.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 +3114 -0
- package/android/src/main/AndroidManifest.xml +1 -8
- package/android/src/main/AndroidManifestNew.xml +0 -11
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +5 -42
- package/android/src/main/java/com/streamvideo/reactnative/audio/utils/WebRtcAudioUtils.kt +6 -70
- package/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +4 -6
- package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +95 -0
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +160 -0
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -0
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +31 -18
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +97 -64
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/index.js +0 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/modules/call-manager/CallManager.js +0 -26
- 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 +21 -33
- package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +3 -52
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/commonjs/utils/push/android.js +200 -145
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/internal/ios.js +34 -16
- package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js +20 -1
- package/dist/commonjs/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/commonjs/utils/push/internal/utils.js +1 -17
- 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/callkeep.js +17 -0
- package/dist/commonjs/utils/push/libs/callkeep.js.map +1 -0
- package/dist/commonjs/utils/push/libs/index.js +19 -8
- package/dist/commonjs/utils/push/libs/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/notifee/index.js +19 -0
- package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/voipPushNotification.js +17 -0
- package/dist/commonjs/utils/push/libs/voipPushNotification.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +205 -0
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +6 -7
- 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/useIosCallkeepWithCallingStateEffect.js +153 -0
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -0
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +31 -18
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +99 -66
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/index.js +0 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/modules/call-manager/CallManager.js +0 -26
- 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 +21 -33
- package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
- package/dist/module/utils/internal/registerSDKGlobals.js +4 -53
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/module/utils/push/android.js +202 -147
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/internal/ios.js +34 -16
- package/dist/module/utils/push/internal/ios.js.map +1 -1
- package/dist/module/utils/push/internal/rxSubjects.js +19 -0
- package/dist/module/utils/push/internal/rxSubjects.js.map +1 -1
- package/dist/module/utils/push/internal/utils.js +0 -14
- 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/callkeep.js +11 -0
- package/dist/module/utils/push/libs/callkeep.js.map +1 -0
- package/dist/module/utils/push/libs/index.js +2 -1
- package/dist/module/utils/push/libs/index.js.map +1 -1
- package/dist/module/utils/push/libs/notifee/index.js +18 -0
- package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/module/utils/push/libs/voipPushNotification.js +11 -0
- package/dist/module/utils/push/libs/voipPushNotification.js.map +1 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js +199 -0
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -0
- package/dist/module/utils/push/setupIosVoipPushEvents.js +6 -7
- 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/useIosCallkeepWithCallingStateEffect.d.ts +5 -0
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.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 +0 -1
- package/dist/typescript/index.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/CallManager.d.ts +0 -5
- package/dist/typescript/modules/call-manager/CallManager.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/index.d.ts +2 -20
- package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
- package/dist/typescript/utils/StreamVideoRN/types.d.ts +29 -54
- package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
- package/dist/typescript/utils/push/android.d.ts +2 -1
- 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 +12 -0
- package/dist/typescript/utils/push/internal/rxSubjects.d.ts.map +1 -1
- package/dist/typescript/utils/push/internal/utils.d.ts +0 -4
- package/dist/typescript/utils/push/internal/utils.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts +2 -1
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/callkeep.d.ts +3 -0
- package/dist/typescript/utils/push/libs/callkeep.d.ts.map +1 -0
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts +2 -16
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/index.d.ts +2 -1
- package/dist/typescript/utils/push/libs/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts +1 -0
- package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts +3 -0
- package/dist/typescript/utils/push/libs/voipPushNotification.d.ts.map +1 -0
- 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.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 +33 -1
- package/expo-config-plugin/dist/withAndroidPermissions.js +7 -2
- package/expo-config-plugin/dist/withAppDelegate.js +197 -19
- package/expo-config-plugin/dist/withMainActivity.js +1 -1
- package/expo-config-plugin/dist/withiOSInfoPlist.js +3 -2
- package/ios/StreamInCallManager.m +0 -2
- package/ios/StreamInCallManager.swift +5 -20
- package/ios/StreamVideoReactNative.h +4 -7
- package/ios/StreamVideoReactNative.m +82 -191
- package/package.json +17 -12
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +235 -0
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +34 -21
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +120 -94
- package/src/index.ts +0 -1
- package/src/modules/call-manager/CallManager.ts +0 -36
- package/src/modules/call-manager/native-module.d.ts +0 -7
- package/src/providers/StreamCall/index.tsx +6 -6
- package/src/utils/StreamVideoRN/index.ts +30 -40
- package/src/utils/StreamVideoRN/types.ts +29 -56
- package/src/utils/internal/registerSDKGlobals.ts +4 -47
- package/src/utils/push/android.ts +308 -223
- package/src/utils/push/internal/ios.ts +46 -25
- package/src/utils/push/internal/rxSubjects.ts +29 -0
- package/src/utils/push/internal/utils.ts +0 -25
- package/src/utils/push/ios.ts +6 -1
- package/src/utils/push/libs/callkeep.ts +16 -0
- package/src/utils/push/libs/index.ts +2 -1
- package/src/utils/push/libs/notifee/index.ts +27 -0
- package/src/utils/push/libs/voipPushNotification.ts +17 -0
- package/src/utils/push/setupIosCallKeepEvents.ts +252 -0
- package/src/utils/push/setupIosVoipPushEvents.ts +7 -11
- package/src/version.ts +1 -1
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/KeepAliveNotification.kt +0 -83
- package/android/src/main/java/com/streamvideo/reactnative/keepalive/StreamCallKeepAliveHeadlessService.kt +0 -134
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js +0 -216
- package/dist/commonjs/hooks/push/useCallingExpWithCallingStateEffect.js.map +0 -1
- package/dist/commonjs/utils/internal/audioSessionPromise.js +0 -46
- package/dist/commonjs/utils/internal/audioSessionPromise.js.map +0 -1
- package/dist/commonjs/utils/internal/callingx.js +0 -84
- package/dist/commonjs/utils/internal/callingx.js.map +0 -1
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js +0 -48
- package/dist/commonjs/utils/keepCallAliveHeadlessTask.js.map +0 -1
- package/dist/commonjs/utils/push/libs/callingx.js +0 -75
- package/dist/commonjs/utils/push/libs/callingx.js.map +0 -1
- package/dist/commonjs/utils/push/setupCallingExpEvents.js +0 -97
- package/dist/commonjs/utils/push/setupCallingExpEvents.js.map +0 -1
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js +0 -209
- package/dist/module/hooks/push/useCallingExpWithCallingStateEffect.js.map +0 -1
- package/dist/module/utils/internal/audioSessionPromise.js +0 -39
- package/dist/module/utils/internal/audioSessionPromise.js.map +0 -1
- package/dist/module/utils/internal/callingx.js +0 -75
- package/dist/module/utils/internal/callingx.js.map +0 -1
- package/dist/module/utils/keepCallAliveHeadlessTask.js +0 -42
- package/dist/module/utils/keepCallAliveHeadlessTask.js.map +0 -1
- package/dist/module/utils/push/libs/callingx.js +0 -67
- package/dist/module/utils/push/libs/callingx.js.map +0 -1
- package/dist/module/utils/push/setupCallingExpEvents.js +0 -91
- package/dist/module/utils/push/setupCallingExpEvents.js.map +0 -1
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts +0 -5
- package/dist/typescript/hooks/push/useCallingExpWithCallingStateEffect.d.ts.map +0 -1
- package/dist/typescript/utils/internal/audioSessionPromise.d.ts +0 -16
- package/dist/typescript/utils/internal/audioSessionPromise.d.ts.map +0 -1
- package/dist/typescript/utils/internal/callingx.d.ts +0 -13
- package/dist/typescript/utils/internal/callingx.d.ts.map +0 -1
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts +0 -10
- package/dist/typescript/utils/keepCallAliveHeadlessTask.d.ts.map +0 -1
- package/dist/typescript/utils/push/libs/callingx.d.ts +0 -9
- package/dist/typescript/utils/push/libs/callingx.d.ts.map +0 -1
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts +0 -8
- package/dist/typescript/utils/push/setupCallingExpEvents.d.ts.map +0 -1
- package/src/hooks/push/useCallingExpWithCallingStateEffect.ts +0 -307
- package/src/utils/internal/audioSessionPromise.ts +0 -39
- package/src/utils/internal/callingx.ts +0 -108
- package/src/utils/keepCallAliveHeadlessTask.ts +0 -54
- package/src/utils/push/libs/callingx.ts +0 -90
- package/src/utils/push/setupCallingExpEvents.ts +0 -117
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { CallingState, videoLoggerSystem } from '@stream-io/video-client';
|
|
2
2
|
import { AppState, Platform } from 'react-native';
|
|
3
|
-
import { getExpoNotificationsLib, getExpoNotificationsLibNoThrow, getFirebaseMessagingLib, getFirebaseMessagingLibNoThrow, getNotifeeLibThrowIfNotInstalledForPush } from './libs';
|
|
4
|
-
import { pushNonRingingCallData$ } from './internal/rxSubjects';
|
|
3
|
+
import { getExpoNotificationsLib, getExpoNotificationsLibNoThrow, getFirebaseMessagingLib, getFirebaseMessagingLibNoThrow, getIncomingCallForegroundServiceTypes, getNotifeeLibThrowIfNotInstalledForPush } from './libs';
|
|
4
|
+
import { pushAcceptedIncomingCallCId$, pushAndroidBackgroundDeliveredIncomingCallCId$, pushNonRingingCallData$, pushRejectedIncomingCallCId$, pushTappedIncomingCallCId$ } from './internal/rxSubjects';
|
|
5
5
|
import { pushUnsubscriptionCallbacks } from './internal/constants';
|
|
6
|
-
import {
|
|
6
|
+
import { canAddPushWSSubscriptionsRef, clearPushWSEventSubscriptions, processCallFromPushInBackground, shouldCallBeEnded } from './internal/utils';
|
|
7
7
|
import { setPushLogoutCallback } from '../internal/pushLogoutCallback';
|
|
8
|
+
import { getAndroidDefaultRingtoneUrl } from '../getAndroidDefaultRingtoneUrl';
|
|
8
9
|
import { StreamVideoRN } from '../StreamVideoRN';
|
|
9
|
-
|
|
10
|
+
const ACCEPT_CALL_ACTION_ID = 'accept';
|
|
11
|
+
const DECLINE_CALL_ACTION_ID = 'decline';
|
|
10
12
|
let lastFirebaseToken = {
|
|
11
13
|
token: '',
|
|
12
14
|
userId: ''
|
|
@@ -61,7 +63,8 @@ export async function initAndroidPushToken(client, pushConfig, setUnsubscribeLis
|
|
|
61
63
|
await setDeviceToken(token);
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
|
-
|
|
66
|
+
// TODO: remove the incomingCallChannel check and find a better way once we have telecom integration for android
|
|
67
|
+
const messaging = pushConfig.isExpo && !pushConfig.android.incomingCallChannel ? getFirebaseMessagingLibNoThrow(true) : getFirebaseMessagingLib();
|
|
65
68
|
if (messaging) {
|
|
66
69
|
logger.debug(`setting firebase token listeners`);
|
|
67
70
|
const unsubscribe = messaging().onTokenRefresh(refreshedToken => setDeviceToken(refreshedToken));
|
|
@@ -75,8 +78,8 @@ export async function initAndroidPushToken(client, pushConfig, setUnsubscribeLis
|
|
|
75
78
|
* Creates notification from the push message data.
|
|
76
79
|
* For Ringing and Non-Ringing calls.
|
|
77
80
|
*/
|
|
78
|
-
|
|
79
81
|
export const firebaseDataHandler = async data => {
|
|
82
|
+
if (Platform.OS !== 'android') return;
|
|
80
83
|
/* Example data from firebase
|
|
81
84
|
"message": {
|
|
82
85
|
"data": {
|
|
@@ -92,167 +95,174 @@ export const firebaseDataHandler = async data => {
|
|
|
92
95
|
// other stuff
|
|
93
96
|
}
|
|
94
97
|
*/
|
|
95
|
-
if (Platform.OS !== 'android') return;
|
|
96
|
-
const logger = videoLoggerSystem.getLogger('firebaseDataHandler');
|
|
97
98
|
const pushConfig = StreamVideoRN.getConfig().push;
|
|
98
99
|
if (!pushConfig || !data || data.sender !== 'stream.video') {
|
|
99
100
|
return;
|
|
100
101
|
}
|
|
102
|
+
const notifeeLib = getNotifeeLibThrowIfNotInstalledForPush();
|
|
103
|
+
const notifee = notifeeLib.default;
|
|
104
|
+
const settings = await notifee.getNotificationSettings();
|
|
105
|
+
if (settings.authorizationStatus !== 1) {
|
|
106
|
+
const logger = videoLoggerSystem.getLogger('firebaseDataHandler');
|
|
107
|
+
logger.debug(`Notification permission not granted, unable to post ${data.type} notifications`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
101
110
|
if (data.type === 'call.ring') {
|
|
102
111
|
const call_cid = data.call_cid;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const
|
|
114
|
-
if (!client) {
|
|
115
|
-
logger.debug(`video client not found, skipping the call.ring notification`);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const shouldRejectCallWhenBusy = client['rejectCallWhenBusy'] ?? false;
|
|
119
|
-
if (callingx.hasRegisteredCall() && shouldRejectCallWhenBusy) {
|
|
120
|
-
logger.debug(`registered call found, skipping the call.ring notification`);
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
112
|
+
const created_by_id = data.created_by_id;
|
|
113
|
+
const receiver_id = data.receiver_id;
|
|
114
|
+
const video_client = await pushConfig.createStreamVideoClient();
|
|
115
|
+
await video_client?.onRingingCall(call_cid);
|
|
116
|
+
const shouldCallBeClosed = callToCheck => {
|
|
117
|
+
const {
|
|
118
|
+
mustEndCall
|
|
119
|
+
} = shouldCallBeEnded(callToCheck, created_by_id, receiver_id);
|
|
120
|
+
return mustEndCall;
|
|
121
|
+
};
|
|
122
|
+
const canListenToWS = () => canAddPushWSSubscriptionsRef.current && AppState.currentState !== 'active';
|
|
123
123
|
const asForegroundService = canListenToWS();
|
|
124
|
-
const callerName = data.created_by_display_name;
|
|
125
|
-
const hasVideo = data.video === 'true';
|
|
126
124
|
if (asForegroundService) {
|
|
127
125
|
// Listen to call events from WS through fg service
|
|
128
126
|
// note: this will replace the current empty fg service runner
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
callingx.endCallWithReason(call_cid, 'remote');
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
const unsubscribeFunctions = [];
|
|
155
|
-
// check if service needs to be closed if accept/decline event was done on another device
|
|
156
|
-
const unsubscribe = callFromPush.on('all', event => {
|
|
157
|
-
const _canListenToWS = canListenToWS();
|
|
158
|
-
if (!_canListenToWS) {
|
|
159
|
-
logger.debug(`Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, {
|
|
160
|
-
event
|
|
161
|
-
});
|
|
162
|
-
unsubscribeFunctions.forEach(fn => fn());
|
|
163
|
-
finishBackgroundTask();
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
if (shouldCallBeClosed(callFromPush, data)) {
|
|
167
|
-
logger.debug(`Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed`, {
|
|
168
|
-
event
|
|
169
|
-
});
|
|
170
|
-
unsubscribeFunctions.forEach(fn => fn());
|
|
171
|
-
finishBackgroundTask();
|
|
172
|
-
//TODO: think about sending appropriate reason for end call
|
|
173
|
-
callingx.endCallWithReason(call_cid, 'rejected');
|
|
174
|
-
}
|
|
127
|
+
notifee.registerForegroundService(() => {
|
|
128
|
+
return new Promise(async () => {
|
|
129
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
130
|
+
if (!client) {
|
|
131
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Closing fg service as there is no client to create from push config`);
|
|
132
|
+
notifee.stopForegroundService();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const callFromPush = await client.onRingingCall(call_cid);
|
|
136
|
+
let _shouldCallBeClosed = shouldCallBeClosed(callFromPush);
|
|
137
|
+
if (_shouldCallBeClosed) {
|
|
138
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Closing fg service callCid: ${call_cid} shouldCallBeClosed: ${_shouldCallBeClosed}`);
|
|
139
|
+
notifee.stopForegroundService();
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const unsubscribeFunctions = [];
|
|
143
|
+
// check if service needs to be closed if accept/decline event was done on another device
|
|
144
|
+
const unsubscribe = callFromPush.on('all', event => {
|
|
145
|
+
const _canListenToWS = canListenToWS();
|
|
146
|
+
if (!_canListenToWS) {
|
|
147
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, {
|
|
148
|
+
event
|
|
175
149
|
});
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
callingx.log(`Ending call with callCid: ${call_cid} callingState: ${callingState}`, 'debug');
|
|
185
|
-
finishBackgroundTask();
|
|
186
|
-
callingx.endCallWithReason(call_cid, 'remote');
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
const endCallSubscription = callingx.addEventListener('endCall', async ({
|
|
190
|
-
callId
|
|
191
|
-
}) => {
|
|
192
|
-
unsubscribeFunctions.forEach(fn => fn());
|
|
193
|
-
try {
|
|
194
|
-
await callFromPush.leave({
|
|
195
|
-
reject: true,
|
|
196
|
-
reason: 'decline'
|
|
197
|
-
});
|
|
198
|
-
} catch (error) {
|
|
199
|
-
logger.error(`Failed to leave call with callCid: ${call_cid} error: ${error}`);
|
|
200
|
-
} finally {
|
|
201
|
-
callingx.log(`Ending call with callCid: ${call_cid} callId: ${callId}`, 'debug');
|
|
202
|
-
finishBackgroundTask();
|
|
203
|
-
callingx.endCallWithReason(callId, 'rejected');
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
//stop background task when app comes to foreground
|
|
208
|
-
const appStateSubscription = AppState.addEventListener('change', nextAppState => {
|
|
209
|
-
const _canListenToWS = canListenToWS();
|
|
210
|
-
callingx.log(`AppState changed to: ${nextAppState} for callCid: ${call_cid} canListenToWS: ${_canListenToWS}`, 'debug');
|
|
211
|
-
if (!_canListenToWS) {
|
|
212
|
-
unsubscribeFunctions.forEach(fn => fn());
|
|
213
|
-
finishBackgroundTask();
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
150
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
151
|
+
notifee.stopForegroundService();
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
_shouldCallBeClosed = shouldCallBeClosed(callFromPush);
|
|
155
|
+
if (_shouldCallBeClosed) {
|
|
156
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Closing fg service from event callCid: ${call_cid} canListenToWS: ${_canListenToWS} shouldCallBeClosed: ${_shouldCallBeClosed}`, {
|
|
157
|
+
event
|
|
216
158
|
});
|
|
217
|
-
unsubscribeFunctions.
|
|
218
|
-
|
|
219
|
-
unsubscribeFunctions.push(() => endCallSubscription.remove());
|
|
220
|
-
unsubscribeFunctions.push(() => appStateSubscription.remove());
|
|
221
|
-
pushUnsubscriptionCallbacks.get(call_cid)?.forEach(cb => cb());
|
|
222
|
-
pushUnsubscriptionCallbacks.set(call_cid, unsubscribeFunctions);
|
|
223
|
-
} catch (error) {
|
|
224
|
-
callingx.log(`Failed to start background task with callCid: ${call_cid} error: ${error}`, 'error');
|
|
225
|
-
finishBackgroundTask();
|
|
159
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
160
|
+
notifee.stopForegroundService();
|
|
226
161
|
}
|
|
227
|
-
})
|
|
162
|
+
});
|
|
163
|
+
// check if service needs to be closed if call was left
|
|
164
|
+
const subscription = callFromPush.state.callingState$.subscribe(callingState => {
|
|
165
|
+
if (callingState === CallingState.IDLE || callingState === CallingState.LEFT) {
|
|
166
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Closing fg service from callingState callCid: ${call_cid} callingState: ${callingState}`);
|
|
167
|
+
unsubscribeFunctions.forEach(fn => fn());
|
|
168
|
+
notifee.stopForegroundService();
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
unsubscribeFunctions.push(unsubscribe);
|
|
172
|
+
unsubscribeFunctions.push(() => subscription.unsubscribe());
|
|
173
|
+
pushUnsubscriptionCallbacks.get(call_cid)?.forEach(cb => cb());
|
|
174
|
+
pushUnsubscriptionCallbacks.set(call_cid, unsubscribeFunctions);
|
|
228
175
|
});
|
|
229
176
|
});
|
|
230
177
|
}
|
|
231
|
-
|
|
232
|
-
|
|
178
|
+
const incomingCallChannel = pushConfig.android.incomingCallChannel;
|
|
179
|
+
const incomingCallNotificationTextGetters = pushConfig.android.incomingCallNotificationTextGetters;
|
|
180
|
+
if (!incomingCallChannel || !incomingCallNotificationTextGetters) {
|
|
181
|
+
const logger = videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler');
|
|
182
|
+
logger.error("Can't show incoming call notification as either or both incomingCallChannel and incomingCallNotificationTextGetters were not provided");
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
/*
|
|
186
|
+
* Sound has to be set on channel level for android 8 and above and cant be updated later after creation!
|
|
187
|
+
* For android 7 and below, sound should be set on notification level
|
|
188
|
+
*/
|
|
189
|
+
// set default ringtone if not provided
|
|
190
|
+
if (!incomingCallChannel.sound) {
|
|
191
|
+
incomingCallChannel.sound = await getAndroidDefaultRingtoneUrl();
|
|
192
|
+
}
|
|
193
|
+
await notifee.createChannel(incomingCallChannel);
|
|
194
|
+
const {
|
|
195
|
+
getTitle,
|
|
196
|
+
getBody,
|
|
197
|
+
getAcceptButtonTitle,
|
|
198
|
+
getDeclineButtonTitle
|
|
199
|
+
} = incomingCallNotificationTextGetters;
|
|
200
|
+
const createdUserName = data.created_by_display_name;
|
|
201
|
+
const title = getTitle(createdUserName);
|
|
202
|
+
const body = getBody(createdUserName);
|
|
203
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Displaying incoming call notification with callCid: ${call_cid} title: ${title} body: ${body} asForegroundService: ${asForegroundService}`);
|
|
204
|
+
const channelId = incomingCallChannel.id;
|
|
205
|
+
await notifee.displayNotification({
|
|
206
|
+
id: call_cid,
|
|
207
|
+
title: getTitle(createdUserName),
|
|
208
|
+
body: getBody(createdUserName),
|
|
209
|
+
data,
|
|
210
|
+
android: {
|
|
211
|
+
channelId,
|
|
212
|
+
smallIcon: pushConfig.android.smallIcon,
|
|
213
|
+
importance: 4,
|
|
214
|
+
// high importance
|
|
215
|
+
foregroundServiceTypes: getIncomingCallForegroundServiceTypes(),
|
|
216
|
+
asForegroundService,
|
|
217
|
+
ongoing: true,
|
|
218
|
+
sound: incomingCallChannel.sound,
|
|
219
|
+
vibrationPattern: incomingCallChannel.vibrationPattern,
|
|
220
|
+
loopSound: true,
|
|
221
|
+
pressAction: {
|
|
222
|
+
id: 'default',
|
|
223
|
+
launchActivity: 'default' // open the app when the notification is pressed
|
|
224
|
+
},
|
|
225
|
+
actions: [{
|
|
226
|
+
title: getDeclineButtonTitle?.() ?? 'Decline',
|
|
227
|
+
pressAction: {
|
|
228
|
+
id: DECLINE_CALL_ACTION_ID
|
|
229
|
+
}
|
|
230
|
+
}, {
|
|
231
|
+
title: getAcceptButtonTitle?.() ?? 'Accept',
|
|
232
|
+
pressAction: {
|
|
233
|
+
id: ACCEPT_CALL_ACTION_ID,
|
|
234
|
+
launchActivity: 'default' // open the app when the notification is pressed
|
|
235
|
+
}
|
|
236
|
+
}],
|
|
237
|
+
category: notifeeLib.AndroidCategory.CALL,
|
|
238
|
+
fullScreenAction: {
|
|
239
|
+
id: 'stream_ringing_incoming_call'
|
|
240
|
+
},
|
|
241
|
+
timeoutAfter: 60000 // 60 seconds, after which the notification will be dismissed automatically
|
|
242
|
+
}
|
|
243
|
+
});
|
|
233
244
|
if (asForegroundService) {
|
|
234
245
|
// no need to check if call has be closed as that will be handled by the fg service
|
|
235
246
|
return;
|
|
236
247
|
}
|
|
248
|
+
|
|
249
|
+
// check if call needs to be closed if accept/decline event was done
|
|
250
|
+
// before the notification was shown
|
|
251
|
+
const client = await pushConfig.createStreamVideoClient();
|
|
252
|
+
if (!client) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
237
255
|
const callFromPush = await client.onRingingCall(call_cid);
|
|
238
|
-
if (shouldCallBeClosed(callFromPush
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
callingx.endCallWithReason(call_cid, 'remote');
|
|
256
|
+
if (shouldCallBeClosed(callFromPush)) {
|
|
257
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Removing incoming call notification immediately with callCid: ${call_cid} as it should be closed`);
|
|
258
|
+
notifee.cancelDisplayedNotification(call_cid);
|
|
242
259
|
}
|
|
243
260
|
} else {
|
|
244
|
-
const notifeeLib = getNotifeeLibThrowIfNotInstalledForPush();
|
|
245
|
-
const notifee = notifeeLib.default;
|
|
246
|
-
const settings = await notifee.getNotificationSettings();
|
|
247
|
-
if (settings.authorizationStatus !== 1) {
|
|
248
|
-
logger.debug(`Notification permission not granted, unable to post ${data.type} notifications`);
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
261
|
// the other types are call.live_started and call.notification
|
|
253
262
|
const callChannel = pushConfig.android.callChannel;
|
|
254
263
|
const callNotificationTextGetters = pushConfig.android.callNotificationTextGetters;
|
|
255
264
|
if (!callChannel || !callNotificationTextGetters) {
|
|
265
|
+
const logger = videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler');
|
|
256
266
|
logger.debug("Can't show call notification as either or both callChannel and callNotificationTextGetters is not provided");
|
|
257
267
|
return;
|
|
258
268
|
}
|
|
@@ -267,7 +277,7 @@ export const firebaseDataHandler = async data => {
|
|
|
267
277
|
const type = data.type;
|
|
268
278
|
const title = getTitle(type, createdUserName);
|
|
269
279
|
const body = getBody(type, createdUserName);
|
|
270
|
-
|
|
280
|
+
videoLoggerSystem.getLogger('firebaseMessagingOnMessageHandler').debug(`Displaying NonRingingPushEvent ${type} notification with title: ${title} body: ${body}`);
|
|
271
281
|
await notifee.displayNotification({
|
|
272
282
|
title: getTitle(type, createdUserName),
|
|
273
283
|
body: getBody(type, createdUserName),
|
|
@@ -294,7 +304,8 @@ export const firebaseDataHandler = async data => {
|
|
|
294
304
|
}
|
|
295
305
|
};
|
|
296
306
|
export const onAndroidNotifeeEvent = async ({
|
|
297
|
-
event
|
|
307
|
+
event,
|
|
308
|
+
isBackground
|
|
298
309
|
}) => {
|
|
299
310
|
if (Platform.OS !== 'android') return;
|
|
300
311
|
const {
|
|
@@ -302,7 +313,8 @@ export const onAndroidNotifeeEvent = async ({
|
|
|
302
313
|
detail
|
|
303
314
|
} = event;
|
|
304
315
|
const {
|
|
305
|
-
notification
|
|
316
|
+
notification,
|
|
317
|
+
pressAction
|
|
306
318
|
} = detail;
|
|
307
319
|
const notificationId = notification?.id;
|
|
308
320
|
const data = notification?.data;
|
|
@@ -313,10 +325,53 @@ export const onAndroidNotifeeEvent = async ({
|
|
|
313
325
|
|
|
314
326
|
// we can safely cast to string because the data is from "stream.video"
|
|
315
327
|
const call_cid = data.call_cid;
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
328
|
+
if (data.type === 'call.ring') {
|
|
329
|
+
// check if we have observers for the call cid (this means the app is in the foreground state)
|
|
330
|
+
const hasObservers = pushAcceptedIncomingCallCId$.observed && pushRejectedIncomingCallCId$.observed;
|
|
331
|
+
const notifeeLib = getNotifeeLibThrowIfNotInstalledForPush();
|
|
332
|
+
const notifee = notifeeLib.default;
|
|
333
|
+
// Check if we need to decline the call
|
|
334
|
+
const didPressDecline = type === notifeeLib.EventType.ACTION_PRESS && pressAction?.id === DECLINE_CALL_ACTION_ID;
|
|
335
|
+
const didDismiss = type === notifeeLib.EventType.DISMISSED;
|
|
336
|
+
const mustDecline = didPressDecline || didDismiss;
|
|
337
|
+
// Check if we need to accept the call
|
|
338
|
+
const mustAccept = type === notifeeLib.EventType.ACTION_PRESS && pressAction?.id === ACCEPT_CALL_ACTION_ID;
|
|
339
|
+
if (mustAccept || mustDecline || type === notifeeLib.EventType.ACTION_PRESS) {
|
|
340
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`clearPushWSEventSubscriptions for callCId: ${call_cid} mustAccept: ${mustAccept} mustDecline: ${mustDecline}`);
|
|
341
|
+
clearPushWSEventSubscriptions(call_cid);
|
|
342
|
+
notifee.stopForegroundService();
|
|
343
|
+
}
|
|
344
|
+
if (mustAccept) {
|
|
345
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushAcceptedIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
346
|
+
pushAcceptedIncomingCallCId$.next(call_cid);
|
|
347
|
+
// NOTE: accept will be handled by the app with rxjs observers as the app will go to foreground always
|
|
348
|
+
} else if (mustDecline) {
|
|
349
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushRejectedIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
350
|
+
pushRejectedIncomingCallCId$.next(call_cid);
|
|
351
|
+
if (hasObservers) {
|
|
352
|
+
// if we had observers we can return here as the observers will handle the call as the app is in the foreground state
|
|
353
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`Skipped processCallFromPushInBackground for Declining call with callCId: ${call_cid} as the app is in the foreground state`);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`start processCallFromPushInBackground - Declining call with callCId: ${call_cid}`);
|
|
357
|
+
await processCallFromPushInBackground(pushConfig, call_cid, 'decline');
|
|
358
|
+
} else {
|
|
359
|
+
if (type === notifeeLib.EventType.PRESS) {
|
|
360
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushTappedIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
361
|
+
pushTappedIncomingCallCId$.next(call_cid);
|
|
362
|
+
// pressed state will be handled by the app with rxjs observers as the app will go to foreground always
|
|
363
|
+
} else if (isBackground && type === notifeeLib.EventType.DELIVERED) {
|
|
364
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`pushAndroidBackgroundDeliveredIncomingCallCId$ added with callCId: ${call_cid}`);
|
|
365
|
+
pushAndroidBackgroundDeliveredIncomingCallCId$.next(call_cid);
|
|
366
|
+
// background delivered state will be handled by the app with rxjs observers as processing needs to happen only when app is opened
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
} else {
|
|
370
|
+
const notifeeLib = getNotifeeLibThrowIfNotInstalledForPush();
|
|
371
|
+
if (type === notifeeLib.EventType.PRESS) {
|
|
372
|
+
videoLoggerSystem.getLogger('onAndroidNotifeeEvent').debug(`onTapNonRingingCallNotification with callCId: ${call_cid}`);
|
|
373
|
+
pushConfig.onTapNonRingingCallNotification?.(call_cid, data.type);
|
|
374
|
+
}
|
|
320
375
|
}
|
|
321
376
|
};
|
|
322
377
|
//# sourceMappingURL=android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CallingState","videoLoggerSystem","AppState","Platform","getExpoNotificationsLib","getExpoNotificationsLibNoThrow","getFirebaseMessagingLib","getFirebaseMessagingLibNoThrow","getNotifeeLibThrowIfNotInstalledForPush","pushNonRingingCallData$","pushUnsubscriptionCallbacks","canListenToWS","shouldCallBeClosed","setPushLogoutCallback","StreamVideoRN","getCallingxLib","lastFirebaseToken","token","userId","initAndroidPushToken","client","pushConfig","setUnsubscribeListener","OS","android","pushProviderName","logger","getLogger","setDeviceToken","streamClient","_user","id","anonymous","debug","removeDevice","err","warn","push_provider_name","addDevice","isExpo","expoNotificationsLib","onTapNonRingingCallNotification","subscription","addPushTokenListener","devicePushToken","data","remove","getDevicePushTokenAsync","messaging","unsubscribe","onTokenRefresh","refreshedToken","getToken","firebaseDataHandler","getConfig","push","sender","type","call_cid","callingx","checkPermissions","isNotificationsAllowed","createStreamVideoClient","shouldRejectCallWhenBusy","hasRegisteredCall","asForegroundService","callerName","created_by_display_name","hasVideo","video","registerBackgroundTask","_","stopTask","Promise","resolve","finishBackgroundTask","log","undefined","_client","callFromPush","onRingingCall","endCallWithReason","unsubscribeFunctions","on","event","_canListenToWS","forEach","fn","stateSubscription","state","callingState$","subscribe","callingState","IDLE","LEFT","endCallSubscription","addEventListener","callId","leave","reject","reason","error","appStateSubscription","nextAppState","get","cb","set","displayIncomingCall","notifeeLib","notifee","default","settings","getNotificationSettings","authorizationStatus","callChannel","callNotificationTextGetters","createChannel","channelId","getTitle","getBody","createdUserName","title","body","displayNotification","sound","smallIcon","vibrationPattern","importance","pressAction","launchActivity","timeoutAfter","cid","next","onAndroidNotifeeEvent","detail","notification","notificationId","EventType","PRESS"],"sourceRoot":"../../../../src","sources":["utils/push/android.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CallingState","videoLoggerSystem","AppState","Platform","getExpoNotificationsLib","getExpoNotificationsLibNoThrow","getFirebaseMessagingLib","getFirebaseMessagingLibNoThrow","getIncomingCallForegroundServiceTypes","getNotifeeLibThrowIfNotInstalledForPush","pushAcceptedIncomingCallCId$","pushAndroidBackgroundDeliveredIncomingCallCId$","pushNonRingingCallData$","pushRejectedIncomingCallCId$","pushTappedIncomingCallCId$","pushUnsubscriptionCallbacks","canAddPushWSSubscriptionsRef","clearPushWSEventSubscriptions","processCallFromPushInBackground","shouldCallBeEnded","setPushLogoutCallback","getAndroidDefaultRingtoneUrl","StreamVideoRN","ACCEPT_CALL_ACTION_ID","DECLINE_CALL_ACTION_ID","lastFirebaseToken","token","userId","initAndroidPushToken","client","pushConfig","setUnsubscribeListener","OS","android","pushProviderName","logger","getLogger","setDeviceToken","streamClient","_user","id","anonymous","debug","removeDevice","err","warn","push_provider_name","addDevice","isExpo","expoNotificationsLib","onTapNonRingingCallNotification","subscription","addPushTokenListener","devicePushToken","data","remove","getDevicePushTokenAsync","messaging","incomingCallChannel","unsubscribe","onTokenRefresh","refreshedToken","getToken","firebaseDataHandler","getConfig","push","sender","notifeeLib","notifee","default","settings","getNotificationSettings","authorizationStatus","type","call_cid","created_by_id","receiver_id","video_client","createStreamVideoClient","onRingingCall","shouldCallBeClosed","callToCheck","mustEndCall","canListenToWS","current","currentState","asForegroundService","registerForegroundService","Promise","stopForegroundService","callFromPush","_shouldCallBeClosed","unsubscribeFunctions","on","event","_canListenToWS","forEach","fn","state","callingState$","subscribe","callingState","IDLE","LEFT","get","cb","set","incomingCallNotificationTextGetters","error","sound","createChannel","getTitle","getBody","getAcceptButtonTitle","getDeclineButtonTitle","createdUserName","created_by_display_name","title","body","channelId","displayNotification","smallIcon","importance","foregroundServiceTypes","ongoing","vibrationPattern","loopSound","pressAction","launchActivity","actions","category","AndroidCategory","CALL","fullScreenAction","timeoutAfter","cancelDisplayedNotification","callChannel","callNotificationTextGetters","cid","next","onAndroidNotifeeEvent","isBackground","detail","notification","notificationId","hasObservers","observed","didPressDecline","EventType","ACTION_PRESS","didDismiss","DISMISSED","mustDecline","mustAccept","PRESS","DELIVERED"],"sourceRoot":"../../../../src","sources":["utils/push/android.ts"],"mappings":"AAAA,SAEEA,YAAY,EAEZC,iBAAiB,QACZ,yBAAyB;AAChC,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,cAAc;AAKjD,SAEEC,uBAAuB,EACvBC,8BAA8B,EAC9BC,uBAAuB,EACvBC,8BAA8B,EAC9BC,qCAAqC,EACrCC,uCAAuC,QAElC,QAAQ;AACf,SACEC,4BAA4B,EAC5BC,8CAA8C,EAC9CC,uBAAuB,EACvBC,4BAA4B,EAC5BC,0BAA0B,QACrB,uBAAuB;AAC9B,SAASC,2BAA2B,QAAQ,sBAAsB;AAClE,SACEC,4BAA4B,EAC5BC,6BAA6B,EAC7BC,+BAA+B,EAC/BC,iBAAiB,QACZ,kBAAkB;AACzB,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,SAASC,4BAA4B,QAAQ,iCAAiC;AAC9E,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,MAAMC,qBAAqB,GAAG,QAAQ;AACtC,MAAMC,sBAAsB,GAAG,SAAS;AAUxC,IAAIC,iBAAiB,GAAG;EAAEC,KAAK,EAAE,EAAE;EAAEC,MAAM,EAAE;AAAG,CAAC;;AAEjD;AACA,OAAO,eAAeC,oBAAoBA,CACxCC,MAAyB,EACzBC,UAAsB,EACtBC,sBAAyD,EACzD;EACA,IAAI5B,QAAQ,CAAC6B,EAAE,KAAK,SAAS,IAAI,CAACF,UAAU,CAACG,OAAO,CAACC,gBAAgB,EAAE;IACrE;EACF;EACA,MAAMC,MAAM,GAAGlC,iBAAiB,CAACmC,SAAS,CAAC,sBAAsB,CAAC;EAClE,MAAMC,cAAc,GAAG,MAAOX,KAAa,IAAK;IAC9C,MAAMC,MAAM,GAAGE,MAAM,CAACS,YAAY,CAACC,KAAK,EAAEC,EAAE,IAAI,EAAE;IAClD,IAAIX,MAAM,CAACS,YAAY,CAACG,SAAS,EAAE;MACjCN,MAAM,CAACO,KAAK,CAAC,mDAAmD,CAAC;MACjE;IACF;IACA,IACEjB,iBAAiB,CAACC,KAAK,KAAKA,KAAK,IACjCD,iBAAiB,CAACE,MAAM,KAAKA,MAAM,EACnC;MACAQ,MAAM,CAACO,KAAK,CACV,qDAAqDf,MAAM,eAAeD,KAAK,EACjF,CAAC;MACD;IACF;IACAD,iBAAiB,GAAG;MAAEC,KAAK;MAAEC;IAAO,CAAC;IACrCP,qBAAqB,CAAC,YAAY;MAChCK,iBAAiB,GAAG;QAAEC,KAAK,EAAE,EAAE;QAAEC,MAAM,EAAE;MAAG,CAAC;MAC7C,IAAI;QACFQ,MAAM,CAACO,KAAK,CAAC,6BAA6BhB,KAAK,EAAE,CAAC;QAClD,MAAMG,MAAM,CAACc,YAAY,CAACjB,KAAK,CAAC;MAClC,CAAC,CAAC,OAAOkB,GAAG,EAAE;QACZT,MAAM,CAACU,IAAI,CAAC,6CAA6C,EAAED,GAAG,CAAC;MACjE;IACF,CAAC,CAAC;IACF,MAAME,kBAAkB,GAAGhB,UAAU,CAACG,OAAO,CAACC,gBAAgB;IAC9DC,MAAM,CAACO,KAAK,CAAC,2BAA2BhB,KAAK,gBAAgBC,MAAM,EAAE,CAAC;IACtE,MAAME,MAAM,CAACkB,SAAS,CAACrB,KAAK,EAAE,UAAU,EAAEoB,kBAAkB,CAAC;EAC/D,CAAC;EACD,IAAIhB,UAAU,CAACkB,MAAM,EAAE;IACrB,MAAMC,oBAAoB,GAAGnB,UAAU,CAACoB,+BAA+B,GACnE9C,uBAAuB,CAAC,CAAC,GACzBC,8BAA8B,CAAC,CAAC;IACpC,IAAI4C,oBAAoB,EAAE;MACxBd,MAAM,CAACO,KAAK,CAAC,2CAA2C,CAAC;MACzD,MAAMS,YAAY,GAAGF,oBAAoB,CAACG,oBAAoB,CAC3DC,eAAe,IAAK;QACnBhB,cAAc,CAACgB,eAAe,CAACC,IAAI,CAAC;MACtC,CACF,CAAC;MACDvB,sBAAsB,CAAC,MAAMoB,YAAY,CAACI,MAAM,CAAC,CAAC,CAAC;MACnD,MAAMF,eAAe,GACnB,MAAMJ,oBAAoB,CAACO,uBAAuB,CAAC,CAAC;MACtD,MAAM9B,KAAK,GAAG2B,eAAe,CAACC,IAAI;MAClC,MAAMjB,cAAc,CAACX,KAAK,CAAC;IAC7B;EACF;EACA;EACA,MAAM+B,SAAS,GACb3B,UAAU,CAACkB,MAAM,IAAI,CAAClB,UAAU,CAACG,OAAO,CAACyB,mBAAmB,GACxDnD,8BAA8B,CAAC,IAAI,CAAC,GACpCD,uBAAuB,CAAC,CAAC;EAC/B,IAAImD,SAAS,EAAE;IACbtB,MAAM,CAACO,KAAK,CAAC,kCAAkC,CAAC;IAChD,MAAMiB,WAAW,GAAGF,SAAS,CAAC,CAAC,CAACG,cAAc,CAAEC,cAAc,IAC5DxB,cAAc,CAACwB,cAAc,CAC/B,CAAC;IACD9B,sBAAsB,CAAC4B,WAAW,CAAC;IACnC,MAAMjC,KAAK,GAAG,MAAM+B,SAAS,CAAC,CAAC,CAACK,QAAQ,CAAC,CAAC;IAC1C,MAAMzB,cAAc,CAACX,KAAK,CAAC;EAC7B;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMqC,mBAAmB,GAAG,MACjCT,IAAkD,IAC/C;EACH,IAAInD,QAAQ,CAAC6B,EAAE,KAAK,SAAS,EAAE;EAC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMF,UAAU,GAAGR,aAAa,CAAC0C,SAAS,CAAC,CAAC,CAACC,IAAI;EACjD,IAAI,CAACnC,UAAU,IAAI,CAACwB,IAAI,IAAIA,IAAI,CAACY,MAAM,KAAK,cAAc,EAAE;IAC1D;EACF;EACA,MAAMC,UAAU,GAAG1D,uCAAuC,CAAC,CAAC;EAC5D,MAAM2D,OAAO,GAAGD,UAAU,CAACE,OAAO;EAClC,MAAMC,QAAQ,GAAG,MAAMF,OAAO,CAACG,uBAAuB,CAAC,CAAC;EACxD,IAAID,QAAQ,CAACE,mBAAmB,KAAK,CAAC,EAAE;IACtC,MAAMrC,MAAM,GAAGlC,iBAAiB,CAACmC,SAAS,CAAC,qBAAqB,CAAC;IACjED,MAAM,CAACO,KAAK,CACV,uDAAuDY,IAAI,CAACmB,IAAI,gBAClE,CAAC;IACD;EACF;EAEA,IAAInB,IAAI,CAACmB,IAAI,KAAK,WAAW,EAAE;IAC7B,MAAMC,QAAQ,GAAGpB,IAAI,CAACoB,QAAkB;IACxC,MAAMC,aAAa,GAAGrB,IAAI,CAACqB,aAAuB;IAClD,MAAMC,WAAW,GAAGtB,IAAI,CAACsB,WAAqB;IAE9C,MAAMC,YAAY,GAAG,MAAM/C,UAAU,CAACgD,uBAAuB,CAAC,CAAC;IAC/D,MAAMD,YAAY,EAAEE,aAAa,CAACL,QAAQ,CAAC;IAE3C,MAAMM,kBAAkB,GAAIC,WAAiB,IAAK;MAChD,MAAM;QAAEC;MAAY,CAAC,GAAG/D,iBAAiB,CACvC8D,WAAW,EACXN,aAAa,EACbC,WACF,CAAC;MACD,OAAOM,WAAW;IACpB,CAAC;IAED,MAAMC,aAAa,GAAGA,CAAA,KACpBnE,4BAA4B,CAACoE,OAAO,IACpClF,QAAQ,CAACmF,YAAY,KAAK,QAAQ;IACpC,MAAMC,mBAAmB,GAAGH,aAAa,CAAC,CAAC;IAE3C,IAAIG,mBAAmB,EAAE;MACvB;MACA;MACAlB,OAAO,CAACmB,yBAAyB,CAAC,MAAM;QACtC,OAAO,IAAIC,OAAO,CAAC,YAAY;UAC7B,MAAM3D,MAAM,GAAG,MAAMC,UAAU,CAACgD,uBAAuB,CAAC,CAAC;UACzD,IAAI,CAACjD,MAAM,EAAE;YACX5B,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,qEACF,CAAC;YACH0B,OAAO,CAACqB,qBAAqB,CAAC,CAAC;YAC/B;UACF;UACA,MAAMC,YAAY,GAAG,MAAM7D,MAAM,CAACkD,aAAa,CAACL,QAAQ,CAAC;UACzD,IAAIiB,mBAAmB,GAAGX,kBAAkB,CAACU,YAAY,CAAC;UAC1D,IAAIC,mBAAmB,EAAE;YACvB1F,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,+BAA+BgC,QAAQ,wBAAwBiB,mBAAmB,EACpF,CAAC;YACHvB,OAAO,CAACqB,qBAAqB,CAAC,CAAC;YAC/B;UACF;UACA,MAAMG,oBAAuC,GAAG,EAAE;UAClD;UACA,MAAMjC,WAAW,GAAG+B,YAAY,CAACG,EAAE,CAAC,KAAK,EAAGC,KAAK,IAAK;YACpD,MAAMC,cAAc,GAAGZ,aAAa,CAAC,CAAC;YACtC,IAAI,CAACY,cAAc,EAAE;cACnB9F,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,0CAA0CgC,QAAQ,mBAAmBqB,cAAc,EAAE,EACrF;gBAAED;cAAM,CACV,CAAC;cACHF,oBAAoB,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;cAC1C7B,OAAO,CAACqB,qBAAqB,CAAC,CAAC;cAC/B;YACF;YACAE,mBAAmB,GAAGX,kBAAkB,CAACU,YAAY,CAAC;YACtD,IAAIC,mBAAmB,EAAE;cACvB1F,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,0CAA0CgC,QAAQ,mBAAmBqB,cAAc,wBAAwBJ,mBAAmB,EAAE,EAChI;gBAAEG;cAAM,CACV,CAAC;cACHF,oBAAoB,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;cAC1C7B,OAAO,CAACqB,qBAAqB,CAAC,CAAC;YACjC;UACF,CAAC,CAAC;UACF;UACA,MAAMtC,YAAY,GAAGuC,YAAY,CAACQ,KAAK,CAACC,aAAa,CAACC,SAAS,CAC5DC,YAAY,IAAK;YAChB,IACEA,YAAY,KAAKrG,YAAY,CAACsG,IAAI,IAClCD,YAAY,KAAKrG,YAAY,CAACuG,IAAI,EAClC;cACAtG,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,iDAAiDgC,QAAQ,kBAAkB2B,YAAY,EACzF,CAAC;cACHT,oBAAoB,CAACI,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;cAC1C7B,OAAO,CAACqB,qBAAqB,CAAC,CAAC;YACjC;UACF,CACF,CAAC;UACDG,oBAAoB,CAAC3B,IAAI,CAACN,WAAW,CAAC;UACtCiC,oBAAoB,CAAC3B,IAAI,CAAC,MAAMd,YAAY,CAACQ,WAAW,CAAC,CAAC,CAAC;UAC3D5C,2BAA2B,CAACyF,GAAG,CAAC9B,QAAQ,CAAC,EAAEsB,OAAO,CAAES,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;UAChE1F,2BAA2B,CAAC2F,GAAG,CAAChC,QAAQ,EAAEkB,oBAAoB,CAAC;QACjE,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,MAAMlC,mBAAmB,GAAG5B,UAAU,CAACG,OAAO,CAACyB,mBAAmB;IAClE,MAAMiD,mCAAmC,GACvC7E,UAAU,CAACG,OAAO,CAAC0E,mCAAmC;IACxD,IAAI,CAACjD,mBAAmB,IAAI,CAACiD,mCAAmC,EAAE;MAChE,MAAMxE,MAAM,GAAGlC,iBAAiB,CAACmC,SAAS,CACxC,mCACF,CAAC;MACDD,MAAM,CAACyE,KAAK,CACV,uIACF,CAAC;MACD;IACF;IACA;AACJ;AACA;AACA;IACI;IACA,IAAI,CAAClD,mBAAmB,CAACmD,KAAK,EAAE;MAC9BnD,mBAAmB,CAACmD,KAAK,GAAG,MAAMxF,4BAA4B,CAAC,CAAC;IAClE;IACA,MAAM+C,OAAO,CAAC0C,aAAa,CAACpD,mBAAmB,CAAC;IAChD,MAAM;MAAEqD,QAAQ;MAAEC,OAAO;MAAEC,oBAAoB;MAAEC;IAAsB,CAAC,GACtEP,mCAAmC;IACrC,MAAMQ,eAAe,GAAG7D,IAAI,CAAC8D,uBAAiC;IAE9D,MAAMC,KAAK,GAAGN,QAAQ,CAACI,eAAe,CAAC;IACvC,MAAMG,IAAI,GAAGN,OAAO,CAACG,eAAe,CAAC;IAErClH,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,uDAAuDgC,QAAQ,WAAW2C,KAAK,UAAUC,IAAI,yBAAyBhC,mBAAmB,EAC3I,CAAC;IAEH,MAAMiC,SAAS,GAAG7D,mBAAmB,CAAClB,EAAE;IACxC,MAAM4B,OAAO,CAACoD,mBAAmB,CAAC;MAChChF,EAAE,EAAEkC,QAAQ;MACZ2C,KAAK,EAAEN,QAAQ,CAACI,eAAe,CAAC;MAChCG,IAAI,EAAEN,OAAO,CAACG,eAAe,CAAC;MAC9B7D,IAAI;MACJrB,OAAO,EAAE;QACPsF,SAAS;QACTE,SAAS,EAAE3F,UAAU,CAACG,OAAO,CAACwF,SAAS;QACvCC,UAAU,EAAE,CAAC;QAAE;QACfC,sBAAsB,EAAEnH,qCAAqC,CAAC,CAAC;QAC/D8E,mBAAmB;QACnBsC,OAAO,EAAE,IAAI;QACbf,KAAK,EAAEnD,mBAAmB,CAACmD,KAAK;QAChCgB,gBAAgB,EAAEnE,mBAAmB,CAACmE,gBAAgB;QACtDC,SAAS,EAAE,IAAI;QACfC,WAAW,EAAE;UACXvF,EAAE,EAAE,SAAS;UACbwF,cAAc,EAAE,SAAS,CAAE;QAC7B,CAAC;QACDC,OAAO,EAAE,CACP;UACEZ,KAAK,EAAEH,qBAAqB,GAAG,CAAC,IAAI,SAAS;UAC7Ca,WAAW,EAAE;YACXvF,EAAE,EAAEhB;UACN;QACF,CAAC,EACD;UACE6F,KAAK,EAAEJ,oBAAoB,GAAG,CAAC,IAAI,QAAQ;UAC3Cc,WAAW,EAAE;YACXvF,EAAE,EAAEjB,qBAAqB;YACzByG,cAAc,EAAE,SAAS,CAAE;UAC7B;QACF,CAAC,CACF;QACDE,QAAQ,EAAE/D,UAAU,CAACgE,eAAe,CAACC,IAAI;QACzCC,gBAAgB,EAAE;UAChB7F,EAAE,EAAE;QACN,CAAC;QACD8F,YAAY,EAAE,KAAK,CAAE;MACvB;IACF,CAAC,CAAC;IAEF,IAAIhD,mBAAmB,EAAE;MACvB;MACA;IACF;;IAEA;IACA;IACA,MAAMzD,MAAM,GAAG,MAAMC,UAAU,CAACgD,uBAAuB,CAAC,CAAC;IACzD,IAAI,CAACjD,MAAM,EAAE;MACX;IACF;IACA,MAAM6D,YAAY,GAAG,MAAM7D,MAAM,CAACkD,aAAa,CAACL,QAAQ,CAAC;IAEzD,IAAIM,kBAAkB,CAACU,YAAY,CAAC,EAAE;MACpCzF,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,iEAAiEgC,QAAQ,yBAC3E,CAAC;MACHN,OAAO,CAACmE,2BAA2B,CAAC7D,QAAQ,CAAC;IAC/C;EACF,CAAC,MAAM;IACL;IACA,MAAM8D,WAAW,GAAG1G,UAAU,CAACG,OAAO,CAACuG,WAAW;IAClD,MAAMC,2BAA2B,GAC/B3G,UAAU,CAACG,OAAO,CAACwG,2BAA2B;IAChD,IAAI,CAACD,WAAW,IAAI,CAACC,2BAA2B,EAAE;MAChD,MAAMtG,MAAM,GAAGlC,iBAAiB,CAACmC,SAAS,CACxC,mCACF,CAAC;MACDD,MAAM,CAACO,KAAK,CACV,4GACF,CAAC;MACD;IACF;IACA,MAAM0B,OAAO,CAAC0C,aAAa,CAAC0B,WAAW,CAAC;IACxC,MAAMjB,SAAS,GAAGiB,WAAW,CAAChG,EAAE;IAChC,MAAM;MAAEuE,QAAQ;MAAEC;IAAQ,CAAC,GAAGyB,2BAA2B;IACzD,MAAMtB,eAAe,GAAG7D,IAAI,CAAC8D,uBAAiC;IAC9D;IACA,MAAM3C,IAAI,GAAGnB,IAAI,CAACmB,IAA2B;IAE7C,MAAM4C,KAAK,GAAGN,QAAQ,CAACtC,IAAI,EAAE0C,eAAe,CAAC;IAC7C,MAAMG,IAAI,GAAGN,OAAO,CAACvC,IAAI,EAAE0C,eAAe,CAAC;IAE3ClH,iBAAiB,CACdmC,SAAS,CAAC,mCAAmC,CAAC,CAC9CM,KAAK,CACJ,kCAAkC+B,IAAI,6BAA6B4C,KAAK,UAAUC,IAAI,EACxF,CAAC;IACH,MAAMlD,OAAO,CAACoD,mBAAmB,CAAC;MAChCH,KAAK,EAAEN,QAAQ,CAACtC,IAAI,EAAE0C,eAAe,CAAC;MACtCG,IAAI,EAAEN,OAAO,CAACvC,IAAI,EAAE0C,eAAe,CAAC;MACpC7D,IAAI;MACJrB,OAAO,EAAE;QACP4E,KAAK,EAAE2B,WAAW,CAAC3B,KAAK;QACxBY,SAAS,EAAE3F,UAAU,CAACG,OAAO,CAACwF,SAAS;QACvCI,gBAAgB,EAAEW,WAAW,CAACX,gBAAgB;QAC9CN,SAAS;QACTG,UAAU,EAAE,CAAC;QAAE;QACfK,WAAW,EAAE;UACXvF,EAAE,EAAE,SAAS;UACbwF,cAAc,EAAE,SAAS,CAAE;QAC7B,CAAC;QACDM,YAAY,EAAE,KAAK,CAAE;MACvB;IACF,CAAC,CAAC;IACF,MAAMI,GAAG,GAAGpF,IAAI,CAACoB,QAAkB;IACnC9D,uBAAuB,CAAC+H,IAAI,CAAC;MAAED,GAAG;MAAEjE;IAAK,CAAC,CAAC;EAC7C;AACF,CAAC;AAED,OAAO,MAAMmE,qBAAqB,GAAG,MAAAA,CAAO;EAC1C9C,KAAK;EACL+C;AAIF,CAAC,KAAK;EACJ,IAAI1I,QAAQ,CAAC6B,EAAE,KAAK,SAAS,EAAE;EAC/B,MAAM;IAAEyC,IAAI;IAAEqE;EAAO,CAAC,GAAGhD,KAAK;EAC9B,MAAM;IAAEiD,YAAY;IAAEhB;EAAY,CAAC,GAAGe,MAAM;EAC5C,MAAME,cAAc,GAAGD,YAAY,EAAEvG,EAAE;EACvC,MAAMc,IAAI,GAAGyF,YAAY,EAAEzF,IAAI;EAC/B,MAAMxB,UAAU,GAAGR,aAAa,CAAC0C,SAAS,CAAC,CAAC,CAACC,IAAI;EACjD,IACE,CAACnC,UAAU,IACX,CAACwB,IAAI,IACL,CAAC0F,cAAc,IACf1F,IAAI,CAACY,MAAM,KAAK,cAAc,EAC9B;IACA;EACF;;EAEA;EACA,MAAMQ,QAAQ,GAAGpB,IAAI,CAACoB,QAAkB;EAExC,IAAIpB,IAAI,CAACmB,IAAI,KAAK,WAAW,EAAE;IAC7B;IACA,MAAMwE,YAAY,GAChBvI,4BAA4B,CAACwI,QAAQ,IACrCrI,4BAA4B,CAACqI,QAAQ;IAEvC,MAAM/E,UAAU,GAAG1D,uCAAuC,CAAC,CAAC;IAC5D,MAAM2D,OAAO,GAAGD,UAAU,CAACE,OAAO;IAClC;IACA,MAAM8E,eAAe,GACnB1E,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACC,YAAY,IAC1CtB,WAAW,EAAEvF,EAAE,KAAKhB,sBAAsB;IAC5C,MAAM8H,UAAU,GAAG7E,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACG,SAAS;IAC1D,MAAMC,WAAW,GAAGL,eAAe,IAAIG,UAAU;IACjD;IACA,MAAMG,UAAU,GACdhF,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACC,YAAY,IAC1CtB,WAAW,EAAEvF,EAAE,KAAKjB,qBAAqB;IAE3C,IACEkI,UAAU,IACVD,WAAW,IACX/E,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACC,YAAY,EAC1C;MACApJ,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CACJ,8CAA8CgC,QAAQ,gBAAgB+E,UAAU,iBAAiBD,WAAW,EAC9G,CAAC;MACHvI,6BAA6B,CAACyD,QAAQ,CAAC;MACvCN,OAAO,CAACqB,qBAAqB,CAAC,CAAC;IACjC;IAEA,IAAIgE,UAAU,EAAE;MACdxJ,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CAAC,oDAAoDgC,QAAQ,EAAE,CAAC;MACxEhE,4BAA4B,CAACiI,IAAI,CAACjE,QAAQ,CAAC;MAC3C;IACF,CAAC,MAAM,IAAI8E,WAAW,EAAE;MACtBvJ,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CAAC,oDAAoDgC,QAAQ,EAAE,CAAC;MACxE7D,4BAA4B,CAAC8H,IAAI,CAACjE,QAAQ,CAAC;MAC3C,IAAIuE,YAAY,EAAE;QAChB;QACAhJ,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CACJ,4EAA4EgC,QAAQ,wCACtF,CAAC;QACH;MACF;MACAzE,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CACJ,wEAAwEgC,QAAQ,EAClF,CAAC;MACH,MAAMxD,+BAA+B,CAACY,UAAU,EAAE4C,QAAQ,EAAE,SAAS,CAAC;IACxE,CAAC,MAAM;MACL,IAAID,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACM,KAAK,EAAE;QACvCzJ,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CAAC,kDAAkDgC,QAAQ,EAAE,CAAC;QACtE5D,0BAA0B,CAAC6H,IAAI,CAACjE,QAAQ,CAAC;QACzC;MACF,CAAC,MAAM,IAAImE,YAAY,IAAIpE,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACO,SAAS,EAAE;QAClE1J,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CACJ,sEAAsEgC,QAAQ,EAChF,CAAC;QACH/D,8CAA8C,CAACgI,IAAI,CAACjE,QAAQ,CAAC;QAC7D;MACF;IACF;EACF,CAAC,MAAM;IACL,MAAMP,UAAU,GAAG1D,uCAAuC,CAAC,CAAC;IAC5D,IAAIgE,IAAI,KAAKN,UAAU,CAACiF,SAAS,CAACM,KAAK,EAAE;MACvCzJ,iBAAiB,CACdmC,SAAS,CAAC,uBAAuB,CAAC,CAClCM,KAAK,CAAC,iDAAiDgC,QAAQ,EAAE,CAAC;MACrE5C,UAAU,CAACoB,+BAA+B,GACxCwB,QAAQ,EACRpB,IAAI,CAACmB,IACP,CAAC;IACH;EACF;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Platform } from 'react-native';
|
|
1
|
+
import { AppState, NativeModules, Platform } from 'react-native';
|
|
2
|
+
import { getCallKeepLib, getVoipPushNotificationLib } from '../libs';
|
|
3
|
+
import { voipPushNotificationCallCId$ } from './rxSubjects';
|
|
2
4
|
import { pushUnsubscriptionCallbacks } from './constants';
|
|
3
|
-
import {
|
|
5
|
+
import { canAddPushWSSubscriptionsRef, shouldCallBeEnded } from './utils';
|
|
4
6
|
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
5
|
-
import { getCallingxLib } from '../libs/callingx';
|
|
6
7
|
export const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
7
8
|
/* --- Example payload ---
|
|
8
9
|
{
|
|
@@ -26,7 +27,6 @@ export const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
|
26
27
|
"version": "v2"
|
|
27
28
|
}
|
|
28
29
|
} */
|
|
29
|
-
const logger = videoLoggerSystem.getLogger('setupIosVoipPushEvents');
|
|
30
30
|
const sender = notification?.stream?.sender;
|
|
31
31
|
const type = notification?.stream?.type;
|
|
32
32
|
// do not process any other notifications other than stream.video or ringing
|
|
@@ -37,29 +37,47 @@ export const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
|
37
37
|
if (!call_cid || Platform.OS !== 'ios' || !pushConfig.ios.pushProviderName) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
|
-
const
|
|
41
|
-
if (callingx.isCallRegistered(call_cid)) {
|
|
42
|
-
//same call_cid is registered, so we skipping the notification
|
|
43
|
-
logger.debug(`the same call_cid ${call_cid} is registered, skipping the call.ring notification`);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
40
|
+
const logger = videoLoggerSystem.getLogger('setupIosVoipPushEvents');
|
|
46
41
|
const client = await pushConfig.createStreamVideoClient();
|
|
47
42
|
if (!client) {
|
|
48
43
|
logger.debug('client not found, not processing call.ring voip push notification');
|
|
49
44
|
return;
|
|
50
45
|
}
|
|
46
|
+
const shouldRejectCallWhenBusy = client['rejectCallWhenBusy'] ?? false;
|
|
47
|
+
if (shouldRejectCallWhenBusy) {
|
|
48
|
+
// inform the iOS native module that we should reject call when busy
|
|
49
|
+
NativeModules.StreamVideoReactNative.setShouldRejectCallWhenBusy(shouldRejectCallWhenBusy);
|
|
50
|
+
}
|
|
51
51
|
const callFromPush = await client.onRingingCall(call_cid);
|
|
52
|
+
let uuid = '';
|
|
53
|
+
try {
|
|
54
|
+
uuid = await NativeModules?.StreamVideoReactNative?.getIncomingCallUUid(call_cid);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
logger.error('Error in getting call uuid from native module', error);
|
|
57
|
+
}
|
|
58
|
+
if (!uuid) {
|
|
59
|
+
logger.error(`Not processing call.ring push notification, as no uuid found for call_cid: ${call_cid}`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const created_by_id = notification?.stream?.created_by_id;
|
|
63
|
+
const receiver_id = notification?.stream?.receiver_id;
|
|
52
64
|
function closeCallIfNecessary() {
|
|
53
|
-
const
|
|
65
|
+
const {
|
|
66
|
+
mustEndCall,
|
|
67
|
+
callkeepReason
|
|
68
|
+
} = shouldCallBeEnded(callFromPush, created_by_id, receiver_id);
|
|
54
69
|
if (mustEndCall) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
70
|
+
const callkeep = getCallKeepLib();
|
|
71
|
+
logger.debug(`callkeep.reportEndCallWithUUID for uuid: ${uuid}, call_cid: ${call_cid}, reason: ${callkeepReason}`);
|
|
72
|
+
callkeep.reportEndCallWithUUID(uuid, callkeepReason);
|
|
73
|
+
const voipPushNotification = getVoipPushNotificationLib();
|
|
74
|
+
voipPushNotification.onVoipNotificationCompleted(uuid);
|
|
58
75
|
return true;
|
|
59
76
|
}
|
|
60
77
|
return false;
|
|
61
78
|
}
|
|
62
79
|
const closed = closeCallIfNecessary();
|
|
80
|
+
const canListenToWS = () => canAddPushWSSubscriptionsRef.current && AppState.currentState !== 'active';
|
|
63
81
|
if (!closed && canListenToWS()) {
|
|
64
82
|
const unsubscribe = callFromPush.on('all', event => {
|
|
65
83
|
const _canListenToWS = canListenToWS();
|
|
@@ -77,9 +95,9 @@ export const onVoipNotificationReceived = async (notification, pushConfig) => {
|
|
|
77
95
|
pushUnsubscriptionCallbacks.get(call_cid)?.forEach(cb => cb());
|
|
78
96
|
pushUnsubscriptionCallbacks.set(call_cid, [unsubscribe]);
|
|
79
97
|
}
|
|
80
|
-
|
|
81
98
|
// send the info to this subject, it is listened by callkeep events
|
|
82
99
|
// callkeep events will then accept/reject the call
|
|
83
|
-
logger.debug(`call_cid:${call_cid} received and processed from call.ring push notification`);
|
|
100
|
+
logger.debug(`call_cid:${call_cid} uuid:${uuid} received and processed from call.ring push notification`);
|
|
101
|
+
voipPushNotificationCallCId$.next(call_cid);
|
|
84
102
|
};
|
|
85
103
|
//# sourceMappingURL=ios.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","
|
|
1
|
+
{"version":3,"names":["AppState","NativeModules","Platform","getCallKeepLib","getVoipPushNotificationLib","voipPushNotificationCallCId$","pushUnsubscriptionCallbacks","canAddPushWSSubscriptionsRef","shouldCallBeEnded","videoLoggerSystem","onVoipNotificationReceived","notification","pushConfig","sender","stream","type","call_cid","OS","ios","pushProviderName","logger","getLogger","client","createStreamVideoClient","debug","shouldRejectCallWhenBusy","StreamVideoReactNative","setShouldRejectCallWhenBusy","callFromPush","onRingingCall","uuid","getIncomingCallUUid","error","created_by_id","receiver_id","closeCallIfNecessary","mustEndCall","callkeepReason","callkeep","reportEndCallWithUUID","voipPushNotification","onVoipNotificationCompleted","closed","canListenToWS","current","currentState","unsubscribe","on","event","_canListenToWS","_closed","get","forEach","cb","set","next"],"sourceRoot":"../../../../../src","sources":["utils/push/internal/ios.ts"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAChE,SAASC,cAAc,EAAEC,0BAA0B,QAAQ,SAAS;AACpE,SAASC,4BAA4B,QAAQ,cAAc;AAC3D,SAASC,2BAA2B,QAAQ,aAAa;AACzD,SAASC,4BAA4B,EAAEC,iBAAiB,QAAQ,SAAS;AAEzE,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,MAAMC,0BAA0B,GAAG,MAAAA,CACxCC,YAAiB,EACjBC,UAAkD,KAC/C;EACH;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,MAAM,GAAGF,YAAY,EAAEG,MAAM,EAAED,MAAM;EAC3C,MAAME,IAAI,GAAGJ,YAAY,EAAEG,MAAM,EAAEC,IAAI;EACvC;EACA,IAAIF,MAAM,KAAK,cAAc,IAAIE,IAAI,KAAK,WAAW,EAAE;IACrD;EACF;EACA,MAAMC,QAAQ,GAAGL,YAAY,EAAEG,MAAM,EAAEE,QAAQ;EAC/C,IAAI,CAACA,QAAQ,IAAId,QAAQ,CAACe,EAAE,KAAK,KAAK,IAAI,CAACL,UAAU,CAACM,GAAG,CAACC,gBAAgB,EAAE;IAC1E;EACF;EACA,MAAMC,MAAM,GAAGX,iBAAiB,CAACY,SAAS,CAAC,wBAAwB,CAAC;EACpE,MAAMC,MAAM,GAAG,MAAMV,UAAU,CAACW,uBAAuB,CAAC,CAAC;EAEzD,IAAI,CAACD,MAAM,EAAE;IACXF,MAAM,CAACI,KAAK,CACV,mEACF,CAAC;IACD;EACF;EACA,MAAMC,wBAAwB,GAAGH,MAAM,CAAC,oBAAoB,CAAC,IAAI,KAAK;EACtE,IAAIG,wBAAwB,EAAE;IAC5B;IACAxB,aAAa,CAACyB,sBAAsB,CAACC,2BAA2B,CAC9DF,wBACF,CAAC;EACH;EACA,MAAMG,YAAY,GAAG,MAAMN,MAAM,CAACO,aAAa,CAACb,QAAQ,CAAC;EACzD,IAAIc,IAAI,GAAG,EAAE;EACb,IAAI;IACFA,IAAI,GACF,MAAM7B,aAAa,EAAEyB,sBAAsB,EAAEK,mBAAmB,CAC9Df,QACF,CAAC;EACL,CAAC,CAAC,OAAOgB,KAAK,EAAE;IACdZ,MAAM,CAACY,KAAK,CAAC,+CAA+C,EAAEA,KAAK,CAAC;EACtE;EACA,IAAI,CAACF,IAAI,EAAE;IACTV,MAAM,CAACY,KAAK,CACV,8EAA8EhB,QAAQ,EACxF,CAAC;IACD;EACF;EACA,MAAMiB,aAAa,GAAGtB,YAAY,EAAEG,MAAM,EAAEmB,aAAa;EACzD,MAAMC,WAAW,GAAGvB,YAAY,EAAEG,MAAM,EAAEoB,WAAW;EACrD,SAASC,oBAAoBA,CAAA,EAAG;IAC9B,MAAM;MAAEC,WAAW;MAAEC;IAAe,CAAC,GAAG7B,iBAAiB,CACvDoB,YAAY,EACZK,aAAa,EACbC,WACF,CAAC;IACD,IAAIE,WAAW,EAAE;MACf,MAAME,QAAQ,GAAGnC,cAAc,CAAC,CAAC;MACjCiB,MAAM,CAACI,KAAK,CACV,4CAA4CM,IAAI,eAAed,QAAQ,aAAaqB,cAAc,EACpG,CAAC;MACDC,QAAQ,CAACC,qBAAqB,CAACT,IAAI,EAAEO,cAAc,CAAC;MACpD,MAAMG,oBAAoB,GAAGpC,0BAA0B,CAAC,CAAC;MACzDoC,oBAAoB,CAACC,2BAA2B,CAACX,IAAI,CAAC;MACtD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EACA,MAAMY,MAAM,GAAGP,oBAAoB,CAAC,CAAC;EACrC,MAAMQ,aAAa,GAAGA,CAAA,KACpBpC,4BAA4B,CAACqC,OAAO,IAAI5C,QAAQ,CAAC6C,YAAY,KAAK,QAAQ;EAC5E,IAAI,CAACH,MAAM,IAAIC,aAAa,CAAC,CAAC,EAAE;IAC9B,MAAMG,WAAW,GAAGlB,YAAY,CAACmB,EAAE,CAAC,KAAK,EAAGC,KAAK,IAAK;MACpD,MAAMC,cAAc,GAAGN,aAAa,CAAC,CAAC;MACtC,IAAI,CAACM,cAAc,EAAE;QACnB7B,MAAM,CAACI,KAAK,CACV,qCAAqCR,QAAQ,mBAAmBiC,cAAc,EAAE,EAChFD,KACF,CAAC;QACDF,WAAW,CAAC,CAAC;QACb;MACF;MACA,MAAMI,OAAO,GAAGf,oBAAoB,CAAC,CAAC;MACtC,IAAIe,OAAO,EAAE;QACX9B,MAAM,CAACI,KAAK,CACV,qCAAqCR,QAAQ,mBAAmBiC,cAAc,wBAAwBC,OAAO,EAAE,EAC/GF,KACF,CAAC;QACDF,WAAW,CAAC,CAAC;MACf;IACF,CAAC,CAAC;IAEFxC,2BAA2B,CAAC6C,GAAG,CAACnC,QAAQ,CAAC,EAAEoC,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;IAChE/C,2BAA2B,CAACgD,GAAG,CAACtC,QAAQ,EAAE,CAAC8B,WAAW,CAAC,CAAC;EAC1D;EACA;EACA;EACA1B,MAAM,CAACI,KAAK,CACV,YAAYR,QAAQ,SAASc,IAAI,0DACnC,CAAC;EACDzB,4BAA4B,CAACkD,IAAI,CAACvC,QAAQ,CAAC;AAC7C,CAAC","ignoreList":[]}
|