peertube-theme-nctv-dark/peertube-plugin-hello-world/client/video-edit-client-plugin.js

85 lines
2.2 KiB
JavaScript
Raw Normal View History

2021-03-26 07:30:43 +00:00
function register ({ registerHook, registerVideoField }) {
2020-08-21 12:45:18 +00:00
console.log('loading video edit stuff')
{
2021-05-04 06:46:59 +00:00
const commonOptions1 = {
2020-08-21 12:45:18 +00:00
name: 'hello-world-field',
label: 'Super field',
type: 'input',
default: 'hello'
}
2021-05-04 06:46:59 +00:00
const commonOptions2 = {
name: 'hello-world-field-2',
label: 'Super field 2',
type: 'input',
hidden: ({ liveVideo, videoToUpdate, formValues }) => {
console.log('check hidden field', { videoToUpdate, liveVideo, formValues })
return formValues.pluginData['hello-world-field'] === 'toto'
}
}
2021-06-30 14:44:42 +00:00
const commonOptions3 = {
name: 'hello-world-field-3',
label: 'Super field 3',
type: 'input-checkbox'
}
2021-12-23 10:25:54 +00:00
const commonOptions4 = {
name: 'hello-world-field-4',
label: 'Super field 4 in main tab',
type: 'input-checkbox',
hidden: ({ formValues }) => {
return formValues['privacy'] !== 1 && formValues['privacy'] !== 2
},
error: ({ formValues, value }) => {
if (formValues['privacy'] !== 1 && formValues['privacy'] !== 2) return { error: false }
if (value === true) return { error: false }
return { error: true, text: 'Should be enabled' }
}
}
2020-08-21 12:45:18 +00:00
for (const type of [ 'upload', 'import-url', 'update' ]) {
2021-05-04 06:46:59 +00:00
registerVideoField(commonOptions1, { type })
registerVideoField(commonOptions2, { type })
2021-06-30 14:44:42 +00:00
registerVideoField(commonOptions3, { type })
2021-12-23 10:25:54 +00:00
registerVideoField(commonOptions4, { type, tab: 'main' })
2020-08-21 12:45:18 +00:00
}
}
2021-03-26 07:30:43 +00:00
{
const hooks = [
'action:video-upload.init',
'action:video-url-import.init',
'action:video-torrent-import.init',
'action:go-live.init'
]
for (const h of hooks) {
registerHook({
target: h,
handler: () => {
const event = new Event('change', {
bubbles: true,
cancelable: true,
});
const selects = document.querySelectorAll('label[for=first-step-privacy] + my-select-options')
console.log(selects)
selects.forEach(s => {
s.value = 2 // Unlisted
s.dispatchEvent(event)
})
}
})
}
}
2020-08-21 12:45:18 +00:00
}
export {
register
}