1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-12-02 17:02:31 +03:00

Make localScreenSharingStream into a getter

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
Šimon Brandner
2021-08-02 21:25:55 +02:00
parent 8b0c4a0efb
commit bc07ad5909

View File

@@ -278,8 +278,6 @@ export class MatrixCall extends EventEmitter {
private sentEndOfCandidates: boolean; private sentEndOfCandidates: boolean;
private peerConn: RTCPeerConnection; private peerConn: RTCPeerConnection;
private feeds: Array<CallFeed>; private feeds: Array<CallFeed>;
private localScreenSharingStream: MediaStream;
// TODO: Rename to usermedia rather than AV for consistency
private localUsermediaStream: MediaStream; private localUsermediaStream: MediaStream;
private usermediaSenders: Array<RTCRtpSender>; private usermediaSenders: Array<RTCRtpSender>;
private screensharingSenders: Array<RTCRtpSender>; private screensharingSenders: Array<RTCRtpSender>;
@@ -402,6 +400,14 @@ export class MatrixCall extends EventEmitter {
return this.getLocalFeeds().find((feed) => feed.purpose === SDPStreamMetadataPurpose.Usermedia); return this.getLocalFeeds().find((feed) => feed.purpose === SDPStreamMetadataPurpose.Usermedia);
} }
public get localScreenSharingFeed(): CallFeed {
return this.getLocalFeeds().find((feed) => feed.purpose === SDPStreamMetadataPurpose.Screenshare);
}
private get localScreenSharingStream(): MediaStream {
return this.localScreenSharingFeed?.stream;
}
private getFeedByStreamId(streamId: string): CallFeed { private getFeedByStreamId(streamId: string): CallFeed {
return this.getFeeds().find((feed) => feed.stream.id === streamId); return this.getFeeds().find((feed) => feed.stream.id === streamId);
} }
@@ -818,9 +824,9 @@ export class MatrixCall extends EventEmitter {
logger.debug(`Set screensharing enabled? ${enabled}`); logger.debug(`Set screensharing enabled? ${enabled}`);
if (enabled) { if (enabled) {
try { try {
this.localScreenSharingStream = await getScreensharingStream(selectDesktopCapturerSource); const stream = await getScreensharingStream(selectDesktopCapturerSource);
if (!this.localScreenSharingStream) return false; if (!stream) return false;
this.pushLocalFeed(this.localScreenSharingStream, SDPStreamMetadataPurpose.Screenshare); this.pushLocalFeed(stream, SDPStreamMetadataPurpose.Screenshare);
return true; return true;
} catch (err) { } catch (err) {
this.emit(CallEvent.Error, this.emit(CallEvent.Error,
@@ -836,7 +842,6 @@ export class MatrixCall extends EventEmitter {
for (const track of this.localScreenSharingStream.getTracks()) { for (const track of this.localScreenSharingStream.getTracks()) {
track.stop(); track.stop();
} }
this.localScreenSharingStream = null;
return false; return false;
} }
} }
@@ -855,10 +860,10 @@ export class MatrixCall extends EventEmitter {
logger.debug(`Set screensharing enabled? ${enabled} using replaceTrack()`); logger.debug(`Set screensharing enabled? ${enabled} using replaceTrack()`);
if (enabled) { if (enabled) {
try { try {
this.localScreenSharingStream = await getScreensharingStream(selectDesktopCapturerSource); const stream = await getScreensharingStream(selectDesktopCapturerSource);
if (!this.localScreenSharingStream) return false; if (!stream) return false;
const track = this.localScreenSharingStream.getTracks().find((track) => { const track = stream.getTracks().find((track) => {
return track.kind === "video"; return track.kind === "video";
}); });
const sender = this.usermediaSenders.find((sender) => { const sender = this.usermediaSenders.find((sender) => {
@@ -866,7 +871,7 @@ export class MatrixCall extends EventEmitter {
}); });
sender.replaceTrack(track); sender.replaceTrack(track);
this.pushLocalFeed(this.localScreenSharingStream, SDPStreamMetadataPurpose.Screenshare, false); this.pushLocalFeed(stream, SDPStreamMetadataPurpose.Screenshare, false);
return true; return true;
} catch (err) { } catch (err) {
@@ -888,7 +893,6 @@ export class MatrixCall extends EventEmitter {
for (const track of this.localScreenSharingStream.getTracks()) { for (const track of this.localScreenSharingStream.getTracks()) {
track.stop(); track.stop();
} }
this.localScreenSharingStream = null;
return false; return false;
} }