From 8bae4c7e2d6b2801a9baa110f3997c8a71136c32 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 19 May 2021 19:58:27 +0100 Subject: [PATCH 1/4] Remove from memory cache first --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index ecba52039..f4034e476 100644 --- a/utils.py +++ b/utils.py @@ -1895,13 +1895,13 @@ def updateLikesCollection(recentPostsCache: {}, return # remove any cached version of this post so that the # like icon is changed + removePostFromCache(postJsonObject, recentPostsCache) nickname = getNicknameFromActor(actor) cachedPostFilename = getCachedPostFilename(baseDir, nickname, domain, postJsonObject) if cachedPostFilename: if os.path.isfile(cachedPostFilename): os.remove(cachedPostFilename) - removePostFromCache(postJsonObject, recentPostsCache) if not postJsonObject.get('object'): if debug: From ede2162d7cb1529822a90c9a46a7198b6771b7ad Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 19 May 2021 20:21:27 +0100 Subject: [PATCH 2/4] Tidying --- inbox.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/inbox.py b/inbox.py index 825e06df3..38ad485bf 100644 --- a/inbox.py +++ b/inbox.py @@ -991,12 +991,12 @@ def _receiveLike(recentPostsCache: {}, # if this post in the outbox of the person? handleName = handle.split('@')[0] handleDom = handle.split('@')[1] - postFilename = locatePost(baseDir, handleName, handleDom, - messageJson['object']) + postLikedId = messageJson['object'] + postFilename = locatePost(baseDir, handleName, handleDom, postLikedId) if not postFilename: if debug: print('DEBUG: post not found in inbox or outbox') - print(messageJson['object']) + print(postLikedId) return True if debug: print('DEBUG: liked post found in inbox') @@ -1005,13 +1005,12 @@ def _receiveLike(recentPostsCache: {}, handleDom = handle.split('@')[1] if not _alreadyLiked(baseDir, handleName, handleDom, - messageJson['object'], + postLikedId, messageJson['actor']): _likeNotify(baseDir, domain, onionDomain, handle, - messageJson['actor'], messageJson['object']) + messageJson['actor'], postLikedId) updateLikesCollection(recentPostsCache, baseDir, postFilename, - messageJson['object'], - messageJson['actor'], domain, debug) + postLikedId, messageJson['actor'], domain, debug) return True From bbde34144f0dce3f08354bd51f14efe1241c0d4b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 19 May 2021 20:35:07 +0100 Subject: [PATCH 3/4] Clearing cache when new like is received --- daemon.py | 3 ++- inbox.py | 3 ++- like.py | 6 ++++-- utils.py | 5 ++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/daemon.py b/daemon.py index b3c939fcc..fb9f1ba8a 100644 --- a/daemon.py +++ b/daemon.py @@ -6721,7 +6721,8 @@ class PubServer(BaseHTTPRequestHandler): updateLikesCollection(self.server.recentPostsCache, baseDir, likedPostFilename, likeUrl, - likeActor, domain, + likeActor, + self.postToNickname, domain, debug) # clear the icon from the cache so that it gets updated if self.server.iconsCache.get('like.png'): diff --git a/inbox.py b/inbox.py index 38ad485bf..31247e002 100644 --- a/inbox.py +++ b/inbox.py @@ -1010,7 +1010,8 @@ def _receiveLike(recentPostsCache: {}, _likeNotify(baseDir, domain, onionDomain, handle, messageJson['actor'], postLikedId) updateLikesCollection(recentPostsCache, baseDir, postFilename, - postLikedId, messageJson['actor'], domain, debug) + postLikedId, messageJson['actor'], + handleName, domain, debug) return True diff --git a/like.py b/like.py index f009cbd20..5c7f3d9df 100644 --- a/like.py +++ b/like.py @@ -103,7 +103,8 @@ def _like(recentPostsCache: {}, updateLikesCollection(recentPostsCache, baseDir, postFilename, objectUrl, - newLikeJson['actor'], domain, debug) + newLikeJson['actor'], + nickname, domain, debug) sendSignedJson(newLikeJson, session, baseDir, nickname, domain, port, @@ -334,7 +335,8 @@ def outboxLike(recentPostsCache: {}, return True updateLikesCollection(recentPostsCache, baseDir, postFilename, messageId, - messageJson['actor'], domain, debug) + messageJson['actor'], + nickname, domain, debug) if debug: print('DEBUG: post liked via c2s - ' + postFilename) diff --git a/utils.py b/utils.py index f4034e476..4f4d77dc5 100644 --- a/utils.py +++ b/utils.py @@ -1886,8 +1886,8 @@ def undoLikesCollectionEntry(recentPostsCache: {}, def updateLikesCollection(recentPostsCache: {}, baseDir: str, postFilename: str, - objectUrl: str, - actor: str, domain: str, debug: bool) -> None: + objectUrl: str, actor: str, + nickname: str, domain: str, debug: bool) -> None: """Updates the likes collection within a post """ postJsonObject = loadJson(postFilename) @@ -1896,7 +1896,6 @@ def updateLikesCollection(recentPostsCache: {}, # remove any cached version of this post so that the # like icon is changed removePostFromCache(postJsonObject, recentPostsCache) - nickname = getNicknameFromActor(actor) cachedPostFilename = getCachedPostFilename(baseDir, nickname, domain, postJsonObject) if cachedPostFilename: From 3b2237dc440ad439f0cad55fb5de8f6bce2c1ced Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 19 May 2021 20:42:45 +0100 Subject: [PATCH 4/4] Clearing cache when new announce is received --- announce.py | 3 ++- inbox.py | 2 +- utils.py | 4 ++-- webapp_post.py | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/announce.py b/announce.py index 238f25659..8c8486a98 100644 --- a/announce.py +++ b/announce.py @@ -48,7 +48,8 @@ def outboxAnnounce(recentPostsCache: {}, messageJson['object']) if postFilename: updateAnnounceCollection(recentPostsCache, baseDir, postFilename, - messageJson['actor'], domain, debug) + messageJson['actor'], + nickname, domain, debug) return True elif messageJson['type'] == 'Undo': if not isinstance(messageJson['object'], dict): diff --git a/inbox.py b/inbox.py index 31247e002..38978dd4e 100644 --- a/inbox.py +++ b/inbox.py @@ -1398,7 +1398,7 @@ def _receiveAnnounce(recentPostsCache: {}, print(messageJson['object']) return True updateAnnounceCollection(recentPostsCache, baseDir, postFilename, - messageJson['actor'], domain, debug) + messageJson['actor'], nickname, domain, debug) if debug: print('DEBUG: Downloading announce post ' + messageJson['actor'] + ' -> ' + messageJson['object']) diff --git a/utils.py b/utils.py index 4f4d77dc5..3a7f8a20c 100644 --- a/utils.py +++ b/utils.py @@ -2010,7 +2010,8 @@ def undoAnnounceCollectionEntry(recentPostsCache: {}, def updateAnnounceCollection(recentPostsCache: {}, baseDir: str, postFilename: str, - actor: str, domain: str, debug: bool) -> None: + actor: str, + nickname: str, domain: str, debug: bool) -> None: """Updates the announcements collection within a post Confusingly this is known as "shares", but isn't the same as shared items within shares.py @@ -2021,7 +2022,6 @@ def updateAnnounceCollection(recentPostsCache: {}, return # remove any cached version of this announce so that the announce # icon is changed - nickname = getNicknameFromActor(actor) cachedPostFilename = getCachedPostFilename(baseDir, nickname, domain, postJsonObject) if cachedPostFilename: diff --git a/webapp_post.py b/webapp_post.py index 67b843669..67670826e 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -1320,7 +1320,7 @@ def individualPostAsHtml(allowDownloads: bool, if announceFilename: updateAnnounceCollection(recentPostsCache, baseDir, announceFilename, - postActor, domainFull, False) + postActor, nickname, domainFull, False) # create a file for use by text-to-speech if isRecentPost(postJsonObject):