Jelajahi Sumber

Merge pull request #4897 from pixelfed/staging

Staging
daniel 1 tahun lalu
induk
melakukan
111ba70473

+ 2 - 0
CHANGELOG.md

@@ -96,6 +96,8 @@
 - Update AP helpers, more efficently update post count ([7caed381](https://github.com/pixelfed/pixelfed/commit/7caed381))
 - Update AP helpers, refactor post count decrement logic ([b81ae577](https://github.com/pixelfed/pixelfed/commit/b81ae577))
 - Update AP helpers, fix sensitive bug ([00ed330c](https://github.com/pixelfed/pixelfed/commit/00ed330c))
+- Update NotificationEpochUpdatePipeline, use more efficient query ([4d401389](https://github.com/pixelfed/pixelfed/commit/4d401389))
+- Update notification pipelines, fix non-local saving ([fa97a1f3](https://github.com/pixelfed/pixelfed/commit/fa97a1f3))
 -  ([](https://github.com/pixelfed/pixelfed/commit/))
 
 ## [v0.11.9 (2023-08-21)](https://github.com/pixelfed/pixelfed/compare/v0.11.8...v0.11.9)

+ 15 - 13
app/Jobs/CommentPipeline/CommentPipeline.php

@@ -91,19 +91,21 @@ class CommentPipeline implements ShouldQueue
             return;
         }
 
-        DB::transaction(function() use($target, $actor, $comment) {
-            $notification = new Notification();
-            $notification->profile_id = $target->id;
-            $notification->actor_id = $actor->id;
-            $notification->action = 'comment';
-            $notification->item_id = $comment->id;
-            $notification->item_type = "App\Status";
-            $notification->save();
-
-            NotificationService::setNotification($notification);
-            NotificationService::set($notification->profile_id, $notification->id);
-            StatusService::del($comment->id);
-        });
+        if($target->user_id && $target->domain === null) {
+            DB::transaction(function() use($target, $actor, $comment) {
+                $notification = new Notification();
+                $notification->profile_id = $target->id;
+                $notification->actor_id = $actor->id;
+                $notification->action = 'comment';
+                $notification->item_id = $comment->id;
+                $notification->item_type = "App\Status";
+                $notification->save();
+
+                NotificationService::setNotification($notification);
+                NotificationService::set($notification->profile_id, $notification->id);
+                StatusService::del($comment->id);
+            });
+        }
 
         if($exists = Cache::get('status:replies:all:' . $status->id)) {
         	if($exists && $exists->count() == 3) {

+ 12 - 10
app/Jobs/FollowPipeline/FollowPipeline.php

@@ -72,16 +72,18 @@ class FollowPipeline implements ShouldQueue
         $target->save();
         AccountService::del($target->id);
 
-        try {
-            $notification = new Notification();
-            $notification->profile_id = $target->id;
-            $notification->actor_id = $actor->id;
-            $notification->action = 'follow';
-            $notification->item_id = $target->id;
-            $notification->item_type = "App\Profile";
-            $notification->save();
-        } catch (Exception $e) {
-            Log::error($e);
+        if($target->user_id && $target->domain === null) {
+            try {
+                $notification = new Notification();
+                $notification->profile_id = $target->id;
+                $notification->actor_id = $actor->id;
+                $notification->action = 'follow';
+                $notification->item_id = $target->id;
+                $notification->item_type = "App\Profile";
+                $notification->save();
+            } catch (Exception $e) {
+                Log::error($e);
+            }
         }
     }
 }

+ 6 - 1
app/Jobs/InternalPipeline/NotificationEpochUpdatePipeline.php

@@ -61,7 +61,12 @@ class NotificationEpochUpdatePipeline implements ShouldQueue, ShouldBeUniqueUnti
      */
     public function handle(): void
     {
-        $rec = Notification::where('created_at', '>', now()->subMonths(6))->first();
+        $pid = Cache::get(NotificationService::EPOCH_CACHE_KEY . '6');
+        if($pid && $pid > 1) {
+            $rec = Notification::where('id', '>', $pid)->whereDate('created_at', now()->subMonths(6)->format('Y-m-d'))->first();
+        } else {
+            $rec = Notification::whereDate('created_at', now()->subMonths(6)->format('Y-m-d'))->first();
+        }
         $id = 1;
         if($rec) {
             $id = $rec->id;

+ 12 - 10
app/Jobs/LikePipeline/LikePipeline.php

@@ -79,16 +79,18 @@ class LikePipeline implements ShouldQueue
             return true;
         }
 
-        try {
-            $notification = new Notification();
-            $notification->profile_id = $status->profile_id;
-            $notification->actor_id = $actor->id;
-            $notification->action = 'like';
-            $notification->item_id = $status->id;
-            $notification->item_type = "App\Status";
-            $notification->save();
-
-        } catch (Exception $e) {
+        if($status->uri === null && $status->object_url === null && $status->url === null) {
+            try {
+                $notification = new Notification();
+                $notification->profile_id = $status->profile_id;
+                $notification->actor_id = $actor->id;
+                $notification->action = 'like';
+                $notification->item_id = $status->id;
+                $notification->item_type = "App\Status";
+                $notification->save();
+
+            } catch (Exception $e) {
+            }
         }
     }
 

+ 14 - 12
app/Jobs/StatusPipeline/StatusReplyPipeline.php

@@ -87,18 +87,20 @@ class StatusReplyPipeline implements ShouldQueue
         Cache::forget('status:replies:all:' . $reply->id);
         Cache::forget('status:replies:all:' . $status->id);
 
-        DB::transaction(function() use($target, $actor, $status) {
-            $notification = new Notification();
-            $notification->profile_id = $target->id;
-            $notification->actor_id = $actor->id;
-            $notification->action = 'comment';
-            $notification->item_id = $status->id;
-            $notification->item_type = "App\Status";
-            $notification->save();
-
-            NotificationService::setNotification($notification);
-            NotificationService::set($notification->profile_id, $notification->id);
-        });
+        if($target->user_id && $target->domain === null) {
+            DB::transaction(function() use($target, $actor, $status) {
+                $notification = new Notification();
+                $notification->profile_id = $target->id;
+                $notification->actor_id = $actor->id;
+                $notification->action = 'comment';
+                $notification->item_id = $status->id;
+                $notification->item_type = "App\Status";
+                $notification->save();
+
+                NotificationService::setNotification($notification);
+                NotificationService::set($notification->profile_id, $notification->id);
+            });
+        }
 
         if($exists = Cache::get('status:replies:all:' . $reply->id)) {
         	if($exists && $exists->count() == 3) {