@stream-io/video-react-native-sdk 1.26.6 → 1.27.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/commonjs/contexts/BackgroundFilters.js +12 -16
  3. package/dist/commonjs/contexts/BackgroundFilters.js.map +1 -1
  4. package/dist/commonjs/contexts/internal/BackgroundFiltersContext.js +14 -0
  5. package/dist/commonjs/contexts/internal/BackgroundFiltersContext.js.map +1 -0
  6. package/dist/commonjs/hooks/index.js +11 -0
  7. package/dist/commonjs/hooks/index.js.map +1 -1
  8. package/dist/commonjs/hooks/useModeration.js +63 -0
  9. package/dist/commonjs/hooks/useModeration.js.map +1 -0
  10. package/dist/commonjs/version.js +1 -1
  11. package/dist/module/contexts/BackgroundFilters.js +12 -15
  12. package/dist/module/contexts/BackgroundFilters.js.map +1 -1
  13. package/dist/module/contexts/internal/BackgroundFiltersContext.js +9 -0
  14. package/dist/module/contexts/internal/BackgroundFiltersContext.js.map +1 -0
  15. package/dist/module/hooks/index.js +1 -0
  16. package/dist/module/hooks/index.js.map +1 -1
  17. package/dist/module/hooks/useModeration.js +56 -0
  18. package/dist/module/hooks/useModeration.js.map +1 -0
  19. package/dist/module/version.js +1 -1
  20. package/dist/typescript/contexts/BackgroundFilters.d.ts +2 -43
  21. package/dist/typescript/contexts/BackgroundFilters.d.ts.map +1 -1
  22. package/dist/typescript/contexts/internal/BackgroundFiltersContext.d.ts +44 -0
  23. package/dist/typescript/contexts/internal/BackgroundFiltersContext.d.ts.map +1 -0
  24. package/dist/typescript/hooks/index.d.ts +1 -0
  25. package/dist/typescript/hooks/index.d.ts.map +1 -1
  26. package/dist/typescript/hooks/useModeration.d.ts +9 -0
  27. package/dist/typescript/hooks/useModeration.d.ts.map +1 -0
  28. package/dist/typescript/version.d.ts +1 -1
  29. package/package.json +3 -3
  30. package/src/contexts/BackgroundFilters.tsx +24 -68
  31. package/src/contexts/internal/BackgroundFiltersContext.tsx +52 -0
  32. package/src/hooks/index.ts +1 -0
  33. package/src/hooks/useModeration.ts +83 -0
  34. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [1.27.1](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.27.0...@stream-io/video-react-native-sdk-1.27.1) (2026-01-09)
