From 8edd829436cbc4996cd252eef0c2a17f426ded7b Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 18 Jun 2021 02:55:42 -0600 Subject: [PATCH 1/3] Update AP Helpers, generate notification for remote replies --- .../StatusPipeline/StatusReplyPipeline.php | 89 +++++++++++++++++++ app/Util/ActivityPub/Helpers.php | 3 + 2 files changed, 92 insertions(+) create mode 100644 app/Jobs/StatusPipeline/StatusReplyPipeline.php diff --git a/app/Jobs/StatusPipeline/StatusReplyPipeline.php b/app/Jobs/StatusPipeline/StatusReplyPipeline.php new file mode 100644 index 000000000..438d78eba --- /dev/null +++ b/app/Jobs/StatusPipeline/StatusReplyPipeline.php @@ -0,0 +1,89 @@ +status = $status; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $status = $this->status; + $actor = $status->profile; + $reply = Status::find($status->in_reply_to_id); + + if(!$actor || !$reply) { + return 1; + } + + $target = $reply->profile; + + $exists = Notification::whereProfileId($target->id) + ->whereActorId($actor->id) + ->whereIn('action', ['mention', 'comment']) + ->whereItemId($status->id) + ->whereItemType('App\Status') + ->count(); + + if ($actor->id === $target || $exists !== 0) { + return 1; + } + + DB::transaction(function() use($target, $actor, $status) { + $notification = new Notification(); + $notification->profile_id = $target->id; + $notification->actor_id = $actor->id; + $notification->action = 'comment'; + $notification->message = $status->replyToText(); + $notification->rendered = $status->replyToHtml(); + $notification->item_id = $status->id; + $notification->item_type = "App\Status"; + $notification->save(); + + NotificationService::setNotification($notification); + NotificationService::set($notification->profile_id, $notification->id); + }); + + return 1; + } + +} diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php index 34bb889c6..58876bc2c 100644 --- a/app/Util/ActivityPub/Helpers.php +++ b/app/Util/ActivityPub/Helpers.php @@ -22,6 +22,7 @@ use App\Jobs\AvatarPipeline\CreateAvatar; use App\Jobs\RemoteFollowPipeline\RemoteFollowImportRecent; use App\Jobs\ImageOptimizePipeline\{ImageOptimize,ImageThumbnail}; use App\Jobs\StatusPipeline\NewStatusPipeline; +use App\Jobs\StatusPipeline\StatusReplyPipeline; use App\Util\ActivityPub\HttpSignature; use Illuminate\Support\Str; use App\Services\ActivityPubFetchService; @@ -397,6 +398,8 @@ class Helpers { $status->save(); if($reply_to == null) { self::importNoteAttachment($res, $status); + } else { + StatusReplyPipeline::dispatch($status); } return $status; }); From c8c6b983807c6d02bb188961b90c22655e75eebb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 18 Jun 2021 02:57:08 -0600 Subject: [PATCH 2/3] Update like api, store status_profile_id and is_comment --- app/Http/Controllers/Api/ApiV1Controller.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 4e7ad2bb8..526fa7a31 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -817,6 +817,9 @@ class ApiV1Controller extends Controller ]); if($like->wasRecentlyCreated == true) { + $like->status_profile_id = $status->profile_id; + $like->is_comment = !empty($status->in_reply_to_id); + $like->save(); $status->likes_count = $status->likes()->count(); $status->save(); LikePipeline::dispatch($like); From 27fbe884385f2651dd1e9a601a62ec2b42892f67 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 18 Jun 2021 02:58:03 -0600 Subject: [PATCH 3/3] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fc890967..96aff8dc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ - Updated Profile component, fix remote urls. ([6e56dbed](https://github.com/pixelfed/pixelfed/commit/6e56dbed)) - Updated verify email screen, add contact admin link. ([f37952d6](https://github.com/pixelfed/pixelfed/commit/f37952d6)) - Updated RemoteProfile component, implement pagination. ([02b04a4b](https://github.com/pixelfed/pixelfed/commit/02b04a4b)) +- Updated AP Helpers, generate notification for remote replies. ([8edd8294](https://github.com/pixelfed/pixelfed/commit/8edd8294)) +- Updated like api, store status_profile_id and is_comment. ([c8c6b983](https://github.com/pixelfed/pixelfed/commit/c8c6b983)) - ([](https://github.com/pixelfed/pixelfed/commit/)) ## [v0.11.0 (2021-06-01)](https://github.com/pixelfed/pixelfed/compare/v0.10.10...v0.11.0)