@stream-io/video-react-sdk 0.0.48 → 0.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/src/core/contexts/MediaDevicesContext.js +7 -7
- package/dist/src/core/contexts/MediaDevicesContext.js.map +1 -1
- package/dist/src/core/hooks/useAudioPublisher.d.ts +1 -2
- package/dist/src/core/hooks/useAudioPublisher.js +5 -3
- package/dist/src/core/hooks/useAudioPublisher.js.map +1 -1
- package/dist/src/core/hooks/useVideoPublisher.d.ts +1 -2
- package/dist/src/core/hooks/useVideoPublisher.js +5 -3
- package/dist/src/core/hooks/useVideoPublisher.js.map +1 -1
- package/package.json +3 -3
- package/src/core/contexts/MediaDevicesContext.tsx +9 -7
- package/src/core/hooks/useAudioPublisher.ts +6 -4
- package/src/core/hooks/useVideoPublisher.ts +6 -4
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
|
+
### [0.0.50](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.0.49...@stream-io/video-react-sdk-0.0.50) (2023-06-23)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
* `@stream-io/video-client` updated to version `0.0.1`
|
|
10
|
+
* `@stream-io/video-react-bindings` updated to version `0.0.26`
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **react-sdk:** check browser permissions before watching disconnected device ([#700](https://github.com/GetStream/stream-video-js/issues/700)) ([50b8968](https://github.com/GetStream/stream-video-js/commit/50b8968aeaf73d70e2ed081353eb41063f484bdb))
|
|
15
|
+
|
|
16
|
+
### [0.0.49](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.0.48...@stream-io/video-react-sdk-0.0.49) (2023-06-23)
|
|
17
|
+
|
|
18
|
+
### Dependency Updates
|
|
19
|
+
|
|
20
|
+
* `@stream-io/video-client` updated to version `0.0.1`
|
|
21
|
+
* `@stream-io/video-react-bindings` updated to version `0.0.25`
|
|
5
22
|
### [0.0.48](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.0.47...@stream-io/video-react-sdk-0.0.48) (2023-06-22)
|
|
6
23
|
|
|
7
24
|
### Dependency Updates
|
|
@@ -57,8 +57,8 @@ export const MediaDevicesProvider = ({ children, initialAudioEnabled, initialVid
|
|
|
57
57
|
const callState = useCallState();
|
|
58
58
|
const metadata = useCallMetadata();
|
|
59
59
|
const { localParticipant$ } = callState;
|
|
60
|
-
const
|
|
61
|
-
const
|
|
60
|
+
const hasBrowserPermissionVideoInput = useHasBrowserPermissions('camera');
|
|
61
|
+
const hasBrowserPermissionAudioInput = useHasBrowserPermissions('microphone');
|
|
62
62
|
const [selectedAudioInputDeviceId, selectAudioInputDeviceId] = useState(initialAudioInputDeviceId);
|
|
63
63
|
const [selectedAudioOutputDeviceId, selectAudioOutputDeviceId] = useState(initialAudioOutputDeviceId);
|
|
64
64
|
const [selectedVideoDeviceId, selectVideoDeviceId] = useState(initialVideoInputDeviceId);
|
|
@@ -123,11 +123,11 @@ export const MediaDevicesProvider = ({ children, initialAudioEnabled, initialVid
|
|
|
123
123
|
selectAudioOutputDeviceId(deviceId);
|
|
124
124
|
}
|
|
125
125
|
}, []);
|
|
126
|
-
useAudioInputDeviceFallback(() => switchDevice('audioinput', DEFAULT_DEVICE_ID),
|
|
126
|
+
useAudioInputDeviceFallback(() => switchDevice('audioinput', DEFAULT_DEVICE_ID), hasBrowserPermissionAudioInput, selectedAudioInputDeviceId);
|
|
127
127
|
useAudioOutputDeviceFallback(() => switchDevice('audiooutput', DEFAULT_DEVICE_ID),
|
|
128
128
|
// audiooutput devices can be enumerated only with microphone permissions
|
|
129
|
-
|
|
130
|
-
useVideoDeviceFallback(() => switchDevice('videoinput', DEFAULT_DEVICE_ID),
|
|
129
|
+
hasBrowserPermissionAudioInput, selectedAudioOutputDeviceId);
|
|
130
|
+
useVideoDeviceFallback(() => switchDevice('videoinput', DEFAULT_DEVICE_ID), hasBrowserPermissionVideoInput, selectedVideoDeviceId);
|
|
131
131
|
useEffect(() => {
|
|
132
132
|
if (!call || callingState !== CallingState.JOINED)
|
|
133
133
|
return;
|
|
@@ -135,7 +135,7 @@ export const MediaDevicesProvider = ({ children, initialAudioEnabled, initialVid
|
|
|
135
135
|
}, [call, callingState, selectedAudioOutputDeviceId]);
|
|
136
136
|
useEffect(() => {
|
|
137
137
|
// audiooutput devices can be enumerated only with microphone permissions
|
|
138
|
-
if (!localParticipant$ || !
|
|
138
|
+
if (!localParticipant$ || !hasBrowserPermissionAudioInput)
|
|
139
139
|
return;
|
|
140
140
|
const subscription = watchForDisconnectedAudioOutputDevice(localParticipant$.pipe(map((p) => p === null || p === void 0 ? void 0 : p.audioOutputDeviceId))).subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
141
141
|
selectAudioOutputDeviceId(DEFAULT_DEVICE_ID);
|
|
@@ -143,7 +143,7 @@ export const MediaDevicesProvider = ({ children, initialAudioEnabled, initialVid
|
|
|
143
143
|
return () => {
|
|
144
144
|
subscription.unsubscribe();
|
|
145
145
|
};
|
|
146
|
-
}, [
|
|
146
|
+
}, [hasBrowserPermissionAudioInput, localParticipant$]);
|
|
147
147
|
const contextValue = {
|
|
148
148
|
disposeOfMediaStream,
|
|
149
149
|
getAudioStream,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaDevicesContext.js","sourceRoot":"","sources":["../../../../src/core/contexts/MediaDevicesContext.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EACL,aAAa,EAEb,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,iCAAiC,EACjC,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,SAAS,EACT,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,eAAe,EACf,YAAY,GACb,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AA0BlB,MAAM,mBAAmB,GAAoD;IAC3E,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAMrB;IACF,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5C,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;IACxD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACtD,CAAC;AAEF,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAsGpC,MAAM,mBAAmB,GAAG,aAAa,CAAgC,IAAI,CAAC,CAAC;AA6B/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GAAG,iBAAiB,EAC7C,0BAA0B,GAAG,iBAAiB,EAC9C,yBAAyB,GAAG,iBAAiB,GACA,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"MediaDevicesContext.js","sourceRoot":"","sources":["../../../../src/core/contexts/MediaDevicesContext.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EACL,aAAa,EAEb,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,iCAAiC,EACjC,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,SAAS,EACT,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,eAAe,EACf,YAAY,GACb,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AA0BlB,MAAM,mBAAmB,GAAoD;IAC3E,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAMrB;IACF,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5C,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;IACxD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;CACtD,CAAC;AAEF,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAsGpC,MAAM,mBAAmB,GAAG,aAAa,CAAgC,IAAI,CAAC,CAAC;AA6B/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GAAG,iBAAiB,EAC7C,0BAA0B,GAAG,iBAAiB,EAC9C,yBAAyB,GAAG,iBAAiB,GACA,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,8BAA8B,GAAG,wBAAwB,CAC7D,QAA0B,CAC3B,CAAC;IACF,MAAM,8BAA8B,GAAG,wBAAwB,CAC7D,YAA8B,CAC/B,CAAC;IACF,MAAM,CAAC,0BAA0B,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAErE,yBAAyB,CAAC,CAAC;IAC7B,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAEvE,0BAA0B,CAAC,CAAC;IAC9B,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAE3D,yBAAyB,CAAC,CAAC;IAE7B,MAAM,CAAC,4BAA4B,CAAC,GAAG,QAAQ,CAAU,GAAG,EAAE,CAC5D,iCAAiC,EAAE,CACpC,CAAC;IACF,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CACzD,CAAC,CAAC,mBAAmB,CACtB,CAAC;IACF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAc,GAAG,EAAE,CAC3E,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CACzE,CAAC;IAEF,MAAM,QAAQ,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,IACE,CAAC,QAAQ;YACT,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EACjE;YACA,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QAClC,IAAI,OAAO,mBAAmB,KAAK,WAAW,IAAI,KAAK,CAAC,cAAc,EAAE;YACtE,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;SAC9C;QACD,IAAI,OAAO,mBAAmB,KAAK,WAAW,IAAI,KAAK,CAAC,iBAAiB,EAAE;YACzE,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC7C;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvE,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;QAC3C,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,OAAO;QAC7C,aAAa,EAAE,qBAAqB;KACrC,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;QAC3C,iBAAiB,EAAE,CAAC,gBAAgB;QACpC,aAAa,EAAE,0BAA0B;KAC1C,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,IACE,YAAY,KAAK,YAAY,CAAC,IAAI;YAClC,YAAY,KAAK,YAAY,CAAC,OAAO,EACrC;YACA,sBAAsB,CAAC,KAAK,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9C;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEzB,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,IACE,YAAY,KAAK,YAAY,CAAC,IAAI;YAClC,YAAY,KAAK,YAAY,CAAC,OAAO,EACrC;YACA,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SAC5C;aAAM;YACL,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9C;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEzB,MAAM,2BAA2B,GAAG,WAAW,CAC7C,GAAG,EAAE,CACH,sBAAsB,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,OAAO,CAAC,IAAI,CAAC;IACf,CAAC,CAAC,EACJ,EAAE,CACH,CAAC;IACF,MAAM,2BAA2B,GAAG,WAAW,CAC7C,GAAG,EAAE,CACH,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,EACJ,EAAE,CACH,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,IAAqB,EAAE,QAAiB,EAAE,EAAE;QAC3C,IAAI,IAAI,KAAK,YAAY,EAAE;YACzB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SAC/B;QACD,IAAI,IAAI,KAAK,YAAY,EAAE;YACzB,wBAAwB,CAAC,QAAQ,CAAC,CAAC;SACpC;QACD,IAAI,IAAI,KAAK,aAAa,EAAE;YAC1B,yBAAyB,CAAC,QAAQ,CAAC,CAAC;SACrC;IACH,CAAC,EACD,EAAE,CACH,CAAC;IAEF,2BAA2B,CACzB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,EACnD,8BAA8B,EAC9B,0BAA0B,CAC3B,CAAC;IACF,4BAA4B,CAC1B,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,iBAAiB,CAAC;IACpD,yEAAyE;IACzE,8BAA8B,EAC9B,2BAA2B,CAC5B,CAAC;IACF,sBAAsB,CACpB,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,EACnD,8BAA8B,EAC9B,qBAAqB,CACtB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,YAAY,KAAK,YAAY,CAAC,MAAM;YAAE,OAAO;QAC1D,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,yEAAyE;QACzE,IAAI,CAAC,iBAAiB,IAAI,CAAC,8BAA8B;YAAE,OAAO;QAElE,MAAM,YAAY,GAAG,qCAAqC,CACxD,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,mBAAmB,CAAC,CAAC,CAC3D,CAAC,SAAS,CAAC,GAAS,EAAE;YACrB,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,8BAA8B,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExD,MAAM,YAAY,GAA2B;QAC3C,oBAAoB;QACpB,cAAc;QACd,cAAc;QACd,4BAA4B;QAC5B,0BAA0B;QAC1B,2BAA2B;QAC3B,qBAAqB;QACrB,YAAY;QACZ,mBAAmB,EAAE,gBAAgB;QACrC,iBAAiB;QACjB,sBAAsB;QACtB,oBAAoB;QACpB,2BAA2B;QAC3B,2BAA2B;QAC3B,kBAAkB;QAClB,kBAAkB;QAClB,mBAAmB;QACnB,mBAAmB;KACpB,CAAC;IAEF,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,kBAAC,KAAK,EAAE,YAAY,gBAC9C,QAAQ,IACoB,CAChC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;KAC1C;IACD,OAAO,KAA+B,CAAC;AACzC,CAAC,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
*/
|
|
4
4
|
export type AudioPublisherInit = {
|
|
5
|
-
canObserveAudio?: boolean;
|
|
6
5
|
initialAudioMuted?: boolean;
|
|
7
6
|
audioDeviceId?: string;
|
|
8
7
|
};
|
|
@@ -10,4 +9,4 @@ export type AudioPublisherInit = {
|
|
|
10
9
|
* @internal
|
|
11
10
|
* @category Device Management
|
|
12
11
|
*/
|
|
13
|
-
export declare const useAudioPublisher: ({
|
|
12
|
+
export declare const useAudioPublisher: ({ initialAudioMuted, audioDeviceId, }: AudioPublisherInit) => () => Promise<void>;
|
|
@@ -11,15 +11,17 @@ import { useCallback, useEffect, useRef } from 'react';
|
|
|
11
11
|
import { map } from 'rxjs';
|
|
12
12
|
import { CallingState, getAudioStream, OwnCapability, SfuModels, watchForAddedDefaultAudioDevice, watchForDisconnectedAudioDevice, } from '@stream-io/video-client';
|
|
13
13
|
import { useCall, useCallCallingState, useCallState, useLocalParticipant, } from '@stream-io/video-react-bindings';
|
|
14
|
+
import { useHasBrowserPermissions } from './useDevices';
|
|
14
15
|
/**
|
|
15
16
|
* @internal
|
|
16
17
|
* @category Device Management
|
|
17
18
|
*/
|
|
18
|
-
export const useAudioPublisher = ({
|
|
19
|
+
export const useAudioPublisher = ({ initialAudioMuted, audioDeviceId, }) => {
|
|
19
20
|
const call = useCall();
|
|
20
21
|
const callState = useCallState();
|
|
21
22
|
const callingState = useCallCallingState();
|
|
22
23
|
const participant = useLocalParticipant();
|
|
24
|
+
const hasBrowserPermissionAudioInput = useHasBrowserPermissions('microphone');
|
|
23
25
|
const { localParticipant$ } = callState;
|
|
24
26
|
const isPublishingAudio = participant === null || participant === void 0 ? void 0 : participant.publishedTracks.includes(SfuModels.TrackType.AUDIO);
|
|
25
27
|
const publishAudioStream = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -54,7 +56,7 @@ export const useAudioPublisher = ({ canObserveAudio, initialAudioMuted, audioDev
|
|
|
54
56
|
}
|
|
55
57
|
}, [callingState, initialAudioMuted, isPublishingAudio, publishAudioStream]);
|
|
56
58
|
useEffect(() => {
|
|
57
|
-
if (!localParticipant$ || !
|
|
59
|
+
if (!localParticipant$ || !hasBrowserPermissionAudioInput)
|
|
58
60
|
return;
|
|
59
61
|
const subscription = watchForDisconnectedAudioDevice(localParticipant$.pipe(map((p) => p === null || p === void 0 ? void 0 : p.audioDeviceId))).subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
62
|
if (!call)
|
|
@@ -65,7 +67,7 @@ export const useAudioPublisher = ({ canObserveAudio, initialAudioMuted, audioDev
|
|
|
65
67
|
return () => {
|
|
66
68
|
subscription.unsubscribe();
|
|
67
69
|
};
|
|
68
|
-
}, [
|
|
70
|
+
}, [hasBrowserPermissionAudioInput, localParticipant$, call]);
|
|
69
71
|
useEffect(() => {
|
|
70
72
|
if (!(participant === null || participant === void 0 ? void 0 : participant.audioStream) || !call || !isPublishingAudio)
|
|
71
73
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAudioPublisher.js","sourceRoot":"","sources":["../../../../src/core/hooks/useAudioPublisher.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"useAudioPublisher.js","sourceRoot":"","sources":["../../../../src/core/hooks/useAudioPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
*/
|
|
4
4
|
export type VideoPublisherInit = {
|
|
5
|
-
canObserveVideo?: boolean;
|
|
6
5
|
initialVideoMuted?: boolean;
|
|
7
6
|
videoDeviceId?: string;
|
|
8
7
|
};
|
|
@@ -10,4 +9,4 @@ export type VideoPublisherInit = {
|
|
|
10
9
|
* @internal
|
|
11
10
|
* @category Device Management
|
|
12
11
|
*/
|
|
13
|
-
export declare const useVideoPublisher: ({
|
|
12
|
+
export declare const useVideoPublisher: ({ initialVideoMuted, videoDeviceId, }: VideoPublisherInit) => () => Promise<void>;
|
|
@@ -12,15 +12,17 @@ import { map } from 'rxjs';
|
|
|
12
12
|
import { CallingState, getVideoStream, OwnCapability, SfuModels, VideoSettingsCameraFacingEnum, watchForAddedDefaultVideoDevice, watchForDisconnectedVideoDevice, } from '@stream-io/video-client';
|
|
13
13
|
import { useCall, useCallCallingState, useCallMetadata, useCallState, useLocalParticipant, } from '@stream-io/video-react-bindings';
|
|
14
14
|
import { useDebugPreferredVideoCodec } from '../../components/Debug/useIsDebugMode';
|
|
15
|
+
import { useHasBrowserPermissions } from './useDevices';
|
|
15
16
|
/**
|
|
16
17
|
* @internal
|
|
17
18
|
* @category Device Management
|
|
18
19
|
*/
|
|
19
|
-
export const useVideoPublisher = ({
|
|
20
|
+
export const useVideoPublisher = ({ initialVideoMuted, videoDeviceId, }) => {
|
|
20
21
|
const call = useCall();
|
|
21
22
|
const callState = useCallState();
|
|
22
23
|
const callingState = useCallCallingState();
|
|
23
24
|
const participant = useLocalParticipant();
|
|
25
|
+
const hasBrowserPermissionVideoInput = useHasBrowserPermissions('camera');
|
|
24
26
|
const { localParticipant$ } = callState;
|
|
25
27
|
const preferredCodec = useDebugPreferredVideoCodec();
|
|
26
28
|
const isPublishingVideo = participant === null || participant === void 0 ? void 0 : participant.publishedTracks.includes(SfuModels.TrackType.VIDEO);
|
|
@@ -69,7 +71,7 @@ export const useVideoPublisher = ({ canObserveVideo, initialVideoMuted, videoDev
|
|
|
69
71
|
}
|
|
70
72
|
}, [callingState, initialVideoMuted, isPublishingVideo, publishVideoStream]);
|
|
71
73
|
useEffect(() => {
|
|
72
|
-
if (!localParticipant$ || !
|
|
74
|
+
if (!localParticipant$ || !hasBrowserPermissionVideoInput)
|
|
73
75
|
return;
|
|
74
76
|
const subscription = watchForDisconnectedVideoDevice(localParticipant$.pipe(map((p) => p === null || p === void 0 ? void 0 : p.videoDeviceId))).subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
77
|
if (!call)
|
|
@@ -80,7 +82,7 @@ export const useVideoPublisher = ({ canObserveVideo, initialVideoMuted, videoDev
|
|
|
80
82
|
return () => {
|
|
81
83
|
subscription.unsubscribe();
|
|
82
84
|
};
|
|
83
|
-
}, [
|
|
85
|
+
}, [hasBrowserPermissionVideoInput, localParticipant$, call]);
|
|
84
86
|
useEffect(() => {
|
|
85
87
|
if (!(participant === null || participant === void 0 ? void 0 : participant.videoStream) || !call || !isPublishingVideo)
|
|
86
88
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVideoPublisher.js","sourceRoot":"","sources":["../../../../src/core/hooks/useVideoPublisher.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,EACT,6BAA6B,EAC7B,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"useVideoPublisher.js","sourceRoot":"","sources":["../../../../src/core/hooks/useVideoPublisher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"@nivo/core": "^0.80.0",
|
|
26
26
|
"@nivo/line": "^0.80.0",
|
|
27
27
|
"@stream-io/i18n": "^0.0.6",
|
|
28
|
-
"@stream-io/video-client": "^0.0.
|
|
29
|
-
"@stream-io/video-react-bindings": "^0.0.
|
|
28
|
+
"@stream-io/video-client": "^0.0.25",
|
|
29
|
+
"@stream-io/video-react-bindings": "^0.0.26",
|
|
30
30
|
"clsx": "^1.2.1",
|
|
31
31
|
"rxjs": "~7.8.1"
|
|
32
32
|
},
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"rimraf": "^3.0.2",
|
|
46
46
|
"typescript": "^4.9.5"
|
|
47
47
|
},
|
|
48
|
-
"version": "0.0.
|
|
48
|
+
"version": "0.0.50"
|
|
49
49
|
}
|
|
@@ -244,8 +244,10 @@ export const MediaDevicesProvider = ({
|
|
|
244
244
|
const callState = useCallState();
|
|
245
245
|
const metadata = useCallMetadata();
|
|
246
246
|
const { localParticipant$ } = callState;
|
|
247
|
-
const
|
|
248
|
-
|
|
247
|
+
const hasBrowserPermissionVideoInput = useHasBrowserPermissions(
|
|
248
|
+
'camera' as PermissionName,
|
|
249
|
+
);
|
|
250
|
+
const hasBrowserPermissionAudioInput = useHasBrowserPermissions(
|
|
249
251
|
'microphone' as PermissionName,
|
|
250
252
|
);
|
|
251
253
|
const [selectedAudioInputDeviceId, selectAudioInputDeviceId] = useState<
|
|
@@ -349,18 +351,18 @@ export const MediaDevicesProvider = ({
|
|
|
349
351
|
|
|
350
352
|
useAudioInputDeviceFallback(
|
|
351
353
|
() => switchDevice('audioinput', DEFAULT_DEVICE_ID),
|
|
352
|
-
|
|
354
|
+
hasBrowserPermissionAudioInput,
|
|
353
355
|
selectedAudioInputDeviceId,
|
|
354
356
|
);
|
|
355
357
|
useAudioOutputDeviceFallback(
|
|
356
358
|
() => switchDevice('audiooutput', DEFAULT_DEVICE_ID),
|
|
357
359
|
// audiooutput devices can be enumerated only with microphone permissions
|
|
358
|
-
|
|
360
|
+
hasBrowserPermissionAudioInput,
|
|
359
361
|
selectedAudioOutputDeviceId,
|
|
360
362
|
);
|
|
361
363
|
useVideoDeviceFallback(
|
|
362
364
|
() => switchDevice('videoinput', DEFAULT_DEVICE_ID),
|
|
363
|
-
|
|
365
|
+
hasBrowserPermissionVideoInput,
|
|
364
366
|
selectedVideoDeviceId,
|
|
365
367
|
);
|
|
366
368
|
|
|
@@ -371,7 +373,7 @@ export const MediaDevicesProvider = ({
|
|
|
371
373
|
|
|
372
374
|
useEffect(() => {
|
|
373
375
|
// audiooutput devices can be enumerated only with microphone permissions
|
|
374
|
-
if (!localParticipant$ || !
|
|
376
|
+
if (!localParticipant$ || !hasBrowserPermissionAudioInput) return;
|
|
375
377
|
|
|
376
378
|
const subscription = watchForDisconnectedAudioOutputDevice(
|
|
377
379
|
localParticipant$.pipe(map((p) => p?.audioOutputDeviceId)),
|
|
@@ -381,7 +383,7 @@ export const MediaDevicesProvider = ({
|
|
|
381
383
|
return () => {
|
|
382
384
|
subscription.unsubscribe();
|
|
383
385
|
};
|
|
384
|
-
}, [
|
|
386
|
+
}, [hasBrowserPermissionAudioInput, localParticipant$]);
|
|
385
387
|
|
|
386
388
|
const contextValue: MediaDevicesContextAPI = {
|
|
387
389
|
disposeOfMediaStream,
|
|
@@ -14,12 +14,12 @@ import {
|
|
|
14
14
|
useCallState,
|
|
15
15
|
useLocalParticipant,
|
|
16
16
|
} from '@stream-io/video-react-bindings';
|
|
17
|
+
import { useHasBrowserPermissions } from './useDevices';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* @internal
|
|
20
21
|
*/
|
|
21
22
|
export type AudioPublisherInit = {
|
|
22
|
-
canObserveAudio?: boolean;
|
|
23
23
|
initialAudioMuted?: boolean;
|
|
24
24
|
audioDeviceId?: string;
|
|
25
25
|
};
|
|
@@ -29,7 +29,6 @@ export type AudioPublisherInit = {
|
|
|
29
29
|
* @category Device Management
|
|
30
30
|
*/
|
|
31
31
|
export const useAudioPublisher = ({
|
|
32
|
-
canObserveAudio,
|
|
33
32
|
initialAudioMuted,
|
|
34
33
|
audioDeviceId,
|
|
35
34
|
}: AudioPublisherInit) => {
|
|
@@ -37,6 +36,9 @@ export const useAudioPublisher = ({
|
|
|
37
36
|
const callState = useCallState();
|
|
38
37
|
const callingState = useCallCallingState();
|
|
39
38
|
const participant = useLocalParticipant();
|
|
39
|
+
const hasBrowserPermissionAudioInput = useHasBrowserPermissions(
|
|
40
|
+
'microphone' as PermissionName,
|
|
41
|
+
);
|
|
40
42
|
const { localParticipant$ } = callState;
|
|
41
43
|
|
|
42
44
|
const isPublishingAudio = participant?.publishedTracks.includes(
|
|
@@ -77,7 +79,7 @@ export const useAudioPublisher = ({
|
|
|
77
79
|
}, [callingState, initialAudioMuted, isPublishingAudio, publishAudioStream]);
|
|
78
80
|
|
|
79
81
|
useEffect(() => {
|
|
80
|
-
if (!localParticipant$ || !
|
|
82
|
+
if (!localParticipant$ || !hasBrowserPermissionAudioInput) return;
|
|
81
83
|
const subscription = watchForDisconnectedAudioDevice(
|
|
82
84
|
localParticipant$.pipe(map((p) => p?.audioDeviceId)),
|
|
83
85
|
).subscribe(async () => {
|
|
@@ -88,7 +90,7 @@ export const useAudioPublisher = ({
|
|
|
88
90
|
return () => {
|
|
89
91
|
subscription.unsubscribe();
|
|
90
92
|
};
|
|
91
|
-
}, [
|
|
93
|
+
}, [hasBrowserPermissionAudioInput, localParticipant$, call]);
|
|
92
94
|
|
|
93
95
|
useEffect(() => {
|
|
94
96
|
if (!participant?.audioStream || !call || !isPublishingAudio) return;
|
|
@@ -17,12 +17,12 @@ import {
|
|
|
17
17
|
useLocalParticipant,
|
|
18
18
|
} from '@stream-io/video-react-bindings';
|
|
19
19
|
import { useDebugPreferredVideoCodec } from '../../components/Debug/useIsDebugMode';
|
|
20
|
+
import { useHasBrowserPermissions } from './useDevices';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* @internal
|
|
23
24
|
*/
|
|
24
25
|
export type VideoPublisherInit = {
|
|
25
|
-
canObserveVideo?: boolean;
|
|
26
26
|
initialVideoMuted?: boolean;
|
|
27
27
|
videoDeviceId?: string;
|
|
28
28
|
};
|
|
@@ -32,7 +32,6 @@ export type VideoPublisherInit = {
|
|
|
32
32
|
* @category Device Management
|
|
33
33
|
*/
|
|
34
34
|
export const useVideoPublisher = ({
|
|
35
|
-
canObserveVideo,
|
|
36
35
|
initialVideoMuted,
|
|
37
36
|
videoDeviceId,
|
|
38
37
|
}: VideoPublisherInit) => {
|
|
@@ -40,6 +39,9 @@ export const useVideoPublisher = ({
|
|
|
40
39
|
const callState = useCallState();
|
|
41
40
|
const callingState = useCallCallingState();
|
|
42
41
|
const participant = useLocalParticipant();
|
|
42
|
+
const hasBrowserPermissionVideoInput = useHasBrowserPermissions(
|
|
43
|
+
'camera' as PermissionName,
|
|
44
|
+
);
|
|
43
45
|
const { localParticipant$ } = callState;
|
|
44
46
|
|
|
45
47
|
const preferredCodec = useDebugPreferredVideoCodec();
|
|
@@ -94,7 +96,7 @@ export const useVideoPublisher = ({
|
|
|
94
96
|
}, [callingState, initialVideoMuted, isPublishingVideo, publishVideoStream]);
|
|
95
97
|
|
|
96
98
|
useEffect(() => {
|
|
97
|
-
if (!localParticipant$ || !
|
|
99
|
+
if (!localParticipant$ || !hasBrowserPermissionVideoInput) return;
|
|
98
100
|
const subscription = watchForDisconnectedVideoDevice(
|
|
99
101
|
localParticipant$.pipe(map((p) => p?.videoDeviceId)),
|
|
100
102
|
).subscribe(async () => {
|
|
@@ -105,7 +107,7 @@ export const useVideoPublisher = ({
|
|
|
105
107
|
return () => {
|
|
106
108
|
subscription.unsubscribe();
|
|
107
109
|
};
|
|
108
|
-
}, [
|
|
110
|
+
}, [hasBrowserPermissionVideoInput, localParticipant$, call]);
|
|
109
111
|
|
|
110
112
|
useEffect(() => {
|
|
111
113
|
if (!participant?.videoStream || !call || !isPublishingVideo) return;
|