|
|
@ -3,6 +3,7 @@
|
|
|
|
namespace App\Jobs\StatusPipeline;
|
|
|
|
namespace App\Jobs\StatusPipeline;
|
|
|
|
|
|
|
|
|
|
|
|
use Cache, Log;
|
|
|
|
use Cache, Log;
|
|
|
|
|
|
|
|
use App\Profile;
|
|
|
|
use App\Status;
|
|
|
|
use App\Status;
|
|
|
|
use Illuminate\Bus\Queueable;
|
|
|
|
use Illuminate\Bus\Queueable;
|
|
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
|
@ -52,12 +53,36 @@ class StatusActivityPubDeliver implements ShouldQueue
|
|
|
|
$status = $this->status;
|
|
|
|
$status = $this->status;
|
|
|
|
$profile = $status->profile;
|
|
|
|
$profile = $status->profile;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ignore group posts
|
|
|
|
|
|
|
|
// if($status->group_id != null) {
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
if($status->local == false || $status->url || $status->uri) {
|
|
|
|
if($status->local == false || $status->url || $status->uri) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$audience = $status->profile->getAudienceInbox();
|
|
|
|
$audience = $status->profile->getAudienceInbox();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$parentInbox = [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$mentions = $status->mentions
|
|
|
|
|
|
|
|
->filter(function($f) { return $f->domain !== null;})
|
|
|
|
|
|
|
|
->values()
|
|
|
|
|
|
|
|
->map(function($m) { return $m->sharedInbox ?? $m->inbox_url; })
|
|
|
|
|
|
|
|
->toArray();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($status->in_reply_to_profile_id) {
|
|
|
|
|
|
|
|
$parent = Profile::find($status->in_reply_to_profile_id);
|
|
|
|
|
|
|
|
if($parent && $parent->domain !== null) {
|
|
|
|
|
|
|
|
$parentInbox = [
|
|
|
|
|
|
|
|
$parent->sharedInbox ?? $parent->inbox_url
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$audience = array_values(array_unique(array_merge($audience, $mentions, $parentInbox)));
|
|
|
|
|
|
|
|
|
|
|
|
if(empty($audience) || !in_array($status->scope, ['public', 'unlisted', 'private'])) {
|
|
|
|
if(empty($audience) || !in_array($status->scope, ['public', 'unlisted', 'private'])) {
|
|
|
|
// Return on profiles with no remote followers
|
|
|
|
// Return on profiles with no remote followers
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|