[COMPONENT][Posting][Notification] Move group inbox message creation to Notification component

This commit is contained in:
Hugo Sales 2022-01-01 09:34:31 +00:00
parent f346cd8167
commit 1a99762699
No known key found for this signature in database
GPG Key ID: 7D0C7EAFC9D835A0
2 changed files with 7 additions and 15 deletions

View File

@ -32,6 +32,7 @@ use App\Entity\Activity;
use App\Entity\Actor;
use App\Entity\LocalUser;
use Component\FreeNetwork\FreeNetwork;
use Component\Group\Entity\GroupInbox;
use Component\Notification\Controller\Feed;
class Notification extends Component
@ -76,6 +77,10 @@ class Notification extends Component
if ($target->getIsLocal()) {
if ($target->isGroup()) {
// FIXME: Make sure we check (for both local and remote) users are in the groups they send to!
DB::persist(GroupInbox::create([
'group_id' => $target->getId(),
'activity_id' => $activity->getId(),
]));
} else {
if ($target->hasBlocked($activity->getActor())) {
Log::info("Not saving reply to actor {$target->getId()} from sender {$sender->getId()} because of a block.");

View File

@ -46,7 +46,6 @@ use App\Util\Formatting;
use Component\Attachment\Entity\ActorToAttachment;
use Component\Attachment\Entity\AttachmentToNote;
use Component\Conversation\Conversation;
use Component\Group\Entity\GroupInbox;
use Component\Group\Entity\LocalGroup;
use Component\Language\Entity\Language;
use Functional as F;
@ -267,24 +266,12 @@ class Posting extends Component
}
}
$mentioned = [];
foreach (F\unique(F\flat_map($mentions, fn (array $m) => $m['mentioned'] ?? []), fn (Actor|null $a) => $a?->getId()) as $m) {
if (!\is_null($m)) {
$mentioned[] = $m->getId();
if ($m->isGroup()) {
DB::persist(GroupInbox::create([
'group_id' => $m->getId(),
'activity_id' => $activity->getId(),
]));
}
}
}
$mention_ids = F\unique(F\flat_map($mentions, fn (array $m) => F\map($m['mentioned'] ?? [], fn (Actor $a) => $a->getId())));
DB::flush();
if ($notify) {
Event::handle('NewNotification', [$actor, $activity, ['object' => $mentioned], _m('{nickname} created a note {note_id}.', ['nickname' => $actor->getNickname(), 'note_id' => $activity->getObjectId()])]);
Event::handle('NewNotification', [$actor, $activity, ['object' => $mention_ids], _m('{nickname} created a note {note_id}.', ['nickname' => $actor->getNickname(), 'note_id' => $activity->getObjectId()])]);
}
return $note;