Chat can be enabled in video properties.
This commit is contained in:
10
client/@types/peertube.d.ts
vendored
10
client/@types/peertube.d.ts
vendored
@ -37,7 +37,7 @@ interface RegisterClientFormFieldOptions {
|
||||
type: 'input' | 'input-checkbox' | 'input-password' | 'input-textarea' | 'markdown-text' | 'markdown-enhanced'
|
||||
descriptionHTML?: string
|
||||
default?: string | boolean
|
||||
private: boolean
|
||||
hidden?: (options: any) => boolean
|
||||
}
|
||||
interface RegisterClientSettingsScript {
|
||||
isSettingHidden: (options: {
|
||||
@ -46,10 +46,18 @@ interface RegisterClientSettingsScript {
|
||||
}) => boolean
|
||||
}
|
||||
|
||||
interface RegisterClientVideoFieldOptions {
|
||||
type: 'update' | 'upload' | 'import-url' | 'import-torrent' | 'go-live'
|
||||
}
|
||||
|
||||
interface RegisterOptions {
|
||||
registerHook: (options: RegisterClientHookOptions) => void
|
||||
peertubeHelpers: RegisterClientHelpers
|
||||
registerSettingsScript: (options: RegisterClientSettingsScript) => void
|
||||
registerVideoField: (
|
||||
commonOptions: RegisterClientFormFieldOptions,
|
||||
videoFormOptions: RegisterClientVideoFieldOptions
|
||||
) => void
|
||||
}
|
||||
|
||||
interface Video {
|
||||
|
@ -23,6 +23,8 @@ function register ({ registerSettingsScript }: RegisterOptions): void {
|
||||
return options.formValues['chat-type'] === 'disabled'
|
||||
case 'chat-only-locals-warning':
|
||||
return options.formValues['chat-only-locals'] === true
|
||||
case 'chat-per-live-video-warning':
|
||||
return !(options.formValues['chat-all-lives'] === true && options.formValues['chat-per-live-video'] === true)
|
||||
}
|
||||
|
||||
return false
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
function register ({ registerHook }: RegisterOptions): void {
|
||||
async function register ({ peertubeHelpers, registerHook, registerVideoField }: RegisterOptions): Promise<void> {
|
||||
registerHook({
|
||||
target: 'action:router.navigation-end',
|
||||
handler: () => {
|
||||
@ -9,6 +9,34 @@ function register ({ registerHook }: RegisterOptions): void {
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const [label, description, settings] = await Promise.all([
|
||||
peertubeHelpers.translate('Use chat'),
|
||||
peertubeHelpers.translate('If enabled, there will be a chat next to the video.'),
|
||||
peertubeHelpers.getSettings()
|
||||
])
|
||||
const webchatFieldOptions: RegisterClientFormFieldOptions = {
|
||||
name: 'livechat-active',
|
||||
label: label,
|
||||
descriptionHTML: description,
|
||||
type: 'input-checkbox',
|
||||
default: true,
|
||||
hidden: ({ liveVideo }) => {
|
||||
if (!liveVideo) {
|
||||
return true
|
||||
}
|
||||
if (!settings['chat-per-live-video']) {
|
||||
return true
|
||||
}
|
||||
if (settings['chat-all-lives']) {
|
||||
// No need to add this field if live is active for all live videos
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
registerVideoField(webchatFieldOptions, { type: 'update' })
|
||||
registerVideoField(webchatFieldOptions, { type: 'go-live' })
|
||||
}
|
||||
|
||||
export {
|
||||
|
Reference in New Issue
Block a user