6
+
7
+ ### Dependency Updates
8
+
9
+ - `@stream-io/video-client` updated to version `1.40.0`
10
+ - `@stream-io/video-react-bindings` updated to version `1.12.7`
11
+
12
+ ## [1.27.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.26.6...@stream-io/video-react-native-sdk-1.27.0) (2025-12-30)
13
+
14
+ ### Features
15
+
16
+ - **react-native:** expose useModeration hook ([#2073](https://github.com/GetStream/stream-video-js/issues/2073)) ([4105ee7](https://github.com/GetStream/stream-video-js/commit/4105ee7c79aa1a1a35d75b4f5f70594eaa7eb33a)), closes [#1822](https://github.com/GetStream/stream-video-js/issues/1822)
17
+
18
+ ### Bug Fixes
19
+
20
+ - correctly restore background blur if available ([b16ffc0](https://github.com/GetStream/stream-video-js/commit/b16ffc0ade1b88437b09fe918deea30d314a530b))
21
+
5
22
  ## [1.26.6](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.26.5...@stream-io/video-react-native-sdk-1.26.6) (2025-12-30)
6
23
 
7
24
  ### Dependency Updates
@@ -7,8 +7,16 @@ exports.useBackgroundFilters = exports.BackgroundFiltersProvider = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _videoReactBindings = require("@stream-io/video-react-bindings");
9
9
  var _reactNative = require("react-native");
10
+ var _BackgroundFiltersContext = require("./internal/BackgroundFiltersContext");
10
11
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ // for maintaining backwards compatibility
13
+
14
+ let videoFiltersModule;
15
+ try {
16
+ videoFiltersModule = require('@stream-io/video-filters-react-native');
17
+ } catch {}
11
18
  const isSupported = function () {
19
+ if (!videoFiltersModule) return false;
12
20
  if (_reactNative.Platform.OS === 'ios') {
13
21
  // only supported on ios 15 and above
14
22
  const currentVersion = parseInt(_reactNative.Platform.Version, 10);
@@ -16,24 +24,12 @@ const isSupported = function () {
16
24
  }
17
25
  return _reactNative.Platform.OS === 'android';
18
26
  }();
19
- let videoFiltersModule;
20
- try {
21
- videoFiltersModule = require('@stream-io/video-filters-react-native');
22
- } catch {}
23
- const resolveAssetSourceFunc = _reactNative.Image.resolveAssetSource;
24
-
25
- // excluding array of images and only allow one image
26
-
27
- /**
28
- * The context for the background filters.
29
- */
30
- const BackgroundFiltersContext = /*#__PURE__*/(0, _react.createContext)(undefined);
31
27
 
32
28
  /**
33
29
  * A hook to access the background filters context API.
34
30
  */
35
31
  const useBackgroundFilters = () => {
36
- const context = (0, _react.useContext)(BackgroundFiltersContext);
32
+ const context = (0, _react.useContext)(_BackgroundFiltersContext.BackgroundFiltersContext);
37
33
  if (!context) {
38
34
  throw new Error('useBackgroundFilters must be used within a BackgroundFiltersProvider');
39
35
  }
@@ -97,7 +93,7 @@ const BackgroundFiltersProvider = ({
97
93
  } else if (blurIntensity === 'light') {
98
94
  filterName = 'BlurLight';
99
95
  }
100
- call?.tracer.trace('backgroundFilters.apply', filterName);
96
+ call?.tracer.trace('videoFilters.apply', filterName);
101
97
  call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
102
98
  track._setVideoEffect(filterName);
103
99
  });
@@ -109,7 +105,7 @@ const BackgroundFiltersProvider = ({
109
105
  if (!isSupported) {
110
106
  return;
111
107
  }
112
- const source = resolveAssetSourceFunc(imageSource);
108
+ const source = _reactNative.Image.resolveAssetSource(imageSource);
113
109
  const imageUri = source.uri;
114
110
  const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
115
111
  if (!registeredImageFiltersSet.has(imageUri)) {
@@ -143,7 +139,7 @@ const BackgroundFiltersProvider = ({
143
139
  applyVideoBlurFilter,
144
140
  disableAllFilters
145
141
  }), [applyBackgroundBlurFilter, applyBackgroundImageFilter, applyVideoBlurFilter, currentBackgroundFilter, disableAllFilters]);
146
- return /*#__PURE__*/_react.default.createElement(BackgroundFiltersContext.Provider, {
142
+ return /*#__PURE__*/_react.default.createElement(_BackgroundFiltersContext.BackgroundFiltersContext.Provider, {
147
143
  value: value
148
144
  }, children);
149
145
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isSupported","Platform","OS","currentVersion","parseInt","Version","videoFiltersModule","resolveAssetSourceFunc","Image","resolveAssetSource","BackgroundFiltersContext","createContext","undefined","useBackgroundFilters","context","useContext","Error","exports","BackgroundFiltersProvider","children","useCall","isBackgroundBlurRegisteredRef","useRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","currentBackgroundFilter","setCurrentBackgroundFilter","useState","applyBackgroundBlurFilter","useCallback","blurIntensity","current","registerBackgroundBlurVideoFilters","filterName","tracer","trace","camera","state","mediaStream","getVideoTracks","forEach","track","_setVideoEffect","blur","applyVideoBlurFilter","registerBlurVideoFilters","applyBackgroundImageFilter","imageSource","source","imageUri","uri","registeredImageFiltersSet","registerVirtualBackgroundFilter","add","image","disableAllFilters","value","useMemo","createElement","Provider"],"sourceRoot":"../../../src","sources":["contexts/BackgroundFilters.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_videoReactBindings","_reactNative","_BackgroundFiltersContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","videoFiltersModule","isSupported","Platform","OS","currentVersion","parseInt","Version","useBackgroundFilters","context","useContext","BackgroundFiltersContext","Error","exports","BackgroundFiltersProvider","children","useCall","isBackgroundBlurRegisteredRef","useRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","currentBackgroundFilter","setCurrentBackgroundFilter","useState","applyBackgroundBlurFilter","useCallback","blurIntensity","current","registerBackgroundBlurVideoFilters","filterName","tracer","trace","camera","state","mediaStream","getVideoTracks","forEach","track","_setVideoEffect","blur","applyVideoBlurFilter","registerBlurVideoFilters","applyBackgroundImageFilter","imageSource","source","Image","resolveAssetSource","imageUri","uri","registeredImageFiltersSet","registerVirtualBackgroundFilter","add","image","disableAllFilters","undefined","value","useMemo","createElement","Provider"],"sourceRoot":"../../../src","sources":["contexts/BackgroundFilters.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BackgroundFiltersContext = void 0;
7
+ var _react = require("react");
8
+ // excluding array of images and only allow one image
9
+
10
+ /**
11
+ * The context for the background filters.
12
+ */
13
+ const BackgroundFiltersContext = exports.BackgroundFiltersContext = /*#__PURE__*/(0, _react.createContext)(undefined);
14
+ //# sourceMappingURL=BackgroundFiltersContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","BackgroundFiltersContext","exports","createContext","undefined"],"sourceRoot":"../../../../src","sources":["contexts/internal/BackgroundFiltersContext.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA;;AA2CA;AACA;AACA;AACO,MAAMC,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,gBAAG,IAAAE,oBAAa,EAEnDC,SAAS,CAAC","ignoreList":[]}
@@ -124,4 +124,15 @@ Object.keys(_useSpeechDetection).forEach(function (key) {
124
124
  }
125
125
  });
126
126
  });
127
+ var _useModeration = require("./useModeration");
128
+ Object.keys(_useModeration).forEach(function (key) {
129
+ if (key === "default" || key === "__esModule") return;
130
+ if (key in exports && exports[key] === _useModeration[key]) return;
131
+ Object.defineProperty(exports, key, {
132
+ enumerable: true,
133
+ get: function () {
134
+ return _useModeration[key];
135
+ }
136
+ });
137
+ });
127
138
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useScreenShareButton","_useTrackDimensions","_useScreenshot","_useSpeechDetection"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useScreenShareButton","_useTrackDimensions","_useScreenshot","_useSpeechDetection","_useModeration"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,qBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,qBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,qBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,0BAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,0BAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,0BAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,0BAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,KAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,KAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,KAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,KAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,8BAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,8BAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,8BAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,8BAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,oCAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,oCAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,oCAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,oCAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,eAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,eAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,eAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,eAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,sBAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,sBAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAU,sBAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAM,sBAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,qBAAA,GAAAf,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAa,qBAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAW,qBAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAO,qBAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AACA,IAAAY,mBAAA,GAAAhB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAc,mBAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAY,mBAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAQ,mBAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,cAAA,GAAAjB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAe,cAAA,EAAAd,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAa,cAAA,CAAAb,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAS,cAAA,CAAAb,GAAA;IAAA;EAAA;AAAA;AACA,IAAAc,mBAAA,GAAAlB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAgB,mBAAA,EAAAf,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAc,mBAAA,CAAAd,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAU,mBAAA,CAAAd,GAAA;IAAA;EAAA;AAAA;AACA,IAAAe,cAAA,GAAAnB,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAiB,cAAA,EAAAhB,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAe,cAAA,CAAAf,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAW,cAAA,CAAAf,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useModeration = void 0;
7
+ var _react = require("react");
8
+ var _videoReactBindings = require("@stream-io/video-react-bindings");
9
+ var _BackgroundFiltersContext = require("../contexts/internal/BackgroundFiltersContext");
10
+ const useModeration = options => {
11
+ const {
12
+ duration = 5000
13
+ } = options || {};
14
+ const call = (0, _videoReactBindings.useCall)();
15
+
16
+ // accessing the filters context directly, as it is optional, but our
17
+ // useBackgroundFilters() throws an error if used outside the provider
18
+ const filtersApi = (0, _react.useContext)(_BackgroundFiltersContext.BackgroundFiltersContext);
19
+ const {
20
+ isSupported = false,
21
+ currentBackgroundFilter,
22
+ applyBackgroundBlurFilter,
23
+ applyBackgroundImageFilter,
24
+ applyVideoBlurFilter,
25
+ disableAllFilters
26
+ } = filtersApi || {};
27
+ const blurTimeoutRef = (0, _react.useRef)(undefined);
28
+ const restoreRef = (0, _react.useRef)(undefined);
29
+ (0, _react.useEffect)(() => {
30
+ if (!call) return;
31
+ const unsubscribe = call.on('call.moderation_blur', () => {
32
+ const turnCameraOff = () => call.camera.disable().catch(err => {
33
+ console.error(`Failed to disable camera`, err);
34
+ });
35
+
36
+ // not scheduling a timeout to enable the camera
37
+ clearTimeout(blurTimeoutRef.current);
38
+ if (!isSupported) return turnCameraOff();
39
+ restoreRef.current = (restoreRef.current || Promise.resolve()).then(() => applyVideoBlurFilter?.('heavy').then(() => {
40
+ if (duration <= 0) return;
41
+ const restore = () => {
42
+ const {
43
+ blur,
44
+ image
45
+ } = currentBackgroundFilter || {};
46
+ const action = blur ? applyBackgroundBlurFilter?.(blur) : image ? applyBackgroundImageFilter?.(image) : Promise.resolve(disableAllFilters?.());
47
+ action?.catch(err => {
48
+ console.error(`Failed to restore pre-moderation effect`, err);
49
+ });
50
+ };
51
+ blurTimeoutRef.current = setTimeout(restore, duration);
52
+ }, turnCameraOff));
53
+ });
54
+ return () => {
55
+ unsubscribe();
56
+ };
57
+ }, [applyBackgroundBlurFilter, applyBackgroundImageFilter, applyVideoBlurFilter, call, currentBackgroundFilter, disableAllFilters, duration, isSupported]);
58
+ (0, _react.useEffect)(() => () => {
59
+ restoreRef.current?.then(() => clearTimeout(blurTimeoutRef.current));
60
+ }, []);
61
+ };
62
+ exports.useModeration = useModeration;
63
+ //# sourceMappingURL=useModeration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_videoReactBindings","_BackgroundFiltersContext","useModeration","options","duration","call","useCall","filtersApi","useContext","BackgroundFiltersContext","isSupported","currentBackgroundFilter","applyBackgroundBlurFilter","applyBackgroundImageFilter","applyVideoBlurFilter","disableAllFilters","blurTimeoutRef","useRef","undefined","restoreRef","useEffect","unsubscribe","on","turnCameraOff","camera","disable","catch","err","console","error","clearTimeout","current","Promise","resolve","then","restore","blur","image","action","setTimeout","exports"],"sourceRoot":"../../../src","sources":["hooks/useModeration.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,yBAAA,GAAAF,OAAA;AAUO,MAAMG,aAAa,GAAIC,OAA2B,IAAK;EAC5D,MAAM;IAAEC,QAAQ,GAAG;EAAK,CAAC,GAAGD,OAAO,IAAI,CAAC,CAAC;EACzC,MAAME,IAAI,GAAG,IAAAC,2BAAO,EAAC,CAAC;;EAEtB;EACA;EACA,MAAMC,UAAU,GAAG,IAAAC,iBAAU,EAACC,kDAAwB,CAAC;EACvD,MAAM;IACJC,WAAW,GAAG,KAAK;IACnBC,uBAAuB;IACvBC,yBAAyB;IACzBC,0BAA0B;IAC1BC,oBAAoB;IACpBC;EACF,CAAC,GAAGR,UAAU,IAAI,CAAC,CAAC;EACpB,MAAMS,cAAc,GAAG,IAAAC,aAAM,EAAgCC,SAAS,CAAC;EACvE,MAAMC,UAAU,GAAG,IAAAF,aAAM,EAAgBC,SAAS,CAAC;EACnD,IAAAE,gBAAS,EAAC,MAAM;IACd,IAAI,CAACf,IAAI,EAAE;IACX,MAAMgB,WAAW,GAAGhB,IAAI,CAACiB,EAAE,CAAC,sBAAsB,EAAE,MAAM;MACxD,MAAMC,aAAa,GAAGA,CAAA,KACpBlB,IAAI,CAACmB,MAAM,CAACC,OAAO,CAAC,CAAC,CAACC,KAAK,CAAEC,GAAG,IAAK;QACnCC,OAAO,CAACC,KAAK,CAAC,0BAA0B,EAAEF,GAAG,CAAC;MAChD,CAAC,CAAC;;MAEJ;MACAG,YAAY,CAACd,cAAc,CAACe,OAAO,CAAC;MACpC,IAAI,CAACrB,WAAW,EAAE,OAAOa,aAAa,CAAC,CAAC;MAExCJ,UAAU,CAACY,OAAO,GAAG,CAACZ,UAAU,CAACY,OAAO,IAAIC,OAAO,CAACC,OAAO,CAAC,CAAC,EAAEC,IAAI,CAAC,MAClEpB,oBAAoB,GAAG,OAAO,CAAC,CAACoB,IAAI,CAAC,MAAM;QACzC,IAAI9B,QAAQ,IAAI,CAAC,EAAE;QAEnB,MAAM+B,OAAO,GAAGA,CAAA,KAAM;UACpB,MAAM;YAAEC,IAAI;YAAEC;UAAM,CAAC,GAAG1B,uBAAuB,IAAI,CAAC,CAAC;UACrD,MAAM2B,MAAM,GAAGF,IAAI,GACfxB,yBAAyB,GAAGwB,IAAI,CAAC,GACjCC,KAAK,GACHxB,0BAA0B,GAAGwB,KAAK,CAAC,GACnCL,OAAO,CAACC,OAAO,CAAClB,iBAAiB,GAAG,CAAC,CAAC;UAE5CuB,MAAM,EAAEZ,KAAK,CAAEC,GAAG,IAAK;YACrBC,OAAO,CAACC,KAAK,CAAC,yCAAyC,EAAEF,GAAG,CAAC;UAC/D,CAAC,CAAC;QACJ,CAAC;QAEDX,cAAc,CAACe,OAAO,GAAGQ,UAAU,CAACJ,OAAO,EAAE/B,QAAQ,CAAC;MACxD,CAAC,EAAEmB,aAAa,CAClB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,MAAM;MACXF,WAAW,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,CACDT,yBAAyB,EACzBC,0BAA0B,EAC1BC,oBAAoB,EACpBT,IAAI,EACJM,uBAAuB,EACvBI,iBAAiB,EACjBX,QAAQ,EACRM,WAAW,CACZ,CAAC;EAEF,IAAAU,gBAAS,EACP,MAAM,MAAM;IACVD,UAAU,CAACY,OAAO,EAAEG,IAAI,CAAC,MAAMJ,YAAY,CAACd,cAAc,CAACe,OAAO,CAAC,CAAC;EACtE,CAAC,EACD,EACF,CAAC;AACH,CAAC;AAACS,OAAA,CAAAtC,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -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 = '1.26.6';
7
+ const version = exports.version = '1.27.1';
8
8
  //# sourceMappingURL=version.js.map
@@ -1,7 +1,16 @@
1
- import React, { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
1
+ import React, { useCallback, useContext, useMemo, useRef, useState } from 'react';
2
2
  import { useCall } from '@stream-io/video-react-bindings';
3
3
  import { Image, Platform } from 'react-native';
4
+ import { BackgroundFiltersContext } from './internal/BackgroundFiltersContext';
5
+
6
+ // for maintaining backwards compatibility
7
+
8
+ let videoFiltersModule;
9
+ try {
10
+ videoFiltersModule = require('@stream-io/video-filters-react-native');
11
+ } catch {}
4
12
  const isSupported = function () {
13
+ if (!videoFiltersModule) return false;
5
14
  if (Platform.OS === 'ios') {
6
15
  // only supported on ios 15 and above
7
16
  const currentVersion = parseInt(Platform.Version, 10);
@@ -9,18 +18,6 @@ const isSupported = function () {
9
18
  }
10
19
  return Platform.OS === 'android';
11
20
  }();
12
- let videoFiltersModule;
13
- try {
14
- videoFiltersModule = require('@stream-io/video-filters-react-native');
15
- } catch {}
16
- const resolveAssetSourceFunc = Image.resolveAssetSource;
17
-
18
- // excluding array of images and only allow one image
19
-
20
- /**
21
- * The context for the background filters.
22
- */
23
- const BackgroundFiltersContext = /*#__PURE__*/createContext(undefined);
24
21
 
25
22
  /**
26
23
  * A hook to access the background filters context API.
@@ -89,7 +86,7 @@ export const BackgroundFiltersProvider = ({
89
86
  } else if (blurIntensity === 'light') {
90
87
  filterName = 'BlurLight';
91
88
  }
92
- call?.tracer.trace('backgroundFilters.apply', filterName);
89
+ call?.tracer.trace('videoFilters.apply', filterName);
93
90
  call?.camera.state.mediaStream?.getVideoTracks().forEach(track => {
94
91
  track._setVideoEffect(filterName);
95
92
  });
@@ -101,7 +98,7 @@ export const BackgroundFiltersProvider = ({
101
98
  if (!isSupported) {
102
99
  return;
103
100
  }
104
- const source = resolveAssetSourceFunc(imageSource);
101
+ const source = Image.resolveAssetSource(imageSource);
105
102
  const imageUri = source.uri;
106
103
  const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
107
104
  if (!registeredImageFiltersSet.has(imageUri)) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useCallback","useContext","useMemo","useRef","useState","useCall","Image","Platform","isSupported","OS","currentVersion","parseInt","Version","videoFiltersModule","require","resolveAssetSourceFunc","resolveAssetSource","BackgroundFiltersContext","undefined","useBackgroundFilters","context","Error","BackgroundFiltersProvider","children","call","isBackgroundBlurRegisteredRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","currentBackgroundFilter","setCurrentBackgroundFilter","applyBackgroundBlurFilter","blurIntensity","current","registerBackgroundBlurVideoFilters","filterName","tracer","trace","camera","state","mediaStream","getVideoTracks","forEach","track","_setVideoEffect","blur","applyVideoBlurFilter","registerBlurVideoFilters","applyBackgroundImageFilter","imageSource","source","imageUri","uri","registeredImageFiltersSet","has","registerVirtualBackgroundFilter","add","image","disableAllFilters","value","createElement","Provider"],"sourceRoot":"../../../src","sources":["contexts/BackgroundFilters.tsx"],"mappings":"AAAA,OAAOA,KAAK,IACVC,aAAa,EAEbC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AAEd,SAASC,OAAO,QAAQ,iCAAiC;AACzD,SAASC,KAAK,EAAEC,QAAQ,QAAQ,cAAc;AAE9C,MAAMC,WAAW,GAAI,YAAY;EAC/B,IAAID,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;IACzB;IACA,MAAMC,cAAc,GAAGC,QAAQ,CAACJ,QAAQ,CAACK,OAAO,EAAE,EAAE,CAAC;IACrD,OAAOF,cAAc,IAAI,EAAE;EAC7B;EACA,OAAOH,QAAQ,CAACE,EAAE,KAAK,SAAS;AAClC,CAAC,CAAE,CAAC;AAKJ,IAAII,kBAAsD;AAE1D,IAAI;EACFA,kBAAkB,GAAGC,OAAO,CAAC,uCAAuC,CAAC;AACvE,CAAC,CAAC,MAAM,CAAC;AAET,MAAMC,sBAAsB,GAAGT,KAAK,CAACU,kBAAkB;;AAEvD;;AAgDA;AACA;AACA;AACA,MAAMC,wBAAwB,gBAAGlB,aAAa,CAE5CmB,SAAS,CAAC;;AAEZ;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACxC,MAAMC,OAAO,GAAGnB,UAAU,CAACgB,wBAAwB,CAAC;EACpD,IAAI,CAACG,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CACb,sEACF,CAAC;EACH;EACA,IAAI,CAACR,kBAAkB,EAAE;IACvB,MAAM,IAAIQ,KAAK,CACb,uFACF,CAAC;EACH;EACA,OAAOD,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,yBAAyB,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAC5E,IAAI,CAACV,kBAAkB,EAAE;IACvB,MAAM,IAAIQ,KAAK,CACb,uFACF,CAAC;EACH;EACA,MAAMG,IAAI,GAAGnB,OAAO,CAAC,CAAC;EACtB,MAAMoB,6BAA6B,GAAGtB,MAAM,CAAC,KAAK,CAAC;EACnD,MAAMuB,wBAAwB,GAAGvB,MAAM,CAAC,KAAK,CAAC;EAC9C,MAAMwB,4BAA4B,GAAGxB,MAAM,CAAC,IAAIyB,GAAG,CAAS,CAAC,CAAC;EAE9D,MAAM,CAACC,uBAAuB,EAAEC,0BAA0B,CAAC,GACzD1B,QAAQ,CAA0B,CAAC;EAErC,MAAM2B,yBAAyB,GAAG/B,WAAW,CAC3C,MAAOgC,aAA4B,IAAK;IACtC,IAAI,CAACxB,WAAW,EAAE;MAChB;IACF;IACA,IAAI,CAACiB,6BAA6B,CAACQ,OAAO,EAAE;MAC1C,MAAMpB,kBAAkB,EAAEqB,kCAAkC,CAAC,CAAC;MAC9DT,6BAA6B,CAACQ,OAAO,GAAG,IAAI;IAC9C;IACA,IAAIE,UAAU,GAAG,sBAAsB;IACvC,IAAIH,aAAa,KAAK,OAAO,EAAE;MAC7BG,UAAU,GAAG,qBAAqB;IACpC,CAAC,MAAM,IAAIH,aAAa,KAAK,OAAO,EAAE;MACpCG,UAAU,GAAG,qBAAqB;IACpC;IACAX,IAAI,EAAEY,MAAM,CAACC,KAAK,CAAC,yBAAyB,EAAEF,UAAU,CAAC;IACxDX,IAAI,EAAEc,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAACT,UAAU,CAAC;IACnC,CAAC,CAAC;IACJL,0BAA0B,CAAC;MAAEe,IAAI,EAAEb;IAAc,CAAC,CAAC;EACrD,CAAC,EACD,CAACR,IAAI,CACP,CAAC;EAED,MAAMsB,oBAAoB,GAAG9C,WAAW,CACtC,MAAOgC,aAA4B,IAAK;IACtC,IAAI,CAACxB,WAAW,EAAE;MAChB;IACF;IACA,IAAI,CAACkB,wBAAwB,CAACO,OAAO,EAAE;MACrC,MAAMpB,kBAAkB,EAAEkC,wBAAwB,CAAC,CAAC;MACpDrB,wBAAwB,CAACO,OAAO,GAAG,IAAI;IACzC;IACA,IAAIE,UAAU,GAAG,YAAY;IAC7B,IAAIH,aAAa,KAAK,OAAO,EAAE;MAC7BG,UAAU,GAAG,WAAW;IAC1B,CAAC,MAAM,IAAIH,aAAa,KAAK,OAAO,EAAE;MACpCG,UAAU,GAAG,WAAW;IAC1B;IACAX,IAAI,EAAEY,MAAM,CAACC,KAAK,CAAC,yBAAyB,EAAEF,UAAU,CAAC;IACxDX,IAAI,EAAEc,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAACT,UAAU,CAAC;IACnC,CAAC,CAAC;IACJL,0BAA0B,CAAC;MAAEe,IAAI,EAAEb;IAAc,CAAC,CAAC;EACrD,CAAC,EACD,CAACR,IAAI,CACP,CAAC;EAED,MAAMwB,0BAA0B,GAAGhD,WAAW,CAC5C,MAAOiD,WAA4B,IAAK;IACtC,IAAI,CAACzC,WAAW,EAAE;MAChB;IACF;IACA,MAAM0C,MAAM,GAAGnC,sBAAsB,CAACkC,WAAW,CAAC;IAClD,MAAME,QAAQ,GAAGD,MAAM,CAACE,GAAG;IAC3B,MAAMC,yBAAyB,GAAG1B,4BAA4B,CAACM,OAAO;IACtE,IAAI,CAACoB,yBAAyB,CAACC,GAAG,CAACH,QAAQ,CAAC,EAAE;MAC5C,MAAMtC,kBAAkB,EAAE0C,+BAA+B,CAACN,WAAW,CAAC;MACtEtB,4BAA4B,CAACM,OAAO,CAACuB,GAAG,CAACL,QAAQ,CAAC;IACpD;IACA,MAAMhB,UAAU,GAAG,qBAAqBgB,QAAQ,EAAE;IAClD3B,IAAI,EAAEY,MAAM,CAACC,KAAK,CAAC,yBAAyB,EAAEF,UAAU,CAAC;IACxDX,IAAI,EAAEc,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAACT,UAAU,CAAC;IACnC,CAAC,CAAC;IACJL,0BAA0B,CAAC;MAAE2B,KAAK,EAAER;IAAY,CAAC,CAAC;EACpD,CAAC,EACD,CAACzB,IAAI,CACP,CAAC;EAED,MAAMkC,iBAAiB,GAAG1D,WAAW,CAAC,MAAM;IAC1C,IAAI,CAACQ,WAAW,EAAE;MAChB;IACF;IACAgB,IAAI,EAAEY,MAAM,CAACC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC;IACvDb,IAAI,EAAEc,MAAM,CAACC,KAAK,CAACC,WAAW,EAC3BC,cAAc,CAAC,CAAC,CACjBC,OAAO,CAAEC,KAAK,IAAK;MAClBA,KAAK,CAACC,eAAe,CAAC,IAAI,CAAC;IAC7B,CAAC,CAAC;IACJd,0BAA0B,CAACZ,SAAS,CAAC;EACvC,CAAC,EAAE,CAACM,IAAI,CAAC,CAAC;EAEV,MAAMmC,KAAK,GAAGzD,OAAO,CACnB,OAAO;IACL2B,uBAAuB;IACvBrB,WAAW;IACXwC,0BAA0B;IAC1BjB,yBAAyB;IACzBe,oBAAoB;IACpBY;EACF,CAAC,CAAC,EACF,CACE3B,yBAAyB,EACzBiB,0BAA0B,EAC1BF,oBAAoB,EACpBjB,uBAAuB,EACvB6B,iBAAiB,CAErB,CAAC;EAED,oBACE5D,KAAA,CAAA8D,aAAA,CAAC3C,wBAAwB,CAAC4C,QAAQ;IAACF,KAAK,EAAEA;EAAM,GAC7CpC,QACgC,CAAC;AAExC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useContext","useMemo","useRef","useState","useCall","Image","Platform","BackgroundFiltersContext","videoFiltersModule","require","isSupported","OS","currentVersion","parseInt","Version","useBackgroundFilters","context","Error","BackgroundFiltersProvider","children","call","isBackgroundBlurRegisteredRef","isVideoBlurRegisteredRef","registeredImageFiltersSetRef","Set","currentBackgroundFilter","setCurrentBackgroundFilter","applyBackgroundBlurFilter","blurIntensity","current","registerBackgroundBlurVideoFilters","filterName","tracer","trace","camera","state","mediaStream","getVideoTracks","forEach","track","_setVideoEffect","blur","applyVideoBlurFilter","registerBlurVideoFilters","applyBackgroundImageFilter","imageSource","source","resolveAssetSource","imageUri","uri","registeredImageFiltersSet","has","registerVirtualBackgroundFilter","add","image","disableAllFilters","undefined","value","createElement","Provider"],"sourceRoot":"../../../src","sources":["contexts/BackgroundFilters.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import { createContext } from 'react';
2
+
3
+ // excluding array of images and only allow one image
4
+
5
+ /**
6
+ * The context for the background filters.
7
+ */
8
+ export const BackgroundFiltersContext = /*#__PURE__*/createContext(undefined);
9
+ //# sourceMappingURL=BackgroundFiltersContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","BackgroundFiltersContext","undefined"],"sourceRoot":"../../../../src","sources":["contexts/internal/BackgroundFiltersContext.tsx"],"mappings":"AAAA,SAASA,aAAa,QAAQ,OAAO;;AAGrC;;AA2CA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,gBAAGD,aAAa,CAEnDE,SAAS,CAAC","ignoreList":[]}
@@ -9,4 +9,5 @@ export * from './useScreenShareButton';
9
9
  export * from './useTrackDimensions';
10
10
  export * from './useScreenshot';
11
11
  export * from './useSpeechDetection';
12
+ export * from './useModeration';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,sBAAsB","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,sBAAsB;AACpC,cAAc,iBAAiB","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ import { useContext, useEffect, useRef } from 'react';
2
+ import { useCall } from '@stream-io/video-react-bindings';
3
+ import { BackgroundFiltersContext } from '../contexts/internal/BackgroundFiltersContext';
4
+ export const useModeration = options => {
5
+ const {
6
+ duration = 5000
7
+ } = options || {};
8
+ const call = useCall();
9
+
10
+ // accessing the filters context directly, as it is optional, but our
11
+ // useBackgroundFilters() throws an error if used outside the provider
12
+ const filtersApi = useContext(BackgroundFiltersContext);
13
+ const {
14
+ isSupported = false,
15
+ currentBackgroundFilter,
16
+ applyBackgroundBlurFilter,
17
+ applyBackgroundImageFilter,
18
+ applyVideoBlurFilter,
19
+ disableAllFilters
20
+ } = filtersApi || {};
21
+ const blurTimeoutRef = useRef(undefined);
22
+ const restoreRef = useRef(undefined);
23
+ useEffect(() => {
24
+ if (!call) return;
25
+ const unsubscribe = call.on('call.moderation_blur', () => {
26
+ const turnCameraOff = () => call.camera.disable().catch(err => {
27
+ console.error(`Failed to disable camera`, err);
28
+ });
29
+
30
+ // not scheduling a timeout to enable the camera
31
+ clearTimeout(blurTimeoutRef.current);
32
+ if (!isSupported) return turnCameraOff();
33
+ restoreRef.current = (restoreRef.current || Promise.resolve()).then(() => applyVideoBlurFilter?.('heavy').then(() => {
34
+ if (duration <= 0) return;
35
+ const restore = () => {
36
+ const {
37
+ blur,
38
+ image
39
+ } = currentBackgroundFilter || {};
40
+ const action = blur ? applyBackgroundBlurFilter?.(blur) : image ? applyBackgroundImageFilter?.(image) : Promise.resolve(disableAllFilters?.());
41
+ action?.catch(err => {
42
+ console.error(`Failed to restore pre-moderation effect`, err);
43
+ });
44
+ };
45
+ blurTimeoutRef.current = setTimeout(restore, duration);
46
+ }, turnCameraOff));
47
+ });
48
+ return () => {
49
+ unsubscribe();
50
+ };
51
+ }, [applyBackgroundBlurFilter, applyBackgroundImageFilter, applyVideoBlurFilter, call, currentBackgroundFilter, disableAllFilters, duration, isSupported]);
52
+ useEffect(() => () => {
53
+ restoreRef.current?.then(() => clearTimeout(blurTimeoutRef.current));
54
+ }, []);
55
+ };
56
+ //# sourceMappingURL=useModeration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useContext","useEffect","useRef","useCall","BackgroundFiltersContext","useModeration","options","duration","call","filtersApi","isSupported","currentBackgroundFilter","applyBackgroundBlurFilter","applyBackgroundImageFilter","applyVideoBlurFilter","disableAllFilters","blurTimeoutRef","undefined","restoreRef","unsubscribe","on","turnCameraOff","camera","disable","catch","err","console","error","clearTimeout","current","Promise","resolve","then","restore","blur","image","action","setTimeout"],"sourceRoot":"../../../src","sources":["hooks/useModeration.ts"],"mappings":"AAAA,SAASA,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACrD,SAASC,OAAO,QAAQ,iCAAiC;AACzD,SAASC,wBAAwB,QAAQ,+CAA+C;AAUxF,OAAO,MAAMC,aAAa,GAAIC,OAA2B,IAAK;EAC5D,MAAM;IAAEC,QAAQ,GAAG;EAAK,CAAC,GAAGD,OAAO,IAAI,CAAC,CAAC;EACzC,MAAME,IAAI,GAAGL,OAAO,CAAC,CAAC;;EAEtB;EACA;EACA,MAAMM,UAAU,GAAGT,UAAU,CAACI,wBAAwB,CAAC;EACvD,MAAM;IACJM,WAAW,GAAG,KAAK;IACnBC,uBAAuB;IACvBC,yBAAyB;IACzBC,0BAA0B;IAC1BC,oBAAoB;IACpBC;EACF,CAAC,GAAGN,UAAU,IAAI,CAAC,CAAC;EACpB,MAAMO,cAAc,GAAGd,MAAM,CAAgCe,SAAS,CAAC;EACvE,MAAMC,UAAU,GAAGhB,MAAM,CAAgBe,SAAS,CAAC;EACnDhB,SAAS,CAAC,MAAM;IACd,IAAI,CAACO,IAAI,EAAE;IACX,MAAMW,WAAW,GAAGX,IAAI,CAACY,EAAE,CAAC,sBAAsB,EAAE,MAAM;MACxD,MAAMC,aAAa,GAAGA,CAAA,KACpBb,IAAI,CAACc,MAAM,CAACC,OAAO,CAAC,CAAC,CAACC,KAAK,CAAEC,GAAG,IAAK;QACnCC,OAAO,CAACC,KAAK,CAAC,0BAA0B,EAAEF,GAAG,CAAC;MAChD,CAAC,CAAC;;MAEJ;MACAG,YAAY,CAACZ,cAAc,CAACa,OAAO,CAAC;MACpC,IAAI,CAACnB,WAAW,EAAE,OAAOW,aAAa,CAAC,CAAC;MAExCH,UAAU,CAACW,OAAO,GAAG,CAACX,UAAU,CAACW,OAAO,IAAIC,OAAO,CAACC,OAAO,CAAC,CAAC,EAAEC,IAAI,CAAC,MAClElB,oBAAoB,GAAG,OAAO,CAAC,CAACkB,IAAI,CAAC,MAAM;QACzC,IAAIzB,QAAQ,IAAI,CAAC,EAAE;QAEnB,MAAM0B,OAAO,GAAGA,CAAA,KAAM;UACpB,MAAM;YAAEC,IAAI;YAAEC;UAAM,CAAC,GAAGxB,uBAAuB,IAAI,CAAC,CAAC;UACrD,MAAMyB,MAAM,GAAGF,IAAI,GACftB,yBAAyB,GAAGsB,IAAI,CAAC,GACjCC,KAAK,GACHtB,0BAA0B,GAAGsB,KAAK,CAAC,GACnCL,OAAO,CAACC,OAAO,CAAChB,iBAAiB,GAAG,CAAC,CAAC;UAE5CqB,MAAM,EAAEZ,KAAK,CAAEC,GAAG,IAAK;YACrBC,OAAO,CAACC,KAAK,CAAC,yCAAyC,EAAEF,GAAG,CAAC;UAC/D,CAAC,CAAC;QACJ,CAAC;QAEDT,cAAc,CAACa,OAAO,GAAGQ,UAAU,CAACJ,OAAO,EAAE1B,QAAQ,CAAC;MACxD,CAAC,EAAEc,aAAa,CAClB,CAAC;IACH,CAAC,CAAC;IACF,OAAO,MAAM;MACXF,WAAW,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,CACDP,yBAAyB,EACzBC,0BAA0B,EAC1BC,oBAAoB,EACpBN,IAAI,EACJG,uBAAuB,EACvBI,iBAAiB,EACjBR,QAAQ,EACRG,WAAW,CACZ,CAAC;EAEFT,SAAS,CACP,MAAM,MAAM;IACViB,UAAU,CAACW,OAAO,EAAEG,IAAI,CAAC,MAAMJ,YAAY,CAACZ,cAAc,CAACa,OAAO,CAAC,CAAC;EACtE,CAAC,EACD,EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export const version = '1.26.6';
1
+ export const version = '1.27.1';
2
2
  //# sourceMappingURL=version.js.map
@@ -1,49 +1,9 @@
1
1
  import React, { type PropsWithChildren } from 'react';
2
- import { Image } from 'react-native';
3
- declare const resolveAssetSourceFunc: typeof Image.resolveAssetSource;
4
- type ImageSourceType = Exclude<Parameters<typeof resolveAssetSourceFunc>[0], Array<any>>;
5
- export type BlurIntensity = 'light' | 'medium' | 'heavy';
6
- export type BackgroundFilterType = 'blur' | 'image';
7
- export type CurrentBackgroundFilter = {
8
- blur?: BlurIntensity;
9
- image?: ImageSourceType;
10
- };
11
- export type BackgroundFiltersAPI = {
12
- /**
13
- * The currently applied background filter. Undefined value indicates that no filter is applied.
14
- */
15
- currentBackgroundFilter: CurrentBackgroundFilter | undefined;
16
- /**
17
- * Whether the current device supports the background filters.
18
- */
19
- isSupported: boolean;
20
- /**
21
- * Applies a background image filter to the video.
22
- *
23
- * @param imageSource the URL of the image to use as the background.
24
- */
25
- applyBackgroundImageFilter: (imageSource: ImageSourceType) => void;
26
- /**
27
- * Applies a background blur filter to the video.
28
- *
29
- * @param blurLevel the level of blur to apply to the background.
30
- */
31
- applyBackgroundBlurFilter: (blurIntensity: BlurIntensity) => void;
32
- /**
33
- * Applies a video blur filter to the video.
34
- *
35
- * @param blurIntensity the level of blur to apply to the video.
36
- */
37
- applyVideoBlurFilter: (blurIntensity: BlurIntensity) => void;
38
- /**
39
- * Disables all filters applied to the video.
40
- */
41
- disableAllFilters: () => void;
42
- };
2
+ export type { BlurIntensity, CurrentBackgroundFilter, BackgroundFiltersAPI, } from './internal/BackgroundFiltersContext';
43
3
  /**
44
4
  * A hook to access the background filters context API.
45
5
  */
46
- export declare const useBackgroundFilters: () => BackgroundFiltersAPI;
6
+ export declare const useBackgroundFilters: () => import("./internal/BackgroundFiltersContext").BackgroundFiltersAPI;
47
7
  /**
48
8
  * A provider component that enables the use of background filters in your app.
49
9
  *
@@ -51,5 +11,4 @@ export declare const useBackgroundFilters: () => BackgroundFiltersAPI;
51
11
  * in your project before using this component.
52
12
  */
53
13
  export declare const BackgroundFiltersProvider: ({ children }: PropsWithChildren) => React.JSX.Element;
54
- export {};
55
14
  //# sourceMappingURL=BackgroundFilters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundFilters.d.ts","sourceRoot":"","sources":["../../../src/contexts/BackgroundFilters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,KAAK,iBAAiB,EAMvB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,KAAK,EAAY,MAAM,cAAc,CAAC;AAoB/C,QAAA,MAAM,sBAAsB,iCAA2B,CAAC;AAGxD,KAAK,eAAe,GAAG,OAAO,CAC5B,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAC5C,KAAK,CAAC,GAAG,CAAC,CACX,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,uBAAuB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC7D;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,0BAA0B,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,IAAI,CAAC;IACnE;;;;OAIG;IACH,yBAAyB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAClE;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AASF;;GAEG;AACH,eAAO,MAAM,oBAAoB,4BAahC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,cAAc,iBAAiB,sBA8HxE,CAAC"}
1
+ {"version":3,"file":"BackgroundFilters.d.ts","sourceRoot":"","sources":["../../../src/contexts/BackgroundFilters.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,iBAAiB,EAMvB,MAAM,OAAO,CAAC;AAYf,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAqB7C;;GAEG;AACH,eAAO,MAAM,oBAAoB,0EAahC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,cAAc,iBAAiB,sBA8HxE,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { type ImageSourcePropType } from 'react-native';
2
+ export type ImageSourceType = Exclude<ImageSourcePropType, Array<any>>;
3
+ export type BlurIntensity = 'light' | 'medium' | 'heavy';
4
+ export type CurrentBackgroundFilter = {
5
+ blur?: BlurIntensity;
6
+ image?: ImageSourceType;
7
+ };
8
+ export type BackgroundFiltersAPI = {
9
+ /**
10
+ * The currently applied background filter. Undefined value indicates that no filter is applied.
11
+ */
12
+ currentBackgroundFilter: CurrentBackgroundFilter | undefined;
13
+ /**
14
+ * Whether the current device supports the background filters.
15
+ */
16
+ isSupported: boolean;
17
+ /**
18
+ * Applies a background image filter to the video.
19
+ *
20
+ * @param imageSource the URL of the image to use as the background.
21
+ */
22
+ applyBackgroundImageFilter: (imageSource: ImageSourceType) => Promise<void>;
23
+ /**
24
+ * Applies a background blur filter to the video.
25
+ *
26
+ * @param blurLevel the level of blur to apply to the background.
27
+ */
28
+ applyBackgroundBlurFilter: (blurIntensity: BlurIntensity) => Promise<void>;
29
+ /**
30
+ * Applies a video blur filter to the video.
31
+ *
32
+ * @param blurIntensity the level of blur to apply to the video.
33
+ */
34
+ applyVideoBlurFilter: (blurIntensity: BlurIntensity) => Promise<void>;
35
+ /**
36
+ * Disables all filters applied to the video.
37
+ */
38
+ disableAllFilters: () => void;
39
+ };
40
+ /**
41
+ * The context for the background filters.
42
+ */
43
+ export declare const BackgroundFiltersContext: import("react").Context<BackgroundFiltersAPI | undefined>;
44
+ //# sourceMappingURL=BackgroundFiltersContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackgroundFiltersContext.d.ts","sourceRoot":"","sources":["../../../../src/contexts/internal/BackgroundFiltersContext.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,uBAAuB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC7D;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,0BAA0B,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E;;;;OAIG;IACH,yBAAyB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE;;OAEG;IACH,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,2DAEzB,CAAC"}
@@ -9,4 +9,5 @@ export * from './useScreenShareButton';
9
9
  export * from './useTrackDimensions';
10
10
  export * from './useScreenshot';
11
11
  export * from './useSpeechDetection';
12
+ export * from './useModeration';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface ModerationOptions {
2
+ /**
3
+ * How long the moderation effect should stay active before being disabled.
4
+ * Set to `0` to keep it active indefinitely. Defaults to 5000 ms.
5
+ */
6
+ duration?: number;
7
+ }
8
+ export declare const useModeration: (options?: ModerationOptions) => void;
9
+ //# sourceMappingURL=useModeration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModeration.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModeration.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,GAAI,UAAU,iBAAiB,SAsExD,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "1.26.6";
1
+ export declare const version = "1.27.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": "1.26.6",
3
+ "version": "1.27.1",
4
4
  "description": "Stream Video SDK for React Native",
5
5
  "author": "https://getstream.io",
6
6
  "homepage": "https://getstream.io/video/docs/react-native/",
@@ -50,8 +50,8 @@
50
50
  "!**/.*"
51
51
  ],
52
52
  "dependencies": {
53
- "@stream-io/video-client": "1.39.3",
54
- "@stream-io/video-react-bindings": "1.12.6",
53
+ "@stream-io/video-client": "1.40.0",
54
+ "@stream-io/video-react-bindings": "1.12.7",
55
55
  "intl-pluralrules": "2.0.1",
56
56
  "lodash.merge": "^4.6.2",
57
57
  "react-native-url-polyfill": "^3.0.0",
@@ -1,5 +1,4 @@
1
1
  import React, {
2
- createContext,
3
2
  type PropsWithChildren,
4
3
  useCallback,
5
4
  useContext,
@@ -10,15 +9,19 @@ import React, {
10
9
  import { MediaStream } from '@stream-io/react-native-webrtc';
11
10
  import { useCall } from '@stream-io/video-react-bindings';
12
11
  import { Image, Platform } from 'react-native';
13
-
14
- const isSupported = (function () {
15
- if (Platform.OS === 'ios') {
16
- // only supported on ios 15 and above
17
- const currentVersion = parseInt(Platform.Version, 10);
18
- return currentVersion >= 15;
19
- }
20
- return Platform.OS === 'android';
21
- })();
12
+ import {
13
+ BackgroundFiltersContext,
14
+ type BlurIntensity,
15
+ type CurrentBackgroundFilter,
16
+ type ImageSourceType,
17
+ } from './internal/BackgroundFiltersContext';
18
+
19
+ // for maintaining backwards compatibility
20
+ export type {
21
+ BlurIntensity,
22
+ CurrentBackgroundFilter,
23
+ BackgroundFiltersAPI,
24
+ } from './internal/BackgroundFiltersContext';
22
25
 
23
26
  type VideoFiltersModuleType =
24
27
  typeof import('@stream-io/video-filters-react-native');
@@ -29,62 +32,15 @@ try {
29
32
  videoFiltersModule = require('@stream-io/video-filters-react-native');
30
33
  } catch {}
31
34
 
32
- const resolveAssetSourceFunc = Image.resolveAssetSource;
33
-
34
- // excluding array of images and only allow one image
35
- type ImageSourceType = Exclude<
36
- Parameters<typeof resolveAssetSourceFunc>[0],
37
- Array<any>
38
- >;
39
-
40
- export type BlurIntensity = 'light' | 'medium' | 'heavy';
41
-
42
- export type BackgroundFilterType = 'blur' | 'image';
43
-
44
- export type CurrentBackgroundFilter = {
45
- blur?: BlurIntensity;
46
- image?: ImageSourceType;
47
- };
48
-
49
- export type BackgroundFiltersAPI = {
50
- /**
51
- * The currently applied background filter. Undefined value indicates that no filter is applied.
52
- */
53
- currentBackgroundFilter: CurrentBackgroundFilter | undefined;
54
- /**
55
- * Whether the current device supports the background filters.
56
- */
57
- isSupported: boolean;
58
- /**
59
- * Applies a background image filter to the video.
60
- *
61
- * @param imageSource the URL of the image to use as the background.
62
- */
63
- applyBackgroundImageFilter: (imageSource: ImageSourceType) => void;
64
- /**
65
- * Applies a background blur filter to the video.
66
- *
67
- * @param blurLevel the level of blur to apply to the background.
68
- */
69
- applyBackgroundBlurFilter: (blurIntensity: BlurIntensity) => void;
70
- /**
71
- * Applies a video blur filter to the video.
72
- *
73
- * @param blurIntensity the level of blur to apply to the video.
74
- */
75
- applyVideoBlurFilter: (blurIntensity: BlurIntensity) => void;
76
- /**
77
- * Disables all filters applied to the video.
78
- */
79
- disableAllFilters: () => void;
80
- };
81
-
82
- /**
83
- * The context for the background filters.
84
- */
85
- const BackgroundFiltersContext = createContext<
86
- BackgroundFiltersAPI | undefined
87
- >(undefined);
35
+ const isSupported = (function () {
36
+ if (!videoFiltersModule) return false;
37
+ if (Platform.OS === 'ios') {
38
+ // only supported on ios 15 and above
39
+ const currentVersion = parseInt(Platform.Version, 10);
40
+ return currentVersion >= 15;
41
+ }
42
+ return Platform.OS === 'android';
43
+ })();
88
44
 
89
45
  /**
90
46
  * A hook to access the background filters context API.
@@ -165,7 +121,7 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
165
121
  } else if (blurIntensity === 'light') {
166
122
  filterName = 'BlurLight';
167
123
  }
168
- call?.tracer.trace('backgroundFilters.apply', filterName);
124
+ call?.tracer.trace('videoFilters.apply', filterName);
169
125
  (call?.camera.state.mediaStream as MediaStream | undefined)
170
126
  ?.getVideoTracks()
171
127
  .forEach((track) => {
@@ -181,7 +137,7 @@ export const BackgroundFiltersProvider = ({ children }: PropsWithChildren) => {
181
137
  if (!isSupported) {
182
138
  return;
183
139
  }
184
- const source = resolveAssetSourceFunc(imageSource);
140
+ const source = Image.resolveAssetSource(imageSource);
185
141
  const imageUri = source.uri;
186
142
  const registeredImageFiltersSet = registeredImageFiltersSetRef.current;
187
143
  if (!registeredImageFiltersSet.has(imageUri)) {
@@ -0,0 +1,52 @@
1
+ import { createContext } from 'react';
2
+ import { type ImageSourcePropType } from 'react-native';
3
+
4
+ // excluding array of images and only allow one image
5
+ export type ImageSourceType = Exclude<ImageSourcePropType, Array<any>>;
6
+
7
+ export type BlurIntensity = 'light' | 'medium' | 'heavy';
8
+
9
+ export type CurrentBackgroundFilter = {
10
+ blur?: BlurIntensity;
11
+ image?: ImageSourceType;
12
+ };
13
+
14
+ export type BackgroundFiltersAPI = {
15
+ /**
16
+ * The currently applied background filter. Undefined value indicates that no filter is applied.
17
+ */
18
+ currentBackgroundFilter: CurrentBackgroundFilter | undefined;
19
+ /**
20
+ * Whether the current device supports the background filters.
21
+ */
22
+ isSupported: boolean;
23
+ /**
24
+ * Applies a background image filter to the video.
25
+ *
26
+ * @param imageSource the URL of the image to use as the background.
27
+ */
28
+ applyBackgroundImageFilter: (imageSource: ImageSourceType) => Promise<void>;
29
+ /**
30
+ * Applies a background blur filter to the video.
31
+ *
32
+ * @param blurLevel the level of blur to apply to the background.
33
+ */
34
+ applyBackgroundBlurFilter: (blurIntensity: BlurIntensity) => Promise<void>;
35
+ /**
36
+ * Applies a video blur filter to the video.
37
+ *
38
+ * @param blurIntensity the level of blur to apply to the video.
39
+ */
40
+ applyVideoBlurFilter: (blurIntensity: BlurIntensity) => Promise<void>;
41
+ /**
42
+ * Disables all filters applied to the video.
43
+ */
44
+ disableAllFilters: () => void;
45
+ };
46
+
47
+ /**
48
+ * The context for the background filters.
49
+ */
50
+ export const BackgroundFiltersContext = createContext<
51
+ BackgroundFiltersAPI | undefined
52
+ >(undefined);
@@ -9,3 +9,4 @@ export * from './useScreenShareButton';
9
9
  export * from './useTrackDimensions';
10
10
  export * from './useScreenshot';
11
11
  export * from './useSpeechDetection';
12
+ export * from './useModeration';
@@ -0,0 +1,83 @@
1
+ import { useContext, useEffect, useRef } from 'react';
2
+ import { useCall } from '@stream-io/video-react-bindings';
3
+ import { BackgroundFiltersContext } from '../contexts/internal/BackgroundFiltersContext';
4
+
5
+ export interface ModerationOptions {
6
+ /**
7
+ * How long the moderation effect should stay active before being disabled.
8
+ * Set to `0` to keep it active indefinitely. Defaults to 5000 ms.
9
+ */
10
+ duration?: number;
11
+ }
12
+
13
+ export const useModeration = (options?: ModerationOptions) => {
14
+ const { duration = 5000 } = options || {};
15
+ const call = useCall();
16
+
17
+ // accessing the filters context directly, as it is optional, but our
18
+ // useBackgroundFilters() throws an error if used outside the provider
19
+ const filtersApi = useContext(BackgroundFiltersContext);
20
+ const {
21
+ isSupported = false,
22
+ currentBackgroundFilter,
23
+ applyBackgroundBlurFilter,
24
+ applyBackgroundImageFilter,
25
+ applyVideoBlurFilter,
26
+ disableAllFilters,
27
+ } = filtersApi || {};
28
+ const blurTimeoutRef = useRef<ReturnType<typeof setTimeout>>(undefined);
29
+ const restoreRef = useRef<Promise<void>>(undefined);
30
+ useEffect(() => {
31
+ if (!call) return;
32
+ const unsubscribe = call.on('call.moderation_blur', () => {
33
+ const turnCameraOff = () =>
34
+ call.camera.disable().catch((err) => {
35
+ console.error(`Failed to disable camera`, err);
36
+ });
37
+
38
+ // not scheduling a timeout to enable the camera
39
+ clearTimeout(blurTimeoutRef.current);
40
+ if (!isSupported) return turnCameraOff();
41
+
42
+ restoreRef.current = (restoreRef.current || Promise.resolve()).then(() =>
43
+ applyVideoBlurFilter?.('heavy').then(() => {
44
+ if (duration <= 0) return;
45
+
46
+ const restore = () => {
47
+ const { blur, image } = currentBackgroundFilter || {};
48
+ const action = blur
49
+ ? applyBackgroundBlurFilter?.(blur)
50
+ : image
51
+ ? applyBackgroundImageFilter?.(image)
52
+ : Promise.resolve(disableAllFilters?.());
53
+
54
+ action?.catch((err) => {
55
+ console.error(`Failed to restore pre-moderation effect`, err);
56
+ });
57
+ };
58
+
59
+ blurTimeoutRef.current = setTimeout(restore, duration);
60
+ }, turnCameraOff),
61
+ );
62
+ });
63
+ return () => {
64
+ unsubscribe();
65
+ };
66
+ }, [
67
+ applyBackgroundBlurFilter,
68
+ applyBackgroundImageFilter,
69
+ applyVideoBlurFilter,
70
+ call,
71
+ currentBackgroundFilter,
72
+ disableAllFilters,
73
+ duration,
74
+ isSupported,
75
+ ]);
76
+
77
+ useEffect(
78
+ () => () => {
79
+ restoreRef.current?.then(() => clearTimeout(blurTimeoutRef.current));
80
+ },
81
+ [],
82
+ );
83
+ };
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.26.6';
1
+ export const version = '1.27.1';