Skip to content

Commit

Permalink
fix: remote stream is not added and stored in SDK when name is empty (#…
Browse files Browse the repository at this point in the history
…108)

Ensure whether the name is specified or the name is empty or undefined, the remote stream should always be added and be stored in the SDK.
  • Loading branch information
faiq-naufal authored Apr 6, 2024
1 parent 1fbb43f commit b4557fb
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 24 deletions.
13 changes: 8 additions & 5 deletions packages/room/channel/channel.js
Original file line number Diff line number Diff line change
Expand Up @@ -300,23 +300,26 @@ export const createChannel = ({ api, event, peer, streams }) => {

if (draftStream) {
const newStream = {
...draftStream,
clientId: stream.clientId,
name: stream.name,
source: stream.source,
origin: stream.origin,
mediaStream: draftStream.mediaStream,
}

this._event.emit(
InternalPeerEvents.REMOTE_STREAM_READY_TO_ADD,
newStream
)
if (this._streams.validateStream(newStream)) {
this._event.emit(
InternalPeerEvents.REMOTE_STREAM_READY_TO_ADD,
newStream
)
}
} else {
this._streams.addDraft(stream.streamId, {
clientId: stream.clientId,
name: stream.name,
source: stream.source,
origin: stream.origin,
mediaStream: undefined,
})
}
}
Expand Down
20 changes: 16 additions & 4 deletions packages/room/peer/peer.js
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,7 @@ export const createPeer = ({ api, createStream, event, streams, config }) => {
InternalPeerEvents.REMOTE_STREAM_READY_TO_ADD,
/** @param {import('../stream/stream-types.js').RoomStreamType.AddStreamParameters} stream */
(stream) => {
const isValidStream = this._streams.validateStream(stream)
if (!isValidStream || this.hasStream(stream.mediaStream.id)) return
if (this.hasStream(stream.mediaStream.id)) return

stream.mediaStream.addEventListener('removetrack', (event) => {
const target = event.target
Expand Down Expand Up @@ -773,13 +772,26 @@ export const createPeer = ({ api, createStream, event, streams, config }) => {
*/
_onTrack = async (event) => {
const mediaStream = event.streams.find((stream) => stream.active === true)
if (!(mediaStream instanceof MediaStream)) return
const draftStream = this._streams.getDraft(mediaStream.id)

if (draftStream) {
const stream = { ...draftStream, mediaStream }
this._event.emit(InternalPeerEvents.REMOTE_STREAM_READY_TO_ADD, stream)

if (this._streams.validateStream(stream)) {
this._event.emit(
InternalPeerEvents.REMOTE_STREAM_READY_TO_ADD,
stream
)
}
} else {
this._streams.addDraft(mediaStream.id, { mediaStream })
this._streams.addDraft(mediaStream.id, {
clientId: '',
name: '',
origin: 'remote',
source: '',
mediaStream: mediaStream,
})
}
}

Expand Down
10 changes: 5 additions & 5 deletions packages/room/stream/stream-types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ export declare namespace RoomStreamType {
id: string
clientId: string
name: string
origin: 'local' | 'remote'
source: 'media' | 'screen'
origin: 'local' | 'remote' | string
source: 'media' | 'screen' | string
mediaStream: MediaStream
}

Expand All @@ -26,8 +26,8 @@ export declare namespace RoomStreamType {
export type DraftStream = {
clientId?: string
name?: string
origin?: 'local' | 'remote'
source?: 'media' | 'screen'
mediaStream?: MediaStream
origin?: 'local' | 'remote' | string
source?: 'media' | 'screen' | string
mediaStream?: MediaStream | undefined
}
}
32 changes: 22 additions & 10 deletions packages/room/stream/streams.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,10 @@ export const createStreams = () => {
const draft = this._drafts.get(key) || {}

this._drafts.set(key, {
clientId: value.clientId || draft.clientId || undefined,
name: value.name || draft.name || undefined,
origin: value.origin || draft.origin || undefined,
source: value.source || draft.source || undefined,
clientId: value.clientId || draft.clientId || '',
name: value.name || draft.name || '',
origin: value.origin || draft.origin || '',
source: value.source || draft.source || '',
mediaStream: value.mediaStream || draft.mediaStream || undefined,
})
}
Expand Down Expand Up @@ -141,21 +141,33 @@ export const createStreams = () => {

/**
* Validate the streams data
* @param {import('./stream-types.js').RoomStreamType.AddStreamParameters} data
* @param {import('./stream-types.js').RoomStreamType.DraftStream} data
* @returns {boolean}
*/
validateStream = (data) => {
if (!data || !(data.mediaStream instanceof MediaStream)) {
return false
}

if (
!data ||
!(data.mediaStream instanceof MediaStream) ||
typeof data.origin !== 'string' ||
typeof data.source !== 'string' ||
typeof data.clientId !== 'string' ||
typeof data.name !== 'string'
data.clientId.trim().length === 0
) {
return false
}

if (typeof data.name !== 'string') {
return false
}

if (typeof data.origin !== 'string' || data.origin.trim().length === 0) {
return false
}

if (typeof data.source !== 'string' || data.source.trim().length === 0) {
return false
}

return true
}
}
Expand Down

0 comments on commit b4557fb

Please sign in to comment.