Adding a Shared folder:

* init some shared functions (videoHasWebchat, parseConfigUUIDs)
* api/room: checking that video has live enabled
* fix promise handling in initChat function
* removing some 'use strict' that are no more necessary in typescript
This commit is contained in:
John Livingston
2021-05-01 18:30:21 +02:00
parent 0cc57dfc12
commit ef05583fba
9 changed files with 145 additions and 24 deletions

16
shared/lib/config.ts Normal file
View File

@ -0,0 +1,16 @@
function parseConfigUUIDs (s: string): string[] {
if (!s) {
return []
}
let a = s.split('\n')
a = a.map(line => {
return line.replace(/#.*$/, '')
.replace(/^\s+/, '')
.replace(/\s+$/, '')
})
return a.filter(line => line !== '')
}
export {
parseConfigUUIDs
}

52
shared/lib/video.ts Normal file
View File

@ -0,0 +1,52 @@
import { parseConfigUUIDs } from './config'
interface SharedSettings {
'chat-only-locals': boolean
'chat-all-lives': boolean
'chat-all-non-lives': boolean
'chat-videos-list': string
}
interface SharedVideoBase {
uuid: string
isLive: boolean
}
interface SharedVideoFrontend extends SharedVideoBase {
isLocal: boolean
}
interface SharedVideoBackend extends SharedVideoBase {
remote: boolean
}
type SharedVideo = SharedVideoBackend | SharedVideoFrontend
function videoHasWebchat (settings: SharedSettings, video: SharedVideo): boolean {
if (settings['chat-only-locals']) {
if ('isLocal' in video) {
if (!video.isLocal) return false
} else {
if (video.remote) return false
}
}
if (settings['chat-all-lives']) {
if (video.isLive) return true
}
if (settings['chat-all-non-lives']) {
if (!video.isLive) return true
}
const uuids = parseConfigUUIDs(settings['chat-videos-list'])
if (uuids.includes(video.uuid)) {
return true
}
return false
}
export {
videoHasWebchat
}