diff --git a/.gitignore b/.gitignore index 7fcbb2d..4525481 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ node_modules/ config.js coverage/ config/local.json +lib/ +tsconfig.tsbuildinfo diff --git a/src/client/components/Video.tsx b/src/client/components/Video.tsx index 5ae2d2b..992e48b 100644 --- a/src/client/components/Video.tsx +++ b/src/client/components/Video.tsx @@ -37,11 +37,14 @@ export default class Video extends React.PureComponent { const video = this.videoRef.current! const mediaStream = stream && stream.stream || null const url = stream && stream.url + console.log('stream', stream) if ('srcObject' in video as unknown) { if (video.srcObject !== mediaStream) { + console.log('setting srcObject') video.srcObject = mediaStream } } else if (video.src !== url) { + console.log('setting src') video.src = url || '' } videos[socket.id] = video diff --git a/src/client/containers/App.test.tsx b/src/client/containers/App.test.tsx index c0d724d..e43b706 100644 --- a/src/client/containers/App.test.tsx +++ b/src/client/containers/App.test.tsx @@ -70,7 +70,8 @@ describe('App', () => { beforeEach(async () => { state.streams = { test: { - mediaStream: new MediaStream(), + userId: 'test', + stream: new MediaStream(), url: 'blob://', }, } diff --git a/src/client/reducers/streams.ts b/src/client/reducers/streams.ts index f7e0199..e48a670 100644 --- a/src/client/reducers/streams.ts +++ b/src/client/reducers/streams.ts @@ -12,7 +12,7 @@ function safeCreateObjectURL (stream: MediaStream) { return createObjectURL(stream) } catch (err) { debug('Error using createObjectURL: %s', err) - return null + return undefined } } @@ -20,18 +20,26 @@ export interface StreamsState { [userId: string]: AddStreamPayload } -function addStream (state: StreamsState, action: AddStreamAction) { +function addStream ( + state: StreamsState, action: AddStreamAction, +): StreamsState { const { userId, stream } = action.payload - return Object.freeze({ + + const userStream: AddStreamPayload = { + userId, + stream, + url: safeCreateObjectURL(stream), + } + + return { ...state, - [userId]: { - mediaStream: stream, - url: safeCreateObjectURL(stream), - }, - }) + [userId]: userStream, + } } -function removeStream (state: StreamsState, action: RemoveStreamAction) { +function removeStream ( + state: StreamsState, action: RemoveStreamAction, +): StreamsState { const { userId } = action.payload const stream = state[userId] if (stream && stream.url) { @@ -40,7 +48,10 @@ function removeStream (state: StreamsState, action: RemoveStreamAction) { return omit(state, [userId]) } -export default function streams (state = defaultState, action: StreamAction) { +export default function streams( + state = defaultState, + action: StreamAction, +): StreamsState { switch (action.type) { case STREAM_ADD: return addStream(state, action)