diff options
Diffstat (limited to 'server/lib/activitypub/process/process-create.ts')
-rw-r--r-- | server/lib/activitypub/process/process-create.ts | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/server/lib/activitypub/process/process-create.ts b/server/lib/activitypub/process/process-create.ts index ddf7c74f6..1777733a0 100644 --- a/server/lib/activitypub/process/process-create.ts +++ b/server/lib/activitypub/process/process-create.ts | |||
@@ -1,9 +1,11 @@ | |||
1 | import { ActivityCreate, VideoChannelObject } from '../../../../shared' | 1 | import { ActivityCreate, VideoChannelObject } from '../../../../shared' |
2 | import { VideoAbuseObject } from '../../../../shared/models/activitypub/objects/video-abuse-object' | 2 | import { VideoAbuseObject } from '../../../../shared/models/activitypub/objects/video-abuse-object' |
3 | import { ViewObject } from '../../../../shared/models/activitypub/objects/view-object' | ||
3 | import { logger, retryTransactionWrapper } from '../../../helpers' | 4 | import { logger, retryTransactionWrapper } from '../../../helpers' |
4 | import { database as db } from '../../../initializers' | 5 | import { database as db } from '../../../initializers' |
5 | import { AccountInstance } from '../../../models/account/account-interface' | 6 | import { AccountInstance } from '../../../models/account/account-interface' |
6 | import { getOrCreateAccountAndServer } from '../account' | 7 | import { getOrCreateAccountAndServer } from '../account' |
8 | import { sendCreateViewToVideoFollowers } from '../send/send-create' | ||
7 | import { getVideoChannelActivityPubUrl } from '../url' | 9 | import { getVideoChannelActivityPubUrl } from '../url' |
8 | import { videoChannelActivityObjectToDBAttributes } from './misc' | 10 | import { videoChannelActivityObjectToDBAttributes } from './misc' |
9 | 11 | ||
@@ -12,7 +14,9 @@ async function processCreateActivity (activity: ActivityCreate) { | |||
12 | const activityType = activityObject.type | 14 | const activityType = activityObject.type |
13 | const account = await getOrCreateAccountAndServer(activity.actor) | 15 | const account = await getOrCreateAccountAndServer(activity.actor) |
14 | 16 | ||
15 | if (activityType === 'VideoChannel') { | 17 | if (activityType === 'View') { |
18 | return processCreateView(activityObject as ViewObject) | ||
19 | } else if (activityType === 'VideoChannel') { | ||
16 | return processCreateVideoChannel(account, activityObject as VideoChannelObject) | 20 | return processCreateVideoChannel(account, activityObject as VideoChannelObject) |
17 | } else if (activityType === 'Flag') { | 21 | } else if (activityType === 'Flag') { |
18 | return processCreateVideoAbuse(account, activityObject as VideoAbuseObject) | 22 | return processCreateVideoAbuse(account, activityObject as VideoAbuseObject) |
@@ -30,6 +34,19 @@ export { | |||
30 | 34 | ||
31 | // --------------------------------------------------------------------------- | 35 | // --------------------------------------------------------------------------- |
32 | 36 | ||
37 | async function processCreateView (view: ViewObject) { | ||
38 | const video = await db.Video.loadByUrlAndPopulateAccount(view.object) | ||
39 | |||
40 | if (!video) throw new Error('Unknown video ' + view.object) | ||
41 | |||
42 | const account = await db.Account.loadByUrl(view.actor) | ||
43 | if (!account) throw new Error('Unknown account ' + view.actor) | ||
44 | |||
45 | await video.increment('views') | ||
46 | |||
47 | if (video.isOwned()) await sendCreateViewToVideoFollowers(account, video, undefined) | ||
48 | } | ||
49 | |||
33 | function processCreateVideoChannel (account: AccountInstance, videoChannelToCreateData: VideoChannelObject) { | 50 | function processCreateVideoChannel (account: AccountInstance, videoChannelToCreateData: VideoChannelObject) { |
34 | const options = { | 51 | const options = { |
35 | arguments: [ account, videoChannelToCreateData ], | 52 | arguments: [ account, videoChannelToCreateData ], |