@stream-io/video-react-native-sdk 1.26.5 → 1.27.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 (44) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/android/src/main/java/com/streamvideo/reactnative/util/CallAlivePermissionsHelper.kt +1 -2
  3. package/android/src/main/java/com/streamvideo/reactnative/util/CallAliveServiceChecker.kt +5 -6
  4. package/dist/commonjs/contexts/BackgroundFilters.js +12 -16
  5. package/dist/commonjs/contexts/BackgroundFilters.js.map +1 -1
  6. package/dist/commonjs/contexts/internal/BackgroundFiltersContext.js +14 -0
  7. package/dist/commonjs/contexts/internal/BackgroundFiltersContext.js.map +1 -0
  8. package/dist/commonjs/hooks/index.js +11 -0
  9. package/dist/commonjs/hooks/index.js.map +1 -1
  10. package/dist/commonjs/hooks/useModeration.js +63 -0
  11. package/dist/commonjs/hooks/useModeration.js.map +1 -0
  12. package/dist/commonjs/utils/push/libs/notifee/index.js +1 -8
  13. package/dist/commonjs/utils/push/libs/notifee/index.js.map +1 -1
  14. package/dist/commonjs/version.js +1 -1
  15. package/dist/module/contexts/BackgroundFilters.js +12 -15
  16. package/dist/module/contexts/BackgroundFilters.js.map +1 -1
  17. package/dist/module/contexts/internal/BackgroundFiltersContext.js +9 -0
  18. package/dist/module/contexts/internal/BackgroundFiltersContext.js.map +1 -0
  19. package/dist/module/hooks/index.js +1 -0
  20. package/dist/module/hooks/index.js.map +1 -1
  21. package/dist/module/hooks/useModeration.js +56 -0
  22. package/dist/module/hooks/useModeration.js.map +1 -0
  23. package/dist/module/utils/push/libs/notifee/index.js +1 -8
  24. package/dist/module/utils/push/libs/notifee/index.js.map +1 -1
  25. package/dist/module/version.js +1 -1
  26. package/dist/typescript/contexts/BackgroundFilters.d.ts +2 -43
  27. package/dist/typescript/contexts/BackgroundFilters.d.ts.map +1 -1
  28. package/dist/typescript/contexts/internal/BackgroundFiltersContext.d.ts +44 -0
  29. package/dist/typescript/contexts/internal/BackgroundFiltersContext.d.ts.map +1 -0
  30. package/dist/typescript/hooks/index.d.ts +1 -0
  31. package/dist/typescript/hooks/index.d.ts.map +1 -1
  32. package/dist/typescript/hooks/useModeration.d.ts +9 -0
  33. package/dist/typescript/hooks/useModeration.d.ts.map +1 -0
  34. package/dist/typescript/utils/push/libs/notifee/index.d.ts.map +1 -1
  35. package/dist/typescript/version.d.ts +1 -1
  36. package/expo-config-plugin/dist/withAndroidManifest.js +1 -1
  37. package/expo-config-plugin/dist/withAndroidPermissions.js +1 -1
  38. package/package.json +3 -3
  39. package/src/contexts/BackgroundFilters.tsx +24 -68
  40. package/src/contexts/internal/BackgroundFiltersContext.tsx +52 -0
  41. package/src/hooks/index.ts +1 -0
  42. package/src/hooks/useModeration.ts +83 -0
  43. package/src/utils/push/libs/notifee/index.ts +3 -12
  44. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,27 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [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)
