[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
Signed by: someonewithpc
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\Actor;
use App\Entity\LocalUser; use App\Entity\LocalUser;
use Component\FreeNetwork\FreeNetwork; use Component\FreeNetwork\FreeNetwork;
use Component\Group\Entity\GroupInbox;
use Component\Notification\Controller\Feed; use Component\Notification\Controller\Feed;
class Notification extends Component class Notification extends Component
@ -76,6 +77,10 @@ class Notification extends Component
if ($target->getIsLocal()) { if ($target->getIsLocal()) {
if ($target->isGroup()) { if ($target->isGroup()) {
// FIXME: Make sure we check (for both local and remote) users are in the groups they send to! // 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 { } else {
if ($target->hasBlocked($activity->getActor())) { if ($target->hasBlocked($activity->getActor())) {
Log::info("Not saving reply to actor {$target->getId()} from sender {$sender->getId()} because of a block."); 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\ActorToAttachment;
use Component\Attachment\Entity\AttachmentToNote; use Component\Attachment\Entity\AttachmentToNote;
use Component\Conversation\Conversation; use Component\Conversation\Conversation;
use Component\Group\Entity\GroupInbox;
use Component\Group\Entity\LocalGroup; use Component\Group\Entity\LocalGroup;
use Component\Language\Entity\Language; use Component\Language\Entity\Language;
use Functional as F; use Functional as F;
@ -267,24 +266,12 @@ class Posting extends Component
} }
} }
$mentioned = []; $mention_ids = F\unique(F\flat_map($mentions, fn (array $m) => F\map($m['mentioned'] ?? [], fn (Actor $a) => $a->getId())));
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(),
]));
}
}
}
DB::flush(); DB::flush();
if ($notify) { 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; return $note;