@stream-io/video-react-native-sdk 0.3.0 → 0.3.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 CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ### [0.3.1](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.3.0...@stream-io/video-react-native-sdk-0.3.1) (2023-11-30)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **react-native:** do not trigger initial device setting after join ([204c303](https://github.com/GetStream/stream-video-js/commit/204c303353c536c44b77350bb49c117f21e093c5))
11
+
5
12
  ## [0.3.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.2.14...@stream-io/video-react-native-sdk-0.3.0) (2023-11-29)
6
13
 
7
14
  ### Dependency Updates
@@ -30,6 +30,34 @@ const MediaStreamManagement = _ref => {
30
30
  const {
31
31
  useCallSettings
32
32
  } = (0, _videoReactBindings.useCallStateHooks)();
33
+ const settings = useCallSettings();
34
+
35
+ // Get the target resolution from the settings and memoize it
36
+ // Memoization is needed to avoid unnecessary useEffect triggers
37
+ const targetResolutionSetting = (0, _react.useMemo)(() => {
38
+ var _settings$video$targe, _settings$video$targe2, _settings$video$targe3;
39
+ if ((settings === null || settings === void 0 || (_settings$video$targe = settings.video.target_resolution) === null || _settings$video$targe === void 0 ? void 0 : _settings$video$targe.width) === undefined || (settings === null || settings === void 0 || (_settings$video$targe2 = settings.video.target_resolution) === null || _settings$video$targe2 === void 0 ? void 0 : _settings$video$targe2.height) === undefined || (settings === null || settings === void 0 || (_settings$video$targe3 = settings.video.target_resolution) === null || _settings$video$targe3 === void 0 ? void 0 : _settings$video$targe3.bitrate) === undefined) {
40
+ return undefined;
41
+ }
42
+ return {
43
+ width: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width,
44
+ height: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height,
45
+ bitrate: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate
46
+ };
47
+ }, [settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width, settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height, settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate]);
48
+
49
+ // Get the target resolution from the default device settings and memoize it
50
+ // Memoization is needed to avoid unnecessary useEffect triggers
51
+ const defaultOnSetting = (0, _react.useMemo)(() => {
52
+ if ((settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on) === undefined || (settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on) === undefined) {
53
+ return undefined;
54
+ } else {
55
+ return {
56
+ mic_default_on: settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on,
57
+ camera_default_on: settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on
58
+ };
59
+ }
60
+ }, [settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on, settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on]);
33
61
 
34
62
  // Resume/Disable video stream tracks when app goes to background/foreground
35
63
  // To save on CPU resources
@@ -59,33 +87,32 @@ const MediaStreamManagement = _ref => {
59
87
  initialAudioEnabled: undefined,
60
88
  initialVideoEnabled: undefined
61
89
  });
62
- const settings = useCallSettings();
63
90
 
64
91
  // Use backend settings to set initial audio/video enabled state
65
92
  // It is applied only if the prop was undefined -- meaning user did not provide any value
66
93
  (0, _react.useEffect)(() => {
67
- if (!settings) {
94
+ if (!defaultOnSetting) {
68
95
  return;
69
96
  }
70
97
  const {
71
- audio,
72
- video
73
- } = settings;
98
+ mic_default_on,
99
+ camera_default_on
100
+ } = defaultOnSetting;
74
101
  setInitialDeviceState(prev => {
75
102
  let initAudio = prev.initialAudioEnabled;
76
103
  if (typeof propInitialAudioEnabled === 'undefined') {
77
- initAudio = audio.mic_default_on;
104
+ initAudio = mic_default_on;
78
105
  }
79
106
  let initVideo = prev.initialVideoEnabled;
80
107
  if (typeof propInitialVideoEnabled === 'undefined') {
81
- initVideo = video.camera_default_on;
108
+ initVideo = camera_default_on;
82
109
  }
83
110
  return {
84
111
  initialAudioEnabled: initAudio,
85
112
  initialVideoEnabled: initVideo
86
113
  };
87
114
  });
88
- }, [propInitialAudioEnabled, propInitialVideoEnabled, settings]);
115
+ }, [propInitialAudioEnabled, propInitialVideoEnabled, defaultOnSetting]);
89
116
 
