@stream-io/video-react-native-sdk 0.0.1-alpha.149 → 0.0.1-alpha.151
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 +13 -0
- package/dist/src/hooks/useCallControls.js +18 -13
- package/dist/src/hooks/useCallControls.js.map +1 -1
- package/dist/src/hooks/usePublishMediaStreams.js +10 -8
- package/dist/src/hooks/usePublishMediaStreams.js.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useCallControls.tsx +24 -13
- package/src/hooks/usePublishMediaStreams.ts +11 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [0.0.1-alpha.151](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.150...@stream-io/video-react-native-sdk-0.0.1-alpha.151) (2023-06-12)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [0.0.1-alpha.150](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.149...@stream-io/video-react-native-sdk-0.0.1-alpha.150) (2023-06-12)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **react-native:** incorrect way of sending device Id to get streams ([#623](https://github.com/GetStream/stream-video-js/issues/623)) ([edffcd4](https://github.com/GetStream/stream-video-js/commit/edffcd4fed35fc8aeb877d9b28c010505ca23386))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
5
18
|
## [0.0.1-alpha.149](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.148...@stream-io/video-react-native-sdk-0.0.1-alpha.149) (2023-06-12)
|
|
6
19
|
|
|
7
20
|
|
|
@@ -28,34 +28,38 @@ const useCallControls = () => {
|
|
|
28
28
|
const currentAudioDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentAudioDevice);
|
|
29
29
|
const videoDevices = (0, contexts_1.useStreamVideoStoreValue)((store) => store.videoDevices);
|
|
30
30
|
const currentVideoDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentVideoDevice);
|
|
31
|
+
const audioDeviceId = currentAudioDevice?.deviceId;
|
|
32
|
+
const videoDeviceId = currentVideoDevice?.deviceId;
|
|
31
33
|
const publishAudioStream = (0, react_1.useCallback)(async () => {
|
|
32
34
|
try {
|
|
33
35
|
// Client picks up the default audio stream.
|
|
34
36
|
// For mobile devices there will always be one audio input
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
if (call) {
|
|
38
|
-
await call.publishAudioStream(audioStream);
|
|
39
|
-
}
|
|
37
|
+
if (!call || !audioDeviceId || !isOnlineRef.current) {
|
|
38
|
+
return;
|
|
40
39
|
}
|
|
40
|
+
const audioStream = await (0, video_client_1.getAudioStream)({
|
|
41
|
+
deviceId: audioDeviceId,
|
|
42
|
+
});
|
|
43
|
+
await call.publishAudioStream(audioStream);
|
|
41
44
|
}
|
|
42
45
|
catch (e) {
|
|
43
46
|
console.log('Failed to publish audio stream', e);
|
|
44
47
|
}
|
|
45
|
-
}, [
|
|
48
|
+
}, [audioDeviceId, call]);
|
|
46
49
|
const publishVideoStream = (0, react_1.useCallback)(async () => {
|
|
47
50
|
try {
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
if (call) {
|
|
51
|
-
await call.publishVideoStream(videoStream);
|
|
52
|
-
}
|
|
51
|
+
if (!call || !videoDeviceId || !isOnlineRef.current) {
|
|
52
|
+
return;
|
|
53
53
|
}
|
|
54
|
+
const videoStream = await (0, video_client_1.getVideoStream)({
|
|
55
|
+
deviceId: videoDeviceId,
|
|
56
|
+
});
|
|
57
|
+
await call.publishVideoStream(videoStream);
|
|
54
58
|
}
|
|
55
59
|
catch (e) {
|
|
56
60
|
console.log('Failed to publish video stream', e);
|
|
57
61
|
}
|
|
58
|
-
}, [call,
|
|
62
|
+
}, [call, videoDeviceId]);
|
|
59
63
|
const isAudioPublished = localParticipant?.publishedTracks.includes(video_client_1.SfuModels.TrackType.AUDIO);
|
|
60
64
|
const isVideoPublished = localParticipant?.publishedTracks.includes(video_client_1.SfuModels.TrackType.VIDEO);
|
|
61
65
|
/** Refs to keep track of whether the user has published the track before going offline */
|
|
@@ -78,8 +82,9 @@ const useCallControls = () => {
|
|
|
78
82
|
const { isConnected, isInternetReachable } = state;
|
|
79
83
|
const isOnline = isConnected !== false && isInternetReachable !== false;
|
|
80
84
|
isOnlineRef.current = isOnline;
|
|
81
|
-
if (!callRef.current)
|
|
85
|
+
if (!callRef.current) {
|
|
82
86
|
return;
|
|
87
|
+
}
|
|
83
88
|
const callToJoin = callRef.current;
|
|
84
89
|
await rejoinCall(callToJoin, isOnline, isAudioPublishedRef.current, isVideoPublishedRef.current, publishAudioStreamRef.current, publishVideoStreamRef.current);
|
|
85
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCallControls.js","sourceRoot":"","sources":["../../../src/hooks/useCallControls.tsx"],"names":[],"mappings":";;;;;;AAAA,0DAMiC;AACjC,0EAA+E;AAC/E,iCAAuD;AACvD,0CAGqB;AACrB,4EAAyE;AACzE,8EAAsD;AAEtD;;;;;GAKG;AACI,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,gBAAgB,GAAG,IAAA,0CAAmB,GAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAA,8BAAO,GAAE,CAAC;IACvB,mFAAmF;IACnF,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,WAAW,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAA,sCAA2B,GAAE,CAAC;IAC/C,MAAM,yBAAyB,GAAG,IAAA,mCAAwB,EACxD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAC3C,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,mCAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,mCAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,IAAA,mCAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAChD,IAAI;YACF,4CAA4C;YAC5C,0DAA0D;YAC1D,IAAI,
|
|
1
|
+
{"version":3,"file":"useCallControls.js","sourceRoot":"","sources":["../../../src/hooks/useCallControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,26 +16,28 @@ const usePublishMediaStreams = () => {
|
|
|
16
16
|
const currentVideoDevice = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.currentVideoDevice);
|
|
17
17
|
const isVideoMuted = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.isVideoMuted);
|
|
18
18
|
const isAudioMuted = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.isAudioMuted);
|
|
19
|
+
const audioDeviceId = currentAudioDevice?.deviceId;
|
|
20
|
+
const videoDeviceId = currentVideoDevice?.deviceId;
|
|
19
21
|
(0, react_1.useEffect)(() => {
|
|
20
22
|
if (!activeCall?.permissionsContext.hasPermission(video_client_1.OwnCapability.SEND_AUDIO)) {
|
|
21
|
-
console.log(
|
|
23
|
+
console.log('No permission to publish audio');
|
|
22
24
|
return;
|
|
23
25
|
}
|
|
24
|
-
if (
|
|
25
|
-
(0, video_client_1.getAudioStream)(
|
|
26
|
+
if (audioDeviceId && !isAudioMuted) {
|
|
27
|
+
(0, video_client_1.getAudioStream)({ deviceId: audioDeviceId })
|
|
26
28
|
.then((stream) => activeCall?.publishAudioStream(stream))
|
|
27
29
|
.catch((error) => {
|
|
28
30
|
console.log(error);
|
|
29
31
|
});
|
|
30
32
|
}
|
|
31
|
-
}, [activeCall,
|
|
33
|
+
}, [activeCall, audioDeviceId, isAudioMuted]);
|
|
32
34
|
(0, react_1.useEffect)(() => {
|
|
33
35
|
if (!activeCall?.permissionsContext.hasPermission(video_client_1.OwnCapability.SEND_VIDEO)) {
|
|
34
|
-
console.log(
|
|
36
|
+
console.log('No permission to publish video');
|
|
35
37
|
return;
|
|
36
38
|
}
|
|
37
|
-
if (
|
|
38
|
-
(0, video_client_1.getVideoStream)(
|
|
39
|
+
if (videoDeviceId && !isVideoMuted) {
|
|
40
|
+
(0, video_client_1.getVideoStream)({ deviceId: videoDeviceId })
|
|
39
41
|
.then((stream) => {
|
|
40
42
|
activeCall?.publishVideoStream(stream);
|
|
41
43
|
})
|
|
@@ -43,7 +45,7 @@ const usePublishMediaStreams = () => {
|
|
|
43
45
|
console.log(error);
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
|
-
}, [activeCall,
|
|
48
|
+
}, [activeCall, videoDeviceId, isVideoMuted]);
|
|
47
49
|
};
|
|
48
50
|
exports.usePublishMediaStreams = usePublishMediaStreams;
|
|
49
51
|
//# sourceMappingURL=usePublishMediaStreams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePublishMediaStreams.js","sourceRoot":"","sources":["../../../src/hooks/usePublishMediaStreams.ts"],"names":[],"mappings":";;;AAAA,0EAA0D;AAC1D,uEAA0E;AAC1E,0DAIiC;AACjC,iCAAkC;AAElC;;;;GAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,UAAU,GAAG,IAAA,8BAAO,GAAE,CAAC;IAC7B,MAAM,kBAAkB,GAAG,IAAA,6CAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,6CAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE7E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IACE,CAAC,UAAU,EAAE,kBAAkB,CAAC,aAAa,CAAC,4BAAa,CAAC,UAAU,CAAC,EACvE;YACA,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO;SACR;QACD,IAAI,
|
|
1
|
+
{"version":3,"file":"usePublishMediaStreams.js","sourceRoot":"","sources":["../../../src/hooks/usePublishMediaStreams.ts"],"names":[],"mappings":";;;AAAA,0EAA0D;AAC1D,uEAA0E;AAC1E,0DAIiC;AACjC,iCAAkC;AAElC;;;;GAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,UAAU,GAAG,IAAA,8BAAO,GAAE,CAAC;IAC7B,MAAM,kBAAkB,GAAG,IAAA,6CAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,6CAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE7E,MAAM,aAAa,GAAG,kBAAkB,EAAE,QAAQ,CAAC;IACnD,MAAM,aAAa,GAAG,kBAAkB,EAAE,QAAQ,CAAC;IAEnD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IACE,CAAC,UAAU,EAAE,kBAAkB,CAAC,aAAa,CAAC,4BAAa,CAAC,UAAU,CAAC,EACvE;YACA,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO;SACR;QACD,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE;YAClC,IAAA,6BAAc,EAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;iBACxC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;iBACxD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IACE,CAAC,UAAU,EAAE,kBAAkB,CAAC,aAAa,CAAC,4BAAa,CAAC,UAAU,CAAC,EACvE;YACA,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO;SACR;QACD,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE;YAClC,IAAA,6BAAc,EAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;iBACxC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AA/CW,QAAA,sBAAsB,0BA+CjC"}
|
package/package.json
CHANGED
|
@@ -40,33 +40,42 @@ export const useCallControls = () => {
|
|
|
40
40
|
(store) => store.currentVideoDevice,
|
|
41
41
|
);
|
|
42
42
|
|
|
43
|
+
const audioDeviceId = currentAudioDevice?.deviceId;
|
|
44
|
+
const videoDeviceId = currentVideoDevice?.deviceId;
|
|
45
|
+
|
|
43
46
|
const publishAudioStream = useCallback(async () => {
|
|
44
47
|
try {
|
|
45
48
|
// Client picks up the default audio stream.
|
|
46
49
|
// For mobile devices there will always be one audio input
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
if (call) {
|
|
50
|
-
await call.publishAudioStream(audioStream);
|
|
51
|
-
}
|
|
50
|
+
if (!call || !audioDeviceId || !isOnlineRef.current) {
|
|
51
|
+
return;
|
|
52
52
|
}
|
|
53
|
+
|
|
54
|
+
const audioStream = await getAudioStream({
|
|
55
|
+
deviceId: audioDeviceId,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
await call.publishAudioStream(audioStream);
|
|
53
59
|
} catch (e) {
|
|
54
60
|
console.log('Failed to publish audio stream', e);
|
|
55
61
|
}
|
|
56
|
-
}, [
|
|
62
|
+
}, [audioDeviceId, call]);
|
|
57
63
|
|
|
58
64
|
const publishVideoStream = useCallback(async () => {
|
|
59
65
|
try {
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
if (call) {
|
|
63
|
-
await call.publishVideoStream(videoStream);
|
|
64
|
-
}
|
|
66
|
+
if (!call || !videoDeviceId || !isOnlineRef.current) {
|
|
67
|
+
return;
|
|
65
68
|
}
|
|
69
|
+
|
|
70
|
+
const videoStream = await getVideoStream({
|
|
71
|
+
deviceId: videoDeviceId,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
await call.publishVideoStream(videoStream);
|
|
66
75
|
} catch (e) {
|
|
67
76
|
console.log('Failed to publish video stream', e);
|
|
68
77
|
}
|
|
69
|
-
}, [call,
|
|
78
|
+
}, [call, videoDeviceId]);
|
|
70
79
|
|
|
71
80
|
const isAudioPublished = localParticipant?.publishedTracks.includes(
|
|
72
81
|
SfuModels.TrackType.AUDIO,
|
|
@@ -99,7 +108,9 @@ export const useCallControls = () => {
|
|
|
99
108
|
const { isConnected, isInternetReachable } = state;
|
|
100
109
|
const isOnline = isConnected !== false && isInternetReachable !== false;
|
|
101
110
|
isOnlineRef.current = isOnline;
|
|
102
|
-
if (!callRef.current)
|
|
111
|
+
if (!callRef.current) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
103
114
|
const callToJoin = callRef.current;
|
|
104
115
|
await rejoinCall(
|
|
105
116
|
callToJoin,
|
|
@@ -23,31 +23,34 @@ export const usePublishMediaStreams = () => {
|
|
|
23
23
|
const isVideoMuted = useStreamVideoStoreValue((store) => store.isVideoMuted);
|
|
24
24
|
const isAudioMuted = useStreamVideoStoreValue((store) => store.isAudioMuted);
|
|
25
25
|
|
|
26
|
+
const audioDeviceId = currentAudioDevice?.deviceId;
|
|
27
|
+
const videoDeviceId = currentVideoDevice?.deviceId;
|
|
28
|
+
|
|
26
29
|
useEffect(() => {
|
|
27
30
|
if (
|
|
28
31
|
!activeCall?.permissionsContext.hasPermission(OwnCapability.SEND_AUDIO)
|
|
29
32
|
) {
|
|
30
|
-
console.log(
|
|
33
|
+
console.log('No permission to publish audio');
|
|
31
34
|
return;
|
|
32
35
|
}
|
|
33
|
-
if (
|
|
34
|
-
getAudioStream(
|
|
36
|
+
if (audioDeviceId && !isAudioMuted) {
|
|
37
|
+
getAudioStream({ deviceId: audioDeviceId })
|
|
35
38
|
.then((stream) => activeCall?.publishAudioStream(stream))
|
|
36
39
|
.catch((error) => {
|
|
37
40
|
console.log(error);
|
|
38
41
|
});
|
|
39
42
|
}
|
|
40
|
-
}, [activeCall,
|
|
43
|
+
}, [activeCall, audioDeviceId, isAudioMuted]);
|
|
41
44
|
|
|
42
45
|
useEffect(() => {
|
|
43
46
|
if (
|
|
44
47
|
!activeCall?.permissionsContext.hasPermission(OwnCapability.SEND_VIDEO)
|
|
45
48
|
) {
|
|
46
|
-
console.log(
|
|
49
|
+
console.log('No permission to publish video');
|
|
47
50
|
return;
|
|
48
51
|
}
|
|
49
|
-
if (
|
|
50
|
-
getVideoStream(
|
|
52
|
+
if (videoDeviceId && !isVideoMuted) {
|
|
53
|
+
getVideoStream({ deviceId: videoDeviceId })
|
|
51
54
|
.then((stream) => {
|
|
52
55
|
activeCall?.publishVideoStream(stream);
|
|
53
56
|
})
|
|
@@ -55,5 +58,5 @@ export const usePublishMediaStreams = () => {
|
|
|
55
58
|
console.log(error);
|
|
56
59
|
});
|
|
57
60
|
}
|
|
58
|
-
}, [activeCall,
|
|
61
|
+
}, [activeCall, videoDeviceId, isVideoMuted]);
|
|
59
62
|
};
|