2019-07-26 12:56:58 +00:00
|
|
|
async function register ({
|
2021-02-20 10:55:00 +00:00
|
|
|
_registerHook,
|
2019-07-26 12:56:58 +00:00
|
|
|
registerSetting,
|
2021-02-20 10:55:00 +00:00
|
|
|
_settingsManager,
|
|
|
|
_storageManager,
|
|
|
|
_videoCategoryManager,
|
|
|
|
_videoLicenceManager,
|
2021-02-20 17:31:21 +00:00
|
|
|
_videoLanguageManager,
|
|
|
|
getRouter,
|
|
|
|
peertubeHelpers
|
2019-07-26 12:56:58 +00:00
|
|
|
}) {
|
2021-02-19 17:21:40 +00:00
|
|
|
registerSetting({
|
|
|
|
name: 'chat-auto-display',
|
|
|
|
label: 'Automatically open the chat',
|
|
|
|
type: 'input-checkbox',
|
|
|
|
default: false,
|
|
|
|
private: false
|
|
|
|
})
|
2021-02-18 17:31:12 +00:00
|
|
|
registerSetting({
|
|
|
|
name: 'chat-all-lives',
|
|
|
|
label: 'Activate chat for all lives',
|
|
|
|
type: 'input-checkbox',
|
|
|
|
default: false,
|
2021-02-19 09:11:42 +00:00
|
|
|
descriptionHTML: 'If checked, a chat will be added to all lives.',
|
|
|
|
private: false
|
2021-02-18 17:31:12 +00:00
|
|
|
})
|
|
|
|
registerSetting({
|
|
|
|
name: 'chat-all-non-lives',
|
|
|
|
label: 'Activate chat for all non-lives',
|
|
|
|
type: 'input-checkbox',
|
|
|
|
default: false,
|
2021-02-19 09:11:42 +00:00
|
|
|
descriptionHTML: 'If checked, a chat will be added to all video that are not lives.',
|
|
|
|
private: false
|
2021-02-18 17:31:12 +00:00
|
|
|
})
|
|
|
|
registerSetting({
|
|
|
|
name: 'chat-videos-list',
|
|
|
|
label: 'Activate chat for specific videos',
|
|
|
|
type: 'input-textarea',
|
|
|
|
default: '',
|
2021-02-19 09:11:42 +00:00
|
|
|
descriptionHTML: 'Videos UUIDs for which we want a chat. ' +
|
2021-02-20 10:55:00 +00:00
|
|
|
'Can be non-live videos. One per line. <br />' +
|
2021-02-19 14:19:20 +00:00
|
|
|
'You can add comments: everything after the # character will be stripped off, and empty lines ignored.<br />' +
|
2021-02-19 09:11:42 +00:00
|
|
|
'Don\'t add private videos, the UUIDs will be send to frontend.',
|
|
|
|
private: false
|
2021-02-18 17:31:12 +00:00
|
|
|
})
|
2021-02-20 17:31:21 +00:00
|
|
|
|
|
|
|
registerSetting({
|
|
|
|
name: 'chat-use-builtin',
|
|
|
|
label: 'Use builtin ConverseJS',
|
|
|
|
type: 'input-checkbox',
|
|
|
|
default: true,
|
|
|
|
private: false,
|
|
|
|
descriptionHTML: 'If checked, use a builtin ConverseJS iframe.<br>' +
|
|
|
|
'You still have to configure an external XMPP service. Please see the documentation.'
|
|
|
|
})
|
|
|
|
registerSetting({
|
|
|
|
name: 'chat-bosh-uri',
|
|
|
|
label: 'Builtin webchat: BOSH uri',
|
|
|
|
type: 'input',
|
|
|
|
default: true,
|
|
|
|
descriptionHTML: 'When using the built-in converseJS webchat:<br>' +
|
|
|
|
'URI of the external BOSH server. Please make sure it accept cross origin request from your domain.',
|
|
|
|
private: true
|
|
|
|
})
|
|
|
|
|
2021-02-18 17:31:12 +00:00
|
|
|
registerSetting({
|
|
|
|
name: 'chat-uri',
|
|
|
|
label: 'Webchat url',
|
|
|
|
type: 'input',
|
|
|
|
default: '',
|
2021-02-20 17:31:21 +00:00
|
|
|
descriptionHTML: '<b>If you dont want to use the builtin ConverseJS webchat:</b><br>' +
|
|
|
|
'Put here your webchat url. An iframe will be created pointing to this url. ' +
|
2021-02-19 09:11:42 +00:00
|
|
|
'The placeholder {{VIDEO_UUID}} will be replace by the video UUID if present. ' +
|
2021-02-20 17:31:21 +00:00
|
|
|
'Example : https://my_domain/conversejs.html?room=video_{{VIDEO_UUID}}.<br>' +
|
|
|
|
'If this field is empty, it will use the builtin ConverseJS webchat.',
|
2021-02-19 09:11:42 +00:00
|
|
|
private: false
|
2021-02-18 17:31:12 +00:00
|
|
|
})
|
2021-02-20 17:31:21 +00:00
|
|
|
|
2021-02-19 17:21:40 +00:00
|
|
|
registerSetting({
|
|
|
|
name: 'chat-style',
|
|
|
|
label: 'Webchat iframe style attribute',
|
|
|
|
type: 'input-textarea',
|
|
|
|
default: '',
|
|
|
|
descriptionHTML: 'Additional styles to be added on the iframe style attribute. <br>' +
|
|
|
|
'Example: height:400px;',
|
|
|
|
private: false
|
|
|
|
})
|
2021-02-20 17:31:21 +00:00
|
|
|
|
|
|
|
const router = getRouter()
|
|
|
|
router.get('/ping', (req, res) => res.json({ message: 'pong' }))
|
|
|
|
router.get('/webchat', async (req, res, next) => {
|
|
|
|
try {
|
|
|
|
// FIXME: with Peertube 3.0.1 the following method is not available...
|
|
|
|
// When loadByIdOrUUID is available, change the entry point to
|
|
|
|
// be /webchat/:videoId
|
|
|
|
// const id = req.param('videoId')
|
|
|
|
// const video = await peertubeHelpers.videos.loadByIdOrUUID(id)
|
|
|
|
let url = req.query.url
|
|
|
|
if (!url) {
|
|
|
|
throw new Error('Missing url parameter)')
|
|
|
|
}
|
|
|
|
let video = await peertubeHelpers.videos.loadByUrl(url)
|
|
|
|
if (!video) {
|
|
|
|
// FIXME: remove this when loadByIdOrUUID will be available...
|
|
|
|
// This is a dirty Hack for dev environnements...
|
|
|
|
url = url.replace(/^https:/, 'http:')
|
|
|
|
video = await peertubeHelpers.videos.loadByUrl(url)
|
|
|
|
}
|
|
|
|
if (!video) {
|
|
|
|
throw new Error('Video not found')
|
|
|
|
}
|
|
|
|
res.send('ok')
|
|
|
|
} catch (error) {
|
|
|
|
return next(error)
|
|
|
|
}
|
|
|
|
})
|
2019-07-16 14:39:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
async function unregister () {
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
register,
|
|
|
|
unregister
|
|
|
|
}
|