diff --git a/daemon.py b/daemon.py index 58e5d7ce9..9df5ab177 100644 --- a/daemon.py +++ b/daemon.py @@ -7368,7 +7368,7 @@ class PubServer(BaseHTTPRequestHandler): actorLiked = actorLiked.split('?')[0] # if this is an announce then send the like to the original post - origActor, origPostUrl = \ + origActor, origPostUrl, origFilename = \ getOriginalPostFromAnnounceUrl(likeUrl, baseDir, self.postToNickname, domain) likeUrl2 = likeUrl @@ -7394,25 +7394,13 @@ class PubServer(BaseHTTPRequestHandler): if likedPostFilename: recentPostsCache = self.server.recentPostsCache likedPostJson = loadJson(likedPostFilename, 0, 1) - if likedPostJson: - if likedPostJson.get('type'): - if likedPostJson['type'] == 'Announce' and \ - likedPostJson.get('object'): - if isinstance(likedPostJson['object'], str): - announceLikeUrl = likedPostJson['object'] - announceLikedFilename = \ - locatePost(baseDir, self.postToNickname, - domain, announceLikeUrl) - if announceLikedFilename: - updateLikesCollection(recentPostsCache, - baseDir, - likedPostFilename, - likeUrl, - likeActor, - self.postToNickname, - domain, debug) - likeUrl = announceLikeUrl - likedPostFilename = announceLikedFilename + if origFilename and origPostUrl: + updateLikesCollection(recentPostsCache, + baseDir, likedPostFilename, + likeUrl, likeActor, self.postToNickname, + domain, debug) + likeUrl = origPostUrl + likedPostFilename = origFilename if debug: print('Updating likes for ' + likedPostFilename) updateLikesCollection(recentPostsCache, @@ -7545,7 +7533,7 @@ class PubServer(BaseHTTPRequestHandler): actorLiked = actorLiked.split('?')[0] # if this is an announce then send the like to the original post - origActor, origPostUrl = \ + origActor, origPostUrl, origFilename = \ getOriginalPostFromAnnounceUrl(likeUrl, baseDir, self.postToNickname, domain) likeUrl2 = likeUrl @@ -7574,26 +7562,14 @@ class PubServer(BaseHTTPRequestHandler): self.postToNickname, domain, likeUrl) if likedPostFilename: - likedPostJson = loadJson(likedPostFilename, 0, 1) recentPostsCache = self.server.recentPostsCache - if likedPostJson: - if likedPostJson.get('type'): - if likedPostJson['type'] == 'Announce' and \ - likedPostJson.get('object'): - if isinstance(likedPostJson['object'], str): - announceLikeUrl = likedPostJson['object'] - announceLikedFilename = \ - locatePost(baseDir, self.postToNickname, - domain, announceLikeUrl) - if announceLikedFilename: - undoLikesCollectionEntry(recentPostsCache, - baseDir, - likedPostFilename, - likeUrl, - undoActor, domain, - debug) - likeUrl = announceLikeUrl - likedPostFilename = announceLikedFilename + likedPostJson = loadJson(likedPostFilename, 0, 1) + if origFilename and origPostUrl: + undoLikesCollectionEntry(recentPostsCache, + baseDir, likedPostFilename, + likeUrl, undoActor, domain, debug) + likeUrl = origPostUrl + likedPostFilename = origFilename if debug: print('Removing likes for ' + likedPostFilename) undoLikesCollectionEntry(recentPostsCache, diff --git a/posts.py b/posts.py index bc1ffd49e..988ea791d 100644 --- a/posts.py +++ b/posts.py @@ -5043,24 +5043,25 @@ def editedPostFilename(baseDir: str, nickname: str, domain: str, def getOriginalPostFromAnnounceUrl(announceUrl: str, baseDir: str, - nickname: str, domain: str) -> (str, str): - """From the url of an announce this returns the actor and url - of the original post being announced + nickname: str, + domain: str) -> (str, str, str): + """From the url of an announce this returns the actor, url and + filename (if available) of the original post being announced """ postFilename = locatePost(baseDir, nickname, domain, announceUrl) if not postFilename: - return None, None + return None, None, None announcePostJson = loadJson(postFilename, 0, 1) if not announcePostJson: - return None, None + return None, None, None if not announcePostJson.get('type'): - return None, None + return None, None, None if announcePostJson['type'] != 'Announce': - return None, None + return None, None, None if not announcePostJson.get('object'): - return None, None + return None, None, None if not isinstance(announcePostJson['object'], str): - return None, None + return None, None, None # do we have the original post? origPostId = announcePostJson['object'] origFilename = locatePost(baseDir, nickname, domain, origPostId) @@ -5088,4 +5089,4 @@ def getOriginalPostFromAnnounceUrl(announceUrl: str, baseDir: str, origPostId.split('/' + origNick + '/')[0] + \ '/' + origNick url = origPostId - return actor, url + return actor, url, origFilename