WIP: store and get relation between rooms and channels (refactoring)
This commit is contained in:
55
server/lib/configuration/channel/init.ts
Normal file
55
server/lib/configuration/channel/init.ts
Normal file
@ -0,0 +1,55 @@
|
||||
import type { RegisterServerOptions, MVideoFullLight, VideoChannel } from '@peertube/peertube-types'
|
||||
import { RoomChannel } from '../../room-channel'
|
||||
|
||||
/**
|
||||
* Register stuffs related to channel configuration
|
||||
*/
|
||||
async function initChannelConfiguration (options: RegisterServerOptions): Promise<void> {
|
||||
const logger = options.peertubeHelpers.logger
|
||||
const registerHook = options.registerHook
|
||||
logger.info('Registring room-channel hooks...')
|
||||
|
||||
registerHook({
|
||||
target: 'action:api.video.deleted',
|
||||
handler: async (params: { video: MVideoFullLight }) => {
|
||||
// When a video is deleted, we can delete the channel2room and room2channel files.
|
||||
// Note: don't need to check if there is a chat for this video, just deleting existing files...
|
||||
const video = params.video
|
||||
logger.info(`Video ${video.uuid} deleted, removing 'channel configuration' related stuff.`)
|
||||
// Here the associated channel can be either channel.X@mucdomain or video_uuid@mucdomain.
|
||||
// In first case, nothing to do... in the second, we must delete.
|
||||
// So we don't need to check which case is effective, just delete video_uuid@mucdomain.
|
||||
try {
|
||||
RoomChannel.singleton().removeRoom(video.uuid)
|
||||
} catch (err) {
|
||||
logger.error(err)
|
||||
}
|
||||
|
||||
// Note: we don't delete the room. So that admins can check logs afterward, if any doubts.
|
||||
}
|
||||
})
|
||||
|
||||
registerHook({
|
||||
target: 'action:api.video-channel.deleted',
|
||||
handler: async (params: { channel: VideoChannel }) => {
|
||||
// When a video is deleted, we can delete the channel2room and room2channel files.
|
||||
// Note: don't need to check if there is a chat for this video, just deleting existing files...
|
||||
const channelId = params.channel.id
|
||||
logger.info(`Channel ${channelId} deleted, removing 'channel configuration' related stuff.`)
|
||||
// Here the associated channel can be either channel.X@mucdomain or video_uuid@mucdomain.
|
||||
// In first case, nothing to do... in the second, we must delete.
|
||||
// So we don't need to check which case is effective, just delete video_uuid@mucdomain.
|
||||
try {
|
||||
RoomChannel.singleton().removeChannel(channelId)
|
||||
} catch (err) {
|
||||
logger.error(err)
|
||||
}
|
||||
|
||||
// Note: we don't delete the room. So that admins can check logs afterward, if any doubts.
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
initChannelConfiguration
|
||||
}
|
Reference in New Issue
Block a user