]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/activitypub/process/process-create.ts
Fix user notifications on new follow
[github/Chocobozzz/PeerTube.git] / server / lib / activitypub / process / process-create.ts
index e4c173e9981c6c371fc8e86eaf45111830fea749..a979771b678a1bfbb54afb36e9eb4cf656e8d26e 100644 (file)
@@ -9,35 +9,25 @@ import { getOrCreateVideoAndAccountAndChannel } from '../videos'
 import { forwardVideoRelatedActivity } from '../send/utils'
 import { createOrUpdateCacheFile } from '../cache-file'
 import { Notifier } from '../../notifier'
-import { processViewActivity } from './process-view'
-import { processDislikeActivity } from './process-dislike'
-import { processFlagActivity } from './process-flag'
 import { PlaylistObject } from '../../../../shared/models/activitypub/objects/playlist-object'
 import { createOrUpdateVideoPlaylist } from '../playlist'
 import { VideoModel } from '../../../models/video/video'
+import { APProcessorOptions } from '../../../typings/activitypub-processor.model'
 
-async function processCreateActivity (activity: ActivityCreate, byActor: ActorModel) {
+async function processCreateActivity (options: APProcessorOptions<ActivityCreate>) {
+  const { activity, byActor } = options
+
+  // Only notify if it is not from a fetcher job
+  const notify = options.fromFetch !== true
   const activityObject = activity.object
   const activityType = activityObject.type
 
-  if (activityType === 'View') {
-    return processViewActivity(activity, byActor)
-  }
-
-  if (activityType === 'Dislike') {
-    return retryTransactionWrapper(processDislikeActivity, activity, byActor)
-  }
-
-  if (activityType === 'Flag') {
-    return retryTransactionWrapper(processFlagActivity, activity, byActor)
-  }
-
   if (activityType === 'Video') {
-    return processCreateVideo(activity)
+    return processCreateVideo(activity, notify)
   }
 
   if (activityType === 'Note') {
-    return retryTransactionWrapper(processCreateVideoComment, activity, byActor)
+    return retryTransactionWrapper(processCreateVideoComment, activity, byActor, notify)
   }
 
   if (activityType === 'CacheFile') {
@@ -60,12 +50,12 @@ export {
 
 // ---------------------------------------------------------------------------
 
-async function processCreateVideo (activity: ActivityCreate) {
+async function processCreateVideo (activity: ActivityCreate, notify: boolean) {
   const videoToCreateData = activity.object as VideoTorrentObject
 
   const { video, created } = await getOrCreateVideoAndAccountAndChannel({ videoObject: videoToCreateData })
 
-  if (created) Notifier.Instance.notifyOnNewVideo(video)
+  if (created && notify) Notifier.Instance.notifyOnNewVideoIfNeeded(video)
 
   return video
 }
@@ -86,7 +76,7 @@ async function processCreateCacheFile (activity: ActivityCreate, byActor: ActorM
   }
 }
 
-async function processCreateVideoComment (activity: ActivityCreate, byActor: ActorModel) {
+async function processCreateVideoComment (activity: ActivityCreate, byActor: ActorModel, notify: boolean) {
   const commentObject = activity.object as VideoCommentObject
   const byAccount = byActor.Account
 
@@ -102,6 +92,7 @@ async function processCreateVideoComment (activity: ActivityCreate, byActor: Act
       commentObject.inReplyTo,
       { err }
     )
+    return
   }
 
   const { comment, created } = await addVideoComment(video, commentObject.id)
@@ -113,7 +104,7 @@ async function processCreateVideoComment (activity: ActivityCreate, byActor: Act
     await forwardVideoRelatedActivity(activity, undefined, exceptions, video)
   }
 
-  if (created === true) Notifier.Instance.notifyOnNewComment(comment)
+  if (created && notify) Notifier.Instance.notifyOnNewComment(comment)
 }
 
 async function processCreatePlaylist (activity: ActivityCreate, byActor: ActorModel) {