diff --git a/src/Model/APContact.php b/src/Model/APContact.php index 618304605d..714e229c4d 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -287,6 +287,7 @@ class APContact } elseif ($apcontact['type'] == 'Tombstone') { // The "inbox" field must have a content $apcontact['inbox'] = ''; + $apcontact['addr'] = ''; } // Quit if this doesn't seem to be an account at all @@ -294,7 +295,7 @@ class APContact return $fetched_contact; } - if (empty($apcontact['addr'])) { + if (empty($apcontact['addr']) && ($apcontact['type'] != 'Tombstone')) { try { $apcontact['addr'] = $apcontact['nick'] . '@' . (new Uri($apcontact['url']))->getAuthority(); } catch (\Throwable $e) { diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index 2dd6a76913..f23bcc4e73 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -277,12 +277,15 @@ class Receiver } } - if (Post::exists(['uri' => $object_id, 'gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT]])) { + $type = JsonLD::fetchElement($activity, '@type'); + + // Several activities are only done on content types, so we can assume "Note" here. + if (Post::exists(['uri' => $object_id, 'gravity' => [Item::GRAVITY_PARENT, Item::GRAVITY_COMMENT]]) || (in_array($type, ['as:Like', 'as:Dislike', 'litepub:EmojiReact', 'as:Announce', 'as:View']))) { // We just assume "note" since it doesn't make a difference for the further processing return 'as:Note'; } - $profile = APContact::getByURL($object_id); + $profile = APContact::getByURL($object_id, false); if (!empty($profile['type'])) { APContact::unmarkForArchival($profile); return 'as:' . $profile['type']; @@ -1183,9 +1186,6 @@ class Receiver $profile = APContact::getByURL($actor); $followers = $profile['followers'] ?? ''; $isGroup = ($profile['type'] ?? '') == 'Group'; - if ($push) { - Contact::updateByUrlIfNeeded($actor); - } Logger::info('Got actor and followers', ['actor' => $actor, 'followers' => $followers]); } else { Logger::info('Empty actor', ['activity' => $activity]);