@stream-io/video-react-native-sdk 0.6.21 → 0.7.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.
Files changed (111) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/commonjs/components/Call/CallControls/ToggleAudioPreviewButton.js +6 -6
  3. package/dist/commonjs/components/Call/CallControls/ToggleAudioPreviewButton.js.map +1 -1
  4. package/dist/commonjs/components/Call/CallControls/ToggleAudioPublishingButton.js +5 -5
  5. package/dist/commonjs/components/Call/CallControls/ToggleAudioPublishingButton.js.map +1 -1
  6. package/dist/commonjs/components/Call/CallControls/ToggleCameraFaceButton.js +4 -4
  7. package/dist/commonjs/components/Call/CallControls/ToggleCameraFaceButton.js.map +1 -1
  8. package/dist/commonjs/components/Call/CallControls/ToggleVideoPreviewButton.js +6 -6
  9. package/dist/commonjs/components/Call/CallControls/ToggleVideoPreviewButton.js.map +1 -1
  10. package/dist/commonjs/components/Call/CallControls/ToggleVideoPublishingButton.js +5 -5
  11. package/dist/commonjs/components/Call/CallControls/ToggleVideoPublishingButton.js.map +1 -1
  12. package/dist/commonjs/components/Call/Lobby/Lobby.js +4 -2
  13. package/dist/commonjs/components/Call/Lobby/Lobby.js.map +1 -1
  14. package/dist/commonjs/components/Call/RingingCallContent/IncomingCall.js +2 -0
  15. package/dist/commonjs/components/Call/RingingCallContent/IncomingCall.js.map +1 -1
  16. package/dist/commonjs/components/Call/RingingCallContent/OutgoingCall.js +7 -5
  17. package/dist/commonjs/components/Call/RingingCallContent/OutgoingCall.js.map +1 -1
  18. package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamAudioControlButton.js +6 -11
  19. package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamAudioControlButton.js.map +1 -1
  20. package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamVideoControlButton.js +4 -4
  21. package/dist/commonjs/components/Livestream/LivestreamControls/LivestreamVideoControlButton.js.map +1 -1
  22. package/dist/commonjs/hooks/index.js +11 -0
  23. package/dist/commonjs/hooks/index.js.map +1 -1
  24. package/dist/commonjs/hooks/useApplyDefaultMediaStreamSettings.js +52 -0
  25. package/dist/commonjs/hooks/useApplyDefaultMediaStreamSettings.js.map +1 -0
  26. package/dist/commonjs/index.js +1 -8
  27. package/dist/commonjs/index.js.map +1 -1
  28. package/dist/commonjs/providers/StreamCall.js +30 -4
  29. package/dist/commonjs/providers/StreamCall.js.map +1 -1
  30. package/dist/commonjs/providers/index.js +0 -11
  31. package/dist/commonjs/providers/index.js.map +1 -1
  32. package/dist/commonjs/version.js +1 -1
  33. package/dist/commonjs/version.js.map +1 -1
  34. package/dist/module/components/Call/CallControls/ToggleAudioPreviewButton.js +7 -7
  35. package/dist/module/components/Call/CallControls/ToggleAudioPreviewButton.js.map +1 -1
  36. package/dist/module/components/Call/CallControls/ToggleAudioPublishingButton.js +6 -6
  37. package/dist/module/components/Call/CallControls/ToggleAudioPublishingButton.js.map +1 -1
  38. package/dist/module/components/Call/CallControls/ToggleCameraFaceButton.js +5 -5
  39. package/dist/module/components/Call/CallControls/ToggleCameraFaceButton.js.map +1 -1
  40. package/dist/module/components/Call/CallControls/ToggleVideoPreviewButton.js +7 -7
  41. package/dist/module/components/Call/CallControls/ToggleVideoPreviewButton.js.map +1 -1
  42. package/dist/module/components/Call/CallControls/ToggleVideoPublishingButton.js +6 -6
  43. package/dist/module/components/Call/CallControls/ToggleVideoPublishingButton.js.map +1 -1
  44. package/dist/module/components/Call/Lobby/Lobby.js +4 -2
  45. package/dist/module/components/Call/Lobby/Lobby.js.map +1 -1
  46. package/dist/module/components/Call/RingingCallContent/IncomingCall.js +2 -0
  47. package/dist/module/components/Call/RingingCallContent/IncomingCall.js.map +1 -1
  48. package/dist/module/components/Call/RingingCallContent/OutgoingCall.js +8 -6
  49. package/dist/module/components/Call/RingingCallContent/OutgoingCall.js.map +1 -1
  50. package/dist/module/components/Livestream/LivestreamControls/LivestreamAudioControlButton.js +7 -12
  51. package/dist/module/components/Livestream/LivestreamControls/LivestreamAudioControlButton.js.map +1 -1
  52. package/dist/module/components/Livestream/LivestreamControls/LivestreamVideoControlButton.js +5 -5
  53. package/dist/module/components/Livestream/LivestreamControls/LivestreamVideoControlButton.js.map +1 -1
  54. package/dist/module/hooks/index.js +1 -0
  55. package/dist/module/hooks/index.js.map +1 -1
  56. package/dist/module/hooks/useApplyDefaultMediaStreamSettings.js +46 -0
  57. package/dist/module/hooks/useApplyDefaultMediaStreamSettings.js.map +1 -0
  58. package/dist/module/index.js +1 -1
  59. package/dist/module/index.js.map +1 -1
  60. package/dist/module/providers/StreamCall.js +30 -4
  61. package/dist/module/providers/StreamCall.js.map +1 -1
  62. package/dist/module/providers/index.js +0 -1
  63. package/dist/module/providers/index.js.map +1 -1
  64. package/dist/module/version.js +1 -1
  65. package/dist/module/version.js.map +1 -1
  66. package/dist/typescript/components/Call/CallControls/ToggleAudioPreviewButton.d.ts.map +1 -1
  67. package/dist/typescript/components/Call/CallControls/ToggleAudioPublishingButton.d.ts.map +1 -1
  68. package/dist/typescript/components/Call/CallControls/ToggleCameraFaceButton.d.ts.map +1 -1
  69. package/dist/typescript/components/Call/CallControls/ToggleVideoPreviewButton.d.ts.map +1 -1
  70. package/dist/typescript/components/Call/CallControls/ToggleVideoPublishingButton.d.ts.map +1 -1
  71. package/dist/typescript/components/Call/Lobby/Lobby.d.ts.map +1 -1
  72. package/dist/typescript/components/Call/RingingCallContent/IncomingCall.d.ts.map +1 -1
  73. package/dist/typescript/components/Call/RingingCallContent/OutgoingCall.d.ts.map +1 -1
  74. package/dist/typescript/components/Livestream/LivestreamControls/LivestreamAudioControlButton.d.ts.map +1 -1
  75. package/dist/typescript/components/Livestream/LivestreamControls/LivestreamVideoControlButton.d.ts.map +1 -1
  76. package/dist/typescript/hooks/index.d.ts +1 -0
  77. package/dist/typescript/hooks/index.d.ts.map +1 -1
  78. package/dist/typescript/hooks/useApplyDefaultMediaStreamSettings.d.ts +5 -0
  79. package/dist/typescript/hooks/useApplyDefaultMediaStreamSettings.d.ts.map +1 -0
  80. package/dist/typescript/index.d.ts +1 -1
  81. package/dist/typescript/index.d.ts.map +1 -1
  82. package/dist/typescript/providers/StreamCall.d.ts +1 -8
  83. package/dist/typescript/providers/StreamCall.d.ts.map +1 -1
  84. package/dist/typescript/providers/index.d.ts +0 -1
  85. package/dist/typescript/providers/index.d.ts.map +1 -1
  86. package/dist/typescript/version.d.ts +1 -1
  87. package/dist/typescript/version.d.ts.map +1 -1
  88. package/package.json +1 -1
  89. package/src/components/Call/CallControls/ToggleAudioPreviewButton.tsx +6 -8
  90. package/src/components/Call/CallControls/ToggleAudioPublishingButton.tsx +5 -10
  91. package/src/components/Call/CallControls/ToggleCameraFaceButton.tsx +4 -9
  92. package/src/components/Call/CallControls/ToggleVideoPreviewButton.tsx +6 -8
  93. package/src/components/Call/CallControls/ToggleVideoPublishingButton.tsx +5 -10
  94. package/src/components/Call/Lobby/Lobby.tsx +4 -2
  95. package/src/components/Call/RingingCallContent/IncomingCall.tsx +3 -0
  96. package/src/components/Call/RingingCallContent/OutgoingCall.tsx +8 -11
  97. package/src/components/Livestream/LivestreamControls/LivestreamAudioControlButton.tsx +17 -29
  98. package/src/components/Livestream/LivestreamControls/LivestreamVideoControlButton.tsx +4 -5
  99. package/src/hooks/index.ts +1 -0
  100. package/src/hooks/useApplyDefaultMediaStreamSettings.tsx +42 -0
  101. package/src/index.ts +1 -1
  102. package/src/providers/StreamCall.tsx +37 -18
  103. package/src/providers/index.ts +0 -1
  104. package/src/version.ts +1 -1
  105. package/dist/commonjs/providers/MediaStreamManagement.js +0 -116
  106. package/dist/commonjs/providers/MediaStreamManagement.js.map +0 -1
  107. package/dist/module/providers/MediaStreamManagement.js +0 -107
  108. package/dist/module/providers/MediaStreamManagement.js.map +0 -1
  109. package/dist/typescript/providers/MediaStreamManagement.d.ts +0 -23
  110. package/dist/typescript/providers/MediaStreamManagement.d.ts.map +0 -1
  111. package/src/providers/MediaStreamManagement.tsx +0 -132
