From a98d07f9e3eaf6bb059911538ba2a64a1550e53d Mon Sep 17 00:00:00 2001 From: Vishal Narkhede Date: Fri, 15 Sep 2023 16:57:33 +0200 Subject: [PATCH 01/84] fix: initial device state handling (#1092) --- packages/client/src/devices/InputMediaDeviceManager.ts | 2 +- .../Call/CallControls/ToggleAudioPublishingButton.tsx | 10 ++++------ .../Call/CallControls/ToggleVideoPublishingButton.tsx | 10 ++++------ .../src/components/Call/Lobby/Lobby.tsx | 2 +- .../src/providers/MediaStreamManagement.tsx | 1 + .../dogfood/src/screens/Meeting/MeetingScreen.tsx | 8 +------- 6 files changed, 12 insertions(+), 21 deletions(-) diff --git a/packages/client/src/devices/InputMediaDeviceManager.ts b/packages/client/src/devices/InputMediaDeviceManager.ts index 3bedea048d..1bd58f8609 100644 --- a/packages/client/src/devices/InputMediaDeviceManager.ts +++ b/packages/client/src/devices/InputMediaDeviceManager.ts @@ -154,7 +154,7 @@ export abstract class InputMediaDeviceManager< // @ts-expect-error release() is present in react-native-webrtc and must be called to dispose the stream if (typeof this.state.mediaStream.release === 'function') { // @ts-expect-error - stream.release(); + this.state.mediaStream.release(); } this.state.setMediaStream(undefined); } diff --git a/packages/react-native-sdk/src/components/Call/CallControls/ToggleAudioPublishingButton.tsx b/packages/react-native-sdk/src/components/Call/CallControls/ToggleAudioPublishingButton.tsx index b0075def5c..4da14f8733 100644 --- a/packages/react-native-sdk/src/components/Call/CallControls/ToggleAudioPublishingButton.tsx +++ b/packages/react-native-sdk/src/components/Call/CallControls/ToggleAudioPublishingButton.tsx @@ -46,15 +46,13 @@ export const ToggleAudioPublishingButton = ({ - {status === 'disabled' ? ( - - ) : ( + {status === 'enabled' ? ( + ) : ( + )} diff --git a/packages/react-native-sdk/src/components/Call/CallControls/ToggleVideoPublishingButton.tsx b/packages/react-native-sdk/src/components/Call/CallControls/ToggleVideoPublishingButton.tsx index d3587342a3..af5e81baa9 100644 --- a/packages/react-native-sdk/src/components/Call/CallControls/ToggleVideoPublishingButton.tsx +++ b/packages/react-native-sdk/src/components/Call/CallControls/ToggleVideoPublishingButton.tsx @@ -44,14 +44,12 @@ export const ToggleVideoPublishingButton = ({ - {status === 'disabled' ? ( - - ) : ( + {status === 'enabled' ? ( diff --git a/packages/react-native-sdk/src/components/Call/Lobby/Lobby.tsx b/packages/react-native-sdk/src/components/Call/Lobby/Lobby.tsx index 7fe7b4acea..b3b93245d1 100644 --- a/packages/react-native-sdk/src/components/Call/Lobby/Lobby.tsx +++ b/packages/react-native-sdk/src/components/Call/Lobby/Lobby.tsx @@ -189,7 +189,7 @@ const ParticipantStatus = () => { > {participantLabel} - {micStatus === 'disabled' && ( + {(!micStatus || micStatus === 'disabled') && ( { let initAudio = prev.initialAudioEnabled; diff --git a/sample-apps/react-native/dogfood/src/screens/Meeting/MeetingScreen.tsx b/sample-apps/react-native/dogfood/src/screens/Meeting/MeetingScreen.tsx index 0d28735099..5bb0cc5624 100644 --- a/sample-apps/react-native/dogfood/src/screens/Meeting/MeetingScreen.tsx +++ b/sample-apps/react-native/dogfood/src/screens/Meeting/MeetingScreen.tsx @@ -41,13 +41,7 @@ export const MeetingScreen = (props: Props) => { } return ( - + ); From bf8419763b423e79b3cdadf42da5c79ff3817486 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot <> Date: Fri, 15 Sep 2023 15:02:38 +0000 Subject: [PATCH 02/84] chore(@stream-io/video-client): release version 0.3.19 --- packages/client/CHANGELOG.md | 7 +++++++ packages/client/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 09cadf9e36..423a0ede33 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -2,6 +2,13 @@ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver). +### [0.3.19](https://github.com/GetStream/stream-video-js/compare/client0.3.18...client0.3.19) (2023-09-15) + + +### Bug Fixes + +* initial device state handling ([#1092](https://github.com/GetStream/stream-video-js/issues/1092)) ([a98d07f](https://github.com/GetStream/stream-video-js/commit/a98d07f9e3eaf6bb059911538ba2a64a1550e53d)) + ### [0.3.18](https://github.com/GetStream/stream-video-js/compare/client0.3.17...client0.3.18) (2023-09-15) diff --git a/packages/client/package.json b/packages/client/package.json index 2974945e64..34ae48a4ec 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@stream-io/video-client", - "version": "0.3.18", + "version": "0.3.19", "packageManager": "yarn@3.2.4", "main": "dist/index.cjs.js", "module": "dist/index.es.js", From 089d8eac866d90726a48c6efb37576933f137588 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot <> Date: Fri, 15 Sep 2023 15:03:31 +0000 Subject: [PATCH 03/84] chore(@stream-io/video-react-bindings): release version 0.2.20 --- packages/react-bindings/CHANGELOG.md | 5 +++++ packages/react-bindings/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/react-bindings/CHANGELOG.md b/packages/react-bindings/CHANGELOG.md index 9bb634607d..74d261fac0 100644 --- a/packages/react-bindings/CHANGELOG.md +++ b/packages/react-bindings/CHANGELOG.md @@ -2,6 +2,11 @@ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver). +### [0.2.20](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-bindings-0.2.19...@stream-io/video-react-bindings-0.2.20) (2023-09-15) + +### Dependency Updates + +* `@stream-io/video-client` updated to version `0.1.0` ### [0.2.19](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-bindings-0.2.18...@stream-io/video-react-bindings-0.2.19) (2023-09-15) ### Dependency Updates diff --git a/packages/react-bindings/package.json b/packages/react-bindings/package.json index b38d61982f..6ba22e2e1e 100644 --- a/packages/react-bindings/package.json +++ b/packages/react-bindings/package.json @@ -1,6 +1,6 @@ { "name": "@stream-io/video-react-bindings", - "version": "0.2.19", + "version": "0.2.20", "packageManager": "yarn@3.2.4", "main": "./dist/index.js", "types": "./dist/index.d.ts", From 0182e4608bc902703e05c1e1982834b82ad5f1e6 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot <> Date: Fri, 15 Sep 2023 15:03:44 +0000 Subject: [PATCH 04/84] chore(@stream-io/video-react-sdk): release version 0.3.22 --- packages/react-sdk/CHANGELOG.md | 6 ++++++ packages/react-sdk/package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/react-sdk/CHANGELOG.md b/packages/react-sdk/CHANGELOG.md index b2a059ff11..8454694544 100644 --- a/packages/react-sdk/CHANGELOG.md +++ b/packages/react-sdk/CHANGELOG.md @@ -2,6 +2,12 @@ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver). +### [0.3.22](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.3.21...@stream-io/video-react-sdk-0.3.22) (2023-09-15) + +### Dependency Updates + +* `@stream-io/video-client` updated to version `0.1.0` +* `@stream-io/video-react-bindings` updated to version `0.2.20` ### [0.3.21](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.3.20...@stream-io/video-react-sdk-0.3.21) (2023-09-15) ### Dependency Updates diff --git a/packages/react-sdk/package.json b/packages/react-sdk/package.json index d36dcdeb7f..7a7703afa6 100644 --- a/packages/react-sdk/package.json +++ b/packages/react-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@stream-io/video-react-sdk", - "version": "0.3.21", + "version": "0.3.22", "packageManager": "yarn@3.2.4", "main": "./dist/index.js", "types": "./dist/index.d.ts", From 105c008930a191e198548e70d40c9d21d6b5e64a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot <> Date: Fri, 15 Sep 2023 15:04:10 +0000 Subject: [PATCH 05/84] chore(@stream-io/video-react-native-sdk): release version 0.0.16 --- packages/react-native-sdk/CHANGELOG.md | 11 +++++++++++ packages/react-native-sdk/package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/react-native-sdk/CHANGELOG.md b/packages/react-native-sdk/CHANGELOG.md index 28b9e246de..56418c1f41 100644 --- a/packages/react-native-sdk/CHANGELOG.md +++ b/packages/react-native-sdk/CHANGELOG.md @@ -2,6 +2,17 @@ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver). +### [0.0.16](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.15...@stream-io/video-react-native-sdk-0.0.16) (2023-09-15) + +### Dependency Updates + +* `@stream-io/video-client` updated to version `0.1.0` +* `@stream-io/video-react-bindings` updated to version `0.2.20` + +### Bug Fixes + +* initial device state handling ([#1092](https://github.com/GetStream/stream-video-js/issues/1092)) ([a98d07f](https://github.com/GetStream/stream-video-js/commit/a98d07f9e3eaf6bb059911538ba2a64a1550e53d)) + ### [0.0.15](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.14...@stream-io/video-react-native-sdk-0.0.15) (2023-09-15) ### Dependency Updates diff --git a/packages/react-native-sdk/package.json b/packages/react-native-sdk/package.json index f6beec8c1a..c16784de8b 100644 --- a/packages/react-native-sdk/package.json +++ b/packages/react-native-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@stream-io/video-react-native-sdk", - "version": "0.0.15", + "version": "0.0.16", "packageManager": "yarn@3.2.4", "main": "dist/commonjs/index.js", "module": "dist/module/index.js", From 16e36e8e1799ae51652ed91c1026fb951ce81fa7 Mon Sep 17 00:00:00 2001 From: Oliver Lazoroski Date: Mon, 18 Sep 2023 12:20:15 +0200 Subject: [PATCH 06/84] chore: update roadmap [skip ci] --- packages/react-sdk/README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/react-sdk/README.md b/packages/react-sdk/README.md index f57831f80c..d56137552e 100644 --- a/packages/react-sdk/README.md +++ b/packages/react-sdk/README.md @@ -56,18 +56,20 @@ Here are some of the features we support: ### 0.4 milestone - [X] Enhanced device management API - [X] Composite layout for streaming and recording +- [ ] Livestream Player - [ ] Screenshare Audio -- [ ] Hardware-accelerated video encoding on supported platforms -- [ ] Typescript generics enhancements +- [ ] Screensharing resolution and FPS control - [ ] Fast-reconnects +- [ ] New Device Management API - [X] SFU retries +- [ ] Query call session endpoint ### 0.5 milestone - [ ] Enhanced UI components and theming - [ ] Enhanced SDK build system -- [ ] Video and audio filters +- [ ] Typescript generics enhancements +- [ ] Hardware-accelerated video encoding on supported platforms - [ ] Performance and bundle-size optimizations -- [ ] Dynascale: turn off incoming video when the browser is in the background - [ ] Dynascale 2.0 (codecs, f resolution switches, resolution webrtc handling) - [ ] Call analytics / stats - [ ] Logging 2.0 @@ -78,6 +80,8 @@ Here are some of the features we support: - [ ] Waiting rooms - [ ] Transcriptions - [ ] Closed captions +- [ ] Video and audio filters +- [ ] Dynascale: turn off incoming video when the browser is in the background ## Contributing From bc086e225c38982e809b70d90c26c82da90b7b83 Mon Sep 17 00:00:00 2001 From: Oliver Lazoroski Date: Mon, 18 Sep 2023 12:21:19 +0200 Subject: [PATCH 07/84] chore: remove the "unstable" banner [skip ci] --- packages/client/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/client/README.md b/packages/client/README.md index 7d1de14c87..03c6ae1d18 100644 --- a/packages/client/README.md +++ b/packages/client/README.md @@ -1,7 +1,5 @@ # @stream-io/video-client -🚧 **WARNING** This package is not yet stable, it is for internal use only. For more information check out our [video product page](https://getstream.io/video/). 🚧 - Low-level video client for browser and Node.js integrations. ## **Quick Links** From f1e36ccf916d94e48892fc035f45accc3527983a Mon Sep 17 00:00:00 2001 From: Oliver Lazoroski Date: Mon, 18 Sep 2023 14:34:00 +0200 Subject: [PATCH 08/84] test: fix failing test --- .../client/src/__tests__/server-side/call-types.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/client/src/__tests__/server-side/call-types.test.ts b/packages/client/src/__tests__/server-side/call-types.test.ts index f3bc7bedd8..55b5fe5d11 100644 --- a/packages/client/src/__tests__/server-side/call-types.test.ts +++ b/packages/client/src/__tests__/server-side/call-types.test.ts @@ -3,7 +3,11 @@ import { beforeAll, describe, expect, it } from 'vitest'; import { StreamVideoServerClient } from '../../StreamVideoServerClient'; import { generateUUIDv4 } from '../../coordinator/connection/utils'; import { LogLevel } from '../../coordinator/connection/types'; -import { OwnCapability, RecordSettingsModeEnum } from '../../gen/coordinator'; +import { + OwnCapability, + RecordSettingsModeEnum, + RecordSettingsQualityEnum, +} from '../../gen/coordinator'; const apiKey = process.env.STREAM_API_KEY!; const secret = process.env.STREAM_SECRET!; @@ -95,6 +99,9 @@ describe('call types CRUD API', () => { audio: { mic_default_on: false, default_device: 'earpiece' }, recording: { mode: RecordSettingsModeEnum.DISABLED, + // FIXME OL: these props shouldn't be required to be set when recording is disabled + audio_only: false, + quality: RecordSettingsQualityEnum._1080P, }, }, }); From 4b523f4d6642c4c1600b151f69dae6e344374c54 Mon Sep 17 00:00:00 2001 From: Oliver Lazoroski Date: Mon, 18 Sep 2023 15:27:32 +0200 Subject: [PATCH 09/84] chore(ux-feedback): re-arrange call control buttons (#1093) Applies consistent ordering of the call control buttons: - Mic - Camera - Speakers --- packages/react-sdk/README.md | 2 +- .../react/react-dogfood/components/Lobby.tsx | 2 +- .../components/ControlMenu/ControlMenu.tsx | 54 +++++++++---------- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/packages/react-sdk/README.md b/packages/react-sdk/README.md index d56137552e..c80121640b 100644 --- a/packages/react-sdk/README.md +++ b/packages/react-sdk/README.md @@ -58,7 +58,7 @@ Here are some of the features we support: - [X] Composite layout for streaming and recording - [ ] Livestream Player - [ ] Screenshare Audio -- [ ] Screensharing resolution and FPS control +- [ ] Screen-sharing resolution and FPS control - [ ] Fast-reconnects - [ ] New Device Management API - [X] SFU retries diff --git a/sample-apps/react/react-dogfood/components/Lobby.tsx b/sample-apps/react/react-dogfood/components/Lobby.tsx index a1aa290e72..b1a705f84e 100644 --- a/sample-apps/react/react-dogfood/components/Lobby.tsx +++ b/sample-apps/react/react-dogfood/components/Lobby.tsx @@ -98,9 +98,9 @@ export const Lobby = ({ onJoin, callId, enablePreview = true }: LobbyProps) => { marginTop: '0.75rem', }} > - {isAudioOutputChangeSupported && } + {isAudioOutputChangeSupported && } )} diff --git a/sample-apps/react/react-video-demo/src/components/ControlMenu/ControlMenu.tsx b/sample-apps/react/react-video-demo/src/components/ControlMenu/ControlMenu.tsx index ca6a46a069..ea323bcbf9 100644 --- a/sample-apps/react/react-video-demo/src/components/ControlMenu/ControlMenu.tsx +++ b/sample-apps/react/react-video-demo/src/components/ControlMenu/ControlMenu.tsx @@ -104,35 +104,8 @@ export const ControlMenu: FC = ({ className, call, preview }) => { setAudioOutputVisible(!isAudioOutputVisible); }, [isAudioOutputVisible]); - const rootClassName = classnames(styles.root, className); - return ( -
- {isAudioOutputChangeSupported ? ( - } - portalId="audio-output-settings" - label="Audio" - showPanel={isAudioOutputVisible} - onClick={() => toggleAudioOutputPanel()} - panel={ - - - - } - /> - ) : null} - +
= ({ className, call, preview }) => { } /> + + {isAudioOutputChangeSupported ? ( + } + portalId="audio-output-settings" + label="Audio" + showPanel={isAudioOutputVisible} + onClick={() => toggleAudioOutputPanel()} + panel={ + + + + } + /> + ) : null}
); }; From 9efd84cb77b98c372917e6bfa36161763969dddd Mon Sep 17 00:00:00 2001 From: Oliver Lazoroski Date: Mon, 18 Sep 2023 16:41:01 +0200 Subject: [PATCH 10/84] fix: hide the video element when a placeholder is visible (#1094) Applies `display: none` to the `