]> git.mxchange.org Git - friendica.git/commitdiff
Improve the inbox performance
authorMichael <heluecht@pirati.ca>
Sun, 9 Jun 2024 13:37:43 +0000 (13:37 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 9 Jun 2024 13:37:43 +0000 (13:37 +0000)
src/Model/APContact.php
src/Protocol/ActivityPub/Receiver.php

index 618304605da7dde5d0c04b311ba481c74d865eb1..714e229c4d4fa30fa42a113132ad11c9bf705e2a 100644 (file)
@@ -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) {
index 2dd6a7691340a9d30426749d9d792f996327e4c3..f23bcc4e73e2c39dc76448e2be6b5ee95cbce65c 100644 (file)
@@ -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]);