90
117
  // Apply SDK settings to set the initial audio/video enabled state
91
118
  (0, _react.useEffect)(() => {
@@ -114,8 +141,8 @@ const MediaStreamManagement = _ref => {
114
141
  if (initialVideoEnabled === undefined) {
115
142
  return;
116
143
  }
117
- // we wait until we receive the settings from the backend
118
- if (!call || !settings) {
144
+ // we wait until we receive the resolution settings from the backend
145
+ if (!call || !targetResolutionSetting) {
119
146
  return;
120
147
  }
121
148
  if (initialAudioEnabled) {
@@ -123,13 +150,13 @@ const MediaStreamManagement = _ref => {
123
150
  } else {
124
151
  call.microphone.disable();
125
152
  }
126
- call.camera.selectTargetResolution(settings.video.target_resolution);
153
+ call.camera.selectTargetResolution(targetResolutionSetting);
127
154
  if (initialVideoEnabled) {
128
155
  call.camera.enable();
129
156
  } else {
130
157
  call.camera.disable();
131
158
  }
132
- }, [call, initialAudioEnabled, initialVideoEnabled, settings]);
159
+ }, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
133
160
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
134
161
  };
135
162
  exports.MediaStreamManagement = MediaStreamManagement;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_hooks","_reactNative","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MediaStreamManagement","_ref","initialAudioEnabled","propInitialAudioEnabled","initialVideoEnabled","propInitialVideoEnabled","children","useCall","useCallSettings","useCallStateHooks","useAppStateListener","_call$camera","camera","resume","Platform","OS","_NativeModules$Stream","NativeModules","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","setInitialDeviceState","useState","undefined","settings","useEffect","audio","video","prev","initAudio","mic_default_on","initVideo","camera_default_on","microphone","enable","selectTargetResolution","target_resolution","createElement","Fragment","exports"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_hooks","_reactNative","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MediaStreamManagement","_ref","initialAudioEnabled","propInitialAudioEnabled","initialVideoEnabled","propInitialVideoEnabled","children","useCall","useCallSettings","useCallStateHooks","settings","targetResolutionSetting","useMemo","_settings$video$targe","_settings$video$targe2","_settings$video$targe3","video","target_resolution","width","undefined","height","bitrate","defaultOnSetting","audio","mic_default_on","camera_default_on","useAppStateListener","_call$camera","camera","resume","Platform","OS","_NativeModules$Stream","NativeModules","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","setInitialDeviceState","useState","useEffect","prev","initAudio","initVideo","microphone","enable","selectTargetResolution","createElement","Fragment","exports"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"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"}
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- const version = exports.version = '0.3.0';
7
+ const version = exports.version = '0.3.1';
8
8
  //# sourceMappingURL=version.js.map
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useState } from 'react';
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
2
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
3
  import { useAppStateListener } from '../utils/hooks';
4
4
  import { NativeModules, Platform } from 'react-native';