6
+
7
+ ### Features
8
+
9
+ - **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)
10
+
11
+ ### Bug Fixes
12
+
13
+ - correctly restore background blur if available ([b16ffc0](https://github.com/GetStream/stream-video-js/commit/b16ffc0ade1b88437b09fe918deea30d314a530b))
14
+
15
+ ## [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)
16
+
17
+ ### Dependency Updates
18
+
19
+ - `@stream-io/video-client` updated to version `1.39.3`
20
+ - `@stream-io/video-react-bindings` updated to version `1.12.6`
21
+
22
+ ### Bug Fixes
23
+
24
+ - replace non-compliant foreground service types ([#2058](https://github.com/GetStream/stream-video-js/issues/2058)) ([d62ca2b](https://github.com/GetStream/stream-video-js/commit/d62ca2bb6defd58e44ed1ac135b95896b590d307))
25
+
5
26
  ## [1.26.5](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.26.4...@stream-io/video-react-native-sdk-1.26.5) (2025-12-23)
6
27
 
7
28
  ### Dependency Updates
@@ -23,8 +23,7 @@ object CallAlivePermissionsHelper {
23
23
  "android.permission.FOREGROUND_SERVICE",
24
24
  "android.permission.FOREGROUND_SERVICE_CAMERA",
25
25
  "android.permission.FOREGROUND_SERVICE_MICROPHONE",
26
- "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE",
27
- "android.permission.FOREGROUND_SERVICE_DATA_SYNC"
26
+ "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"
28
27
  )
29
28
 
30
29
  val missingPermissions =
@@ -26,14 +26,13 @@ object CallAliveServiceChecker {
26
26
 
27
27
  val expectedForegroundServiceTypes =
28
28
  ServiceInfo.FOREGROUND_SERVICE_TYPE_SHORT_SERVICE or
29
- ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC or
29
+ ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK or
30
30
  ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA or
31
- ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE or
32
- ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
31
+ ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
33
32
 
34
- val actualForegroundServiceType = serviceInfo.foregroundServiceType
33
+ val actualForegroundServiceTypes = serviceInfo.foregroundServiceType
35
34
 
36
- if (actualForegroundServiceType == expectedForegroundServiceTypes) {
35
+ if (actualForegroundServiceTypes == expectedForegroundServiceTypes) {
37
36
  return true
38
37
  } else {
39
38
  Log.w(
@@ -42,7 +41,7 @@ object CallAliveServiceChecker {
42
41
  foregroundServiceTypeToString(
43
42
  expectedForegroundServiceTypes
44
43
  )
45
- }, actual=${foregroundServiceTypeToString(actualForegroundServiceType)}"
44
+ }, actual=${foregroundServiceTypeToString(actualForegroundServiceTypes)}"
46
45
  )
47
46
  return false
48
47
  }
@@ -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":[]}
@@ -43,7 +43,7 @@ function getNotifeeLibNoThrowForKeepCallAlive() {
43
43
  return _lib.lib;
44
44
  }
45
45
  async function getKeepCallAliveForegroundServiceTypes() {
46
- const types = [];
46
+ const types = [AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK];
47
47
  const hasCameraPermission = await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.CAMERA);
48
48
  if (hasCameraPermission) {
49
49
  types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_CAMERA);
@@ -52,13 +52,6 @@ async function getKeepCallAliveForegroundServiceTypes() {
52
52
  if (hasMicrophonePermission) {
53
53
  types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_MICROPHONE);
54
54
  }
55
- const hasConnectionPermission = await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT);
56
- if (hasConnectionPermission) {
57
- types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE);
58
- }
59
- if (types.length === 0) {
60
- types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_DATA_SYNC);
61
- }
62
55
  return types;
63
56
  }
64
57
  function getIncomingCallForegroundServiceTypes() {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_lib","_videoClient","AndroidForegroundServiceType","INSTALLATION_INSTRUCTION","getNotifeeLibThrowIfNotInstalledForPush","lib","Error","getNotifeeLibNoThrowForKeepCallAlive","logger","videoLoggerSystem","getLogger","info","getKeepCallAliveForegroundServiceTypes","types","hasCameraPermission","PermissionsAndroid","check","PERMISSIONS","CAMERA","push","FOREGROUND_SERVICE_TYPE_CAMERA","hasMicrophonePermission","RECORD_AUDIO","FOREGROUND_SERVICE_TYPE_MICROPHONE","hasConnectionPermission","BLUETOOTH_CONNECT","FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE","length","FOREGROUND_SERVICE_TYPE_DATA_SYNC","getIncomingCallForegroundServiceTypes","FOREGROUND_SERVICE_TYPE_SHORT_SERVICE"],"sourceRoot":"../../../../../../src","sources":["utils/push/libs/notifee/index.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAA4D,IAIvDG,4BAA4B,0BAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA,EAA5BA,4BAA4B;AAkBjC,MAAMC,wBAAwB,GAC5B,6FAA6F;AAExF,SAASC,uCAAuCA,CAAA,EAAG;EACxD,IAAI,CAACC,QAAG,EAAE;IACR,MAAMC,KAAK,CACT,8FAA8F,GAC5FH,wBACJ,CAAC;EACH;EACA,OAAOE,QAAG;AACZ;AAEO,SAASE,oCAAoCA,CAAA,EAAG;EACrD,IAAI,CAACF,QAAG,EAAE;IACR,MAAMG,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,sBAAsB,CAAC;IAClEF,MAAM,CAACG,IAAI,CACT,GAAG,gHAAgH,GAAGR,wBAAwB,EAChJ,CAAC;EACH;EACA,OAAOE,QAAG;AACZ;AAEO,eAAeO,sCAAsCA,CAAA,EAAG;EAC7D,MAAMC,KAAqC,GAAG,EAAE;EAChD,MAAMC,mBAAmB,GAAG,MAAMC,+BAAkB,CAACC,KAAK,CACxDD,+BAAkB,CAACE,WAAW,CAACC,MACjC,CAAC;EACD,IAAIJ,mBAAmB,EAAE;IACvBD,KAAK,CAACM,IAAI,CAACjB,4BAA4B,CAACkB,8BAA8B,CAAC;EACzE;EACA,MAAMC,uBAAuB,GAAG,MAAMN,+BAAkB,CAACC,KAAK,CAC5DD,+BAAkB,CAACE,WAAW,CAACK,YACjC,CAAC;EACD,IAAID,uBAAuB,EAAE;IAC3BR,KAAK,CAACM,IAAI,CAACjB,4BAA4B,CAACqB,kCAAkC,CAAC;EAC7E;EACA,MAAMC,uBAAuB,GAAG,MAAMT,+BAAkB,CAACC,KAAK,CAC5DD,+BAAkB,CAACE,WAAW,CAACQ,iBACjC,CAAC;EACD,IAAID,uBAAuB,EAAE;IAC3BX,KAAK,CAACM,IAAI,CACRjB,4BAA4B,CAACwB,wCAC/B,CAAC;EACH;EACA,IAAIb,KAAK,CAACc,MAAM,KAAK,CAAC,EAAE;IACtBd,KAAK,CAACM,IAAI,CAACjB,4BAA4B,CAAC0B,iCAAiC,CAAC;EAC5E;EACA,OAAOf,KAAK;AACd;AAEO,SAASgB,qCAAqCA,CAAA,EAAG;EACtD,MAAMhB,KAAqC,GAAG,CAC5CX,4BAA4B,CAAC4B,qCAAqC,CACnE;EACD,OAAOjB,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_lib","_videoClient","AndroidForegroundServiceType","INSTALLATION_INSTRUCTION","getNotifeeLibThrowIfNotInstalledForPush","lib","Error","getNotifeeLibNoThrowForKeepCallAlive","logger","videoLoggerSystem","getLogger","info","getKeepCallAliveForegroundServiceTypes","types","FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK","hasCameraPermission","PermissionsAndroid","check","PERMISSIONS","CAMERA","push","FOREGROUND_SERVICE_TYPE_CAMERA","hasMicrophonePermission","RECORD_AUDIO","FOREGROUND_SERVICE_TYPE_MICROPHONE","getIncomingCallForegroundServiceTypes","FOREGROUND_SERVICE_TYPE_SHORT_SERVICE"],"sourceRoot":"../../../../../../src","sources":["utils/push/libs/notifee/index.ts"],"mappings":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAA4D,IAIvDG,4BAA4B,0BAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA,EAA5BA,4BAA4B;AAkBjC,MAAMC,wBAAwB,GAC5B,6FAA6F;AAExF,SAASC,uCAAuCA,CAAA,EAAG;EACxD,IAAI,CAACC,QAAG,EAAE;IACR,MAAMC,KAAK,CACT,8FAA8F,GAC5FH,wBACJ,CAAC;EACH;EACA,OAAOE,QAAG;AACZ;AAEO,SAASE,oCAAoCA,CAAA,EAAG;EACrD,IAAI,CAACF,QAAG,EAAE;IACR,MAAMG,MAAM,GAAGC,8BAAiB,CAACC,SAAS,CAAC,sBAAsB,CAAC;IAClEF,MAAM,CAACG,IAAI,CACT,GAAG,gHAAgH,GAAGR,wBAAwB,EAChJ,CAAC;EACH;EACA,OAAOE,QAAG;AACZ;AAEO,eAAeO,sCAAsCA,CAAA,EAAG;EAC7D,MAAMC,KAAqC,GAAG,CAC5CX,4BAA4B,CAACY,sCAAsC,CACpE;EACD,MAAMC,mBAAmB,GAAG,MAAMC,+BAAkB,CAACC,KAAK,CACxDD,+BAAkB,CAACE,WAAW,CAACC,MACjC,CAAC;EACD,IAAIJ,mBAAmB,EAAE;IACvBF,KAAK,CAACO,IAAI,CAAClB,4BAA4B,CAACmB,8BAA8B,CAAC;EACzE;EACA,MAAMC,uBAAuB,GAAG,MAAMN,+BAAkB,CAACC,KAAK,CAC5DD,+BAAkB,CAACE,WAAW,CAACK,YACjC,CAAC;EACD,IAAID,uBAAuB,EAAE;IAC3BT,KAAK,CAACO,IAAI,CAAClB,4BAA4B,CAACsB,kCAAkC,CAAC;EAC7E;EACA,OAAOX,KAAK;AACd;AAEO,SAASY,qCAAqCA,CAAA,EAAG;EACtD,MAAMZ,KAAqC,GAAG,CAC5CX,4BAA4B,CAACwB,qCAAqC,CACnE;EACD,OAAOb,KAAK;AACd","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.5';
7
+ const version = exports.version = '1.27.0';
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":"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","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":[]}
@@ -34,7 +34,7 @@ export function getNotifeeLibNoThrowForKeepCallAlive() {
34
34
  return lib;
35
35
  }
36
36
  export async function getKeepCallAliveForegroundServiceTypes() {
37
- const types = [];
37
+ const types = [AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK];
38
38
  const hasCameraPermission = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.CAMERA);
39
39
  if (hasCameraPermission) {
40
40
  types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_CAMERA);
@@ -43,13 +43,6 @@ export async function getKeepCallAliveForegroundServiceTypes() {
43
43
  if (hasMicrophonePermission) {
44
44
  types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_MICROPHONE);
45
45
  }
46
- const hasConnectionPermission = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT);
47
- if (hasConnectionPermission) {
48
- types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE);
49
- }
50
- if (types.length === 0) {
51
- types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_DATA_SYNC);
52
- }
53
46
  return types;
