X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fprocess%2Fprocess-view.ts;h=e49506d8271b7041a8c39238c7d382eaa2e95561;hb=ac907dc7c158056e9b6a5cb58acd27df5c7c2670;hp=c2d41dd2845fe2e629416795eb81863e07d3e91c;hpb=304a84d59c3a800b7f7aef48cf55f307534c0926;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/process/process-view.ts b/server/lib/activitypub/process/process-view.ts index c2d41dd28..e49506d82 100644 --- a/server/lib/activitypub/process/process-view.ts +++ b/server/lib/activitypub/process/process-view.ts @@ -1,13 +1,13 @@ -import { getOrCreateAPVideo } from '../videos' -import { forwardVideoRelatedActivity } from '../send/utils' -import { Redis } from '../../redis' -import { ActivityCreate, ActivityView, ViewObject } from '../../../../shared/models/activitypub' +import { VideoViewsManager } from '@server/lib/views/video-views-manager' +import { ActivityView } from '../../../../shared/models/activitypub' import { APProcessorOptions } from '../../../types/activitypub-processor.model' import { MActorSignature } from '../../../types/models' -import { LiveManager } from '@server/lib/live-manager' +import { forwardVideoRelatedActivity } from '../send/shared/send-utils' +import { getOrCreateAPVideo } from '../videos' -async function processViewActivity (options: APProcessorOptions) { +async function processViewActivity (options: APProcessorOptions) { const { activity, byActor } = options + return processCreateView(activity, byActor) } @@ -19,29 +19,22 @@ export { // --------------------------------------------------------------------------- -async function processCreateView (activity: ActivityView | ActivityCreate, byActor: MActorSignature) { - const videoObject = activity.type === 'View' - ? activity.object - : (activity.object as ViewObject).object +async function processCreateView (activity: ActivityView, byActor: MActorSignature) { + const videoObject = activity.object - const options = { + const { video } = await getOrCreateAPVideo({ videoObject, - fetchType: 'only-video' as 'only-video', - allowRefresh: false as false - } - const { video } = await getOrCreateAPVideo(options) + fetchType: 'only-video', + allowRefresh: false + }) - if (!video.isLive) { - await Redis.Instance.addVideoView(video.id) - } + const viewerExpires = activity.expires + ? new Date(activity.expires) + : undefined - if (video.isOwned()) { - // Our live manager will increment the counter and send the view to followers - if (video.isLive) { - LiveManager.Instance.addViewTo(video.id) - return - } + await VideoViewsManager.Instance.processRemoteView({ video, viewerId: activity.id, viewerExpires }) + if (video.isOwned()) { // Forward the view but don't resend the activity to the sender const exceptions = [ byActor ] await forwardVideoRelatedActivity(activity, undefined, exceptions, video)