X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=server%2Flib%2Fvideo-channel.ts;h=0fe95ca0986d41fc863ea6afb2f8f60daee37751;hb=597a9266d426aa04c2f229168e4285a76bea2c12;hp=e69ec062f2ad7bd442de775826570991f51f78d2;hpb=efc32059d980c51793e8e9ac0fb6a885a8026f94;p=oweals%2Fpeertube.git diff --git a/server/lib/video-channel.ts b/server/lib/video-channel.ts index e69ec062f..0fe95ca09 100644 --- a/server/lib/video-channel.ts +++ b/server/lib/video-channel.ts @@ -1,51 +1,40 @@ import * as Sequelize from 'sequelize' - -import { database as db } from '../initializers' -import { logger } from '../helpers' -import { AccountInstance } from '../models' +import * as uuidv4 from 'uuid/v4' import { VideoChannelCreate } from '../../shared/models' -import { sendCreateVideoChannel } from './activitypub/send-request' -import { getActivityPubUrl, shareVideoChannelByServer } from '../helpers/activitypub' +import { AccountModel } from '../models/account/account' +import { VideoChannelModel } from '../models/video/video-channel' +import { buildActorInstance, getVideoChannelActivityPubUrl } from './activitypub' + +async function createVideoChannel (videoChannelInfo: VideoChannelCreate, account: AccountModel, t: Sequelize.Transaction) { + const uuid = uuidv4() + const url = getVideoChannelActivityPubUrl(videoChannelInfo.name) + const actorInstance = buildActorInstance('Group', url, videoChannelInfo.name, uuid) + + const actorInstanceCreated = await actorInstance.save({ transaction: t }) -async function createVideoChannel (videoChannelInfo: VideoChannelCreate, account: AccountInstance, t: Sequelize.Transaction) { const videoChannelData = { - name: videoChannelInfo.name, + name: videoChannelInfo.displayName, description: videoChannelInfo.description, - remote: false, - accountId: account.id + support: videoChannelInfo.support, + accountId: account.id, + actorId: actorInstanceCreated.id } - const videoChannel = db.VideoChannel.build(videoChannelData) - videoChannel.set('url', getActivityPubUrl('videoChannel', videoChannel.uuid)) + const videoChannel = VideoChannelModel.build(videoChannelData) const options = { transaction: t } - const videoChannelCreated = await videoChannel.save(options) - // Do not forget to add Account information to the created video channel + // Do not forget to add Account/Actor information to the created video channel videoChannelCreated.Account = account + videoChannelCreated.Actor = actorInstanceCreated - await sendCreateVideoChannel(videoChannelCreated, t) - await shareVideoChannelByServer(videoChannelCreated, t) - + // No need to seed this empty video channel to followers return videoChannelCreated } -async function fetchVideoChannelByHostAndUUID (serverHost: string, uuid: string, t: Sequelize.Transaction) { - try { - const videoChannel = await db.VideoChannel.loadByHostAndUUID(serverHost, uuid, t) - if (!videoChannel) throw new Error('Video channel not found') - - return videoChannel - } catch (err) { - logger.error('Cannot load video channel from host and uuid.', { error: err.stack, serverHost, uuid }) - throw err - } -} - // --------------------------------------------------------------------------- export { - createVideoChannel, - fetchVideoChannelByHostAndUUID + createVideoChannel }