@stream-io/video-react-sdk 0.6.9 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stream-io/video-react-sdk",
3
- "version": "0.6.9",
3
+ "version": "0.6.11",
4
4
  "packageManager": "yarn@3.2.4",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.es.js",
@@ -29,9 +29,9 @@
29
29
  ],
30
30
  "dependencies": {
31
31
  "@floating-ui/react": "^0.26.5",
32
- "@stream-io/video-client": "0.7.6",
32
+ "@stream-io/video-client": "0.7.7",
33
33
  "@stream-io/video-filters-web": "0.1.0",
34
- "@stream-io/video-react-bindings": "0.4.17",
34
+ "@stream-io/video-react-bindings": "0.4.18",
35
35
  "chart.js": "^4.4.1",
36
36
  "clsx": "^2.0.0",
37
37
  "react-chartjs-2": "^5.2.0"
@@ -219,25 +219,28 @@ const BackgroundFilters = (props: { tfLite: TFLite }) => {
219
219
  const [width, setWidth] = useState(1920);
220
220
  const [height, setHeight] = useState(1080);
221
221
 
222
- const resolveFilterRef =
222
+ // Holds a ref to the `resolve` function of the returned Promise as part
223
+ // of the `camera.registerFilter()` API. Once the filter is initialized,
224
+ // it should be called with the filtered MediaStream as an argument.
225
+ const signalFilterReadyRef =
223
226
  useRef<(value: MediaStream | PromiseLike<MediaStream>) => void>();
224
227
 
225
228
  const [mediaStream, setMediaStream] = useState<MediaStream>();
226
- const registerFilterRef = useRef(Promise.resolve(async () => {}));
229
+ const unregister = useRef<Promise<void>>();
227
230
  useEffect(() => {
228
231
  if (!call || !backgroundFilter) return;
229
- registerFilterRef.current = registerFilterRef.current.then(() =>
232
+ const register = (unregister.current || Promise.resolve()).then(() =>
230
233
  call.camera.registerFilter(async (ms) => {
231
234
  return new Promise<MediaStream>((resolve) => {
232
235
  setMediaStream(ms);
233
- resolveFilterRef.current = resolve;
236
+ signalFilterReadyRef.current = resolve;
234
237
  });
235
238
  }),
236
239
  );
237
240
 
238
241
  return () => {
239
- registerFilterRef.current
240
- .then((unregister) => unregister())
242
+ unregister.current = register
243
+ .then((unregisterFilter) => unregisterFilter())
241
244
  .then(() => setMediaStream(undefined))
242
245
  .catch((err) => console.error('Failed to unregister filter', err));
243
246
  };
@@ -254,7 +257,7 @@ const BackgroundFilters = (props: { tfLite: TFLite }) => {
254
257
  setHeight(h);
255
258
  }
256
259
 
257
- const resolveFilter = resolveFilterRef.current;
260
+ const resolveFilter = signalFilterReadyRef.current;
258
261
  if (!resolveFilter) return;
259
262
  const filter = canvasRef.captureStream();
260
263
  resolveFilter(filter);