@stream-io/video-react-sdk 1.12.7 → 1.12.9

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,28 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [1.12.9](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.12.8...@stream-io/video-react-sdk-1.12.9) (2025-03-13)
6
+
7
+ ### Dependency Updates
8
+
9
+ * `@stream-io/video-client` updated to version `1.18.6`
10
+ * `@stream-io/video-react-bindings` updated to version `1.5.8`
11
+
12
+ ### Bug Fixes
13
+
14
+ * expose useDeviceList ([#1723](https://github.com/GetStream/stream-video-js/issues/1723)) ([547703b](https://github.com/GetStream/stream-video-js/commit/547703b75daefbd0e34db6bd17cfc2f45d861005)), closes [#1701](https://github.com/GetStream/stream-video-js/issues/1701)
15
+
16
+ ## [1.12.8](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.12.7...@stream-io/video-react-sdk-1.12.8) (2025-03-12)
17
+
18
+ ### Dependency Updates
19
+
20
+ * `@stream-io/video-client` updated to version `1.18.5`
21
+ * `@stream-io/video-react-bindings` updated to version `1.5.7`
22
+
23
+ ### Bug Fixes
24
+
25
+ * add pending browser permission state ([#1718](https://github.com/GetStream/stream-video-js/issues/1718)) ([7f24be6](https://github.com/GetStream/stream-video-js/commit/7f24be63d33105d0688be7b5b625bc9b6aa0d3a9))
26
+
5
27
  ## [1.12.7](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.12.6...@stream-io/video-react-sdk-1.12.7) (2025-03-10)
6
28
 
7
29
  ### Dependency Updates
package/dist/index.cjs.js CHANGED
@@ -1334,7 +1334,7 @@ const ToggleAudioPreviewButton = (props) => {
1334
1334
  const { caption, onMenuToggle, ...restCompositeButtonProps } = props;
1335
1335
  const { t } = videoReactBindings.useI18n();
1336
1336
  const { useMicrophoneState } = videoReactBindings.useCallStateHooks();
1337
- const { microphone, optimisticIsMute, hasBrowserPermission } = useMicrophoneState();
1337
+ const { microphone, optimisticIsMute, hasBrowserPermission, isPromptingPermission, } = useMicrophoneState();
1338
1338
  const [tooltipDisabled, setTooltipDisabled] = react.useState(false);
1339
1339
  const handleClick = createCallControlHandler(props, () => microphone.toggle());
1340
1340
  return (jsxRuntime.jsx(WithTooltip, { title: !hasBrowserPermission
@@ -1344,14 +1344,14 @@ const ToggleAudioPreviewButton = (props) => {
1344
1344
  : 'preview-audio-mute-button', onClick: handleClick, ...restCompositeButtonProps, onMenuToggle: (shown) => {
1345
1345
  setTooltipDisabled(shown);
1346
1346
  onMenuToggle?.(shown);
1347
- }, children: [jsxRuntime.jsx(Icon, { icon: !optimisticIsMute ? 'mic' : 'mic-off' }), !hasBrowserPermission && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", title: t('Check your browser audio permissions'), children: "!" }))] }) }));
1347
+ }, children: [jsxRuntime.jsx(Icon, { icon: !optimisticIsMute ? 'mic' : 'mic-off' }), !hasBrowserPermission && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", title: t('Check your browser audio permissions'), children: "!" })), isPromptingPermission && (jsxRuntime.jsx("span", { className: "str-video__pending-permission", title: t('Waiting for permission'), children: "?" }))] }) }));
1348
1348
  };
1349
1349
  const ToggleAudioPublishingButton = (props) => {
1350
1350
  const { t } = videoReactBindings.useI18n();
1351
1351
  const { caption, Menu = jsxRuntime.jsx(DeviceSelectorAudioInput, { visualType: "list" }), menuPlacement = 'top', onMenuToggle, ...restCompositeButtonProps } = props;
1352
1352
  const { hasPermission, requestPermission, isAwaitingPermission } = useRequestPermission(videoClient.OwnCapability.SEND_AUDIO);
1353
1353
  const { useMicrophoneState } = videoReactBindings.useCallStateHooks();
1354
- const { microphone, optimisticIsMute, hasBrowserPermission } = useMicrophoneState();
1354
+ const { microphone, optimisticIsMute, hasBrowserPermission, isPromptingPermission, } = useMicrophoneState();
1355
1355
  const [tooltipDisabled, setTooltipDisabled] = react.useState(false);
1356
1356
  const handleClick = createCallControlHandler(props, async () => {
1357
1357
  if (!hasPermission) {
@@ -1368,14 +1368,14 @@ const ToggleAudioPublishingButton = (props) => {
1368
1368
  : caption ?? t('Mic'), tooltipDisabled: tooltipDisabled, children: jsxRuntime.jsxs(CompositeButton, { active: optimisticIsMute, caption: caption, variant: "secondary", disabled: !hasBrowserPermission || !hasPermission, "data-testid": optimisticIsMute ? 'audio-unmute-button' : 'audio-mute-button', onClick: handleClick, Menu: Menu, menuPlacement: menuPlacement, menuOffset: 16, ...restCompositeButtonProps, onMenuToggle: (shown) => {
1369
1369
  setTooltipDisabled(shown);
1370
1370
  onMenuToggle?.(shown);
1371
- }, children: [jsxRuntime.jsx(Icon, { icon: optimisticIsMute ? 'mic-off' : 'mic' }), (!hasBrowserPermission || !hasPermission) && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", children: "!" }))] }) }) }) }));
1371
+ }, children: [jsxRuntime.jsx(Icon, { icon: optimisticIsMute ? 'mic-off' : 'mic' }), (!hasBrowserPermission || !hasPermission) && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", children: "!" })), isPromptingPermission && (jsxRuntime.jsx("span", { className: "str-video__pending-permission", title: t('Waiting for permission'), children: "?" }))] }) }) }) }));
1372
1372
  };
1373
1373
 
1374
1374
  const ToggleVideoPreviewButton = (props) => {
1375
1375
  const { caption, Menu = DeviceSelectorVideo, menuPlacement = 'top', onMenuToggle, ...restCompositeButtonProps } = props;
1376
1376
  const { t } = videoReactBindings.useI18n();
1377
1377
  const { useCameraState } = videoReactBindings.useCallStateHooks();
1378
- const { camera, optimisticIsMute, hasBrowserPermission } = useCameraState();
1378
+ const { camera, optimisticIsMute, hasBrowserPermission, isPromptingPermission, } = useCameraState();
1379
1379
  const [tooltipDisabled, setTooltipDisabled] = react.useState(false);
1380
1380
  const handleClick = createCallControlHandler(props, () => camera.toggle());
1381
1381
  return (jsxRuntime.jsx(WithTooltip, { title: !hasBrowserPermission
@@ -1385,14 +1385,14 @@ const ToggleVideoPreviewButton = (props) => {
1385
1385
  : 'preview-video-mute-button', onClick: handleClick, disabled: !hasBrowserPermission, Menu: Menu, menuPlacement: menuPlacement, ...restCompositeButtonProps, onMenuToggle: (shown) => {
1386
1386
  setTooltipDisabled(shown);
1387
1387
  onMenuToggle?.(shown);
1388
- }, children: [jsxRuntime.jsx(Icon, { icon: !optimisticIsMute ? 'camera' : 'camera-off' }), !hasBrowserPermission && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", title: t('Check your browser video permissions'), children: "!" }))] }) }));
1388
+ }, children: [jsxRuntime.jsx(Icon, { icon: !optimisticIsMute ? 'camera' : 'camera-off' }), !hasBrowserPermission && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", title: t('Check your browser video permissions'), children: "!" })), isPromptingPermission && (jsxRuntime.jsx("span", { className: "str-video__pending-permission", title: t('Waiting for permission'), children: "?" }))] }) }));
1389
1389
  };
1390
1390
  const ToggleVideoPublishingButton = (props) => {
1391
1391
  const { t } = videoReactBindings.useI18n();
1392
1392
  const { caption, Menu = jsxRuntime.jsx(DeviceSelectorVideo, { visualType: "list" }), menuPlacement = 'top', onMenuToggle, ...restCompositeButtonProps } = props;
1393
1393
  const { hasPermission, requestPermission, isAwaitingPermission } = useRequestPermission(videoClient.OwnCapability.SEND_VIDEO);
1394
1394
  const { useCameraState, useCallSettings } = videoReactBindings.useCallStateHooks();
1395
- const { camera, optimisticIsMute, hasBrowserPermission } = useCameraState();
1395
+ const { camera, optimisticIsMute, hasBrowserPermission, isPromptingPermission, } = useCameraState();
1396
1396
  const callSettings = useCallSettings();
1397
1397
  const isPublishingVideoAllowed = callSettings?.video.enabled;
1398
1398
  const [tooltipDisabled, setTooltipDisabled] = react.useState(false);
@@ -1417,7 +1417,7 @@ const ToggleVideoPublishingButton = (props) => {
1417
1417
  onMenuToggle?.(shown);
1418
1418
  }, children: [jsxRuntime.jsx(Icon, { icon: optimisticIsMute ? 'camera-off' : 'camera' }), (!hasBrowserPermission ||
1419
1419
  !hasPermission ||
1420
- !isPublishingVideoAllowed) && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", children: "!" }))] }) }) }) }));
1420
+ !isPublishingVideoAllowed) && (jsxRuntime.jsx("span", { className: "str-video__no-media-permission", children: "!" })), isPromptingPermission && (jsxRuntime.jsx("span", { className: "str-video__pending-permission", title: t('Waiting for permission'), children: "?" }))] }) }) }) }));
1421
1421
  };
1422
1422
 
1423
1423
  const EndCallMenu = (props) => {
@@ -2680,7 +2680,7 @@ const LivestreamPlayer = (props) => {
2680
2680
  return (jsxRuntime.jsx(StreamCall, { call: call, children: jsxRuntime.jsx(LivestreamLayout, { ...layoutProps }) }));
2681
2681
  };
2682
2682
 
2683
- const [major, minor, patch] = ("1.12.7").split('.');
2683
+ const [major, minor, patch] = ("1.12.9").split('.');
2684
2684
  videoClient.setSdkInfo({
2685
2685
  type: videoClient.SfuModels.SdkType.REACT,
2686
2686
  major,
@@ -2768,6 +2768,7 @@ exports.WithTooltip = WithTooltip;
2768
2768
  exports.defaultReactions = defaultReactions;
2769
2769
  exports.translations = translations;
2770
2770
  exports.useBackgroundFilters = useBackgroundFilters;
2771
+ exports.useDeviceList = useDeviceList;
2771
2772
  exports.useHorizontalScrollPosition = useHorizontalScrollPosition;
2772
2773
  exports.useMenuContext = useMenuContext;
2773
2774
  exports.useNoiseCancellation = useNoiseCancellation;