@@ -1,116 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.MediaStreamManagement = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _videoReactBindings = require("@stream-io/video-react-bindings");
9
- var _hooks = require("../utils/hooks");
10
- var _reactNative = require("react-native");
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
- /**
14
- *
15
- * Provides `MediaStreamManagement` wrapper that allow the integrators to handle:
16
- * 1. the initial device state enablement (for example in a custom lobby component)
17
- * 2. media stream publishing
18
- * @param params
19
- * @returns
20
- *
21
- * @category Device Management
22
- */
23
- const MediaStreamManagement = ({
24
- initialAudioEnabled: propInitialAudioEnabled,
25
- initialVideoEnabled: propInitialVideoEnabled,
26
- children
27
- }) => {
28
- const call = (0, _videoReactBindings.useCall)();
29
- const {
30
- useCallSettings
31
- } = (0, _videoReactBindings.useCallStateHooks)();
32
- const settings = useCallSettings();
33
-
34
- // Get the target resolution from the settings and memoize it
35
- // Memoization is needed to avoid unnecessary useEffect triggers
36
- const targetResolutionSetting = (0, _react.useMemo)(() => {
37
- var _settings$video$targe, _settings$video$targe2, _settings$video$targe3;
38
- 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) {
39
- return {
40
- width: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width,
41
- height: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height,
42
- bitrate: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate
43
- };
44
- }
45
- return undefined;
46
- }, [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]);
47
-
48
- // Resume/Disable video stream tracks when app goes to background/foreground
49
- // To save on CPU resources
50
- (0, _hooks.useAppStateListener)(() => {
51
- var _call$camera;
52
- call === null || call === void 0 || (_call$camera = call.camera) === null || _call$camera === void 0 || _call$camera.resume();
53
- }, () => {
54
- if (_reactNative.Platform.OS === 'android') {
55
- var _NativeModules$Stream;
56
- // in Android, we need to check if we are in PiP mode
57
- // in PiP mode, we don't want to disable the camera
58
- _reactNative.NativeModules === null || _reactNative.NativeModules === void 0 || (_NativeModules$Stream = _reactNative.NativeModules.StreamVideoReactNative) === null || _NativeModules$Stream === void 0 || _NativeModules$Stream.isInPiPMode().then(isInPiP => {
59
- if (!isInPiP) {
60
- var _call$camera2;
61
- call === null || call === void 0 || (_call$camera2 = call.camera) === null || _call$camera2 === void 0 || _call$camera2.disable();
62
- }
63
- });
64
- } else {
65
- var _call$camera3;
66
- call === null || call === void 0 || (_call$camera3 = call.camera) === null || _call$camera3 === void 0 || _call$camera3.disable();
67
- }
68
- });
69
-
70
- /*
71
- * This is the object is used to track the initial audio/video enablement
72
- * Uses backend settings or the Prop to set initial audio/video enabled
73
- * Backend settings is applied only if the prop was undefined -- meaning user did not provide any value
74
- * Memoization is needed to avoid unnecessary useEffect triggers
75
- */
76
- const {
77
- initialAudioEnabled,
78
- initialVideoEnabled
79
- } = (0, _react.useMemo)(() => {
80
- return {
81
- initialAudioEnabled: propInitialAudioEnabled ?? (settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on),
82
- initialVideoEnabled: propInitialVideoEnabled ?? (settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on)
83
- };
84
- }, [settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on, settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on, propInitialAudioEnabled, propInitialVideoEnabled]);
85
-
86
- // The main logic
87
- // Enable or Disable the audio/video stream based on the initial state
88
- (0, _react.useEffect)(() => {
89
- if (!call) {
90
- return;
91
- }
92
- if (initialAudioEnabled !== undefined) {
93
- if (initialAudioEnabled) {
94
- call.microphone.enable();
95
- } else {
96
- call.microphone.disable();
97
- }
98
- }
99
-
100
- // we wait until we receive the resolution settings from the backend
101
- if (!targetResolutionSetting) {
102
- return;
103
- }
104
- call.camera.selectTargetResolution(targetResolutionSetting);
105
- if (initialVideoEnabled !== undefined) {
106
- if (initialVideoEnabled) {
107
- call.camera.enable();
108
- } else {
109
- call.camera.disable();
110
- }
111
- }
112
- }, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
113
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
114
- };
115
- exports.MediaStreamManagement = MediaStreamManagement;
116
- //# sourceMappingURL=MediaStreamManagement.js.map
@@ -1 +0,0 @@
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","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","useAppStateListener","_call$camera","camera","resume","Platform","OS","_NativeModules$Stream","NativeModules","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","audio","mic_default_on","camera_default_on","useEffect","microphone","enable","selectTargetResolution","createElement","Fragment","exports"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- import React, { useEffect, useMemo } from 'react';
2
- import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
- import { useAppStateListener } from '../utils/hooks';
4
- import { NativeModules, Platform } from 'react-native';
5
- /**
6
- *
7
- * Provides `MediaStreamManagement` wrapper that allow the integrators to handle:
8
- * 1. the initial device state enablement (for example in a custom lobby component)
9
- * 2. media stream publishing
10
- * @param params
11
- * @returns
12
- *
13
- * @category Device Management
14
- */
15
- export const MediaStreamManagement = ({
16
- initialAudioEnabled: propInitialAudioEnabled,
17
- initialVideoEnabled: propInitialVideoEnabled,
18
- children
19
- }) => {
20
- const call = useCall();
21
- const {
22
- useCallSettings
23
- } = useCallStateHooks();
24
- const settings = useCallSettings();
25
-
26
- // Get the target resolution from the settings and memoize it
27
- // Memoization is needed to avoid unnecessary useEffect triggers
28
- const targetResolutionSetting = useMemo(() => {
29
- var _settings$video$targe, _settings$video$targe2, _settings$video$targe3;
30
- 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) {
31
- return {
32
- width: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.width,
33
- height: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.height,
34
- bitrate: settings === null || settings === void 0 ? void 0 : settings.video.target_resolution.bitrate
35
- };
36
- }
37
- return undefined;
38
- }, [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]);
39
-
40
- // Resume/Disable video stream tracks when app goes to background/foreground
41
- // To save on CPU resources
42
- useAppStateListener(() => {
43
- var _call$camera;
44
- call === null || call === void 0 || (_call$camera = call.camera) === null || _call$camera === void 0 || _call$camera.resume();
45
- }, () => {
46
- if (Platform.OS === 'android') {
47
- var _NativeModules$Stream;
48
- // in Android, we need to check if we are in PiP mode
49
- // in PiP mode, we don't want to disable the camera
50
- NativeModules === null || NativeModules === void 0 || (_NativeModules$Stream = NativeModules.StreamVideoReactNative) === null || _NativeModules$Stream === void 0 || _NativeModules$Stream.isInPiPMode().then(isInPiP => {
51
- if (!isInPiP) {
52
- var _call$camera2;
53
- call === null || call === void 0 || (_call$camera2 = call.camera) === null || _call$camera2 === void 0 || _call$camera2.disable();
54
- }
55
- });
56
- } else {
57
- var _call$camera3;
58
- call === null || call === void 0 || (_call$camera3 = call.camera) === null || _call$camera3 === void 0 || _call$camera3.disable();
59
- }
60
- });
61
-
62
- /*
63
- * This is the object is used to track the initial audio/video enablement
64
- * Uses backend settings or the Prop to set initial audio/video enabled
65
- * Backend settings is applied only if the prop was undefined -- meaning user did not provide any value
66
- * Memoization is needed to avoid unnecessary useEffect triggers
67
- */
68
- const {
69
- initialAudioEnabled,
70
- initialVideoEnabled
71
- } = useMemo(() => {
72
- return {
73
- initialAudioEnabled: propInitialAudioEnabled ?? (settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on),
74
- initialVideoEnabled: propInitialVideoEnabled ?? (settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on)
75
- };
76
- }, [settings === null || settings === void 0 ? void 0 : settings.audio.mic_default_on, settings === null || settings === void 0 ? void 0 : settings.video.camera_default_on, propInitialAudioEnabled, propInitialVideoEnabled]);
77
-
78
- // The main logic
79
- // Enable or Disable the audio/video stream based on the initial state
80
- useEffect(() => {
81
- if (!call) {
82
- return;
83
- }
84
- if (initialAudioEnabled !== undefined) {
85
- if (initialAudioEnabled) {
86
- call.microphone.enable();
87
- } else {
88
- call.microphone.disable();
89
- }
90
- }
91
-
92
- // we wait until we receive the resolution settings from the backend
93
- if (!targetResolutionSetting) {
94
- return;
95
- }
96
- call.camera.selectTargetResolution(targetResolutionSetting);
97
- if (initialVideoEnabled !== undefined) {
98
- if (initialVideoEnabled) {
99
- call.camera.enable();
100
- } else {
101
- call.camera.disable();
102
- }
103
- }
104
- }, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
105
- return /*#__PURE__*/React.createElement(React.Fragment, null, children);
106
- };
107
- //# sourceMappingURL=MediaStreamManagement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useCall","useCallStateHooks","useAppStateListener","NativeModules","Platform","MediaStreamManagement","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","_call$camera","camera","resume","OS","_NativeModules$Stream","StreamVideoReactNative","isInPiPMode","then","isInPiP","_call$camera2","disable","_call$camera3","audio","mic_default_on","camera_default_on","microphone","enable","selectTargetResolution","createElement","Fragment"],"sourceRoot":"../../../src","sources":["providers/MediaStreamManagement.tsx"],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- export type MediaDevicesInitialState = {
3
- /**
4
- * Provides external control over the initial audio input (microphone) enablement. Overrides the default false.
5
- */
6
- initialAudioEnabled?: boolean;
7
- /**
8
- * Provides external control over the initial video input (camera) enablement. Overrides the default false.
9
- */
10
- initialVideoEnabled?: boolean;
11
- };
12
- /**
13
- *
14
- * Provides `MediaStreamManagement` wrapper that allow the integrators to handle:
15
- * 1. the initial device state enablement (for example in a custom lobby component)
16
- * 2. media stream publishing
17
- * @param params
18
- * @returns
19
- *
20
- * @category Device Management
21
- */
22
- export declare const MediaStreamManagement: ({ initialAudioEnabled: propInitialAudioEnabled, initialVideoEnabled: propInitialVideoEnabled, children, }: PropsWithChildren<MediaDevicesInitialState>) => React.JSX.Element;
23
- //# sourceMappingURL=MediaStreamManagement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MediaStreamManagement.d.ts","sourceRoot":"","sources":["../../../src/providers/MediaStreamManagement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAsB,MAAM,OAAO,CAAC;AAMrE,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,sBAoG7C,CAAC"}
@@ -1,132 +0,0 @@
1
- import React, { PropsWithChildren, useEffect, useMemo } from 'react';
2
- import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
3
- import { useAppStateListener } from '../utils/hooks';
4
- import { NativeModules, Platform } from 'react-native';
5
- import type { TargetResolution } from '@stream-io/video-client';
6
-
7
- export type MediaDevicesInitialState = {
8
- /**
9
- * Provides external control over the initial audio input (microphone) enablement. Overrides the default false.
10
- */
11
- initialAudioEnabled?: boolean;
12
- /**
13
- * Provides external control over the initial video input (camera) enablement. Overrides the default false.
14
- */
15
- initialVideoEnabled?: boolean;
16
- };
17
-
18
- /**
19
- *
20
- * Provides `MediaStreamManagement` wrapper that allow the integrators to handle:
21
- * 1. the initial device state enablement (for example in a custom lobby component)
22
- * 2. media stream publishing
23
- * @param params
24
- * @returns
25
- *
26
- * @category Device Management
27
- */
28
- export const MediaStreamManagement = ({
29
- initialAudioEnabled: propInitialAudioEnabled,
30
- initialVideoEnabled: propInitialVideoEnabled,
31
- children,
32
- }: PropsWithChildren<MediaDevicesInitialState>) => {
33
- const call = useCall();
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 {
46
- width: settings?.video.target_resolution.width,
47
- height: settings?.video.target_resolution.height,
48
- bitrate: settings?.video.target_resolution.bitrate,
49
- };
50
- }
51
- return undefined;
52
- }, [
53
- settings?.video.target_resolution.width,
54
- settings?.video.target_resolution.height,
55
- settings?.video.target_resolution.bitrate,
56
- ]);
57
-
58
- // Resume/Disable video stream tracks when app goes to background/foreground
59
- // To save on CPU resources
60
- useAppStateListener(
61
- () => {
62
- call?.camera?.resume();
63
- },
64
- () => {
65
- if (Platform.OS === 'android') {
66
- // in Android, we need to check if we are in PiP mode
67
- // in PiP mode, we don't want to disable the camera
68
- NativeModules?.StreamVideoReactNative?.isInPiPMode().then(
69
- (isInPiP: boolean) => {
70
- if (!isInPiP) {
71
- call?.camera?.disable();
72
- }
73
- },
74
- );
75
- } else {
76
- call?.camera?.disable();
77
- }
78
- },
79
- );
80
-
81
- /*
82
- * This is the object is used to track the initial audio/video enablement
83
- * Uses backend settings or the Prop to set initial audio/video enabled
84
- * Backend settings is applied only if the prop was undefined -- meaning user did not provide any value
85
- * Memoization is needed to avoid unnecessary useEffect triggers
86
- */
87
- const { initialAudioEnabled, initialVideoEnabled } =
88
- useMemo<MediaDevicesInitialState>(() => {
89
- return {
90
- initialAudioEnabled:
91
- propInitialAudioEnabled ?? settings?.audio.mic_default_on,
92
- initialVideoEnabled:
93
- propInitialVideoEnabled ?? settings?.video.camera_default_on,
94
- };
95
- }, [
96
- settings?.audio.mic_default_on,
97
- settings?.video.camera_default_on,
98
- propInitialAudioEnabled,
99
- propInitialVideoEnabled,
100
- ]);
101
-
102
- // The main logic
103
- // Enable or Disable the audio/video stream based on the initial state
104
- useEffect(() => {
105
- if (!call) {
106
- return;
107
- }
108
-
109
- if (initialAudioEnabled !== undefined) {
110
- if (initialAudioEnabled) {
111
- call.microphone.enable();
112
- } else {
113
- call.microphone.disable();
114
- }
115
- }
116
-
117
- // we wait until we receive the resolution settings from the backend
118
- if (!targetResolutionSetting) {
119
- return;
120
- }
121
- call.camera.selectTargetResolution(targetResolutionSetting);
122
- if (initialVideoEnabled !== undefined) {
123
- if (initialVideoEnabled) {
124
- call.camera.enable();
125
- } else {
126
- call.camera.disable();
127
- }
128
- }
129
- }, [call, initialAudioEnabled, initialVideoEnabled, targetResolutionSetting]);
130
-
131
- return <>{children}</>;
132
- };