@stream-io/video-react-native-sdk 1.32.4 → 1.33.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 +18 -0
- package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js +10 -1
- package/dist/commonjs/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
- package/dist/commonjs/contexts/BackgroundFilters.js +50 -9
- package/dist/commonjs/contexts/BackgroundFilters.js.map +1 -1
- package/dist/commonjs/hooks/index.js +0 -11
- package/dist/commonjs/hooks/index.js.map +1 -1
- package/dist/commonjs/utils/internal/registerSDKGlobals.js +13 -0
- package/dist/commonjs/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/module/components/Participant/ParticipantView/ParticipantLabel.js +12 -3
- package/dist/module/components/Participant/ParticipantView/ParticipantLabel.js.map +1 -1
- package/dist/module/contexts/BackgroundFilters.js +51 -10
- package/dist/module/contexts/BackgroundFilters.js.map +1 -1
- package/dist/module/hooks/index.js +0 -1
- package/dist/module/hooks/index.js.map +1 -1
- package/dist/module/utils/internal/registerSDKGlobals.js +13 -0
- package/dist/module/utils/internal/registerSDKGlobals.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/components/Participant/ParticipantView/ParticipantLabel.d.ts.map +1 -1
- package/dist/typescript/contexts/BackgroundFilters.d.ts.map +1 -1
- package/dist/typescript/hooks/index.d.ts +0 -1
- package/dist/typescript/hooks/index.d.ts.map +1 -1
- package/dist/typescript/utils/internal/registerSDKGlobals.d.ts.map +1 -1
- package/dist/typescript/version.d.ts +1 -1
- package/package.json +6 -6
- package/src/components/Participant/ParticipantView/ParticipantLabel.tsx +24 -2
- package/src/contexts/BackgroundFilters.tsx +55 -9
- package/src/hooks/index.ts +0 -1
- package/src/utils/internal/registerSDKGlobals.ts +13 -0
- package/src/version.ts +1 -1
- package/dist/commonjs/hooks/useSpeechDetection.js +0 -39
- package/dist/commonjs/hooks/useSpeechDetection.js.map +0 -1
- package/dist/module/hooks/useSpeechDetection.js +0 -34
- package/dist/module/hooks/useSpeechDetection.js.map +0 -1
- package/dist/typescript/hooks/useSpeechDetection.d.ts +0 -8
- package/dist/typescript/hooks/useSpeechDetection.d.ts.map +0 -1
- package/src/hooks/useSpeechDetection.ts +0 -35
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.33.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.32.4...@stream-io/video-react-native-sdk-1.33.0) (2026-04-28)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
- `@stream-io/react-native-callingx` updated to version `0.1.1`
|
|
10
|
+
- `@stream-io/video-filters-react-native` updated to version `0.12.1`
|
|
11
|
+
- `@stream-io/video-client` updated to version `1.48.0`
|
|
12
|
+
- `@stream-io/video-react-bindings` updated to version `1.15.0`
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- audio connecting hook in bindings and RN UI ([#2214](https://github.com/GetStream/stream-video-js/issues/2214)) ([44c38fa](https://github.com/GetStream/stream-video-js/commit/44c38faaccb5327f6cd5cd6e70781bad93deafaf))
|
|
17
|
+
- **rn:** remove peer connection usage in speech detection ([#2200](https://github.com/GetStream/stream-video-js/issues/2200)) ([1c73d10](https://github.com/GetStream/stream-video-js/commit/1c73d10cc25761c08a8f9350e44137afaee33acf))
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **rn:** perf and stability fixes for video-filters ([#2216](https://github.com/GetStream/stream-video-js/issues/2216)) ([db1405b](https://github.com/GetStream/stream-video-js/commit/db1405b02a5745ee14a54a76a164c47ed59f56c6))
|
|
22
|
+
|
|
5
23
|
## [1.32.4](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.32.3...@stream-io/video-react-native-sdk-1.32.4) (2026-04-23)
|
|
6
24
|
|
|
7
25
|
### Bug Fixes
|
|
@@ -60,6 +60,7 @@ const ParticipantLabel = ({
|
|
|
60
60
|
const isAudioMuted = !(0, _videoClient.hasAudio)(participant);
|
|
61
61
|
const isVideoMuted = !(0, _videoClient.hasVideo)(participant);
|
|
62
62
|
const isTrackPaused = trackType && (0, _videoClient.hasPausedTrack)(participant, trackType);
|
|
63
|
+
const isAudioConnecting = (0, _videoReactBindings.useIsAudioConnecting)(participant);
|
|
63
64
|
if (trackType === 'screenShareTrack') {
|
|
64
65
|
const screenShareText = isLocalParticipant ? t('You are sharing your screen') : t('{{ userName }} is sharing their screen', {
|
|
65
66
|
userName: participantName
|
|
@@ -89,7 +90,11 @@ const ParticipantLabel = ({
|
|
|
89
90
|
}, container]
|
|
90
91
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
91
92
|
style: styles.wrapper
|
|
92
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNative.
|
|
93
|
+
}, isAudioConnecting && /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
|
|
94
|
+
size: "small",
|
|
95
|
+
color: colors.iconPrimary,
|
|
96
|
+
style: styles.audioConnectingIndicator
|
|
97
|
+
}), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
93
98
|
style: [styles.userNameLabel, userNameLabel],
|
|
94
99
|
numberOfLines: 1
|
|
95
100
|
}, participantLabel), isAudioMuted && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -148,6 +153,10 @@ const useStyles = () => {
|
|
|
148
153
|
fontWeight: '400',
|
|
149
154
|
color: theme.colors.textPrimary
|
|
150
155
|
},
|
|
156
|
+
audioConnectingIndicator: {
|
|
157
|
+
marginRight: theme.variants.spacingSizes.sm,
|
|
158
|
+
justifyContent: 'center'
|
|
159
|
+
},
|
|
151
160
|
screenShareIconContainer: {
|
|
152
161
|
marginRight: theme.variants.spacingSizes.sm,
|
|
153
162
|
justifyContent: 'center'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_icons","_videoReactBindings","_TestIds","_constants","_videoClient","_ThemeContext","_SpeechIndicator","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ParticipantLabel","participant","trackType","theme","colors","typefaces","variants","iconSizes","participantLabel","container","userNameLabel","audioMutedIconContainer","videoMutedIconContainer","pinIconContainer","screenShareIconContainer","useTheme","styles","useStyles","name","userId","pin","sessionId","isLocalParticipant","useCall","useI18n","participantName","isAudioMuted","hasAudio","isVideoMuted","hasVideo","isTrackPaused","hasPausedTrack","screenShareText","userName","createElement","View","style","backgroundColor","sheetOverlay","testID","ComponentTestIds","PARTICIPANT_SCREEN_SHARING","height","md","width","ScreenShareIndicator","color","iconPrimary","Text","textPrimary","caption","numberOfLines","wrapper","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_icons","_videoReactBindings","_TestIds","_constants","_videoClient","_ThemeContext","_SpeechIndicator","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ParticipantLabel","participant","trackType","theme","colors","typefaces","variants","iconSizes","participantLabel","container","userNameLabel","audioMutedIconContainer","videoMutedIconContainer","pinIconContainer","screenShareIconContainer","useTheme","styles","useStyles","name","userId","pin","sessionId","isLocalParticipant","useCall","useI18n","participantName","isAudioMuted","hasAudio","isVideoMuted","hasVideo","isTrackPaused","hasPausedTrack","isAudioConnecting","useIsAudioConnecting","screenShareText","userName","createElement","View","style","backgroundColor","sheetOverlay","testID","ComponentTestIds","PARTICIPANT_SCREEN_SHARING","height","md","width","ScreenShareIndicator","color","iconPrimary","Text","textPrimary","caption","numberOfLines","wrapper","ActivityIndicator","size","audioConnectingIndicator","MicOff","sm","VideoSlash","trackPausedIconContainer","BadNetwork","Pressable","onPress","isLocalPin","unpin","undefined","PinVertical","indicatorWrapper","isSpeaking","isDominantSpeaker","exports","useMemo","StyleSheet","create","marginLeft","spacingSizes","flexDirection","alignItems","padding","maxHeight","borderTopRightRadius","marginBottom","flexShrink","zIndex","Z_INDEX","IN_FRONT","marginTop","fontSize","fontWeight","marginRight","justifyContent","xs"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/ParticipantLabel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -56,21 +56,28 @@ const BackgroundFiltersProvider = ({
|
|
|
56
56
|
const isBackgroundBlurRegisteredRef = (0, _react.useRef)(false);
|
|
57
57
|
const isVideoBlurRegisteredRef = (0, _react.useRef)(false);
|
|
58
58
|
const registeredImageFiltersSetRef = (0, _react.useRef)(new Set());
|
|
59
|
+
// The currently applied native filter name. Used to reapply on track
|
|
60
|
+
// replacement, and as a staleness signal so a later apply/disable can
|
|
61
|
+
// invalidate an in-flight apply() call.
|
|
62
|
+
const lastAppliedFilterNameRef = (0, _react.useRef)(null);
|
|
59
63
|
const [currentBackgroundFilter, setCurrentBackgroundFilter] = (0, _react.useState)();
|
|
60
64
|
const applyBackgroundBlurFilter = (0, _react.useCallback)(async blurIntensity => {
|
|
61
65
|
if (!isSupported) {
|
|
62
66
|
return;
|
|
63
67
|
}
|
|
64
|
-
if (!isBackgroundBlurRegisteredRef.current) {
|
|
65
|
-
await videoFiltersModule?.registerBackgroundBlurVideoFilters();
|
|
66
|
-
isBackgroundBlurRegisteredRef.current = true;
|
|
67
|
-
}
|
|
68
68
|
let filterName = 'BackgroundBlurMedium';
|
|
69
69
|
if (blurIntensity === 'heavy') {
|
|
70
70
|
filterName = 'BackgroundBlurHeavy';
|
|
71
71
|
} else if (blurIntensity === 'light') {
|
|
72
72
|
filterName = 'BackgroundBlurLight';
|
|
73
73
|
}
|
|
74
|
+
// Set before awaiting so a later apply/disable can mark this call stale.
|
|
75
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
76
|
+
if (!isBackgroundBlurRegisteredRef.current) {
|
|
77
|
+
await videoFiltersModule?.registerBackgroundBlurVideoFilters();
|
|
78
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
79
|
+
isBackgroundBlurRegisteredRef.current = true;
|
|
80
|
+
}
|
|
74
81
|
call?.tracer.trace('backgroundFilters.apply', filterName);
|
|
75
82
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
76
83
|
track._setVideoEffect(filterName);
|
|
@@ -83,16 +90,18 @@ const BackgroundFiltersProvider = ({
|
|
|
83
90
|
if (!isSupported) {
|
|
84
91
|
return;
|
|
85
92
|
}
|
|
86
|
-
if (!isVideoBlurRegisteredRef.current) {
|
|
87
|
-
await videoFiltersModule?.registerBlurVideoFilters();
|
|
88
|
-
isVideoBlurRegisteredRef.current = true;
|
|
89
|
-
}
|
|
90
93
|
let filterName = 'BlurMedium';
|
|
91
94
|
if (blurIntensity === 'heavy') {
|
|
92
95
|
filterName = 'BlurHeavy';
|
|
93
96
|
} else if (blurIntensity === 'light') {
|
|
94
97
|
filterName = 'BlurLight';
|
|
95
98
|
}
|
|
99
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
100
|
+
if (!isVideoBlurRegisteredRef.current) {
|
|
101
|
+
await videoFiltersModule?.registerBlurVideoFilters();
|
|
102
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
103
|
+
isVideoBlurRegisteredRef.current = true;
|
|
104
|
+
}
|
|
96
105
|
call?.tracer.trace('videoFilters.apply', filterName);
|
|
97
106
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
98
107
|
track._setVideoEffect(filterName);
|
|
@@ -107,12 +116,14 @@ const BackgroundFiltersProvider = ({
|
|
|
107
116
|
}
|
|
108
117
|
const source = _reactNative.Image.resolveAssetSource(imageSource);
|
|
109
118
|
const imageUri = source.uri;
|
|
119
|
+
const filterName = `VirtualBackground-${imageUri}`;
|
|
120
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
110
121
|
const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
|
|
111
122
|
if (!registeredImageFiltersSet.has(imageUri)) {
|
|
112
123
|
await videoFiltersModule?.registerVirtualBackgroundFilter(imageSource);
|
|
124
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
113
125
|
registeredImageFiltersSetRef.current.add(imageUri);
|
|
114
126
|
}
|
|
115
|
-
const filterName = `VirtualBackground-${imageUri}`;
|
|
116
127
|
call?.tracer.trace('backgroundFilters.apply', filterName);
|
|
117
128
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
118
129
|
track._setVideoEffect(filterName);
|
|
@@ -126,11 +137,41 @@ const BackgroundFiltersProvider = ({
|
|
|
126
137
|
return;
|
|
127
138
|
}
|
|
128
139
|
call?.tracer.trace('backgroundFilters.disableAll', null);
|
|
140
|
+
// Clearing the ref invalidates any in-flight apply — its stale check will bail.
|
|
141
|
+
lastAppliedFilterNameRef.current = null;
|
|
129
142
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
130
143
|
track._setVideoEffect(null);
|
|
131
144
|
});
|
|
132
145
|
setCurrentBackgroundFilter(undefined);
|
|
133
146
|
}, [call]);
|
|
147
|
+
|
|
148
|
+
// Reapplies the filter on track replacement (flip, enable-after-disable).
|
|
149
|
+
// Releases native filter state on unmount / call change.
|
|
150
|
+
(0, _react.useEffect)(() => {
|
|
151
|
+
if (!call || !isSupported) return;
|
|
152
|
+
const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
|
|
153
|
+
const subscription = call.camera.state.mediaStream$.subscribe(() => {
|
|
154
|
+
const name = lastAppliedFilterNameRef.current;
|
|
155
|
+
if (!name) return;
|
|
156
|
+
call.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
157
|
+
track._setVideoEffect(name);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
return () => {
|
|
161
|
+
subscription.unsubscribe();
|
|
162
|
+
call.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
163
|
+
track._setVideoEffect(null);
|
|
164
|
+
});
|
|
165
|
+
// Drop native processor refs so they can be deallocated. Otherwise the
|
|
166
|
+
// ProcessorProvider registry holds them for the app's lifetime.
|
|
167
|
+
videoFiltersModule?.unregisterAllFilters?.().catch(() => {});
|
|
168
|
+
lastAppliedFilterNameRef.current = null;
|
|
169
|
+
isBackgroundBlurRegisteredRef.current = false;
|
|
170
|
+
isVideoBlurRegisteredRef.current = false;
|
|
171
|
+
registeredImageFiltersSet.clear();
|
|
172
|
+
setCurrentBackgroundFilter(undefined);
|
|
173
|
+
};
|
|
174
|
+
}, [call]);
|
|
134
175
|
const value = (0, _react.useMemo)(() => ({
|
|
135
176
|
currentBackgroundFilter,
|
|
136
177
|
isSupported,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_reactNative","_BackgroundFiltersContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","videoFiltersModule","isSupported","Platform","OS","currentVersion","parseInt","Version","useBackgroundFilters","context","useContext","BackgroundFiltersContext","Error","exports","BackgroundFiltersProvider","children","useCall","isBackgroundBlurRegisteredRef","useRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","currentBackgroundFilter","setCurrentBackgroundFilter","useState","applyBackgroundBlurFilter","useCallback","blurIntensity","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_reactNative","_BackgroundFiltersContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","videoFiltersModule","isSupported","Platform","OS","currentVersion","parseInt","Version","useBackgroundFilters","context","useContext","BackgroundFiltersContext","Error","exports","BackgroundFiltersProvider","children","useCall","isBackgroundBlurRegisteredRef","useRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","lastAppliedFilterNameRef","currentBackgroundFilter","setCurrentBackgroundFilter","useState","applyBackgroundBlurFilter","useCallback","blurIntensity","filterName","current","registerBackgroundBlurVideoFilters","tracer","trace","camera","state","mediaStream","getVideoTracks","forEach","track","_setVideoEffect","blur","applyVideoBlurFilter","registerBlurVideoFilters","applyBackgroundImageFilter","imageSource","source","Image","resolveAssetSource","imageUri","uri","registeredImageFiltersSet","registerVirtualBackgroundFilter","add","image","disableAllFilters","undefined","useEffect","subscription","mediaStream$","subscribe","name","unsubscribe","unregisterAllFilters","catch","clear","value","useMemo","createElement","Provider"],"sourceRoot":"../../../src","sources":["contexts/BackgroundFilters.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -124,17 +124,6 @@ Object.keys(_useScreenshot).forEach(function (key) {
|
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
126
|
});
|
|
127
|
-
var _useSpeechDetection = require("./useSpeechDetection");
|
|
128
|
-
Object.keys(_useSpeechDetection).forEach(function (key) {
|
|
129
|
-
if (key === "default" || key === "__esModule") return;
|
|
130
|
-
if (key in exports && exports[key] === _useSpeechDetection[key]) return;
|
|
131
|
-
Object.defineProperty(exports, key, {
|
|
132
|
-
enumerable: true,
|
|
133
|
-
get: function () {
|
|
134
|
-
return _useSpeechDetection[key];
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
127
|
var _useModeration = require("./useModeration");
|
|
139
128
|
Object.keys(_useModeration).forEach(function (key) {
|
|
140
129
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useScreenShareButton","_useScreenShareAudioMixing","_useTrackDimensions","_useScreenshot","
|
|
1
|
+
{"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useScreenShareButton","_useScreenShareAudioMixing","_useTrackDimensions","_useScreenshot","_useModeration"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.registerSDKGlobals = registerSDKGlobals;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
+
var _reactNativeWebrtc = require("@stream-io/react-native-webrtc");
|
|
8
9
|
var _callingx = require("../push/libs/callingx");
|
|
9
10
|
var _callingx2 = require("./callingx/callingx");
|
|
10
11
|
const StreamInCallManagerNativeModule = _reactNative.NativeModules.StreamInCallManager;
|
|
@@ -82,6 +83,18 @@ const streamRNVideoSDKGlobals = {
|
|
|
82
83
|
// use our own service on iOS
|
|
83
84
|
return Boolean(await StreamVideoReactNativeModule.checkPermission?.(permission));
|
|
84
85
|
}
|
|
86
|
+
},
|
|
87
|
+
nativeEvents: {
|
|
88
|
+
speechActivity: {
|
|
89
|
+
subscribe(cb) {
|
|
90
|
+
const subscription = _reactNativeWebrtc.audioDeviceModuleEvents.addSpeechActivityListener(data => {
|
|
91
|
+
cb({
|
|
92
|
+
isSoundDetected: data.event === 'started'
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
return () => subscription.remove();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
85
98
|
}
|
|
86
99
|
};
|
|
87
100
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_callingx","_callingx2","StreamInCallManagerNativeModule","NativeModules","StreamInCallManager","StreamVideoReactNativeModule","StreamVideoReactNative","CallingxModule","getCallingxLibIfAvailable","shouldBypassForCallKit","isRingingTypeCall","Platform","OS","bypass","isSetup","isOngoingCallsEnabled","streamRNVideoSDKGlobals","callingX","joinCall","joinCallingxCall","endCall","endCallingxCall","registerOutgoingCall","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","permissions","check","permission","nativeAndroidPermission","PermissionsAndroid","PERMISSIONS","CAMERA","RECORD_AUDIO","Boolean","checkPermission","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeWebrtc","_callingx","_callingx2","StreamInCallManagerNativeModule","NativeModules","StreamInCallManager","StreamVideoReactNativeModule","StreamVideoReactNative","CallingxModule","getCallingxLibIfAvailable","shouldBypassForCallKit","isRingingTypeCall","Platform","OS","bypass","isSetup","isOngoingCallsEnabled","streamRNVideoSDKGlobals","callingX","joinCall","joinCallingxCall","endCall","endCallingxCall","registerOutgoingCall","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","permissions","check","permission","nativeAndroidPermission","PermissionsAndroid","PERMISSIONS","CAMERA","RECORD_AUDIO","Boolean","checkPermission","nativeEvents","speechActivity","subscribe","cb","subscription","audioDeviceModuleEvents","addSpeechActivityListener","data","isSoundDetected","event","remove","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAMA,MAAMI,+BAA+B,GAAGC,0BAAa,CAACC,mBAAmB;AACzE,MAAMC,4BAA4B,GAAGF,0BAAa,CAACG,sBAElD;AAED,MAAMC,cAAc,GAAG,IAAAC,mCAAyB,EAAC,CAAC;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,GAAGA,CAAC;EAC9BC;AAGF,CAAC,KAAc;EACb,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAO,KAAK;EACd;EACA,IAAI,CAACL,cAAc,EAAE;IACnB,OAAO,KAAK;EACd;EACA,MAAMM,MAAM,GACVN,cAAc,CAACO,OAAO,KACrBJ,iBAAiB,IAAIH,cAAc,CAACQ,qBAAqB,CAAC;EAC7D,OAAOF,MAAM;AACf,CAAC;AAED,MAAMG,uBAAgD,GAAG;EACvDC,QAAQ,EAAE;IACRC,QAAQ,EAAEC,2BAAgB;IAC1BC,OAAO,EAAEC,0BAAe;IACxBC,oBAAoB,EAAEA;EACxB,CAAC;EACDC,WAAW,EAAE;IACXC,KAAK,EAAEA,CAAC;MAAEC,aAAa;MAAEf;IAAkB,CAAC,KAAK;MAC/C,IAAID,sBAAsB,CAAC;QAAEC;MAAkB,CAAC,CAAC,EAAE;QACjD;MACF;MACAR,+BAA+B,CAACwB,iCAAiC,CAC/DD,aACF,CAAC;MACDvB,+BAA+B,CAACsB,KAAK,CAAC,CAAC;IACzC,CAAC;IACDG,KAAK,EAAEA,CAAC;MAAEjB;IAAkB,CAAC,KAAK;MAChC,IAAID,sBAAsB,CAAC;QAAEC;MAAkB,CAAC,CAAC,EAAE;QACjD;MACF;MACAR,+BAA+B,CAACyB,KAAK,CAAC,CAAC;IACzC,CAAC;IACDC,IAAI,EAAEA,CAAC;MAAElB;IAAkB,CAAC,KAAK;MAC/B,IAAID,sBAAsB,CAAC;QAAEC;MAAkB,CAAC,CAAC,EAAE;QACjD;MACF;MACAR,+BAA+B,CAAC0B,IAAI,CAAC,CAAC;IACxC;EACF,CAAC;EACDC,WAAW,EAAE;IACXC,KAAK,EAAE,MAAOC,UAAU,IAAK;MAC3B,IAAIpB,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;QAC7B,MAAMoB,uBAAuB,GAC3BD,UAAU,KAAK,QAAQ,GACnBE,+BAAkB,CAACC,WAAW,CAACC,MAAM,GACrCF,+BAAkB,CAACC,WAAW,CAACE,YAAY;QACjD,OAAOH,+BAAkB,CAACH,KAAK,CAACE,uBAAuB,CAAC;MAC1D;;MAEA;MACA,OAAOK,OAAO,CACZ,MAAMhC,4BAA4B,CAACiC,eAAe,GAAGP,UAAU,CACjE,CAAC;IACH;EACF,CAAC;EACDQ,YAAY,EAAE;IACZC,cAAc,EAAE;MACdC,SAASA,CAACC,EAAE,EAAE;QACZ,MAAMC,YAAY,GAAGC,0CAAuB,CAACC,yBAAyB,CACnEC,IAAI,IAAK;UACRJ,EAAE,CAAC;YAAEK,eAAe,EAAED,IAAI,CAACE,KAAK,KAAK;UAAU,CAAC,CAAC;QACnD,CACF,CAAC;QACD,OAAO,MAAML,YAAY,CAACM,MAAM,CAAC,CAAC;MACpC;IACF;EACF;AACF,CAAC;;AAED;AACA;AACA;AACO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,IAAI,CAACC,MAAM,CAACC,gBAAgB,EAAE;IAC5BD,MAAM,CAACC,gBAAgB,GAAGpC,uBAAuB;EACnD;AACF","ignoreList":[]}
|
package/dist/commonjs/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import { Pressable, StyleSheet, Text, View } from 'react-native';
|
|
2
|
+
import { Pressable, StyleSheet, Text, View, ActivityIndicator } from 'react-native';
|
|
3
3
|
import { BadNetwork, MicOff, PinVertical, ScreenShareIndicator, VideoSlash } from '../../../icons';
|
|
4
|
-
import { useCall, useI18n } from '@stream-io/video-react-bindings';
|
|
4
|
+
import { useCall, useI18n, useIsAudioConnecting } from '@stream-io/video-react-bindings';
|
|
5
5
|
import { ComponentTestIds } from '../../../constants/TestIds';
|
|
6
6
|
import { Z_INDEX } from '../../../constants';
|
|
7
7
|
import { hasAudio, hasPausedTrack, hasVideo } from '@stream-io/video-client';
|
|
@@ -53,6 +53,7 @@ export const ParticipantLabel = ({
|
|
|
53
53
|
const isAudioMuted = !hasAudio(participant);
|
|
54
54
|
const isVideoMuted = !hasVideo(participant);
|
|
55
55
|
const isTrackPaused = trackType && hasPausedTrack(participant, trackType);
|
|
56
|
+
const isAudioConnecting = useIsAudioConnecting(participant);
|
|
56
57
|
if (trackType === 'screenShareTrack') {
|
|
57
58
|
const screenShareText = isLocalParticipant ? t('You are sharing your screen') : t('{{ userName }} is sharing their screen', {
|
|
58
59
|
userName: participantName
|
|
@@ -82,7 +83,11 @@ export const ParticipantLabel = ({
|
|
|
82
83
|
}, container]
|
|
83
84
|
}, /*#__PURE__*/React.createElement(View, {
|
|
84
85
|
style: styles.wrapper
|
|
85
|
-
}, /*#__PURE__*/React.createElement(
|
|
86
|
+
}, isAudioConnecting && /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
87
|
+
size: "small",
|
|
88
|
+
color: colors.iconPrimary,
|
|
89
|
+
style: styles.audioConnectingIndicator
|
|
90
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
86
91
|
style: [styles.userNameLabel, userNameLabel],
|
|
87
92
|
numberOfLines: 1
|
|
88
93
|
}, participantLabel), isAudioMuted && /*#__PURE__*/React.createElement(View, {
|
|
@@ -140,6 +145,10 @@ const useStyles = () => {
|
|
|
140
145
|
fontWeight: '400',
|
|
141
146
|
color: theme.colors.textPrimary
|
|
142
147
|
},
|
|
148
|
+
audioConnectingIndicator: {
|
|
149
|
+
marginRight: theme.variants.spacingSizes.sm,
|
|
150
|
+
justifyContent: 'center'
|
|
151
|
+
},
|
|
143
152
|
screenShareIconContainer: {
|
|
144
153
|
marginRight: theme.variants.spacingSizes.sm,
|
|
145
154
|
justifyContent: 'center'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","Pressable","StyleSheet","Text","View","BadNetwork","MicOff","PinVertical","ScreenShareIndicator","VideoSlash","useCall","useI18n","ComponentTestIds","Z_INDEX","hasAudio","hasPausedTrack","hasVideo","useTheme","SpeechIndicator","ParticipantLabel","participant","trackType","theme","colors","typefaces","variants","iconSizes","participantLabel","container","userNameLabel","audioMutedIconContainer","videoMutedIconContainer","pinIconContainer","screenShareIconContainer","styles","useStyles","name","userId","pin","sessionId","isLocalParticipant","call","t","participantName","isAudioMuted","isVideoMuted","isTrackPaused","screenShareText","userName","createElement","style","backgroundColor","sheetOverlay","testID","PARTICIPANT_SCREEN_SHARING","height","md","width","color","iconPrimary","textPrimary","caption","numberOfLines","wrapper","size","sm","trackPausedIconContainer","onPress","isLocalPin","unpin","undefined","indicatorWrapper","isSpeaking","isDominantSpeaker","create","marginLeft","spacingSizes","flexDirection","alignItems","padding","maxHeight","borderTopRightRadius","marginBottom","flexShrink","zIndex","IN_FRONT","marginTop","fontSize","fontWeight","marginRight","justifyContent","xs"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/ParticipantLabel.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,
|
|
1
|
+
{"version":3,"names":["React","useMemo","Pressable","StyleSheet","Text","View","ActivityIndicator","BadNetwork","MicOff","PinVertical","ScreenShareIndicator","VideoSlash","useCall","useI18n","useIsAudioConnecting","ComponentTestIds","Z_INDEX","hasAudio","hasPausedTrack","hasVideo","useTheme","SpeechIndicator","ParticipantLabel","participant","trackType","theme","colors","typefaces","variants","iconSizes","participantLabel","container","userNameLabel","audioMutedIconContainer","videoMutedIconContainer","pinIconContainer","screenShareIconContainer","styles","useStyles","name","userId","pin","sessionId","isLocalParticipant","call","t","participantName","isAudioMuted","isVideoMuted","isTrackPaused","isAudioConnecting","screenShareText","userName","createElement","style","backgroundColor","sheetOverlay","testID","PARTICIPANT_SCREEN_SHARING","height","md","width","color","iconPrimary","textPrimary","caption","numberOfLines","wrapper","size","audioConnectingIndicator","sm","trackPausedIconContainer","onPress","isLocalPin","unpin","undefined","indicatorWrapper","isSpeaking","isDominantSpeaker","create","marginLeft","spacingSizes","flexDirection","alignItems","padding","maxHeight","borderTopRightRadius","marginBottom","flexShrink","zIndex","IN_FRONT","marginTop","fontSize","fontWeight","marginRight","justifyContent","xs"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/ParticipantLabel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useContext, useMemo, useRef, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { useCall } from '@stream-io/video-react-bindings';
|
|
3
3
|
import { Image, Platform } from 'react-native';
|
|
4
4
|
import { BackgroundFiltersContext } from './internal/BackgroundFiltersContext';
|
|
@@ -49,21 +49,28 @@ export const BackgroundFiltersProvider = ({
|
|
|
49
49
|
const isBackgroundBlurRegisteredRef = useRef(false);
|
|
50
50
|
const isVideoBlurRegisteredRef = useRef(false);
|
|
51
51
|
const registeredImageFiltersSetRef = useRef(new Set());
|
|
52
|
+
// The currently applied native filter name. Used to reapply on track
|
|
53
|
+
// replacement, and as a staleness signal so a later apply/disable can
|
|
54
|
+
// invalidate an in-flight apply() call.
|
|
55
|
+
const lastAppliedFilterNameRef = useRef(null);
|
|
52
56
|
const [currentBackgroundFilter, setCurrentBackgroundFilter] = useState();
|
|
53
57
|
const applyBackgroundBlurFilter = useCallback(async blurIntensity => {
|
|
54
58
|
if (!isSupported) {
|
|
55
59
|
return;
|
|
56
60
|
}
|
|
57
|
-
if (!isBackgroundBlurRegisteredRef.current) {
|
|
58
|
-
await videoFiltersModule?.registerBackgroundBlurVideoFilters();
|
|
59
|
-
isBackgroundBlurRegisteredRef.current = true;
|
|
60
|
-
}
|
|
61
61
|
let filterName = 'BackgroundBlurMedium';
|
|
62
62
|
if (blurIntensity === 'heavy') {
|
|
63
63
|
filterName = 'BackgroundBlurHeavy';
|
|
64
64
|
} else if (blurIntensity === 'light') {
|
|
65
65
|
filterName = 'BackgroundBlurLight';
|
|
66
66
|
}
|
|
67
|
+
// Set before awaiting so a later apply/disable can mark this call stale.
|
|
68
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
69
|
+
if (!isBackgroundBlurRegisteredRef.current) {
|
|
70
|
+
await videoFiltersModule?.registerBackgroundBlurVideoFilters();
|
|
71
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
72
|
+
isBackgroundBlurRegisteredRef.current = true;
|
|
73
|
+
}
|
|
67
74
|
call?.tracer.trace('backgroundFilters.apply', filterName);
|
|
68
75
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
69
76
|
track._setVideoEffect(filterName);
|
|
@@ -76,16 +83,18 @@ export const BackgroundFiltersProvider = ({
|
|
|
76
83
|
if (!isSupported) {
|
|
77
84
|
return;
|
|
78
85
|
}
|
|
79
|
-
if (!isVideoBlurRegisteredRef.current) {
|
|
80
|
-
await videoFiltersModule?.registerBlurVideoFilters();
|
|
81
|
-
isVideoBlurRegisteredRef.current = true;
|
|
82
|
-
}
|
|
83
86
|
let filterName = 'BlurMedium';
|
|
84
87
|
if (blurIntensity === 'heavy') {
|
|
85
88
|
filterName = 'BlurHeavy';
|
|
86
89
|
} else if (blurIntensity === 'light') {
|
|
87
90
|
filterName = 'BlurLight';
|
|
88
91
|
}
|
|
92
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
93
|
+
if (!isVideoBlurRegisteredRef.current) {
|
|
94
|
+
await videoFiltersModule?.registerBlurVideoFilters();
|
|
95
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
96
|
+
isVideoBlurRegisteredRef.current = true;
|
|
97
|
+
}
|
|
89
98
|
call?.tracer.trace('videoFilters.apply', filterName);
|
|
90
99
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
91
100
|
track._setVideoEffect(filterName);
|
|
@@ -100,12 +109,14 @@ export const BackgroundFiltersProvider = ({
|
|
|
100
109
|
}
|
|
101
110
|
const source = Image.resolveAssetSource(imageSource);
|
|
102
111
|
const imageUri = source.uri;
|
|
112
|
+
const filterName = `VirtualBackground-${imageUri}`;
|
|
113
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
103
114
|
const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
|
|
104
115
|
if (!registeredImageFiltersSet.has(imageUri)) {
|
|
105
116
|
await videoFiltersModule?.registerVirtualBackgroundFilter(imageSource);
|
|
117
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
106
118
|
registeredImageFiltersSetRef.current.add(imageUri);
|
|
107
119
|
}
|
|
108
|
-
const filterName = `VirtualBackground-${imageUri}`;
|
|
109
120
|
call?.tracer.trace('backgroundFilters.apply', filterName);
|
|
110
121
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
111
122
|
track._setVideoEffect(filterName);
|
|
@@ -119,11 +130,41 @@ export const BackgroundFiltersProvider = ({
|
|
|
119
130
|
return;
|
|
120
131
|
}
|
|
121
132
|
call?.tracer.trace('backgroundFilters.disableAll', null);
|
|
133
|
+
// Clearing the ref invalidates any in-flight apply — its stale check will bail.
|
|
134
|
+
lastAppliedFilterNameRef.current = null;
|
|
122
135
|
call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
123
136
|
track._setVideoEffect(null);
|
|
124
137
|
});
|
|
125
138
|
setCurrentBackgroundFilter(undefined);
|
|
126
139
|
}, [call]);
|
|
140
|
+
|
|
141
|
+
// Reapplies the filter on track replacement (flip, enable-after-disable).
|
|
142
|
+
// Releases native filter state on unmount / call change.
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
if (!call || !isSupported) return;
|
|
145
|
+
const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
|
|
146
|
+
const subscription = call.camera.state.mediaStream$.subscribe(() => {
|
|
147
|
+
const name = lastAppliedFilterNameRef.current;
|
|
148
|
+
if (!name) return;
|
|
149
|
+
call.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
150
|
+
track._setVideoEffect(name);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
return () => {
|
|
154
|
+
subscription.unsubscribe();
|
|
155
|
+
call.camera.state.mediaStream?.getVideoTracks().forEach(track => {
|
|
156
|
+
track._setVideoEffect(null);
|
|
157
|
+
});
|
|
158
|
+
// Drop native processor refs so they can be deallocated. Otherwise the
|
|
159
|
+
// ProcessorProvider registry holds them for the app's lifetime.
|
|
160
|
+
videoFiltersModule?.unregisterAllFilters?.().catch(() => {});
|
|
161
|
+
lastAppliedFilterNameRef.current = null;
|
|
162
|
+
isBackgroundBlurRegisteredRef.current = false;
|
|
163
|
+
isVideoBlurRegisteredRef.current = false;
|
|
164
|
+
registeredImageFiltersSet.clear();
|
|
165
|
+
setCurrentBackgroundFilter(undefined);
|
|
166
|
+
};
|
|
167
|
+
}, [call]);
|
|
127
168
|
const value = useMemo(() => ({
|
|
128
169
|
currentBackgroundFilter,
|
|
129
170
|
isSupported,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","useMemo","useRef","useState","useCall","Image","Platform","BackgroundFiltersContext","videoFiltersModule","require","isSupported","OS","currentVersion","parseInt","Version","useBackgroundFilters","context","Error","BackgroundFiltersProvider","children","call","isBackgroundBlurRegisteredRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","currentBackgroundFilter","setCurrentBackgroundFilter","applyBackgroundBlurFilter","blurIntensity","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useContext","useEffect","useMemo","useRef","useState","useCall","Image","Platform","BackgroundFiltersContext","videoFiltersModule","require","isSupported","OS","currentVersion","parseInt","Version","useBackgroundFilters","context","Error","BackgroundFiltersProvider","children","call","isBackgroundBlurRegisteredRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","lastAppliedFilterNameRef","currentBackgroundFilter","setCurrentBackgroundFilter","applyBackgroundBlurFilter","blurIntensity","filterName","current","registerBackgroundBlurVideoFilters","tracer","trace","camera","state","mediaStream","getVideoTracks","forEach","track","_setVideoEffect","blur","applyVideoBlurFilter","registerBlurVideoFilters","applyBackgroundImageFilter","imageSource","source","resolveAssetSource","imageUri","uri","registeredImageFiltersSet","has","registerVirtualBackgroundFilter","add","image","disableAllFilters","undefined","subscription","mediaStream$","subscribe","name","unsubscribe","unregisterAllFilters","catch","clear","value","createElement","Provider"],"sourceRoot":"../../../src","sources":["contexts/BackgroundFilters.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAEVC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AAEd,SAASC,OAAO,QAAQ,iCAAiC;AACzD,SAASC,KAAK,EAAEC,QAAQ,QAAQ,cAAc;AAC9C,SACEC,wBAAwB,QAInB,qCAAqC;;AAE5C;;AAUA,IAAIC,kBAAsD;AAE1D,IAAI;EACFA,kBAAkB,GAAGC,OAAO,CAAC,uCAAuC,CAAC;AACvE,CAAC,CAAC,MAAM,CAAC;AAET,MAAMC,WAAW,GAAI,YAAY;EAC/B,IAAI,CAACF,kBAAkB,EAAE,OAAO,KAAK;EACrC,IAAIF,QAAQ,CAACK,EAAE,KAAK,KAAK,EAAE;IACzB;IACA,MAAMC,cAAc,GAAGC,QAAQ,CAACP,QAAQ,CAACQ,OAAO,EAAE,EAAE,CAAC;IACrD,OAAOF,cAAc,IAAI,EAAE;EAC7B;EACA,OAAON,QAAQ,CAACK,EAAE,KAAK,SAAS;AAClC,CAAC,CAAE,CAAC;;AAEJ;AACA;AACA;AACA,OAAO,MAAMI,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,OAAO,GAAGjB,UAAU,CAACQ,wBAAwB,CAAC;EACpD,IAAI,CAACS,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,sEACF,CAAC;EACH;EACA,IAAI,CAACT,kBAAkB,EAAE;IACvB,MAAM,IAAIS,KAAK,CACb,uFACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,yBAAyB,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAC5E,IAAI,CAACX,kBAAkB,EAAE;IACvB,MAAM,IAAIS,KAAK,CACb,uFACF,CAAC;EACH;EACA,MAAMG,IAAI,GAAGhB,OAAO,CAAC,CAAC;EACtB,MAAMiB,6BAA6B,GAAGnB,MAAM,CAAC,KAAK,CAAC;EACnD,MAAMoB,wBAAwB,GAAGpB,MAAM,CAAC,KAAK,CAAC;EAC9C,MAAMqB,4BAA4B,GAAGrB,MAAM,CAAC,IAAIsB,GAAG,CAAS,CAAC,CAAC;EAC9D;EACA;EACA;EACA,MAAMC,wBAAwB,GAAGvB,MAAM,CAAgB,IAAI,CAAC;EAE5D,MAAM,CAACwB,uBAAuB,EAAEC,0BAA0B,CAAC,GACzDxB,QAAQ,CAA0B,CAAC;EAErC,MAAMyB,yBAAyB,GAAG9B,WAAW,CAC3C,MAAO+B,aAA4B,IAAK;IACtC,IAAI,CAACnB,WAAW,EAAE;MAChB;IACF;IACA,IAAIoB,UAAU,GAAG,sBAAsB;IACvC,IAAID,aAAa,KAAK,OAAO,EAAE;MAC7BC,UAAU,GAAG,qBAAqB;IACpC,CAAC,MAAM,IAAID,aAAa,KAAK,OAAO,EAAE;MACpCC,UAAU,GAAG,qBAAqB;IACpC;IACA;IACAL,wBAAwB,CAACM,OAAO,GAAGD,UAAU;IAC7C,IAAI,CAACT,6BAA6B,CAACU,OAAO,EAAE;MAC1C,MAAMvB,kBAAkB,EAAEwB,kCAAkC,CAAC,CAAC;MAC9D,IAAIP,wBAAwB,CAACM,OAAO,KAAKD,UAAU,EAAE;MACrDT,6BAA6B,CAACU,OAAO,GAAG,IAAI;IAC9C;IACAX,IAAI,EAAEa,MAAM,CAACC,KAAK,CAAC,yBAAyB,EAAEJ,UAAU,CAAC;IACxDV,IAAI,EAAEe,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAACX,UAAU,CAAC;IACnC,CAAC,CAAC;IACJH,0BAA0B,CAAC;MAAEe,IAAI,EAAEb;IAAc,CAAC,CAAC;EACrD,CAAC,EACD,CAACT,IAAI,CACP,CAAC;EAED,MAAMuB,oBAAoB,GAAG7C,WAAW,CACtC,MAAO+B,aAA4B,IAAK;IACtC,IAAI,CAACnB,WAAW,EAAE;MAChB;IACF;IACA,IAAIoB,UAAU,GAAG,YAAY;IAC7B,IAAID,aAAa,KAAK,OAAO,EAAE;MAC7BC,UAAU,GAAG,WAAW;IAC1B,CAAC,MAAM,IAAID,aAAa,KAAK,OAAO,EAAE;MACpCC,UAAU,GAAG,WAAW;IAC1B;IACAL,wBAAwB,CAACM,OAAO,GAAGD,UAAU;IAC7C,IAAI,CAACR,wBAAwB,CAACS,OAAO,EAAE;MACrC,MAAMvB,kBAAkB,EAAEoC,wBAAwB,CAAC,CAAC;MACpD,IAAInB,wBAAwB,CAACM,OAAO,KAAKD,UAAU,EAAE;MACrDR,wBAAwB,CAACS,OAAO,GAAG,IAAI;IACzC;IACAX,IAAI,EAAEa,MAAM,CAACC,KAAK,CAAC,oBAAoB,EAAEJ,UAAU,CAAC;IACnDV,IAAI,EAAEe,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAACX,UAAU,CAAC;IACnC,CAAC,CAAC;IACJH,0BAA0B,CAAC;MAAEe,IAAI,EAAEb;IAAc,CAAC,CAAC;EACrD,CAAC,EACD,CAACT,IAAI,CACP,CAAC;EAED,MAAMyB,0BAA0B,GAAG/C,WAAW,CAC5C,MAAOgD,WAA4B,IAAK;IACtC,IAAI,CAACpC,WAAW,EAAE;MAChB;IACF;IACA,MAAMqC,MAAM,GAAG1C,KAAK,CAAC2C,kBAAkB,CAACF,WAAW,CAAC;IACpD,MAAMG,QAAQ,GAAGF,MAAM,CAACG,GAAG;IAC3B,MAAMpB,UAAU,GAAG,qBAAqBmB,QAAQ,EAAE;IAClDxB,wBAAwB,CAACM,OAAO,GAAGD,UAAU;IAC7C,MAAMqB,yBAAyB,GAAG5B,4BAA4B,CAACQ,OAAO;IACtE,IAAI,CAACoB,yBAAyB,CAACC,GAAG,CAACH,QAAQ,CAAC,EAAE;MAC5C,MAAMzC,kBAAkB,EAAE6C,+BAA+B,CAACP,WAAW,CAAC;MACtE,IAAIrB,wBAAwB,CAACM,OAAO,KAAKD,UAAU,EAAE;MACrDP,4BAA4B,CAACQ,OAAO,CAACuB,GAAG,CAACL,QAAQ,CAAC;IACpD;IACA7B,IAAI,EAAEa,MAAM,CAACC,KAAK,CAAC,yBAAyB,EAAEJ,UAAU,CAAC;IACxDV,IAAI,EAAEe,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAACX,UAAU,CAAC;IACnC,CAAC,CAAC;IACJH,0BAA0B,CAAC;MAAE4B,KAAK,EAAET;IAAY,CAAC,CAAC;EACpD,CAAC,EACD,CAAC1B,IAAI,CACP,CAAC;EAED,MAAMoC,iBAAiB,GAAG1D,WAAW,CAAC,MAAM;IAC1C,IAAI,CAACY,WAAW,EAAE;MAChB;IACF;IACAU,IAAI,EAAEa,MAAM,CAACC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC;IACxD;IACAT,wBAAwB,CAACM,OAAO,GAAG,IAAI;IACtCX,IAAI,EAAEe,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAAC,IAAI,CAAC;IAC7B,CAAC,CAAC;IACJd,0BAA0B,CAAC8B,SAAS,CAAC;EACvC,CAAC,EAAE,CAACrC,IAAI,CAAC,CAAC;;EAEV;EACA;EACApB,SAAS,CAAC,MAAM;IACd,IAAI,CAACoB,IAAI,IAAI,CAACV,WAAW,EAAE;IAC3B,MAAMyC,yBAAyB,GAAG5B,4BAA4B,CAACQ,OAAO;IACtE,MAAM2B,YAAY,GAAGtC,IAAI,CAACe,MAAM,CAACC,KAAK,CAACuB,YAAY,CAACC,SAAS,CAAC,MAAM;MAClE,MAAMC,IAAI,GAAGpC,wBAAwB,CAACM,OAAO;MAC7C,IAAI,CAAC8B,IAAI,EAAE;MACVzC,IAAI,CAACe,MAAM,CAACC,KAAK,CAACC,WAAW,EAC1BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;QAClBA,KAAK,CAACC,eAAe,CAACoB,IAAI,CAAC;MAC7B,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAO,MAAM;MACXH,YAAY,CAACI,WAAW,CAAC,CAAC;MACzB1C,IAAI,CAACe,MAAM,CAACC,KAAK,CAACC,WAAW,EAC1BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;QAClBA,KAAK,CAACC,eAAe,CAAC,IAAI,CAAC;MAC7B,CAAC,CAAC;MACJ;MACA;MACAjC,kBAAkB,EAAEuD,oBAAoB,GAAG,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAC5DvC,wBAAwB,CAACM,OAAO,GAAG,IAAI;MACvCV,6BAA6B,CAACU,OAAO,GAAG,KAAK;MAC7CT,wBAAwB,CAACS,OAAO,GAAG,KAAK;MACxCoB,yBAAyB,CAACc,KAAK,CAAC,CAAC;MACjCtC,0BAA0B,CAAC8B,SAAS,CAAC;IACvC,CAAC;EACH,CAAC,EAAE,CAACrC,IAAI,CAAC,CAAC;EAEV,MAAM8C,KAAK,GAAGjE,OAAO,CACnB,OAAO;IACLyB,uBAAuB;IACvBhB,WAAW;IACXmC,0BAA0B;IAC1BjB,yBAAyB;IACzBe,oBAAoB;IACpBa;EACF,CAAC,CAAC,EACF,CACE5B,yBAAyB,EACzBiB,0BAA0B,EAC1BF,oBAAoB,EACpBjB,uBAAuB,EACvB8B,iBAAiB,CAErB,CAAC;EAED,oBACE3D,KAAA,CAAAsE,aAAA,CAAC5D,wBAAwB,CAAC6D,QAAQ;IAACF,KAAK,EAAEA;EAAM,GAC7C/C,QACgC,CAAC;AAExC,CAAC","ignoreList":[]}
|
|
@@ -9,6 +9,5 @@ export * from './useScreenShareButton';
|
|
|
9
9
|
export * from './useScreenShareAudioMixing';
|
|
10
10
|
export * from './useTrackDimensions';
|
|
11
11
|
export * from './useScreenshot';
|
|
12
|
-
export * from './useSpeechDetection';
|
|
13
12
|
export * from './useModeration';
|
|
14
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NativeModules, PermissionsAndroid, Platform } from 'react-native';
|
|
2
|
+
import { audioDeviceModuleEvents } from '@stream-io/react-native-webrtc';
|
|
2
3
|
import { getCallingxLibIfAvailable } from '../push/libs/callingx';
|
|
3
4
|
import { endCallingxCall, registerOutgoingCall, joinCallingxCall } from './callingx/callingx';
|
|
4
5
|
const StreamInCallManagerNativeModule = NativeModules.StreamInCallManager;
|
|
@@ -76,6 +77,18 @@ const streamRNVideoSDKGlobals = {
|
|
|
76
77
|
// use our own service on iOS
|
|
77
78
|
return Boolean(await StreamVideoReactNativeModule.checkPermission?.(permission));
|
|
78
79
|
}
|
|
80
|
+
},
|
|
81
|
+
nativeEvents: {
|
|
82
|
+
speechActivity: {
|
|
83
|
+
subscribe(cb) {
|
|
84
|
+
const subscription = audioDeviceModuleEvents.addSpeechActivityListener(data => {
|
|
85
|
+
cb({
|
|
86
|
+
isSoundDetected: data.event === 'started'
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
return () => subscription.remove();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
79
92
|
}
|
|
80
93
|
};
|
|
81
94
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","PermissionsAndroid","Platform","getCallingxLibIfAvailable","endCallingxCall","registerOutgoingCall","joinCallingxCall","StreamInCallManagerNativeModule","StreamInCallManager","StreamVideoReactNativeModule","StreamVideoReactNative","CallingxModule","shouldBypassForCallKit","isRingingTypeCall","OS","bypass","isSetup","isOngoingCallsEnabled","streamRNVideoSDKGlobals","callingX","joinCall","endCall","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","permissions","check","permission","nativeAndroidPermission","PERMISSIONS","CAMERA","RECORD_AUDIO","Boolean","checkPermission","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":"AACA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAC1E,SAASC,yBAAyB,QAAQ,uBAAuB;AACjE,SACEC,eAAe,EACfC,oBAAoB,EACpBC,gBAAgB,QACX,qBAAqB;AAE5B,MAAMC,+BAA+B,
|
|
1
|
+
{"version":3,"names":["NativeModules","PermissionsAndroid","Platform","audioDeviceModuleEvents","getCallingxLibIfAvailable","endCallingxCall","registerOutgoingCall","joinCallingxCall","StreamInCallManagerNativeModule","StreamInCallManager","StreamVideoReactNativeModule","StreamVideoReactNative","CallingxModule","shouldBypassForCallKit","isRingingTypeCall","OS","bypass","isSetup","isOngoingCallsEnabled","streamRNVideoSDKGlobals","callingX","joinCall","endCall","callManager","setup","defaultDevice","setDefaultAudioDeviceEndpointType","start","stop","permissions","check","permission","nativeAndroidPermission","PERMISSIONS","CAMERA","RECORD_AUDIO","Boolean","checkPermission","nativeEvents","speechActivity","subscribe","cb","subscription","addSpeechActivityListener","data","isSoundDetected","event","remove","registerSDKGlobals","global","streamRNVideoSDK"],"sourceRoot":"../../../../src","sources":["utils/internal/registerSDKGlobals.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '1.
|
|
1
|
+
export const version = '1.33.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticipantLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Participant/ParticipantView/ParticipantLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ParticipantLabel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Participant/ParticipantView/ParticipantLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAqBvC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAM9D;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,WAAW,GAAG,aAAa,CAC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,6BAG9B,qBAAqB,sBA2HvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackgroundFilters.d.ts","sourceRoot":"","sources":["../../../src/contexts/BackgroundFilters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"BackgroundFilters.d.ts","sourceRoot":"","sources":["../../../src/contexts/BackgroundFilters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,iBAAiB,EAOvB,MAAM,OAAO,CAAC;AAYf,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAqB7C;;GAEG;AACH,eAAO,MAAM,oBAAoB,0EAahC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,cAAc,iBAAiB,sBA2KxE,CAAC"}
|
|
@@ -9,6 +9,5 @@ export * from './useScreenShareButton';
|
|
|
9
9
|
export * from './useScreenShareAudioMixing';
|
|
10
10
|
export * from './useTrackDimensions';
|
|
11
11
|
export * from './useScreenshot';
|
|
12
|
-
export * from './useSpeechDetection';
|
|
13
12
|
export * from './useModeration';
|
|
14
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerSDKGlobals.d.ts","sourceRoot":"","sources":["../../../../src/utils/internal/registerSDKGlobals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registerSDKGlobals.d.ts","sourceRoot":"","sources":["../../../../src/utils/internal/registerSDKGlobals.ts"],"names":[],"mappings":"AAyGA,wBAAgB,kBAAkB,SAIjC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.
|
|
1
|
+
export declare const version = "1.33.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/video-react-native-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.33.0",
|
|
4
4
|
"description": "Stream Video SDK for React Native",
|
|
5
5
|
"author": "https://getstream.io",
|
|
6
6
|
"homepage": "https://getstream.io/video/docs/react-native/",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"!**/.*"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@stream-io/video-client": "1.
|
|
54
|
-
"@stream-io/video-react-bindings": "1.
|
|
53
|
+
"@stream-io/video-client": "1.48.0",
|
|
54
|
+
"@stream-io/video-react-bindings": "1.15.0",
|
|
55
55
|
"intl-pluralrules": "2.0.1",
|
|
56
56
|
"react-native-url-polyfill": "^3.0.0",
|
|
57
57
|
"rxjs": "~7.8.2",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@react-native-firebase/messaging": ">=17.5.0",
|
|
66
66
|
"@stream-io/noise-cancellation-react-native": ">=0.1.0",
|
|
67
67
|
"@stream-io/react-native-callingx": ">=0.1.0",
|
|
68
|
-
"@stream-io/react-native-webrtc": ">=137.
|
|
68
|
+
"@stream-io/react-native-webrtc": ">=137.2.0",
|
|
69
69
|
"@stream-io/video-filters-react-native": ">=0.1.0",
|
|
70
70
|
"expo": ">=47.0.0",
|
|
71
71
|
"expo-build-properties": "*",
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
"@react-native/babel-preset": "^0.81.5",
|
|
128
128
|
"@stream-io/noise-cancellation-react-native": "^0.7.0",
|
|
129
129
|
"@stream-io/react-native-callingx": "^0.1.1",
|
|
130
|
-
"@stream-io/react-native-webrtc": "137.
|
|
131
|
-
"@stream-io/video-filters-react-native": "^0.12.
|
|
130
|
+
"@stream-io/react-native-webrtc": "137.2.0",
|
|
131
|
+
"@stream-io/video-filters-react-native": "^0.12.1",
|
|
132
132
|
"@testing-library/jest-native": "^5.4.3",
|
|
133
133
|
"@testing-library/react-native": "13.3.3",
|
|
134
134
|
"@tsconfig/node18": "^18.2.4",
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Pressable,
|
|
4
|
+
StyleSheet,
|
|
5
|
+
Text,
|
|
6
|
+
View,
|
|
7
|
+
ActivityIndicator,
|
|
8
|
+
} from 'react-native';
|
|
3
9
|
import {
|
|
4
10
|
BadNetwork,
|
|
5
11
|
MicOff,
|
|
@@ -7,7 +13,11 @@ import {
|
|
|
7
13
|
ScreenShareIndicator,
|
|
8
14
|
VideoSlash,
|
|
9
15
|
} from '../../../icons';
|
|
10
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
useCall,
|
|
18
|
+
useI18n,
|
|
19
|
+
useIsAudioConnecting,
|
|
20
|
+
} from '@stream-io/video-react-bindings';
|
|
11
21
|
import { ComponentTestIds } from '../../../constants/TestIds';
|
|
12
22
|
import { type ParticipantViewProps } from './ParticipantView';
|
|
13
23
|
import { Z_INDEX } from '../../../constants';
|
|
@@ -55,6 +65,7 @@ export const ParticipantLabel = ({
|
|
|
55
65
|
const isAudioMuted = !hasAudio(participant);
|
|
56
66
|
const isVideoMuted = !hasVideo(participant);
|
|
57
67
|
const isTrackPaused = trackType && hasPausedTrack(participant, trackType);
|
|
68
|
+
const isAudioConnecting = useIsAudioConnecting(participant);
|
|
58
69
|
|
|
59
70
|
if (trackType === 'screenShareTrack') {
|
|
60
71
|
const screenShareText = isLocalParticipant
|
|
@@ -104,6 +115,13 @@ export const ParticipantLabel = ({
|
|
|
104
115
|
]}
|
|
105
116
|
>
|
|
106
117
|
<View style={styles.wrapper}>
|
|
118
|
+
{isAudioConnecting && (
|
|
119
|
+
<ActivityIndicator
|
|
120
|
+
size="small"
|
|
121
|
+
color={colors.iconPrimary}
|
|
122
|
+
style={styles.audioConnectingIndicator}
|
|
123
|
+
/>
|
|
124
|
+
)}
|
|
107
125
|
<Text style={[styles.userNameLabel, userNameLabel]} numberOfLines={1}>
|
|
108
126
|
{participantLabel}
|
|
109
127
|
</Text>
|
|
@@ -174,6 +192,10 @@ const useStyles = () => {
|
|
|
174
192
|
fontWeight: '400',
|
|
175
193
|
color: theme.colors.textPrimary,
|
|
176
194
|
},
|
|
195
|
+
audioConnectingIndicator: {
|
|
196
|
+
marginRight: theme.variants.spacingSizes.sm,
|
|
197
|
+
justifyContent: 'center',
|
|
198
|
+
},
|
|
177
199
|
screenShareIconContainer: {
|
|
178
200
|
marginRight: theme.variants.spacingSizes.sm,
|
|
179
201
|
justifyContent: 'center',
|
|
@@ -2,6 +2,7 @@ import React, {
|
|
|
2
2
|
type PropsWithChildren,
|
|
3
3
|
useCallback,
|
|
4
4
|
useContext,
|
|
5
|
+
useEffect,
|
|
5
6
|
useMemo,
|
|
6
7
|
useRef,
|
|
7
8
|
useState,
|
|
@@ -76,6 +77,10 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
|
|
|
76
77
|
const isBackgroundBlurRegisteredRef = useRef(false);
|
|
77
78
|
const isVideoBlurRegisteredRef = useRef(false);
|
|
78
79
|
const registeredImageFiltersSetRef = useRef(new Set<string>());
|
|
80
|
+
// The currently applied native filter name. Used to reapply on track
|
|
81
|
+
// replacement, and as a staleness signal so a later apply/disable can
|
|
82
|
+
// invalidate an in-flight apply() call.
|
|
83
|
+
const lastAppliedFilterNameRef = useRef<string | null>(null);
|
|
79
84
|
|
|
80
85
|
const [currentBackgroundFilter, setCurrentBackgroundFilter] =
|
|
81
86
|
useState<CurrentBackgroundFilter>();
|
|
@@ -85,16 +90,19 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
|
|
|
85
90
|
if (!isSupported) {
|
|
86
91
|
return;
|
|
87
92
|
}
|
|
88
|
-
if (!isBackgroundBlurRegisteredRef.current) {
|
|
89
|
-
await videoFiltersModule?.registerBackgroundBlurVideoFilters();
|
|
90
|
-
isBackgroundBlurRegisteredRef.current = true;
|
|
91
|
-
}
|
|
92
93
|
let filterName = 'BackgroundBlurMedium';
|
|
93
94
|
if (blurIntensity === 'heavy') {
|
|
94
95
|
filterName = 'BackgroundBlurHeavy';
|
|
95
96
|
} else if (blurIntensity === 'light') {
|
|
96
97
|
filterName = 'BackgroundBlurLight';
|
|
97
98
|
}
|
|
99
|
+
// Set before awaiting so a later apply/disable can mark this call stale.
|
|
100
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
101
|
+
if (!isBackgroundBlurRegisteredRef.current) {
|
|
102
|
+
await videoFiltersModule?.registerBackgroundBlurVideoFilters();
|
|
103
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
104
|
+
isBackgroundBlurRegisteredRef.current = true;
|
|
105
|
+
}
|
|
98
106
|
call?.tracer.trace('backgroundFilters.apply', filterName);
|
|
99
107
|
(call?.camera.state.mediaStream as MediaStream | undefined)
|
|
100
108
|
?.getVideoTracks()
|
|
@@ -111,16 +119,18 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
|
|
|
111
119
|
if (!isSupported) {
|
|
112
120
|
return;
|
|
113
121
|
}
|
|
114
|
-
if (!isVideoBlurRegisteredRef.current) {
|
|
115
|
-
await videoFiltersModule?.registerBlurVideoFilters();
|
|
116
|
-
isVideoBlurRegisteredRef.current = true;
|
|
117
|
-
}
|
|
118
122
|
let filterName = 'BlurMedium';
|
|
119
123
|
if (blurIntensity === 'heavy') {
|
|
120
124
|
filterName = 'BlurHeavy';
|
|
121
125
|
} else if (blurIntensity === 'light') {
|
|
122
126
|
filterName = 'BlurLight';
|
|
123
127
|
}
|
|
128
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
129
|
+
if (!isVideoBlurRegisteredRef.current) {
|
|
130
|
+
await videoFiltersModule?.registerBlurVideoFilters();
|
|
131
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
132
|
+
isVideoBlurRegisteredRef.current = true;
|
|
133
|
+
}
|
|
124
134
|
call?.tracer.trace('videoFilters.apply', filterName);
|
|
125
135
|
(call?.camera.state.mediaStream as MediaStream | undefined)
|
|
126
136
|
?.getVideoTracks()
|
|
@@ -139,12 +149,14 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
|
|
|
139
149
|
}
|
|
140
150
|
const source = Image.resolveAssetSource(imageSource);
|
|
141
151
|
const imageUri = source.uri;
|
|
152
|
+
const filterName = `VirtualBackground-${imageUri}`;
|
|
153
|
+
lastAppliedFilterNameRef.current = filterName;
|
|
142
154
|
const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
|
|
143
155
|
if (!registeredImageFiltersSet.has(imageUri)) {
|
|
144
156
|
await videoFiltersModule?.registerVirtualBackgroundFilter(imageSource);
|
|
157
|
+
if (lastAppliedFilterNameRef.current !== filterName) return;
|
|
145
158
|
registeredImageFiltersSetRef.current.add(imageUri);
|
|
146
159
|
}
|
|
147
|
-
const filterName = `VirtualBackground-${imageUri}`;
|
|
148
160
|
call?.tracer.trace('backgroundFilters.apply', filterName);
|
|
149
161
|
(call?.camera.state.mediaStream as MediaStream | undefined)
|
|
150
162
|
?.getVideoTracks()
|
|
@@ -161,6 +173,8 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
|
|
|
161
173
|
return;
|
|
162
174
|
}
|
|
163
175
|
call?.tracer.trace('backgroundFilters.disableAll', null);
|
|
176
|
+
// Clearing the ref invalidates any in-flight apply — its stale check will bail.
|
|
177
|
+
lastAppliedFilterNameRef.current = null;
|
|
164
178
|
(call?.camera.state.mediaStream as MediaStream | undefined)
|
|
165
179
|
?.getVideoTracks()
|
|
166
180
|
.forEach((track) => {
|
|
@@ -169,6 +183,38 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
|
|
|
169
183
|
setCurrentBackgroundFilter(undefined);
|
|
170
184
|
}, [call]);
|
|
171
185
|
|
|
186
|
+
// Reapplies the filter on track replacement (flip, enable-after-disable).
|
|
187
|
+
// Releases native filter state on unmount / call change.
|
|
188
|
+
useEffect(() => {
|
|
189
|
+
if (!call || !isSupported) return;
|
|
190
|
+
const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
|
|
191
|
+
const subscription = call.camera.state.mediaStream$.subscribe(() => {
|
|
192
|
+
const name = lastAppliedFilterNameRef.current;
|
|
193
|
+
if (!name) return;
|
|
194
|
+
(call.camera.state.mediaStream as MediaStream | undefined)
|
|
195
|
+
?.getVideoTracks()
|
|
196
|
+
.forEach((track) => {
|
|
197
|
+
track._setVideoEffect(name);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
return () => {
|
|
201
|
+
subscription.unsubscribe();
|
|
202
|
+
(call.camera.state.mediaStream as MediaStream | undefined)
|
|
203
|
+
?.getVideoTracks()
|
|
204
|
+
.forEach((track) => {
|
|
205
|
+
track._setVideoEffect(null);
|
|
206
|
+
});
|
|
207
|
+
// Drop native processor refs so they can be deallocated. Otherwise the
|
|
208
|
+
// ProcessorProvider registry holds them for the app's lifetime.
|
|
209
|
+
videoFiltersModule?.unregisterAllFilters?.().catch(() => {});
|
|
210
|
+
lastAppliedFilterNameRef.current = null;
|
|
211
|
+
isBackgroundBlurRegisteredRef.current = false;
|
|
212
|
+
isVideoBlurRegisteredRef.current = false;
|
|
213
|
+
registeredImageFiltersSet.clear();
|
|
214
|
+
setCurrentBackgroundFilter(undefined);
|
|
215
|
+
};
|
|
216
|
+
}, [call]);
|
|
217
|
+
|
|
172
218
|
const value = useMemo(
|
|
173
219
|
() => ({
|
|
174
220
|
currentBackgroundFilter,
|
package/src/hooks/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { StreamRNVideoSDKGlobals } from '@stream-io/video-client';
|
|
2
2
|
import { NativeModules, PermissionsAndroid, Platform } from 'react-native';
|
|
3
|
+
import { audioDeviceModuleEvents } from '@stream-io/react-native-webrtc';
|
|
3
4
|
import { getCallingxLibIfAvailable } from '../push/libs/callingx';
|
|
4
5
|
import {
|
|
5
6
|
endCallingxCall,
|
|
@@ -85,6 +86,18 @@ const streamRNVideoSDKGlobals: StreamRNVideoSDKGlobals = {
|
|
|
85
86
|
);
|
|
86
87
|
},
|
|
87
88
|
},
|
|
89
|
+
nativeEvents: {
|
|
90
|
+
speechActivity: {
|
|
91
|
+
subscribe(cb) {
|
|
92
|
+
const subscription = audioDeviceModuleEvents.addSpeechActivityListener(
|
|
93
|
+
(data) => {
|
|
94
|
+
cb({ isSoundDetected: data.event === 'started' });
|
|
95
|
+
},
|
|
96
|
+
);
|
|
97
|
+
return () => subscription.remove();
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
88
101
|
};
|
|
89
102
|
|
|
90
103
|
// Note: The global type declaration for `streamRNVideoSDK` is defined in
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.
|
|
1
|
+
export const version = '1.33.0';
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useSpeechDetection = useSpeechDetection;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
var _videoClient = require("@stream-io/video-client");
|
|
9
|
-
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
10
|
-
/**
|
|
11
|
-
* Hook that provides speech detection info using the RNSpeechDetector.
|
|
12
|
-
*
|
|
13
|
-
* @returns An object containing the current audio level (0 - 1) and whether sound is detected.
|
|
14
|
-
*/
|
|
15
|
-
function useSpeechDetection() {
|
|
16
|
-
const [audioState, setAudioState] = (0, _react.useState)({
|
|
17
|
-
isSoundDetected: false,
|
|
18
|
-
audioLevel: 0
|
|
19
|
-
});
|
|
20
|
-
const {
|
|
21
|
-
useMicrophoneState
|
|
22
|
-
} = (0, _videoReactBindings.useCallStateHooks)();
|
|
23
|
-
const {
|
|
24
|
-
isEnabled,
|
|
25
|
-
mediaStream
|
|
26
|
-
} = useMicrophoneState();
|
|
27
|
-
(0, _react.useEffect)(() => {
|
|
28
|
-
if (!isEnabled) return;
|
|
29
|
-
const detector = new _videoClient.RNSpeechDetector(mediaStream);
|
|
30
|
-
const start = detector.start(state => {
|
|
31
|
-
setAudioState(state);
|
|
32
|
-
});
|
|
33
|
-
return () => {
|
|
34
|
-
start.then(stop => stop());
|
|
35
|
-
};
|
|
36
|
-
}, [mediaStream, isEnabled]);
|
|
37
|
-
return audioState;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=useSpeechDetection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_videoClient","_videoReactBindings","useSpeechDetection","audioState","setAudioState","useState","isSoundDetected","audioLevel","useMicrophoneState","useCallStateHooks","isEnabled","mediaStream","useEffect","detector","RNSpeechDetector","start","state","then","stop"],"sourceRoot":"../../../src","sources":["hooks/useSpeechDetection.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAIA,IAAAE,mBAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,kBAAkBA,CAAA,EAAG;EACnC,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAqB;IAC/DC,eAAe,EAAE,KAAK;IACtBC,UAAU,EAAE;EACd,CAAC,CAAC;EACF,MAAM;IAAEC;EAAmB,CAAC,GAAG,IAAAC,qCAAiB,EAAC,CAAC;EAClD,MAAM;IAAEC,SAAS;IAAEC;EAAY,CAAC,GAAGH,kBAAkB,CAAC,CAAC;EAEvD,IAAAI,gBAAS,EAAC,MAAM;IACd,IAAI,CAACF,SAAS,EAAE;IAEhB,MAAMG,QAAQ,GAAG,IAAIC,6BAAgB,CAACH,WAAW,CAAC;IAClD,MAAMI,KAAK,GAAGF,QAAQ,CAACE,KAAK,CAAEC,KAAyB,IAAK;MAC1DZ,aAAa,CAACY,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,MAAM;MACXD,KAAK,CAACE,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;EACH,CAAC,EAAE,CAACP,WAAW,EAAED,SAAS,CAAC,CAAC;EAE5B,OAAOP,UAAU;AACnB","ignoreList":[]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
import { RNSpeechDetector } from '@stream-io/video-client';
|
|
3
|
-
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Hook that provides speech detection info using the RNSpeechDetector.
|
|
7
|
-
*
|
|
8
|
-
* @returns An object containing the current audio level (0 - 1) and whether sound is detected.
|
|
9
|
-
*/
|
|
10
|
-
export function useSpeechDetection() {
|
|
11
|
-
const [audioState, setAudioState] = useState({
|
|
12
|
-
isSoundDetected: false,
|
|
13
|
-
audioLevel: 0
|
|
14
|
-
});
|
|
15
|
-
const {
|
|
16
|
-
useMicrophoneState
|
|
17
|
-
} = useCallStateHooks();
|
|
18
|
-
const {
|
|
19
|
-
isEnabled,
|
|
20
|
-
mediaStream
|
|
21
|
-
} = useMicrophoneState();
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (!isEnabled) return;
|
|
24
|
-
const detector = new RNSpeechDetector(mediaStream);
|
|
25
|
-
const start = detector.start(state => {
|
|
26
|
-
setAudioState(state);
|
|
27
|
-
});
|
|
28
|
-
return () => {
|
|
29
|
-
start.then(stop => stop());
|
|
30
|
-
};
|
|
31
|
-
}, [mediaStream, isEnabled]);
|
|
32
|
-
return audioState;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=useSpeechDetection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","RNSpeechDetector","useCallStateHooks","useSpeechDetection","audioState","setAudioState","isSoundDetected","audioLevel","useMicrophoneState","isEnabled","mediaStream","detector","start","state","then","stop"],"sourceRoot":"../../../src","sources":["hooks/useSpeechDetection.ts"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAEEC,gBAAgB,QACX,yBAAyB;AAChC,SAASC,iBAAiB,QAAQ,iCAAiC;;AAEnE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAA,EAAG;EACnC,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGL,QAAQ,CAAqB;IAC/DM,eAAe,EAAE,KAAK;IACtBC,UAAU,EAAE;EACd,CAAC,CAAC;EACF,MAAM;IAAEC;EAAmB,CAAC,GAAGN,iBAAiB,CAAC,CAAC;EAClD,MAAM;IAAEO,SAAS;IAAEC;EAAY,CAAC,GAAGF,kBAAkB,CAAC,CAAC;EAEvDT,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,SAAS,EAAE;IAEhB,MAAME,QAAQ,GAAG,IAAIV,gBAAgB,CAACS,WAAW,CAAC;IAClD,MAAME,KAAK,GAAGD,QAAQ,CAACC,KAAK,CAAEC,KAAyB,IAAK;MAC1DR,aAAa,CAACQ,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,OAAO,MAAM;MACXD,KAAK,CAACE,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;EACH,CAAC,EAAE,CAACL,WAAW,EAAED,SAAS,CAAC,CAAC;EAE5B,OAAOL,UAAU;AACnB","ignoreList":[]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type SoundDetectorState } from '@stream-io/video-client';
|
|
2
|
-
/**
|
|
3
|
-
* Hook that provides speech detection info using the RNSpeechDetector.
|
|
4
|
-
*
|
|
5
|
-
* @returns An object containing the current audio level (0 - 1) and whether sound is detected.
|
|
6
|
-
*/
|
|
7
|
-
export declare function useSpeechDetection(): SoundDetectorState;
|
|
8
|
-
//# sourceMappingURL=useSpeechDetection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSpeechDetection.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSpeechDetection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,yBAAyB,CAAC;AAGjC;;;;GAIG;AACH,wBAAgB,kBAAkB,uBAsBjC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
type SoundDetectorState,
|
|
4
|
-
RNSpeechDetector,
|
|
5
|
-
} from '@stream-io/video-client';
|
|
6
|
-
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Hook that provides speech detection info using the RNSpeechDetector.
|
|
10
|
-
*
|
|
11
|
-
* @returns An object containing the current audio level (0 - 1) and whether sound is detected.
|
|
12
|
-
*/
|
|
13
|
-
export function useSpeechDetection() {
|
|
14
|
-
const [audioState, setAudioState] = useState<SoundDetectorState>({
|
|
15
|
-
isSoundDetected: false,
|
|
16
|
-
audioLevel: 0,
|
|
17
|
-
});
|
|
18
|
-
const { useMicrophoneState } = useCallStateHooks();
|
|
19
|
-
const { isEnabled, mediaStream } = useMicrophoneState();
|
|
20
|
-
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
if (!isEnabled) return;
|
|
23
|
-
|
|
24
|
-
const detector = new RNSpeechDetector(mediaStream);
|
|
25
|
-
const start = detector.start((state: SoundDetectorState) => {
|
|
26
|
-
setAudioState(state);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
return () => {
|
|
30
|
-
start.then((stop) => stop());
|
|
31
|
-
};
|
|
32
|
-
}, [mediaStream, isEnabled]);
|
|
33
|
-
|
|
34
|
-
return audioState;
|
|
35
|
-
}
|