Prechádzať zdrojové kódy

Update RemoteStatusDelete, fix decrement logic

Daniel Supernault 1 týždeň pred
rodič
commit
4ab85248e9
1 zmenil súbory, kde vykonal 45 pridanie a 51 odobranie
  1. 45 51
      app/Jobs/StatusPipeline/RemoteStatusDelete.php

+ 45 - 51
app/Jobs/StatusPipeline/RemoteStatusDelete.php

@@ -2,47 +2,35 @@
 
 namespace App\Jobs\StatusPipeline;
 
-use DB, Cache, Storage;
-use App\{
-    AccountInterstitial,
-    Bookmark,
-    CollectionItem,
-    DirectMessage,
-    Like,
-    Media,
-    MediaTag,
-    Mention,
-    Notification,
-    Report,
-    Status,
-    StatusArchived,
-    StatusHashtag,
-    StatusView
-};
+use App\AccountInterstitial;
+use App\Bookmark;
+use App\CollectionItem;
+use App\DirectMessage;
+use App\Jobs\MediaPipeline\MediaDeletePipeline;
+use App\Like;
+use App\Media;
+use App\MediaTag;
+use App\Mention;
+use App\Notification;
+use App\Report;
+use App\Services\Account\AccountStatService;
+use App\Services\AccountService;
+use App\Services\CollectionService;
+use App\Services\NotificationService;
+use App\Services\StatusService;
+use App\Status;
+use App\StatusArchived;
+use App\StatusHashtag;
+use App\StatusView;
 use Illuminate\Bus\Queueable;
-use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing;
+use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Foundation\Bus\Dispatchable;
 use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
 use Illuminate\Queue\Middleware\WithoutOverlapping;
-use League\Fractal;
-use Illuminate\Support\Str;
-use League\Fractal\Serializer\ArraySerializer;
-use App\Transformer\ActivityPub\Verb\DeleteNote;
-use App\Util\ActivityPub\Helpers;
-use GuzzleHttp\Pool;
-use GuzzleHttp\Client;
-use GuzzleHttp\Promise;
-use App\Util\ActivityPub\HttpSignature;
-use App\Services\AccountService;
-use App\Services\CollectionService;
-use App\Services\StatusService;
-use App\Jobs\MediaPipeline\MediaDeletePipeline;
-use App\Services\NotificationService;
-use App\Services\Account\AccountStatService;
+use Illuminate\Queue\SerializesModels;
 
-class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
+class RemoteStatusDelete implements ShouldBeUniqueUntilProcessing, ShouldQueue
 {
     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
@@ -56,8 +44,11 @@ class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
     public $deleteWhenMissingModels = true;
 
     public $tries = 3;
+
     public $maxExceptions = 3;
+
     public $timeout = 180;
+
     public $failOnTimeout = true;
 
     /**
@@ -72,7 +63,7 @@ class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
      */
     public function uniqueId(): string
     {
-        return 'status:remote:delete:' . $this->status->id;
+        return 'status:remote:delete:'.$this->status->id;
     }
 
     /**
@@ -104,11 +95,12 @@ class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
     {
         $status = $this->status;
 
-        if($status->deleted_at) {
+        if ($status->deleted_at) {
             return;
         }
 
         StatusService::del($status->id, true);
+
         // AccountStatService::decrementPostCount($status->profile_id);
         return $this->unlinkRemoveMedia($status);
     }
@@ -116,11 +108,13 @@ class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
     public function unlinkRemoveMedia($status)
     {
 
-        if($status->in_reply_to_id) {
+        if ($status->in_reply_to_id) {
             $parent = Status::find($status->in_reply_to_id);
-            if($parent) {
-                --$parent->reply_count;
-                $parent->save();
+            if ($parent) {
+                if ($parent->reply_count) {
+                    $parent->reply_count = $parent->reply_count - 1;
+                    $parent->save();
+                }
                 StatusService::del($parent->id);
             }
         }
@@ -132,16 +126,16 @@ class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
         CollectionItem::whereObjectType('App\Status')
             ->whereObjectId($status->id)
             ->get()
-            ->each(function($col) {
+            ->each(function ($col) {
                 CollectionService::removeItem($col->collection_id, $col->object_id);
                 $col->delete();
-        });
+            });
         $dms = DirectMessage::whereStatusId($status->id)->get();
-        foreach($dms as $dm) {
+        foreach ($dms as $dm) {
             $not = Notification::whereItemType('App\DirectMessage')
                 ->whereItemId($dm->id)
                 ->first();
-            if($not) {
+            if ($not) {
                 NotificationService::del($not->profile_id, $not->id);
                 $not->forceDeleteQuietly();
             }
@@ -149,16 +143,16 @@ class RemoteStatusDelete implements ShouldQueue, ShouldBeUniqueUntilProcessing
         }
         Like::whereStatusId($status->id)->forceDelete();
         Media::whereStatusId($status->id)
-        ->get()
-        ->each(function($media) {
-            MediaDeletePipeline::dispatch($media)->onQueue('mmo');
-        });
+            ->get()
+            ->each(function ($media) {
+                MediaDeletePipeline::dispatch($media)->onQueue('mmo');
+            });
         $mediaTags = MediaTag::where('status_id', $status->id)->get();
-        foreach($mediaTags as $mtag) {
+        foreach ($mediaTags as $mtag) {
             $not = Notification::whereItemType('App\MediaTag')
                 ->whereItemId($mtag->id)
                 ->first();
-            if($not) {
+            if ($not) {
                 NotificationService::del($not->profile_id, $not->id);
                 $not->forceDeleteQuietly();
             }