X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-channel.ts;h=54f12dce3216273d17925ea1e2eaca21e1f9ebc2;hb=c893d4514e6ecbf282c7985fe5f82b8acd8a1137;hp=64130310d4db7ed47844812820f5072cc1d4b8b7;hpb=39445ead45aaaea801ec09991b8dd2464f722e47;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-channel.ts b/server/models/video/video-channel.ts index 64130310d..54f12dce3 100644 --- a/server/models/video/video-channel.ts +++ b/server/models/video/video-channel.ts @@ -1,11 +1,13 @@ import * as Sequelize from 'sequelize' import { isVideoChannelDescriptionValid, isVideoChannelNameValid } from '../../helpers' -import { isVideoChannelUrlValid } from '../../helpers/custom-validators/video-channels' import { CONSTRAINTS_FIELDS } from '../../initializers/constants' import { sendDeleteVideoChannel } from '../../lib/activitypub/send/send-delete' import { addMethodsToModel, getSort } from '../utils' import { VideoChannelAttributes, VideoChannelInstance, VideoChannelMethods } from './video-channel-interface' +import { getAnnounceActivityPubUrl } from '../../lib/activitypub/url' +import { activityPubCollection } from '../../helpers/activitypub' +import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' let VideoChannel: Sequelize.Model let toFormattedJSON: VideoChannelMethods.ToFormattedJSON @@ -64,7 +66,7 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da allowNull: false, validate: { urlValid: value => { - const res = isVideoChannelUrlValid(value) + const res = isActivityPubUrlValid(value) if (res === false) throw new Error('Video channel URL is not valid.') } } @@ -139,6 +141,18 @@ toFormattedJSON = function (this: VideoChannelInstance) { } toActivityPubObject = function (this: VideoChannelInstance) { + let sharesObject + if (Array.isArray(this.VideoChannelShares)) { + const shares: string[] = [] + + for (const videoChannelShare of this.VideoChannelShares) { + const shareUrl = getAnnounceActivityPubUrl(this.url, videoChannelShare.Account) + shares.push(shareUrl) + } + + sharesObject = activityPubCollection(shares) + } + const json = { type: 'VideoChannel' as 'VideoChannel', id: this.url, @@ -146,7 +160,8 @@ toActivityPubObject = function (this: VideoChannelInstance) { content: this.description, name: this.name, published: this.createdAt.toISOString(), - updated: this.updatedAt.toISOString() + updated: this.updatedAt.toISOString(), + shares: sharesObject } return json