mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-28 11:54:16 +00:00
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
import lodash from "lodash"
|
|
|
|
export default class SessionsManager {
|
|
constructor() {
|
|
this.sessions = {}
|
|
this.publicStreams = []
|
|
}
|
|
|
|
newSession = (id, session) => {
|
|
this.sessions[id] = session
|
|
}
|
|
|
|
getSession = (id) => {
|
|
return this.sessions[id]
|
|
}
|
|
|
|
removeSession = (id) => {
|
|
this.sessions[id].reject()
|
|
|
|
delete this.sessions[id]
|
|
}
|
|
|
|
publishStream = (payload) => {
|
|
if (typeof payload !== "object") {
|
|
throw new Error("Payload must be an object")
|
|
}
|
|
|
|
this.publicStreams.push(payload)
|
|
}
|
|
|
|
unpublishStream = (stream_key) => {
|
|
this.publicStreams = this.publicStreams.filter((stream) => stream.stream_key !== stream_key)
|
|
}
|
|
|
|
getPublicStreams = () => {
|
|
// return this.publicStreams but without stream_key property
|
|
return lodash.map(this.publicStreams, (stream) => {
|
|
return lodash.omit(stream, "stream_key")
|
|
})
|
|
}
|
|
|
|
getStreamsByUserId = (user_id) => {
|
|
const streams = lodash.filter(this.publicStreams, (stream) => stream.user_id === user_id)
|
|
|
|
return lodash.map(streams, (stream) => {
|
|
return lodash.omit(stream, "stream_key")
|
|
})
|
|
}
|
|
|
|
getStreamsByUsername = (username) => {
|
|
const streams = lodash.filter(this.publicStreams, (stream) => stream.username === username)
|
|
|
|
return lodash.map(streams, (stream) => {
|
|
return lodash.omit(stream, "stream_key")
|
|
})
|
|
}
|
|
} |