@@ -22,6 +22,34 @@ export const MediaStreamManagement = _ref => {
22
22
  const {
23
23
  useCallSettings
24
24
  } = useCallStateHooks();
25
+ const settings = useCallSettings();
26
+
27
+ // Get the target resolution from the settings and memoize it
28
+ // Memoization is needed to avoid unnecessary useEffect triggers
29
+ const targetResolutionSetting = useMemo(() => {
30
+ var _settings$video$targe, _settings$video$targe2, _settings$video$targe3;
31
+ if ((settings === null || settings === void 0 || (_settings$video$targe = settings.video.target_resolution) === null || _settings$video$targe === void 0 ? void 0 : _settings$video$targe.width) === undefined || (settings === null || settings === void 0 || (_settings$video$targe2 = settings.video.target_resolution) === null || _settings$video$targe2 === void 0 ? void 0 : _settings$video$targe2.height) === undefined || (settings === null || settings === void 0 || (_settings$video$targe3 = settings.video.target_resolution) === null || _settings$video$targe3 === void 0 ? void 0 : _settings$video$targe3.bitrate) === undefined) {
32
+ return undefined;
33
+ }
34
+ return {
35
+ width: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width,
36
+ height: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height,
37
+ bitrate: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate
38
+ };
39
+ }, [settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width, settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height, settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate]);
40
+
41
+ // Get the target resolution from the default device settings and memoize it
42
+ // Memoization is needed to avoid unnecessary useEffect triggers
43
+ const defaultOnSetting = useMemo(() => {
44
+ if ((settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on) === undefined || (settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on) === undefined) {
45
+ return undefined;
46
+ } else {
47
+ return {
48
+ mic_default_on: settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on,
49
+ camera_default_on: settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on
50
+ };
51
+ }
52
+ }, [settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on, settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on]);
25
53
 
26
54
  // Resume/Disable video stream tracks when app goes to background/foreground
27
55
  // To save on CPU resources
@@ -51,33 +79,32 @@ export const MediaStreamManagement = _ref => {
51
79
  initialAudioEnabled: undefined,
52
80
  initialVideoEnabled: undefined
53
81
  });
54
- const settings = useCallSettings();
55
82
 
56
83
  // Use backend settings to set initial audio/video enabled state
57
84
  // It is applied only if the prop was undefined -- meaning user did not provide any value
58
85
  useEffect(() => {
59
- if (!settings) {
86
+ if (!defaultOnSetting) {
60
87
  return;
61
88
  }
62
89
  const {
63
- audio,
64
- video
65
- } = settings;
90
+ mic_default_on,
91
+ camera_default_on
92
+ } = defaultOnSetting;
66
93
  setInitialDeviceState(prev => {
67
94
  let initAudio = prev.initialAudioEnabled;
68
95
  if (typeof propInitialAudioEnabled === 'undefined') {
69
- initAudio = audio.mic_default_on;
96
+ initAudio = mic_default_on;
70
97
  }
71
98
  let initVideo = prev.initialVideoEnabled;
72
99
  if (typeof propInitialVideoEnabled === 'undefined') {
73
- initVideo = video.camera_default_on;
100
+ initVideo = camera_default_on;
74
101
  }
75
102
  return {
76
103
  initialAudioEnabled: initAudio,
77
104
  initialVideoEnabled: initVideo
78
105
  };
79
106
  });
80
- }, [propInitialAudioEnabled, propInitialVideoEnabled, settings]);
107
+ }, [propInitialAudioEnabled, propInitialVideoEnabled, defaultOnSetting]);
81
108
 
82
109
  // Apply SDK settings to set the initial audio/video enabled state