54
47
  }
55
48
  export function getIncomingCallForegroundServiceTypes() {
@@ -1 +1 @@
1
- {"version":3,"names":["PermissionsAndroid","lib","videoLoggerSystem","AndroidForegroundServiceType","INSTALLATION_INSTRUCTION","getNotifeeLibThrowIfNotInstalledForPush","Error","getNotifeeLibNoThrowForKeepCallAlive","logger","getLogger","info","getKeepCallAliveForegroundServiceTypes","types","hasCameraPermission","check","PERMISSIONS","CAMERA","push","FOREGROUND_SERVICE_TYPE_CAMERA","hasMicrophonePermission","RECORD_AUDIO","FOREGROUND_SERVICE_TYPE_MICROPHONE","hasConnectionPermission","BLUETOOTH_CONNECT","FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE","length","FOREGROUND_SERVICE_TYPE_DATA_SYNC","getIncomingCallForegroundServiceTypes","FOREGROUND_SERVICE_TYPE_SHORT_SERVICE"],"sourceRoot":"../../../../../../src","sources":["utils/push/libs/notifee/index.ts"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,cAAc;AACjD,SAASC,GAAG,QAAmB,OAAO;AACtC,SAASC,iBAAiB,QAAQ,yBAAyB;AAAC,IAIvDC,4BAA4B,0BAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA,EAA5BA,4BAA4B;AAkBjC,MAAMC,wBAAwB,GAC5B,6FAA6F;AAE/F,OAAO,SAASC,uCAAuCA,CAAA,EAAG;EACxD,IAAI,CAACJ,GAAG,EAAE;IACR,MAAMK,KAAK,CACT,8FAA8F,GAC5FF,wBACJ,CAAC;EACH;EACA,OAAOH,GAAG;AACZ;AAEA,OAAO,SAASM,oCAAoCA,CAAA,EAAG;EACrD,IAAI,CAACN,GAAG,EAAE;IACR,MAAMO,MAAM,GAAGN,iBAAiB,CAACO,SAAS,CAAC,sBAAsB,CAAC;IAClED,MAAM,CAACE,IAAI,CACT,GAAG,gHAAgH,GAAGN,wBAAwB,EAChJ,CAAC;EACH;EACA,OAAOH,GAAG;AACZ;AAEA,OAAO,eAAeU,sCAAsCA,CAAA,EAAG;EAC7D,MAAMC,KAAqC,GAAG,EAAE;EAChD,MAAMC,mBAAmB,GAAG,MAAMb,kBAAkB,CAACc,KAAK,CACxDd,kBAAkB,CAACe,WAAW,CAACC,MACjC,CAAC;EACD,IAAIH,mBAAmB,EAAE;IACvBD,KAAK,CAACK,IAAI,CAACd,4BAA4B,CAACe,8BAA8B,CAAC;EACzE;EACA,MAAMC,uBAAuB,GAAG,MAAMnB,kBAAkB,CAACc,KAAK,CAC5Dd,kBAAkB,CAACe,WAAW,CAACK,YACjC,CAAC;EACD,IAAID,uBAAuB,EAAE;IAC3BP,KAAK,CAACK,IAAI,CAACd,4BAA4B,CAACkB,kCAAkC,CAAC;EAC7E;EACA,MAAMC,uBAAuB,GAAG,MAAMtB,kBAAkB,CAACc,KAAK,CAC5Dd,kBAAkB,CAACe,WAAW,CAACQ,iBACjC,CAAC;EACD,IAAID,uBAAuB,EAAE;IAC3BV,KAAK,CAACK,IAAI,CACRd,4BAA4B,CAACqB,wCAC/B,CAAC;EACH;EACA,IAAIZ,KAAK,CAACa,MAAM,KAAK,CAAC,EAAE;IACtBb,KAAK,CAACK,IAAI,CAACd,4BAA4B,CAACuB,iCAAiC,CAAC;EAC5E;EACA,OAAOd,KAAK;AACd;AAEA,OAAO,SAASe,qCAAqCA,CAAA,EAAG;EACtD,MAAMf,KAAqC,GAAG,CAC5CT,4BAA4B,CAACyB,qCAAqC,CACnE;EACD,OAAOhB,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"names":["PermissionsAndroid","lib","videoLoggerSystem","AndroidForegroundServiceType","INSTALLATION_INSTRUCTION","getNotifeeLibThrowIfNotInstalledForPush","Error","getNotifeeLibNoThrowForKeepCallAlive","logger","getLogger","info","getKeepCallAliveForegroundServiceTypes","types","FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK","hasCameraPermission","check","PERMISSIONS","CAMERA","push","FOREGROUND_SERVICE_TYPE_CAMERA","hasMicrophonePermission","RECORD_AUDIO","FOREGROUND_SERVICE_TYPE_MICROPHONE","getIncomingCallForegroundServiceTypes","FOREGROUND_SERVICE_TYPE_SHORT_SERVICE"],"sourceRoot":"../../../../../../src","sources":["utils/push/libs/notifee/index.ts"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,cAAc;AACjD,SAASC,GAAG,QAAmB,OAAO;AACtC,SAASC,iBAAiB,QAAQ,yBAAyB;AAAC,IAIvDC,4BAA4B,0BAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA,EAA5BA,4BAA4B;AAkBjC,MAAMC,wBAAwB,GAC5B,6FAA6F;AAE/F,OAAO,SAASC,uCAAuCA,CAAA,EAAG;EACxD,IAAI,CAACJ,GAAG,EAAE;IACR,MAAMK,KAAK,CACT,8FAA8F,GAC5FF,wBACJ,CAAC;EACH;EACA,OAAOH,GAAG;AACZ;AAEA,OAAO,SAASM,oCAAoCA,CAAA,EAAG;EACrD,IAAI,CAACN,GAAG,EAAE;IACR,MAAMO,MAAM,GAAGN,iBAAiB,CAACO,SAAS,CAAC,sBAAsB,CAAC;IAClED,MAAM,CAACE,IAAI,CACT,GAAG,gHAAgH,GAAGN,wBAAwB,EAChJ,CAAC;EACH;EACA,OAAOH,GAAG;AACZ;AAEA,OAAO,eAAeU,sCAAsCA,CAAA,EAAG;EAC7D,MAAMC,KAAqC,GAAG,CAC5CT,4BAA4B,CAACU,sCAAsC,CACpE;EACD,MAAMC,mBAAmB,GAAG,MAAMd,kBAAkB,CAACe,KAAK,CACxDf,kBAAkB,CAACgB,WAAW,CAACC,MACjC,CAAC;EACD,IAAIH,mBAAmB,EAAE;IACvBF,KAAK,CAACM,IAAI,CAACf,4BAA4B,CAACgB,8BAA8B,CAAC;EACzE;EACA,MAAMC,uBAAuB,GAAG,MAAMpB,kBAAkB,CAACe,KAAK,CAC5Df,kBAAkB,CAACgB,WAAW,CAACK,YACjC,CAAC;EACD,IAAID,uBAAuB,EAAE;IAC3BR,KAAK,CAACM,IAAI,CAACf,4BAA4B,CAACmB,kCAAkC,CAAC;EAC7E;EACA,OAAOV,KAAK;AACd;AAEA,OAAO,SAASW,qCAAqCA,CAAA,EAAG;EACtD,MAAMX,KAAqC,GAAG,CAC5CT,4BAA4B,CAACqB,qCAAqC,CACnE;EACD,OAAOZ,KAAK;AACd","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- export const version = '1.26.5';
1
+ export const version = '1.27.0';
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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/utils/push/libs/notifee/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,IAAI,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,aAAK,4BAA4B;IAC/B,8BAA8B,KAAK;IACnC,wCAAwC,KAAK;IAC7C,iCAAiC,IAAI;IACrC,8BAA8B,MAAM;IACpC,gCAAgC,IAAI;IACpC,sCAAsC,IAAI;IAC1C,wCAAwC,KAAK;IAC7C,wCAAwC,OAAO;IAC/C,kCAAkC,MAAM;IACxC,kCAAkC,IAAI;IACtC,wCAAwC,MAAM;IAC9C,qCAAqC,OAAO;IAC5C,mCAAmC,aAAa;IAChD,uCAAuC,OAAO;IAC9C,gCAAgC,KAAK;CACtC;AAKD,wBAAgB,uCAAuC,2CAQtD;AAED,wBAAgB,oCAAoC,uDAQnD;AAED,wBAAsB,sCAAsC,4CA0B3D;AAED,wBAAgB,qCAAqC,mCAKpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/utils/push/libs/notifee/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,IAAI,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,aAAK,4BAA4B;IAC/B,8BAA8B,KAAK;IACnC,wCAAwC,KAAK;IAC7C,iCAAiC,IAAI;IACrC,8BAA8B,MAAM;IACpC,gCAAgC,IAAI;IACpC,sCAAsC,IAAI;IAC1C,wCAAwC,KAAK;IAC7C,wCAAwC,OAAO;IAC/C,kCAAkC,MAAM;IACxC,kCAAkC,IAAI;IACtC,wCAAwC,MAAM;IAC9C,qCAAqC,OAAO;IAC5C,mCAAmC,aAAa;IAChD,uCAAuC,OAAO;IAC9C,gCAAgC,KAAK;CACtC;AAKD,wBAAgB,uCAAuC,2CAQtD;AAED,wBAAgB,oCAAoC,uDAQnD;AAED,wBAAsB,sCAAsC,4CAiB3D;AAED,wBAAgB,qCAAqC,mCAKpD"}
@@ -1,2 +1,2 @@
1
- export declare const version = "1.26.5";
1
+ export declare const version = "1.27.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -12,7 +12,7 @@ function getNotifeeService(isKeepCallAliveEnabled = false) {
12
12
  let foregroundServiceType = 'shortService';
13
13
  if (isKeepCallAliveEnabled) {
14
14
  foregroundServiceType =
15
- 'dataSync|camera|microphone|connectedDevice|' + foregroundServiceType;
15
+ 'mediaPlayback|camera|microphone|' + foregroundServiceType;
16
16
  }
17
17
  let head = prefixAndroidKeys({
18
18
  name: 'app.notifee.core.ForegroundService',
@@ -17,7 +17,7 @@ const withStreamVideoReactNativeSDKAndroidPermissions = (configuration, props) =
17
17
  }
18
18
  }
19
19
  if (props?.androidKeepCallAlive || props?.ringingPushNotifications) {
20
- permissions.push('android.permission.FOREGROUND_SERVICE_CAMERA', 'android.permission.FOREGROUND_SERVICE_MICROPHONE', 'android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE', 'android.permission.FOREGROUND_SERVICE_DATA_SYNC');
20
+ permissions.push('android.permission.FOREGROUND_SERVICE_CAMERA', 'android.permission.FOREGROUND_SERVICE_MICROPHONE', 'android.permission.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK');
21
21
  }
22
22
  if (props?.ringingPushNotifications?.showWhenLockedAndroid) {
23
23
  permissions.push('android.permission.USE_FULL_SCREEN_INTENT');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stream-io/video-react-native-sdk",
3
- "version": "1.26.5",
3
+ "version": "1.27.0",
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.2",
54
- "@stream-io/video-react-bindings": "1.12.5",
53
+ "@stream-io/video-client": "1.39.3",
54
+ "@stream-io/video-react-bindings": "1.12.6",
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
+ };
@@ -46,7 +46,9 @@ export function getNotifeeLibNoThrowForKeepCallAlive() {
46
46
  }
47
47
 
48
48
  export async function getKeepCallAliveForegroundServiceTypes() {
49
- const types: AndroidForegroundServiceType[] = [];
49
+ const types: AndroidForegroundServiceType[] = [
50
+ AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK,
51
+ ];
50
52
  const hasCameraPermission = await PermissionsAndroid.check(
51
53
  PermissionsAndroid.PERMISSIONS.CAMERA!,
52
54
  );
@@ -59,17 +61,6 @@ export async function getKeepCallAliveForegroundServiceTypes() {
59
61
  if (hasMicrophonePermission) {
60
62
  types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_MICROPHONE);
61
63
  }
62
- const hasConnectionPermission = await PermissionsAndroid.check(
63
- PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT!,
64
- );
65
- if (hasConnectionPermission) {
66
- types.push(
67
- AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE,
68
- );
69
- }
70
- if (types.length === 0) {
71
- types.push(AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_DATA_SYNC);
72
- }
73
64
  return types;
74
65
  }
75
66
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.26.5';
1
+ export const version = '1.27.0';