]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/video-channel.ts
Add beautiful loading bar
[github/Chocobozzz/PeerTube.git] / server / models / video / video-channel.ts
index 64130310d4db7ed47844812820f5072cc1d4b8b7..54f12dce3216273d17925ea1e2eaca21e1f9ebc2 100644 (file)
@@ -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<VideoChannelInstance, VideoChannelAttributes>
 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