83
110
  useEffect(() => {
@@ -106,8 +133,8 @@ export const MediaStreamManagement = _ref => {
106
133
  if (initialVideoEnabled === undefined) {
107
134
  return;
108
135
  }
109
- // we wait until we receive the settings from the backend
110
- if (!call || !settings) {
136
+ // we wait until we receive the resolution settings from the backend
137
+ if (!call || !targetResolutionSetting) {
111
138
  return;
112
139
  }
113
140
  if (initialAudioEnabled) {
@@ -115,13 +142,13 @@ export const MediaStreamManagement = _ref => {
115
142
  } else {
116
143
  call.microphone.disable();
117
144
  }
118
- call.camera.selectTargetResolution(settings.video.target_resolution);
145
+ call.camera.selectTargetResolution(targetResolutionSetting);
119
146
  if (initialVideoEnabled) {
120
147
  call.camera.enable();
121
148
  } else {
122
149
  call.camera.disable();
123
150
  }
124
- }, [call, initialAudioEnabled, initialVideoEnabled, settings]);
151
+ }, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
125
152
  return /*#__PURE__*/React.createElement(React.Fragment, null, children);
126
153
  };
127
154
  //# sourceMappingURL=MediaStreamManagement.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","useCall","useCallStateHooks","useAppStateListener","NativeModules","Platform","MediaStreamManagement","_ref","initialAudioEnabled","propInitialAudioEnabled","initialVideoEnabled","propInitialVideoEnabled","children","call","useCallSettings","_call$camera","camera","resume","OS","_NativeModules$Stream","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","setInitialDeviceState","undefined","settings","audio","video","prev","initAudio","mic_default_on","initVideo","camera_default_on","microphone","enable","selectTargetResolution","target_resolution","createElement","Fragment"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useMemo","useState","useCall","useCallStateHooks","useAppStateListener","NativeModules","Platform","MediaStreamManagement","_ref","initialAudioEnabled","propInitialAudioEnabled","initialVideoEnabled","propInitialVideoEnabled","children","call","useCallSettings","settings","targetResolutionSetting","_settings$video$targe","_settings$video$targe2","_settings$video$targe3","video","target_resolution","width","undefined","height","bitrate","defaultOnSetting","audio","mic_default_on","camera_default_on","_call$camera","camera","resume","OS","_NativeModules$Stream","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","setInitialDeviceState","prev","initAudio","initVideo","microphone","enable","selectTargetResolution","createElement","Fragment"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAuBC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAC9E,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,mBAAmB,QAAQ,gBAAgB;AACpD,SAASC,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AActD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGC,IAAA,IAIc;EAAA,IAJb;IACpCC,mBAAmB,EAAEC,uBAAuB;IAC5CC,mBAAmB,EAAEC,uBAAuB;IAC5CC;EAC2C,CAAC,GAAAL,IAAA;EAC5C,MAAMM,IAAI,GAAGZ,OAAO,CAAC,CAAC;EACtB,MAAM;IAAEa;EAAgB,CAAC,GAAGZ,iBAAiB,CAAC,CAAC;EAC/C,MAAMa,QAAQ,GAAGD,eAAe,CAAC,CAAC;;EAElC;EACA;EACA,MAAME,uBAAuB,GAAGjB,OAAO,CAA+B,MAAM;IAAA,IAAAkB,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC1E,IACE,CAAAJ,QAAQ,aAARA,QAAQ,gBAAAE,qBAAA,GAARF,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,cAAAJ,qBAAA,uBAAjCA,qBAAA,CAAmCK,KAAK,MAAKC,SAAS,IACtD,CAAAR,QAAQ,aAARA,QAAQ,gBAAAG,sBAAA,GAARH,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,cAAAH,sBAAA,uBAAjCA,sBAAA,CAAmCM,MAAM,MAAKD,SAAS,IACvD,CAAAR,QAAQ,aAARA,QAAQ,gBAAAI,sBAAA,GAARJ,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,cAAAF,sBAAA,uBAAjCA,sBAAA,CAAmCM,OAAO,MAAKF,SAAS,EACxD;MACA,OAAOA,SAAS;IAClB;IACA,OAAO;MACLD,KAAK,EAAEP,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,CAACC,KAAK;MAC9CE,MAAM,EAAET,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,CAACG,MAAM;MAChDC,OAAO,EAAEV,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,CAACI;IAC7C,CAAC;EACH,CAAC,EAAE,CACDV,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,CAACC,KAAK,EACvCP,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,CAACG,MAAM,EACxCT,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACC,iBAAiB,CAACI,OAAO,CAC1C,CAAC;;EAEF;EACA;EACA,MAAMC,gBAAgB,GAAG3B,OAAO,CAAC,MAAM;IACrC,IACE,CAAAgB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEY,KAAK,CAACC,cAAc,MAAKL,SAAS,IAC5C,CAAAR,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACS,iBAAiB,MAAKN,SAAS,EAC/C;MACA,OAAOA,SAAS;IAClB,CAAC,MAAM;MACL,OAAO;QACLK,cAAc,EAAEb,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEY,KAAK,CAACC,cAAc;QAC9CC,iBAAiB,EAAEd,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACS;MACrC,CAAC;IACH;EACF,CAAC,EAAE,CAACd,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEY,KAAK,CAACC,cAAc,EAAEb,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEK,KAAK,CAACS,iBAAiB,CAAC,CAAC;;EAEvE;EACA;EACA1B,mBAAmB,CACjB,MAAM;IAAA,IAAA2B,YAAA;IACJjB,IAAI,aAAJA,IAAI,gBAAAiB,YAAA,GAAJjB,IAAI,CAAEkB,MAAM,cAAAD,YAAA,eAAZA,YAAA,CAAcE,MAAM,CAAC,CAAC;EACxB,CAAC,EACD,MAAM;IACJ,IAAI3B,QAAQ,CAAC4B,EAAE,KAAK,SAAS,EAAE;MAAA,IAAAC,qBAAA;MAC7B;MACA;MACA9B,aAAa,aAAbA,aAAa,gBAAA8B,qBAAA,GAAb9B,aAAa,CAAE+B,sBAAsB,cAAAD,qBAAA,eAArCA,qBAAA,CAAuCE,WAAW,CAAC,CAAC,CAACC,IAAI,CACtDC,OAAgB,IAAK;QACpB,IAAI,CAACA,OAAO,EAAE;UAAA,IAAAC,aAAA;UACZ1B,IAAI,aAAJA,IAAI,gBAAA0B,aAAA,GAAJ1B,IAAI,CAAEkB,MAAM,cAAAQ,aAAA,eAAZA,aAAA,CAAcC,OAAO,CAAC,CAAC;QACzB;MACF,CACF,CAAC;IACH,CAAC,MAAM;MAAA,IAAAC,aAAA;MACL5B,IAAI,aAAJA,IAAI,gBAAA4B,aAAA,GAAJ5B,IAAI,CAAEkB,MAAM,cAAAU,aAAA,eAAZA,aAAA,CAAcD,OAAO,CAAC,CAAC;IACzB;EACF,CACF,CAAC;EAED,MAAM,CAAC;IAAEhC,mBAAmB;IAAEE;EAAoB,CAAC,EAAEgC,qBAAqB,CAAC,GACzE1C,QAAQ,CAA2B;IACjCQ,mBAAmB,EAAEe,SAAS;IAC9Bb,mBAAmB,EAAEa;EACvB,CAAC,CAAC;;EAEJ;EACA;EACAzB,SAAS,CAAC,MAAM;IACd,IAAI,CAAC4B,gBAAgB,EAAE;MACrB;IACF;IAEA,MAAM;MAAEE,cAAc;MAAEC;IAAkB,CAAC,GAAGH,gBAAgB;IAC9DgB,qBAAqB,CAAEC,IAAI,IAAK;MAC9B,IAAIC,SAAS,GAAGD,IAAI,CAACnC,mBAAmB;MACxC,IAAI,OAAOC,uBAAuB,KAAK,WAAW,EAAE;QAClDmC,SAAS,GAAGhB,cAAc;MAC5B;MACA,IAAIiB,SAAS,GAAGF,IAAI,CAACjC,mBAAmB;MACxC,IAAI,OAAOC,uBAAuB,KAAK,WAAW,EAAE;QAClDkC,SAAS,GAAGhB,iBAAiB;MAC/B;MACA,OAAO;QAAErB,mBAAmB,EAAEoC,SAAS;QAAElC,mBAAmB,EAAEmC;MAAU,CAAC;IAC3E,CAAC,CAAC;EACJ,CAAC,EAAE,CAACpC,uBAAuB,EAAEE,uBAAuB,EAAEe,gBAAgB,CAAC,CAAC;;EAExE;EACA5B,SAAS,CAAC,MAAM;IACd4C,qBAAqB,CAAEC,IAAI,IAAK;MAC9B,IAAIC,SAAS,GAAGD,IAAI,CAACnC,mBAAmB;MACxC,IAAI,OAAOC,uBAAuB,KAAK,WAAW,EAAE;QAClDmC,SAAS,GAAGnC,uBAAuB;MACrC;MACA,IAAIoC,SAAS,GAAGF,IAAI,CAACjC,mBAAmB;MACxC,IAAI,OAAOC,uBAAuB,KAAK,WAAW,EAAE;QAClDkC,SAAS,GAAGlC,uBAAuB;MACrC;MAEA,OAAO;QACLH,mBAAmB,EAAEoC,SAAS;QAC9BlC,mBAAmB,EAAEmC;MACvB,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EAAE,CAACpC,uBAAuB,EAAEE,uBAAuB,CAAC,CAAC;;EAEtD;EACA;EACAb,SAAS,CAAC,MAAM;IACd,IAAIU,mBAAmB,KAAKe,SAAS,EAAE;MACrC;IACF;IACA,IAAIb,mBAAmB,KAAKa,SAAS,EAAE;MACrC;IACF;IACA;IACA,IAAI,CAACV,IAAI,IAAI,CAACG,uBAAuB,EAAE;MACrC;IACF;IAEA,IAAIR,mBAAmB,EAAE;MACvBK,IAAI,CAACiC,UAAU,CAACC,MAAM,CAAC,CAAC;IAC1B,CAAC,MAAM;MACLlC,IAAI,CAACiC,UAAU,CAACN,OAAO,CAAC,CAAC;IAC3B;IAEA3B,IAAI,CAACkB,MAAM,CAACiB,sBAAsB,CAAChC,uBAAuB,CAAC;IAC3D,IAAIN,mBAAmB,EAAE;MACvBG,IAAI,CAACkB,MAAM,CAACgB,MAAM,CAAC,CAAC;IACtB,CAAC,MAAM;MACLlC,IAAI,CAACkB,MAAM,CAACS,OAAO,CAAC,CAAC;IACvB;EACF,CAAC,EAAE,CAAC3B,IAAI,EAAEL,mBAAmB,EAAEE,mBAAmB,EAAEM,uBAAuB,CAAC,CAAC;EAE7E,oBAAOnB,KAAA,CAAAoD,aAAA,CAAApD,KAAA,CAAAqD,QAAA,QAAGtC,QAAW,CAAC;AACxB,CAAC"}
@@ -1,2 +1,2 @@
1
- export const version = '0.3.0';
1
+ export const version = '0.3.1';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaStreamManagement.d.ts","sourceRoot":"","sources":["../../../src/providers/MediaStreamManagement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAKtE,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,8GAI/B,kBAAkB,wBAAwB,CAAC,sBAuG7C,CAAC"}
1
+ {"version":3,"file":"MediaStreamManagement.d.ts","sourceRoot":"","sources":["../../../src/providers/MediaStreamManagement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAgC,MAAM,OAAO,CAAC;AAM/E,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,8GAI/B,kBAAkB,wBAAwB,CAAC,sBA4I7C,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "0.3.0";
1
+ export declare const version = "0.3.1";
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": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "packageManager": "yarn@3.2.4",
5
5
  "main": "dist/commonjs/index.js",
6
6
  "module": "dist/module/index.js",
@@ -1,7 +1,8 @@
1
- import React, { PropsWithChildren, useEffect, useState } from 'react';
1
+ import React, { PropsWithChildren, useEffect, useMemo, useState } from 'react';
2
2
  import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
3
  import { useAppStateListener } from '../utils/hooks';
4
4
  import { NativeModules, Platform } from 'react-native';
5
+ import type { TargetResolution } from '@stream-io/video-client';
5
6
 
6
7
  export type MediaDevicesInitialState = {
7
8
  /**
@@ -31,6 +32,44 @@ export const MediaStreamManagement = ({
31
32
  }: PropsWithChildren<MediaDevicesInitialState>) => {
32
33
  const call = useCall();
33
34
  const { useCallSettings } = useCallStateHooks();
35
+ const settings = useCallSettings();
36
+
37
+ // Get the target resolution from the settings and memoize it
38
+ // Memoization is needed to avoid unnecessary useEffect triggers
39
+ const targetResolutionSetting = useMemo<TargetResolution | undefined>(() => {
40
+ if (
41
+ settings?.video.target_resolution?.width === undefined ||
42
+ settings?.video.target_resolution?.height === undefined ||
43
+ settings?.video.target_resolution?.bitrate === undefined
44
+ ) {
45
+ return undefined;
46
+ }
47
+ return {
48
+ width: settings?.video.target_resolution.width,
49
+ height: settings?.video.target_resolution.height,
50
+ bitrate: settings?.video.target_resolution.bitrate,
51
+ };
52
+ }, [
53
+ settings?.video.target_resolution.width,
54
+ settings?.video.target_resolution.height,
55
+ settings?.video.target_resolution.bitrate,
56
+ ]);
57
+
58
+ // Get the target resolution from the default device settings and memoize it
59
+ // Memoization is needed to avoid unnecessary useEffect triggers
60
+ const defaultOnSetting = useMemo(() => {
61
+ if (
62
+ settings?.audio.mic_default_on === undefined ||
63
+ settings?.video.camera_default_on === undefined
64
+ ) {
65
+ return undefined;
66
+ } else {
67
+ return {
68
+ mic_default_on: settings?.audio.mic_default_on,
69
+ camera_default_on: settings?.video.camera_default_on,
70
+ };
71
+ }
72
+ }, [settings?.audio.mic_default_on, settings?.video.camera_default_on]);
34
73
 
35
74
  // Resume/Disable video stream tracks when app goes to background/foreground
36
75
  // To save on CPU resources
@@ -61,28 +100,26 @@ export const MediaStreamManagement = ({
61
100
  initialVideoEnabled: undefined,
62
101
  });
63
102
 
64
- const settings = useCallSettings();
65
-
66
103
  // Use backend settings to set initial audio/video enabled state
67
104
  // It is applied only if the prop was undefined -- meaning user did not provide any value
68
105
  useEffect(() => {
69
- if (!settings) {
106
+ if (!defaultOnSetting) {
70
107
  return;
71
108
  }
72
109
 
73
- const { audio, video } = settings;
110
+ const { mic_default_on, camera_default_on } = defaultOnSetting;
74
111
  setInitialDeviceState((prev) => {
75
112
  let initAudio = prev.initialAudioEnabled;
76
113
  if (typeof propInitialAudioEnabled === 'undefined') {
77
- initAudio = audio.mic_default_on;
114
+ initAudio = mic_default_on;
78
115
  }
79
116
  let initVideo = prev.initialVideoEnabled;
80
117
  if (typeof propInitialVideoEnabled === 'undefined') {
81
- initVideo = video.camera_default_on;
118
+ initVideo = camera_default_on;
82
119
  }
83
120
  return { initialAudioEnabled: initAudio, initialVideoEnabled: initVideo };
84
121
  });
85
- }, [propInitialAudioEnabled, propInitialVideoEnabled, settings]);
122
+ }, [propInitialAudioEnabled, propInitialVideoEnabled, defaultOnSetting]);
86
123
 
87
124
  // Apply SDK settings to set the initial audio/video enabled state
88
125
  useEffect(() => {
@@ -112,23 +149,24 @@ export const MediaStreamManagement = ({
112
149
  if (initialVideoEnabled === undefined) {
113
150
  return;
114
151
  }
115
- // we wait until we receive the settings from the backend
116
- if (!call || !settings) {
152
+ // we wait until we receive the resolution settings from the backend
153
+ if (!call || !targetResolutionSetting) {
117
154
  return;
118
155
  }
156
+
119
157
  if (initialAudioEnabled) {
120
158
  call.microphone.enable();
121
159
  } else {
122
160
  call.microphone.disable();
123
161
  }
124
162
 
125
- call.camera.selectTargetResolution(settings.video.target_resolution);
163
+ call.camera.selectTargetResolution(targetResolutionSetting);
126
164
  if (initialVideoEnabled) {
127
165
  call.camera.enable();
128
166
  } else {
129
167
  call.camera.disable();
130
168
  }
131
- }, [call, initialAudioEnabled, initialVideoEnabled, settings]);
169
+ }, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
132
170
 
133
171
  return <>{children}</>;
134
172
  };
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.3.0';
1
+ export const version = '0.3.1';