@stream-io/video-react-native-sdk 1.23.0 → 1.24.1
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 +22 -0
- package/dist/commonjs/components/Call/CallContent/CallContent.js +2 -2
- package/dist/commonjs/components/Call/CallContent/CallContent.js.map +1 -1
- package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js +2 -2
- package/dist/commonjs/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
- package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js +3 -3
- package/dist/commonjs/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
- package/dist/commonjs/components/Call/CallControls/AcceptCallButton.js +3 -3
- package/dist/commonjs/components/Call/CallControls/AcceptCallButton.js.map +1 -1
- package/dist/commonjs/components/Call/CallControls/HangupCallButton.js +3 -3
- package/dist/commonjs/components/Call/CallControls/HangupCallButton.js.map +1 -1
- package/dist/commonjs/components/Call/CallControls/RejectCallButton.js +2 -2
- package/dist/commonjs/components/Call/CallControls/RejectCallButton.js.map +1 -1
- package/dist/commonjs/components/Call/CallControls/internal/ReactionsPicker.js +2 -2
- package/dist/commonjs/components/Call/CallControls/internal/ReactionsPicker.js.map +1 -1
- package/dist/commonjs/components/Call/Lobby/JoinCallButton.js +2 -2
- package/dist/commonjs/components/Call/Lobby/JoinCallButton.js.map +1 -1
- package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js +4 -4
- package/dist/commonjs/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
- package/dist/commonjs/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.js +2 -2
- package/dist/commonjs/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.js.map +1 -1
- package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamPlayer.js +4 -4
- package/dist/commonjs/components/Livestream/LivestreamPlayer/LivestreamPlayer.js.map +1 -1
- package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLobby.js +2 -2
- package/dist/commonjs/components/Livestream/ViewerLivestream/ViewerLobby.js.map +1 -1
- package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js +2 -2
- package/dist/commonjs/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js.map +1 -1
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +11 -11
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -1
- package/dist/commonjs/contexts/internal/ScreenshotIosContext.js +3 -3
- package/dist/commonjs/contexts/internal/ScreenshotIosContext.js.map +1 -1
- package/dist/commonjs/hooks/push/useInitAndroidTokenAndRest.js +1 -1
- package/dist/commonjs/hooks/push/useInitAndroidTokenAndRest.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js +2 -2
- package/dist/commonjs/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -1
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +13 -13
- package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js +2 -2
- package/dist/commonjs/hooks/push/useProcessPushCallEffect.js.map +1 -1
- package/dist/commonjs/hooks/push/useProcessPushNonRingingCallEffect.js +1 -1
- package/dist/commonjs/hooks/push/useProcessPushNonRingingCallEffect.js.map +1 -1
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js +10 -10
- package/dist/commonjs/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/commonjs/hooks/usePermissionRequest.js +2 -2
- package/dist/commonjs/hooks/usePermissionRequest.js.map +1 -1
- package/dist/commonjs/hooks/useScreenShareButton.js +4 -4
- package/dist/commonjs/hooks/useScreenShareButton.js.map +1 -1
- package/dist/commonjs/hooks/useScreenshot.js +2 -2
- package/dist/commonjs/hooks/useScreenshot.js.map +1 -1
- package/dist/commonjs/modules/call-manager/PrevLibDetection.js +1 -1
- package/dist/commonjs/modules/call-manager/PrevLibDetection.js.map +1 -1
- package/dist/commonjs/providers/BusyTonePlayer.js +6 -6
- package/dist/commonjs/providers/BusyTonePlayer.js.map +1 -1
- package/dist/commonjs/providers/NoiseCancellation/NoiseCancellationProvider.js +2 -2
- package/dist/commonjs/providers/NoiseCancellation/NoiseCancellationProvider.js.map +1 -1
- package/dist/commonjs/providers/StreamCall/AppStateListener.js +7 -7
- package/dist/commonjs/providers/StreamCall/AppStateListener.js.map +1 -1
- package/dist/commonjs/utils/getAndroidDefaultRingtoneUrl.js +3 -3
- package/dist/commonjs/utils/getAndroidDefaultRingtoneUrl.js.map +1 -1
- package/dist/commonjs/utils/push/android.js +30 -30
- package/dist/commonjs/utils/push/android.js.map +1 -1
- package/dist/commonjs/utils/push/internal/ios.js +9 -9
- package/dist/commonjs/utils/push/internal/ios.js.map +1 -1
- package/dist/commonjs/utils/push/internal/utils.js +11 -11
- package/dist/commonjs/utils/push/internal/utils.js.map +1 -1
- package/dist/commonjs/utils/push/ios.js +21 -21
- package/dist/commonjs/utils/push/ios.js.map +1 -1
- package/dist/commonjs/utils/push/libs/expoNotifications.js +1 -1
- package/dist/commonjs/utils/push/libs/expoNotifications.js.map +1 -1
- package/dist/commonjs/utils/push/libs/firebaseMessaging/index.js +3 -3
- package/dist/commonjs/utils/push/libs/firebaseMessaging/index.js.map +1 -1
- package/dist/commonjs/utils/push/libs/notifee/index.js +3 -3
- package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js +7 -7
- package/dist/commonjs/utils/push/setupIosCallKeepEvents.js.map +1 -1
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js +4 -4
- package/dist/commonjs/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/module/components/Call/CallContent/CallContent.js +3 -3
- package/dist/module/components/Call/CallContent/CallContent.js.map +1 -1
- package/dist/module/components/Call/CallContent/RTCViewPipIOS.js +3 -3
- package/dist/module/components/Call/CallContent/RTCViewPipIOS.js.map +1 -1
- package/dist/module/components/Call/CallContent/RTCViewPipNative.js +3 -3
- package/dist/module/components/Call/CallContent/RTCViewPipNative.js.map +1 -1
- package/dist/module/components/Call/CallControls/AcceptCallButton.js +3 -3
- package/dist/module/components/Call/CallControls/AcceptCallButton.js.map +1 -1
- package/dist/module/components/Call/CallControls/HangupCallButton.js +3 -4
- package/dist/module/components/Call/CallControls/HangupCallButton.js.map +1 -1
- package/dist/module/components/Call/CallControls/RejectCallButton.js +3 -3
- package/dist/module/components/Call/CallControls/RejectCallButton.js.map +1 -1
- package/dist/module/components/Call/CallControls/internal/ReactionsPicker.js +3 -3
- package/dist/module/components/Call/CallControls/internal/ReactionsPicker.js.map +1 -1
- package/dist/module/components/Call/Lobby/JoinCallButton.js +3 -3
- package/dist/module/components/Call/Lobby/JoinCallButton.js.map +1 -1
- package/dist/module/components/Livestream/LivestreamControls/HostStartStreamButton.js +5 -5
- package/dist/module/components/Livestream/LivestreamControls/HostStartStreamButton.js.map +1 -1
- package/dist/module/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.js +3 -3
- package/dist/module/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.js.map +1 -1
- package/dist/module/components/Livestream/LivestreamPlayer/LivestreamPlayer.js +5 -5
- package/dist/module/components/Livestream/LivestreamPlayer/LivestreamPlayer.js.map +1 -1
- package/dist/module/components/Livestream/ViewerLivestream/ViewerLobby.js +3 -4
- package/dist/module/components/Livestream/ViewerLivestream/ViewerLobby.js.map +1 -1
- package/dist/module/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js +3 -3
- package/dist/module/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.js.map +1 -1
- package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +11 -11
- package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -1
- package/dist/module/contexts/internal/ScreenshotIosContext.js +4 -4
- package/dist/module/contexts/internal/ScreenshotIosContext.js.map +1 -1
- package/dist/module/hooks/push/useInitAndroidTokenAndRest.js +2 -2
- package/dist/module/hooks/push/useInitAndroidTokenAndRest.js.map +1 -1
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js +3 -3
- package/dist/module/hooks/push/useIosCallkeepWithCallingStateEffect.js.map +1 -1
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +14 -14
- package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
- package/dist/module/hooks/push/useProcessPushCallEffect.js +3 -3
- package/dist/module/hooks/push/useProcessPushCallEffect.js.map +1 -1
- package/dist/module/hooks/push/useProcessPushNonRingingCallEffect.js +2 -2
- package/dist/module/hooks/push/useProcessPushNonRingingCallEffect.js.map +1 -1
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js +11 -11
- package/dist/module/hooks/useAndroidKeepCallAliveEffect.js.map +1 -1
- package/dist/module/hooks/usePermissionRequest.js +3 -3
- package/dist/module/hooks/usePermissionRequest.js.map +1 -1
- package/dist/module/hooks/useScreenShareButton.js +5 -5
- package/dist/module/hooks/useScreenShareButton.js.map +1 -1
- package/dist/module/hooks/useScreenshot.js +3 -3
- package/dist/module/hooks/useScreenshot.js.map +1 -1
- package/dist/module/modules/call-manager/PrevLibDetection.js +2 -2
- package/dist/module/modules/call-manager/PrevLibDetection.js.map +1 -1
- package/dist/module/providers/BusyTonePlayer.js +7 -7
- package/dist/module/providers/BusyTonePlayer.js.map +1 -1
- package/dist/module/providers/NoiseCancellation/NoiseCancellationProvider.js +3 -3
- package/dist/module/providers/NoiseCancellation/NoiseCancellationProvider.js.map +1 -1
- package/dist/module/providers/StreamCall/AppStateListener.js +8 -8
- package/dist/module/providers/StreamCall/AppStateListener.js.map +1 -1
- package/dist/module/utils/getAndroidDefaultRingtoneUrl.js +3 -3
- package/dist/module/utils/getAndroidDefaultRingtoneUrl.js.map +1 -1
- package/dist/module/utils/push/android.js +31 -31
- package/dist/module/utils/push/android.js.map +1 -1
- package/dist/module/utils/push/internal/ios.js +9 -9
- package/dist/module/utils/push/internal/ios.js.map +1 -1
- package/dist/module/utils/push/internal/utils.js +12 -12
- package/dist/module/utils/push/internal/utils.js.map +1 -1
- package/dist/module/utils/push/ios.js +22 -22
- package/dist/module/utils/push/ios.js.map +1 -1
- package/dist/module/utils/push/libs/expoNotifications.js +2 -2
- package/dist/module/utils/push/libs/expoNotifications.js.map +1 -1
- package/dist/module/utils/push/libs/firebaseMessaging/index.js +3 -3
- package/dist/module/utils/push/libs/firebaseMessaging/index.js.map +1 -1
- package/dist/module/utils/push/libs/notifee/index.js +3 -3
- package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
- package/dist/module/utils/push/setupIosCallKeepEvents.js +8 -8
- package/dist/module/utils/push/setupIosCallKeepEvents.js.map +1 -1
- package/dist/module/utils/push/setupIosVoipPushEvents.js +5 -5
- package/dist/module/utils/push/setupIosVoipPushEvents.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/components/Call/CallContent/CallContent.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallContent/RTCViewPipIOS.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallContent/RTCViewPipNative.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallControls/AcceptCallButton.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallControls/HangupCallButton.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallControls/internal/ReactionsPicker.d.ts.map +1 -1
- package/dist/typescript/components/Livestream/ViewerLivestream/ViewerLobby.d.ts.map +1 -1
- package/dist/typescript/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.d.ts.map +1 -1
- package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts.map +1 -1
- package/dist/typescript/contexts/internal/ScreenshotIosContext.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useInitAndroidTokenAndRest.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosCallkeepWithCallingStateEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useProcessPushCallEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/push/useProcessPushNonRingingCallEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useAndroidKeepCallAliveEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useScreenShareButton.d.ts.map +1 -1
- package/dist/typescript/hooks/useScreenshot.d.ts.map +1 -1
- package/dist/typescript/modules/call-manager/PrevLibDetection.d.ts.map +1 -1
- package/dist/typescript/providers/BusyTonePlayer.d.ts.map +1 -1
- package/dist/typescript/providers/NoiseCancellation/NoiseCancellationProvider.d.ts.map +1 -1
- package/dist/typescript/providers/StreamCall/AppStateListener.d.ts.map +1 -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/utils.d.ts.map +1 -1
- package/dist/typescript/utils/push/ios.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/expoNotifications.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/firebaseMessaging/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
- package/dist/typescript/utils/push/setupIosCallKeepEvents.d.ts.map +1 -1
- package/dist/typescript/utils/push/setupIosVoipPushEvents.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/ios/StreamInCallManager.swift +35 -23
- package/package.json +3 -3
- package/src/components/Call/CallContent/CallContent.tsx +7 -9
- package/src/components/Call/CallContent/RTCViewPipIOS.tsx +7 -9
- package/src/components/Call/CallContent/RTCViewPipNative.tsx +8 -6
- package/src/components/Call/CallControls/AcceptCallButton.tsx +3 -3
- package/src/components/Call/CallControls/HangupCallButton.tsx +3 -4
- package/src/components/Call/CallControls/RejectCallButton.tsx +4 -4
- package/src/components/Call/CallControls/internal/ReactionsPicker.tsx +6 -3
- package/src/components/Call/Lobby/JoinCallButton.tsx +3 -3
- package/src/components/Livestream/LivestreamControls/HostStartStreamButton.tsx +5 -5
- package/src/components/Livestream/LivestreamControls/ViewerLeaveStreamButton.tsx +3 -3
- package/src/components/Livestream/LivestreamPlayer/LivestreamPlayer.tsx +5 -5
- package/src/components/Livestream/ViewerLivestream/ViewerLobby.tsx +3 -4
- package/src/components/Participant/FloatingParticipantView/FloatingView/AnimatedFloatingView.tsx +3 -4
- package/src/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.tsx +9 -10
- package/src/contexts/internal/ScreenshotIosContext.tsx +12 -14
- package/src/hooks/push/useInitAndroidTokenAndRest.ts +4 -6
- package/src/hooks/push/useIosCallkeepWithCallingStateEffect.ts +9 -3
- package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +14 -19
- package/src/hooks/push/useProcessPushCallEffect.ts +11 -9
- package/src/hooks/push/useProcessPushNonRingingCallEffect.ts +6 -5
- package/src/hooks/useAndroidKeepCallAliveEffect.ts +17 -14
- package/src/hooks/usePermissionRequest.tsx +3 -3
- package/src/hooks/useScreenShareButton.ts +5 -7
- package/src/hooks/useScreenshot.ts +7 -11
- package/src/modules/call-manager/PrevLibDetection.ts +6 -5
- package/src/providers/BusyTonePlayer.tsx +7 -11
- package/src/providers/NoiseCancellation/NoiseCancellationProvider.tsx +7 -11
- package/src/providers/StreamCall/AppStateListener.tsx +8 -12
- package/src/utils/getAndroidDefaultRingtoneUrl.ts +3 -3
- package/src/utils/push/android.ts +93 -85
- package/src/utils/push/internal/ios.ts +9 -15
- package/src/utils/push/internal/utils.ts +28 -25
- package/src/utils/push/ios.ts +28 -32
- package/src/utils/push/libs/expoNotifications.ts +6 -5
- package/src/utils/push/libs/firebaseMessaging/index.ts +5 -4
- package/src/utils/push/libs/notifee/index.ts +3 -4
- package/src/utils/push/setupIosCallKeepEvents.ts +12 -14
- package/src/utils/push/setupIosVoipPushEvents.ts +7 -9
- package/src/version.ts +1 -1
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
useStreamVideoClient,
|
|
10
10
|
} from '@stream-io/video-react-bindings';
|
|
11
11
|
import { setPushLogoutCallback } from '../../utils/internal/pushLogoutCallback';
|
|
12
|
-
import {
|
|
12
|
+
import { StreamVideoClient, videoLoggerSystem } from '@stream-io/video-client';
|
|
13
13
|
|
|
14
|
-
const logger = getLogger(
|
|
14
|
+
const logger = videoLoggerSystem.getLogger('useIosVoipPushEventsSetupEffect');
|
|
15
15
|
|
|
16
16
|
/* VoipPushNotificationLib has support for only one listener type at a time
|
|
17
17
|
hence to support login and logout scenario of multiple users we keep of the last count of the listener that was added
|
|
@@ -29,7 +29,7 @@ function setLogoutCallback(
|
|
|
29
29
|
try {
|
|
30
30
|
await client.removeDevice(token);
|
|
31
31
|
} catch (err) {
|
|
32
|
-
logger('
|
|
32
|
+
logger.warn('PushLogoutCallback - Failed to remove voip token', err);
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -66,15 +66,14 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
66
66
|
|
|
67
67
|
if (!tokenToSend) return;
|
|
68
68
|
|
|
69
|
-
logger(
|
|
70
|
-
'debug',
|
|
69
|
+
logger.debug(
|
|
71
70
|
`Sending voip token as user logged in after token was received, token: ${tokenToSend}`,
|
|
72
71
|
);
|
|
73
72
|
|
|
74
73
|
client
|
|
75
74
|
.addVoipDevice(tokenToSend, 'apn', pushProviderName)
|
|
76
75
|
.then(() => {
|
|
77
|
-
logger(
|
|
76
|
+
logger.debug(`Sent voip token: ${tokenToSend}`);
|
|
78
77
|
setLogoutCallback(client, tokenToSend, lastVoipTokenRef);
|
|
79
78
|
lastVoipTokenRef.current = {
|
|
80
79
|
token: tokenToSend,
|
|
@@ -83,7 +82,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
83
82
|
setUnsentToken(undefined);
|
|
84
83
|
})
|
|
85
84
|
.catch((error) => {
|
|
86
|
-
logger('
|
|
85
|
+
logger.warn('Error in sending unsent voip token', error);
|
|
87
86
|
});
|
|
88
87
|
}, [client, connectedUserId, unsentToken]);
|
|
89
88
|
|
|
@@ -95,8 +94,7 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
95
94
|
}
|
|
96
95
|
if (!pushConfig.android.incomingCallChannel) {
|
|
97
96
|
// TODO: remove this check and find a better way once we have telecom integration for android
|
|
98
|
-
logger(
|
|
99
|
-
'debug',
|
|
97
|
+
logger.debug(
|
|
100
98
|
'android incomingCallChannel is not defined, so skipping the useIosVoipPushEventsSetupEffect',
|
|
101
99
|
);
|
|
102
100
|
return;
|
|
@@ -117,32 +115,30 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
117
115
|
: !token
|
|
118
116
|
? 'no token was present (possibly using a simulator)'
|
|
119
117
|
: 'no user id was present';
|
|
120
|
-
logger(
|
|
118
|
+
logger.debug(`Skipped sending voip token: ${reason}`);
|
|
121
119
|
setUnsentToken(token);
|
|
122
120
|
return;
|
|
123
121
|
}
|
|
124
122
|
|
|
125
123
|
const lastVoipToken = lastVoipTokenRef.current;
|
|
126
124
|
if (lastVoipToken.token === token && lastVoipToken.userId === userId) {
|
|
127
|
-
logger(
|
|
128
|
-
'debug',
|
|
125
|
+
logger.debug(
|
|
129
126
|
`Skipped sending voip token as it is same as last token - token: ${token}, userId: ${userId}`,
|
|
130
127
|
);
|
|
131
128
|
return;
|
|
132
129
|
}
|
|
133
130
|
|
|
134
|
-
logger(
|
|
131
|
+
logger.debug(`Sending voip token: ${token} userId: ${userId}`);
|
|
135
132
|
client
|
|
136
133
|
.addVoipDevice(token, 'apn', pushProviderName)
|
|
137
134
|
.then(() => {
|
|
138
|
-
logger(
|
|
135
|
+
logger.debug(`Sent voip token: ${token} userId: ${userId}`);
|
|
139
136
|
setLogoutCallback(client, token, lastVoipTokenRef);
|
|
140
137
|
lastVoipTokenRef.current = { token, userId };
|
|
141
138
|
})
|
|
142
139
|
.catch((err) => {
|
|
143
140
|
setUnsentToken(token);
|
|
144
|
-
logger(
|
|
145
|
-
'warn',
|
|
141
|
+
logger.warn(
|
|
146
142
|
`Failed to send voip token: ${token} userId: ${userId}`,
|
|
147
143
|
err,
|
|
148
144
|
);
|
|
@@ -173,13 +169,12 @@ export const useIosVoipPushEventsSetupEffect = () => {
|
|
|
173
169
|
return () => {
|
|
174
170
|
const userId = client.streamClient._user?.id;
|
|
175
171
|
if (currentListenerCount !== lastListener.count) {
|
|
176
|
-
logger(
|
|
177
|
-
'debug',
|
|
172
|
+
logger.debug(
|
|
178
173
|
`Skipped removing voip event listeners for user: ${userId}`,
|
|
179
174
|
);
|
|
180
175
|
return;
|
|
181
176
|
}
|
|
182
|
-
logger(
|
|
177
|
+
logger.debug(`Voip event listeners are removed for user: ${userId}`);
|
|
183
178
|
voipPushNotification.removeEventListener('didLoadWithEvents');
|
|
184
179
|
voipPushNotification.removeEventListener('register');
|
|
185
180
|
};
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
import { BehaviorSubject } from 'rxjs';
|
|
14
14
|
import { distinctUntilChanged, filter } from 'rxjs/operators';
|
|
15
15
|
import { processCallFromPush } from '../../utils/push/internal/utils';
|
|
16
|
-
import {
|
|
16
|
+
import { StreamVideoClient, videoLoggerSystem } from '@stream-io/video-client';
|
|
17
17
|
import type { StreamVideoConfig } from '../../utils/StreamVideoRN/types';
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -32,10 +32,11 @@ export const useProcessPushCallEffect = () => {
|
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
'
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
videoLoggerSystem
|
|
36
|
+
.getLogger('useProcessPushCallEffect')
|
|
37
|
+
.debug(
|
|
38
|
+
`Adding subscriptions to process incoming call from push notification`,
|
|
39
|
+
);
|
|
39
40
|
|
|
40
41
|
// if the user accepts the call from push notification we join the call
|
|
41
42
|
const acceptedCallSubscription = createCallSubscription(
|
|
@@ -96,10 +97,11 @@ const createCallSubscription = (
|
|
|
96
97
|
return behaviourSubjectWithCallCid
|
|
97
98
|
.pipe(distinctUntilChanged(), filter(cidIsNotUndefined))
|
|
98
99
|
.subscribe(async (callCId) => {
|
|
99
|
-
|
|
100
|
-
'
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
videoLoggerSystem
|
|
101
|
+
.getLogger('useProcessPushCallEffect')
|
|
102
|
+
.debug(
|
|
103
|
+
`Processing call from push notification with action: ${action} and callCId: ${callCId}`,
|
|
104
|
+
);
|
|
103
105
|
await processCallFromPush(client, callCId, action, pushConfig);
|
|
104
106
|
behaviourSubjectWithCallCid.next(undefined); // remove the current call id to avoid processing again
|
|
105
107
|
});
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from '@stream-io/video-react-bindings';
|
|
8
8
|
import { filter } from 'rxjs/operators';
|
|
9
9
|
import { processNonIncomingCallFromPush } from '../../utils/push/internal/utils';
|
|
10
|
-
import {
|
|
10
|
+
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* This hook is used to process the non ringing call data via push notifications using the relevant rxjs subject
|
|
@@ -27,10 +27,11 @@ export const useProcessPushNonRingingCallEffect = () => {
|
|
|
27
27
|
const subscription = pushNonRingingCallData$
|
|
28
28
|
.pipe(filter(NotUndefined))
|
|
29
29
|
.subscribe(async ({ cid, type }) => {
|
|
30
|
-
|
|
31
|
-
'
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
videoLoggerSystem
|
|
31
|
+
.getLogger('useProcessPushNonRingingCallEffect')
|
|
32
|
+
.debug(
|
|
33
|
+
`processNonIncomingCallFromPush with callCId: ${cid} and type: ${type}`,
|
|
34
|
+
);
|
|
34
35
|
await processNonIncomingCallFromPush(client, cid, type);
|
|
35
36
|
pushNonRingingCallData$.next(undefined); // remove the current data to avoid processing again
|
|
36
37
|
});
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
NativeModules,
|
|
8
8
|
Platform,
|
|
9
9
|
} from 'react-native';
|
|
10
|
-
import { Call, CallingState,
|
|
10
|
+
import { Call, CallingState, videoLoggerSystem } from '@stream-io/video-client';
|
|
11
11
|
import {
|
|
12
12
|
getKeepCallAliveForegroundServiceTypes,
|
|
13
13
|
getNotifeeLibNoThrowForKeepCallAlive,
|
|
@@ -23,17 +23,20 @@ function setForegroundService() {
|
|
|
23
23
|
NativeModules.StreamVideoReactNative.isCallAliveConfigured().then(
|
|
24
24
|
(isConfigured: boolean) => {
|
|
25
25
|
if (!isConfigured) {
|
|
26
|
-
const logger = getLogger(
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
const logger = videoLoggerSystem.getLogger(
|
|
27
|
+
'setForegroundService method',
|
|
28
|
+
);
|
|
29
|
+
logger.info(
|
|
29
30
|
'KeepCallAlive is not configured. Skipping foreground service setup.',
|
|
30
31
|
);
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
34
|
notifeeLib.default.registerForegroundService(() => {
|
|
34
35
|
const task = new Promise((resolve) => {
|
|
35
|
-
const logger = getLogger(
|
|
36
|
-
|
|
36
|
+
const logger = videoLoggerSystem.getLogger(
|
|
37
|
+
'setForegroundService method',
|
|
38
|
+
);
|
|
39
|
+
logger.info('Foreground service running for call in progress');
|
|
37
40
|
// any task to run from SDK in the foreground service must be added
|
|
38
41
|
resolve(true);
|
|
39
42
|
});
|
|
@@ -42,8 +45,10 @@ function setForegroundService() {
|
|
|
42
45
|
const { taskToRun } = foregroundServiceConfig.android;
|
|
43
46
|
const call = callToPassToForegroundService.current;
|
|
44
47
|
if (!call) {
|
|
45
|
-
const logger = getLogger(
|
|
46
|
-
|
|
48
|
+
const logger = videoLoggerSystem.getLogger(
|
|
49
|
+
'setForegroundService method',
|
|
50
|
+
);
|
|
51
|
+
logger.warn('No call to pass to foreground service');
|
|
47
52
|
return task.then(() => new Promise(() => {}));
|
|
48
53
|
}
|
|
49
54
|
callToPassToForegroundService.current = undefined;
|
|
@@ -57,9 +62,8 @@ async function startForegroundService(call_cid: string) {
|
|
|
57
62
|
const isCallAliveConfigured =
|
|
58
63
|
await NativeModules.StreamVideoReactNative.isCallAliveConfigured();
|
|
59
64
|
if (!isCallAliveConfigured) {
|
|
60
|
-
const logger = getLogger(
|
|
61
|
-
logger(
|
|
62
|
-
'info',
|
|
65
|
+
const logger = videoLoggerSystem.getLogger('startForegroundService');
|
|
66
|
+
logger.info(
|
|
63
67
|
'KeepCallAlive is not configured. Skipping foreground service setup.',
|
|
64
68
|
);
|
|
65
69
|
return;
|
|
@@ -70,9 +74,8 @@ async function startForegroundService(call_cid: string) {
|
|
|
70
74
|
if (
|
|
71
75
|
settings.authorizationStatus !== notifeeLib.AuthorizationStatus.AUTHORIZED
|
|
72
76
|
) {
|
|
73
|
-
const logger = getLogger(
|
|
74
|
-
logger(
|
|
75
|
-
'info',
|
|
77
|
+
const logger = videoLoggerSystem.getLogger('startForegroundService');
|
|
78
|
+
logger.info(
|
|
76
79
|
'Notification permission not granted, can not start foreground service to keep the call alive',
|
|
77
80
|
);
|
|
78
81
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
getLogger,
|
|
3
2
|
OwnCapability,
|
|
4
3
|
type PermissionRequestEvent,
|
|
4
|
+
videoLoggerSystem,
|
|
5
5
|
} from '@stream-io/video-client';
|
|
6
6
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
7
7
|
import { useCallback, useEffect } from 'react';
|
|
@@ -39,8 +39,8 @@ export const usePermissionRequest = () => {
|
|
|
39
39
|
await call?.revokePermissions(user.id, permissions);
|
|
40
40
|
}
|
|
41
41
|
} catch (err) {
|
|
42
|
-
const logger = getLogger(
|
|
43
|
-
logger('error
|
|
42
|
+
const logger = videoLoggerSystem.getLogger('usePermissionRequest');
|
|
43
|
+
logger.error('error handling permissions: ', err);
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
getLogger,
|
|
3
2
|
hasScreenShare,
|
|
4
3
|
OwnCapability,
|
|
4
|
+
videoLoggerSystem,
|
|
5
5
|
} from '@stream-io/video-client';
|
|
6
6
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
7
7
|
import React, { useEffect, useRef } from 'react';
|
|
@@ -87,9 +87,8 @@ export const useScreenShareButton = (
|
|
|
87
87
|
|
|
88
88
|
const onPress = async () => {
|
|
89
89
|
if (!hasScreenSharingPermissions) {
|
|
90
|
-
const logger = getLogger(
|
|
91
|
-
logger(
|
|
92
|
-
'info',
|
|
90
|
+
const logger = videoLoggerSystem.getLogger('useScreenShareButton');
|
|
91
|
+
logger.info(
|
|
93
92
|
'User does not have permissions to stream the screen share media, calling onMissingScreenShareStreamPermission handler if present',
|
|
94
93
|
);
|
|
95
94
|
onMissingScreenShareStreamPermission?.();
|
|
@@ -106,9 +105,8 @@ export const useScreenShareButton = (
|
|
|
106
105
|
onScreenShareStartedHandler?.();
|
|
107
106
|
} catch (error) {
|
|
108
107
|
// ignored.. user didnt allow the screen share in the popup
|
|
109
|
-
const logger = getLogger(
|
|
110
|
-
logger(
|
|
111
|
-
'info',
|
|
108
|
+
const logger = videoLoggerSystem.getLogger('useScreenShareButton');
|
|
109
|
+
logger.info(
|
|
112
110
|
'User opted to not give permissions to start a screen share stream',
|
|
113
111
|
error,
|
|
114
112
|
);
|
|
@@ -4,7 +4,7 @@ import { NativeModules, Platform } from 'react-native';
|
|
|
4
4
|
import type { MediaStream } from '@stream-io/react-native-webrtc';
|
|
5
5
|
import {
|
|
6
6
|
StreamVideoParticipant,
|
|
7
|
-
|
|
7
|
+
videoLoggerSystem,
|
|
8
8
|
type VideoTrackType,
|
|
9
9
|
} from '@stream-io/video-client';
|
|
10
10
|
|
|
@@ -49,11 +49,9 @@ export function useScreenshot(): UseScreenshotResult {
|
|
|
49
49
|
videoStreamForScreenshot.toURL(),
|
|
50
50
|
);
|
|
51
51
|
} catch (error) {
|
|
52
|
-
|
|
53
|
-
'
|
|
54
|
-
'Error taking screenshot',
|
|
55
|
-
error,
|
|
56
|
-
);
|
|
52
|
+
videoLoggerSystem
|
|
53
|
+
.getLogger('useScreenshot')
|
|
54
|
+
.error('Error taking screenshot', error);
|
|
57
55
|
return null;
|
|
58
56
|
}
|
|
59
57
|
}
|
|
@@ -62,11 +60,9 @@ export function useScreenshot(): UseScreenshotResult {
|
|
|
62
60
|
try {
|
|
63
61
|
return await take(participant, videoTrackType);
|
|
64
62
|
} catch (error) {
|
|
65
|
-
|
|
66
|
-
'
|
|
67
|
-
'Error taking screenshot',
|
|
68
|
-
error,
|
|
69
|
-
);
|
|
63
|
+
videoLoggerSystem
|
|
64
|
+
.getLogger('useScreenshot')
|
|
65
|
+
.error('Error taking screenshot', error);
|
|
70
66
|
return null;
|
|
71
67
|
}
|
|
72
68
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
2
2
|
|
|
3
3
|
declare class RNInCallManagerLib {
|
|
4
4
|
start(setup?: {
|
|
@@ -18,10 +18,11 @@ try {
|
|
|
18
18
|
|
|
19
19
|
export function getRNInCallManagerLibNoThrow() {
|
|
20
20
|
if (rnInCallManagerLib) {
|
|
21
|
-
|
|
22
|
-
'
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
videoLoggerSystem
|
|
22
|
+
.getLogger('getRNInCallManagerLibNoThrow')
|
|
23
|
+
.debug(
|
|
24
|
+
'react-native-incall-manager library is not required to be installed from 1.22.0 version of the @stream-io/video-react-native-sdk. Please check the migration documentation at https://getstream.io/video/docs/react-native/migration-guides/1.22.0/ for more details.',
|
|
25
|
+
);
|
|
25
26
|
}
|
|
26
27
|
return rnInCallManagerLib;
|
|
27
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { useStreamVideoClient } from '@stream-io/video-react-bindings';
|
|
3
3
|
import { StreamVideoRN } from '../utils';
|
|
4
|
-
import {
|
|
4
|
+
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
5
5
|
|
|
6
6
|
const BUSY_TONE_DURATION_IN_MS = 1500;
|
|
7
7
|
|
|
@@ -23,15 +23,14 @@ const BusyTonePlayer = () => {
|
|
|
23
23
|
|
|
24
24
|
let busyToneTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
25
25
|
|
|
26
|
-
const logger = getLogger(
|
|
26
|
+
const logger = videoLoggerSystem.getLogger('RejectCallWhenBusy');
|
|
27
27
|
|
|
28
28
|
if (isCalleeBusy) {
|
|
29
29
|
if (busyToneTimeout) {
|
|
30
30
|
clearTimeout(busyToneTimeout);
|
|
31
31
|
busyToneTimeout = undefined;
|
|
32
32
|
}
|
|
33
|
-
logger(
|
|
34
|
-
'info',
|
|
33
|
+
logger.info(
|
|
35
34
|
`Playing busy tone for call rejection for call cid: ${event.call.cid}`,
|
|
36
35
|
);
|
|
37
36
|
|
|
@@ -40,24 +39,21 @@ const BusyTonePlayer = () => {
|
|
|
40
39
|
busyToneTimeout = setTimeout(() => {
|
|
41
40
|
StreamVideoRN.stopBusyTone()
|
|
42
41
|
.then(() => {
|
|
43
|
-
logger(
|
|
44
|
-
'info',
|
|
42
|
+
logger.info(
|
|
45
43
|
`Stopped busy tone for call rejection for call cid: ${event.call.cid}`,
|
|
46
44
|
);
|
|
47
45
|
})
|
|
48
|
-
.catch((error) =>
|
|
49
|
-
logger('error', 'stopBusyTone failed:', error),
|
|
50
|
-
);
|
|
46
|
+
.catch((error) => logger.error('stopBusyTone failed:', error));
|
|
51
47
|
busyToneTimeout = undefined;
|
|
52
48
|
}, BUSY_TONE_DURATION_IN_MS);
|
|
53
49
|
})
|
|
54
50
|
.catch((error) => {
|
|
55
|
-
logger('
|
|
51
|
+
logger.error('playBusyTone failed:', error);
|
|
56
52
|
});
|
|
57
53
|
}
|
|
58
54
|
return () => {
|
|
59
55
|
StreamVideoRN.stopBusyTone().catch((err) =>
|
|
60
|
-
logger('
|
|
56
|
+
logger.error('stopBusyTone on cleanup failed:', err),
|
|
61
57
|
);
|
|
62
58
|
clearTimeout(busyToneTimeout);
|
|
63
59
|
unsubscribe();
|
|
@@ -6,9 +6,9 @@ import React, {
|
|
|
6
6
|
useState,
|
|
7
7
|
} from 'react';
|
|
8
8
|
import {
|
|
9
|
-
getLogger,
|
|
10
9
|
NoiseCancellationSettingsModeEnum,
|
|
11
10
|
OwnCapability,
|
|
11
|
+
videoLoggerSystem,
|
|
12
12
|
} from '@stream-io/video-client';
|
|
13
13
|
|
|
14
14
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
@@ -100,22 +100,18 @@ export const NoiseCancellationProvider = (props: PropsWithChildren<{}>) => {
|
|
|
100
100
|
call.microphone
|
|
101
101
|
.enableNoiseCancellation(ncInstance)
|
|
102
102
|
.catch((err) =>
|
|
103
|
-
|
|
104
|
-
'
|
|
105
|
-
`Can't initialize noise suppression`,
|
|
106
|
-
err,
|
|
107
|
-
),
|
|
103
|
+
videoLoggerSystem
|
|
104
|
+
.getLogger('NoiseCancellationProvider')
|
|
105
|
+
.error(`Can't initialize noise suppression`, err),
|
|
108
106
|
);
|
|
109
107
|
|
|
110
108
|
return () => {
|
|
111
109
|
call.microphone
|
|
112
110
|
.disableNoiseCancellation()
|
|
113
111
|
.catch((err) =>
|
|
114
|
-
|
|
115
|
-
'
|
|
116
|
-
`Can't disable noise suppression`,
|
|
117
|
-
err,
|
|
118
|
-
),
|
|
112
|
+
videoLoggerSystem
|
|
113
|
+
.getLogger('NoiseCancellationProvider')
|
|
114
|
+
.error(`Can't disable noise suppression`, err),
|
|
119
115
|
);
|
|
120
116
|
unsubscribe();
|
|
121
117
|
};
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from 'react-native';
|
|
9
9
|
import { shouldDisableIOSLocalVideoOnBackgroundRef } from '../../utils/internal/shouldDisableIOSLocalVideoOnBackground';
|
|
10
10
|
import { disablePiPMode$, isInPiPMode$ } from '../../utils/internal/rxSubjects';
|
|
11
|
-
import {
|
|
11
|
+
import { RxUtils, videoLoggerSystem } from '@stream-io/video-client';
|
|
12
12
|
|
|
13
13
|
const PIP_CHANGE_EVENT = 'StreamVideoReactNative_PIP_CHANGE_EVENT';
|
|
14
14
|
|
|
@@ -29,17 +29,16 @@ export const AppStateListener = () => {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const disablePiP = RxUtils.getCurrentValue(disablePiPMode$);
|
|
32
|
-
const logger = getLogger(
|
|
32
|
+
const logger = videoLoggerSystem.getLogger('AppStateListener');
|
|
33
33
|
const initialPipMode =
|
|
34
34
|
!disablePiP && AppState.currentState === 'background';
|
|
35
35
|
isInPiPMode$.next(initialPipMode);
|
|
36
|
-
logger('
|
|
36
|
+
logger.debug('Initial PiP mode on mount set to ', initialPipMode);
|
|
37
37
|
|
|
38
38
|
NativeModules?.StreamVideoReactNative?.isInPiPMode().then(
|
|
39
39
|
(isInPiP: boolean | null | undefined) => {
|
|
40
40
|
isInPiPMode$.next(!!isInPiP);
|
|
41
|
-
logger(
|
|
42
|
-
'debug',
|
|
41
|
+
logger.debug(
|
|
43
42
|
'Initial PiP mode on mount (after asking native module) set to ',
|
|
44
43
|
!!isInPiP,
|
|
45
44
|
);
|
|
@@ -67,7 +66,7 @@ export const AppStateListener = () => {
|
|
|
67
66
|
// we dont check for inactive states
|
|
68
67
|
// ref: https://www.reddit.com/r/reactnative/comments/15kib42/appstate_behavior_in_ios_when_swiping_down_to/
|
|
69
68
|
const subscription = AppState.addEventListener('change', (nextAppState) => {
|
|
70
|
-
const logger = getLogger(
|
|
69
|
+
const logger = videoLoggerSystem.getLogger('AppStateListener');
|
|
71
70
|
if (appState.current.match(/background/) && nextAppState === 'active') {
|
|
72
71
|
if (call?.camera?.state.status === 'enabled') {
|
|
73
72
|
// Android: when device is locked and resumed, the status isnt made disabled but stays enabled
|
|
@@ -76,15 +75,12 @@ export const AppStateListener = () => {
|
|
|
76
75
|
call?.camera?.disable(true).then(() => {
|
|
77
76
|
call?.camera?.enable();
|
|
78
77
|
});
|
|
79
|
-
logger(
|
|
80
|
-
'debug',
|
|
81
|
-
'Disable and reenable camera as app came to foreground',
|
|
82
|
-
);
|
|
78
|
+
logger.debug('Disable and reenable camera as app came to foreground');
|
|
83
79
|
} else {
|
|
84
80
|
if (cameraDisabledByAppState.current) {
|
|
85
81
|
call?.camera?.resume();
|
|
86
82
|
cameraDisabledByAppState.current = false;
|
|
87
|
-
logger('
|
|
83
|
+
logger.debug('Resume camera as app came to foreground');
|
|
88
84
|
}
|
|
89
85
|
}
|
|
90
86
|
appState.current = nextAppState;
|
|
@@ -96,7 +92,7 @@ export const AppStateListener = () => {
|
|
|
96
92
|
if (call?.camera?.state.status === 'enabled') {
|
|
97
93
|
cameraDisabledByAppState.current = true;
|
|
98
94
|
call?.camera?.disable();
|
|
99
|
-
logger('
|
|
95
|
+
logger.debug('Camera disabled by app going to background');
|
|
100
96
|
}
|
|
101
97
|
};
|
|
102
98
|
if (Platform.OS === 'android') {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getLogger } from '@stream-io/video-client';
|
|
2
1
|
import { NativeModules, Platform } from 'react-native';
|
|
2
|
+
import { videoLoggerSystem } from '@stream-io/video-client';
|
|
3
3
|
|
|
4
4
|
export async function getAndroidDefaultRingtoneUrl(): Promise<
|
|
5
5
|
string | undefined
|
|
@@ -12,8 +12,8 @@ export async function getAndroidDefaultRingtoneUrl(): Promise<
|
|
|
12
12
|
await NativeModules.StreamVideoReactNative?.getDefaultRingtoneUrl();
|
|
13
13
|
return url;
|
|
14
14
|
} catch (e) {
|
|
15
|
-
const logger = getLogger(
|
|
16
|
-
logger('
|
|
15
|
+
const logger = videoLoggerSystem.getLogger('getAndroidDefaultRingtoneUrl');
|
|
16
|
+
logger.warn('Failed to get default ringtone from native module', e);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
return undefined;
|