@stream-io/video-react-sdk 1.2.17 → 1.2.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stream-io/video-react-sdk",
3
- "version": "1.2.17",
3
+ "version": "1.2.18",
4
4
  "packageManager": "yarn@3.2.4",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.es.js",
@@ -11,38 +11,32 @@ export type LocalDevicePreferences = {
11
11
  [type in 'mic' | 'camera' | 'speaker']: LocalDevicePreference;
12
12
  };
13
13
 
14
+ const defaultDevice = 'default';
15
+
14
16
  /**
15
17
  * This hook will persist the device settings to local storage.
16
18
  *
17
19
  * @param key the key to use for local storage.
18
20
  */
19
21
  const usePersistDevicePreferences = (key: string) => {
20
- const {
21
- useMicrophoneState,
22
- useCameraState,
23
- useSpeakerState,
24
- useCallSettings,
25
- } = useCallStateHooks();
22
+ const { useMicrophoneState, useCameraState, useSpeakerState } =
23
+ useCallStateHooks();
26
24
  const call = useCall();
27
25
  const mic = useMicrophoneState();
28
26
  const camera = useCameraState();
29
27
  const speaker = useSpeakerState();
30
- const settings = useCallSettings();
31
28
  useEffect(() => {
32
- if (!call || !settings) return;
29
+ if (!call) return;
33
30
  if (call.state.callingState === CallingState.LEFT) return;
34
31
  try {
35
- const hasPreferences = !!window.localStorage.getItem(key);
36
- const { audio, video } = settings;
37
- const defaultDevice = 'default';
38
32
  const preferences: LocalDevicePreferences = {
39
33
  mic: {
40
34
  selectedDeviceId: mic.selectedDevice || defaultDevice,
41
- muted: hasPreferences ? mic.isMute : !audio.mic_default_on,
35
+ muted: mic.isMute,
42
36
  },
43
37
  camera: {
44
38
  selectedDeviceId: camera.selectedDevice || defaultDevice,
45
- muted: hasPreferences ? camera.isMute : !video.camera_default_on,
39
+ muted: camera.isMute,
46
40
  },
47
41
  speaker: {
48
42
  selectedDeviceId: speaker.selectedDevice || defaultDevice,
@@ -60,7 +54,6 @@ const usePersistDevicePreferences = (key: string) => {
60
54
  key,
61
55
  mic.isMute,
62
56
  mic.selectedDevice,
63
- settings,
64
57
  speaker.selectedDevice,
65
58
  ]);
66
59
  };
@@ -72,15 +65,13 @@ const usePersistDevicePreferences = (key: string) => {
72
65
  */
73
66
  const useApplyDevicePreferences = (key: string) => {
74
67
  const call = useCall();
75
- const { useCallSettings } = useCallStateHooks();
76
- const settings = useCallSettings();
77
68
  useEffect(() => {
78
- if (!call || !settings) return;
69
+ if (!call) return;
79
70
  if (call.state.callingState === CallingState.LEFT) return;
80
71
 
81
72
  const apply = async () => {
82
73
  const initMic = async (setting: LocalDevicePreference) => {
83
- await call.microphone.select(setting.selectedDeviceId);
74
+ await call.microphone.select(parseDeviceId(setting.selectedDeviceId));
84
75
  if (setting.muted) {
85
76
  await call.microphone.disable();
86
77
  } else {
@@ -89,7 +80,7 @@ const useApplyDevicePreferences = (key: string) => {
89
80
  };
90
81
 
91
82
  const initCamera = async (setting: LocalDevicePreference) => {
92
- await call.camera.select(setting.selectedDeviceId);
83
+ await call.camera.select(parseDeviceId(setting.selectedDeviceId));
93
84
  if (setting.muted) {
94
85
  await call.camera.disable();
95
86
  } else {
@@ -98,7 +89,7 @@ const useApplyDevicePreferences = (key: string) => {
98
89
  };
99
90
 
100
91
  const initSpeaker = (setting: LocalDevicePreference) => {
101
- call.speaker.select(setting.selectedDeviceId);
92
+ call.speaker.select(parseDeviceId(setting.selectedDeviceId) ?? '');
102
93
  };
103
94
 
104
95
  let preferences: LocalDevicePreferences | null = null;
@@ -113,17 +104,13 @@ const useApplyDevicePreferences = (key: string) => {
113
104
  await initMic(preferences.mic);
114
105
  await initCamera(preferences.camera);
115
106
  initSpeaker(preferences.speaker);
116
- } else {
117
- const { audio, video } = settings;
118
- if (audio.mic_default_on) await call.microphone.enable();
119
- if (video.camera_default_on) await call.camera.enable();
120
107
  }
121
108
  };
122
109
 
123
110
  apply().catch((err) => {
124
111
  console.warn('Failed to apply device preferences', err);
125
112
  });
126
- }, [call, key, settings]);
113
+ }, [call, key]);
127
114
  };
128
115
 
129
116
  /**
@@ -137,3 +124,6 @@ export const usePersistedDevicePreferences = (
137
124
  useApplyDevicePreferences(key);
138
125
  usePersistDevicePreferences(key);
139
126
  };
127
+
128
+ const parseDeviceId = (deviceId: string) =>
129
+ deviceId !== defaultDevice ? deviceId : undefined;