peer-calls/src/client/store/streamStore.js

49 lines
1.0 KiB
JavaScript

'use strict'
const EventEmitter = require('events')
const createObjectURL = require('../browser/createObjectURL')
const debug = require('debug')('peer-calls:streamStore')
const dispatcher = require('../dispatcher/dispatcher.js')
const emitter = new EventEmitter()
const addListener = cb => emitter.on('change', cb)
const removeListener = cb => emitter.removeListener('change', cb)
const streams = {}
const handlers = {
'add-stream': ({ userId, stream }) => {
debug('add-stream, user: %s', userId)
streams[userId] = {
stream,
url: createObjectURL(stream)
}
},
'remove-stream': ({ userId }) => {
debug('remove-stream, user: %s', userId)
delete streams[userId]
}
}
const dispatcherIndex = dispatcher.register(action => {
let handle = handlers[action.type]
if (!handle) return
handle(action)
emitter.emit('change')
})
function getStream (userId) {
return streams[userId]
}
function getStreams () {
return streams
}
module.exports = {
dispatcherIndex,
addListener,
removeListener,
getStream,
getStreams
}