The livechat plugin broke the federation with Peertube >= 6.1.0.
This commit is contained in:
parent
73afc41eda
commit
a026c57cc3
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
## ??? (Not Released Yet)
|
## ??? (Not Released Yet)
|
||||||
|
|
||||||
|
### Important fix
|
||||||
|
|
||||||
|
* The livechat plugin broke the federation with Peertube >= 6.1.0.
|
||||||
|
|
||||||
### Minor changes and fixes
|
### Minor changes and fixes
|
||||||
|
|
||||||
* Fix #378: alert message not visible with dark theme when using external login.
|
* Fix #378: alert message not visible with dark theme when using external login.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { RegisterServerOptions, VideoObject } from '@peertube/peertube-types'
|
import type { RegisterServerOptions, VideoObject } from '@peertube/peertube-types'
|
||||||
import type { VideoBuildResultContext, RemoteVideoHandlerParams } from './types'
|
import type { VideoBuildResultContext, RemoteVideoHandlerParams } from './types'
|
||||||
import { videoBuildJSONLD } from './outgoing'
|
import { videoBuildJSONLD, videoContextBuildJSONLD } from './outgoing'
|
||||||
import { readIncomingAPVideo } from './incoming'
|
import { readIncomingAPVideo } from './incoming'
|
||||||
|
|
||||||
export async function initFederation (options: RegisterServerOptions): Promise<void> {
|
export async function initFederation (options: RegisterServerOptions): Promise<void> {
|
||||||
@ -15,13 +15,12 @@ export async function initFederation (options: RegisterServerOptions): Promise<v
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// TODO: we should also register the context.build hook.
|
registerHook({
|
||||||
// registerHook({
|
target: 'filter:activity-pub.activity.context.build.result',
|
||||||
// target: 'filter:activity-pub.activity.context.build.result',
|
handler: async (jsonld: any) => {
|
||||||
// handler: (jsonld: any) => {
|
return videoContextBuildJSONLD(options, jsonld)
|
||||||
// return videoContectBuildJSONLD(options, jsonld)
|
}
|
||||||
// }
|
})
|
||||||
// })
|
|
||||||
|
|
||||||
registerHook({
|
registerHook({
|
||||||
target: 'action:activity-pub.remote-video.created',
|
target: 'action:activity-pub.remote-video.created',
|
||||||
|
@ -62,9 +62,6 @@ async function videoBuildJSONLD (
|
|||||||
logger.debug(`Video uuid=${video.uuid} has not livechat, adding peertubeLiveChat=false.`)
|
logger.debug(`Video uuid=${video.uuid} has not livechat, adding peertubeLiveChat=false.`)
|
||||||
// Note: we store also outgoing data. Could help for migration/cleanup scripts, for example.
|
// Note: we store also outgoing data. Could help for migration/cleanup scripts, for example.
|
||||||
await storeVideoLiveChatInfos(options, video, false)
|
await storeVideoLiveChatInfos(options, video, false)
|
||||||
Object.assign(videoJsonld, {
|
|
||||||
peertubeLiveChat: false
|
|
||||||
})
|
|
||||||
return videoJsonld
|
return videoJsonld
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,6 +122,8 @@ async function videoBuildJSONLD (
|
|||||||
|
|
||||||
// Code beneath this point is for backward compatibility, before v7.2.0.
|
// Code beneath this point is for backward compatibility, before v7.2.0.
|
||||||
// Since then, the ActivityPub metadata were not standardized.
|
// Since then, the ActivityPub metadata were not standardized.
|
||||||
|
// Note: plugin version >=7.2.0 still uses these data to get remote server informations
|
||||||
|
// (not 100% sure if it is needed or not)
|
||||||
|
|
||||||
// For backward compatibility with remote servers, using plugin <=6.3.0, we must provide links:
|
// For backward compatibility with remote servers, using plugin <=6.3.0, we must provide links:
|
||||||
const links: LiveChatJSONLDLink[] = []
|
const links: LiveChatJSONLDLink[] = []
|
||||||
@ -160,6 +159,27 @@ async function videoBuildJSONLD (
|
|||||||
return videoJsonld
|
return videoJsonld
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function videoContextBuildJSONLD (_options: RegisterServerOptions, jsonld: any[]): Promise<any> {
|
||||||
|
// Note: this function is called for all kind of context, not only video.
|
||||||
|
// We have no parameter to know on which context we currently are.
|
||||||
|
// See: https://github.com/Chocobozzz/PeerTube/issues/6375
|
||||||
|
// But we only want to add some context on videos...
|
||||||
|
// So, to detect if we are on video, we search for a 'isLiveBroadcast' field in jsonld (this only exists for videos).
|
||||||
|
|
||||||
|
const entry = jsonld.find(e => typeof e === 'object' && ('isLiveBroadcast' in e))
|
||||||
|
if (!entry) {
|
||||||
|
return jsonld
|
||||||
|
}
|
||||||
|
|
||||||
|
// We are on a video!
|
||||||
|
return jsonld.concat([{
|
||||||
|
ptlc: 'urn:peertube-plugin-livechat',
|
||||||
|
peertubeLiveChat: {
|
||||||
|
'@id': 'ptlc:peertubeLiveChat', '@type': '@json'
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
}
|
||||||
|
|
||||||
async function serverBuildInfos (options: RegisterServerOptions): Promise<PeertubeXMPPServerInfos> {
|
async function serverBuildInfos (options: RegisterServerOptions): Promise<PeertubeXMPPServerInfos> {
|
||||||
const settings = await options.settingsManager.getSettings([
|
const settings = await options.settingsManager.getSettings([
|
||||||
'federation-dont-publish-remotely',
|
'federation-dont-publish-remotely',
|
||||||
@ -192,14 +212,14 @@ async function _serverBuildInfos (
|
|||||||
const anonDomain = 'anon.' + prosodyDomain
|
const anonDomain = 'anon.' + prosodyDomain
|
||||||
const externalDomain = 'external.' + prosodyDomain
|
const externalDomain = 'external.' + prosodyDomain
|
||||||
|
|
||||||
let directs2s
|
let directs2s: PeertubeXMPPServerInfos['directs2s'] | undefined
|
||||||
if (settings['prosody-room-allow-s2s'] && settings['prosody-s2s-port']) {
|
if (settings['prosody-room-allow-s2s'] && settings['prosody-s2s-port']) {
|
||||||
directs2s = {
|
directs2s = {
|
||||||
port: (settings['prosody-s2s-port'] as string) ?? ''
|
port: (settings['prosody-s2s-port'] as string) ?? ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let websockets2s
|
let websockets2s: PeertubeXMPPServerInfos['websockets2s'] | undefined
|
||||||
if (!settings['federation-dont-publish-remotely']) {
|
if (!settings['federation-dont-publish-remotely']) {
|
||||||
const wsS2SUri = getWSS2SUri(options)
|
const wsS2SUri = getWSS2SUri(options)
|
||||||
if (wsS2SUri) { // can be undefined for old Peertube version that dont allow WS for plugins
|
if (wsS2SUri) { // can be undefined for old Peertube version that dont allow WS for plugins
|
||||||
@ -242,5 +262,6 @@ async function _serverBuildInfos (
|
|||||||
|
|
||||||
export {
|
export {
|
||||||
videoBuildJSONLD,
|
videoBuildJSONLD,
|
||||||
|
videoContextBuildJSONLD,
|
||||||
serverBuildInfos
|
serverBuildInfos
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user