@stream-io/video-react-sdk 1.14.3 → 1.14.4

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 CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [1.14.4](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.14.3...@stream-io/video-react-sdk-1.14.4) (2025-04-24)
6
+
7
+ ### Dependency Updates
8
+
9
+ - `@stream-io/video-client` updated to version `1.20.0`
10
+ - `@stream-io/video-react-bindings` updated to version `1.5.16`
11
+
12
+ ### Bug Fixes
13
+
14
+ - apply call default camera/mic on settings ([#1766](https://github.com/GetStream/stream-video-js/issues/1766)) ([d2a2783](https://github.com/GetStream/stream-video-js/commit/d2a27838c4e6b4e4ec71821d0070f729aee9c644))
15
+
5
16
  ## [1.14.3](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.14.2...@stream-io/video-react-sdk-1.14.3) (2025-04-15)
6
17
 
7
18
  ### Dependency Updates
package/dist/index.cjs.js CHANGED
@@ -80,12 +80,13 @@ const defaultDevice = 'default';
80
80
  * @param key the key to use for local storage.
81
81
  */
82
82
  const usePersistedDevicePreferences = (key = '@stream-io/device-preferences') => {
83
- const { useCameraState, useMicrophoneState, useSpeakerState } = videoReactBindings.useCallStateHooks();
84
- usePersistedDevicePreference(key, 'camera', useCameraState());
85
- usePersistedDevicePreference(key, 'microphone', useMicrophoneState());
86
- usePersistedDevicePreference(key, 'speaker', useSpeakerState());
83
+ const { useCallSettings, useCameraState, useMicrophoneState, useSpeakerState, } = videoReactBindings.useCallStateHooks();
84
+ const settings = useCallSettings();
85
+ usePersistedDevicePreference(key, 'camera', useCameraState(), settings ? !settings.video.camera_default_on : undefined);
86
+ usePersistedDevicePreference(key, 'microphone', useMicrophoneState(), settings ? !settings.audio.mic_default_on : undefined);
87
+ usePersistedDevicePreference(key, 'speaker', useSpeakerState(), false);
87
88
  };
88
- const usePersistedDevicePreference = (key, deviceKey, state) => {
89
+ const usePersistedDevicePreference = (key, deviceKey, state, defaultMuted) => {
89
90
  const { useCallCallingState } = videoReactBindings.useCallStateHooks();
90
91
  const callingState = useCallCallingState();
91
92
  const [applyingState, setApplyingState] = react.useState('idle');
@@ -93,14 +94,18 @@ const usePersistedDevicePreference = (key, deviceKey, state) => {
93
94
  react.useEffect(function apply() {
94
95
  if (callingState === videoClient.CallingState.LEFT ||
95
96
  !state.devices?.length ||
97
+ typeof defaultMuted !== 'boolean' ||
96
98
  applyingState !== 'idle') {
97
99
  return;
98
100
  }
99
101
  const preferences = parseLocalDevicePreferences(key);
100
102
  const preference = preferences[deviceKey];
101
103
  setApplyingState('applying');
102
- if (preference && !manager.state.selectedDevice) {
103
- applyLocalDevicePreference(manager, [preference].flat(), state.devices)
104
+ if (!manager.state.selectedDevice) {
105
+ const applyPromise = preference
106
+ ? applyLocalDevicePreference(manager, [preference].flat(), state.devices)
107
+ : applyMutedState(manager, defaultMuted);
108
+ applyPromise
104
109
  .catch((err) => {
105
110
  console.warn(`Failed to apply ${deviceKey} device preferences`, err);
106
111
  })
@@ -109,7 +114,15 @@ const usePersistedDevicePreference = (key, deviceKey, state) => {
109
114
  else {
110
115
  setApplyingState('applied');
111
116
  }
112
- }, [applyingState, callingState, deviceKey, key, manager, state.devices]);
117
+ }, [
118
+ applyingState,
119
+ callingState,
120
+ defaultMuted,
121
+ deviceKey,
122
+ key,
123
+ manager,
124
+ state.devices,
125
+ ]);
113
126
  react.useEffect(function persist() {
114
127
  if (callingState === videoClient.CallingState.LEFT ||
115
128
  !state.devices?.length ||
@@ -189,9 +202,12 @@ const applyLocalDevicePreference = async (manager, preference, devices) => {
189
202
  }
190
203
  }
191
204
  if (typeof muted === 'boolean') {
192
- await manager[muted ? 'disable' : 'enable']?.();
205
+ await applyMutedState(manager, muted);
193
206
  }
194
207
  };
208
+ const applyMutedState = async (manager, muted) => {
209
+ await manager[muted ? 'disable' : 'enable']?.();
210
+ };
195
211
  const getSelectedDevicePreference = (devices, selectedDevice) => ({
196
212
  selectedDeviceId: selectedDevice || defaultDevice,
197
213
  selectedDeviceLabel: devices?.find((d) => d.deviceId === selectedDevice)?.label ?? '',
@@ -2710,7 +2726,7 @@ const LivestreamPlayer = (props) => {
2710
2726
  return (jsxRuntime.jsx(StreamCall, { call: call, children: jsxRuntime.jsx(LivestreamLayout, { ...layoutProps }) }));
2711
2727
  };
2712
2728
 
2713
- const [major, minor, patch] = ("1.14.3").split('.');
2729
+ const [major, minor, patch] = ("1.14.4").split('.');
2714
2730
  videoClient.setSdkInfo({
2715
2731
  type: videoClient.SfuModels.SdkType.REACT,
2716
2732
  major,