Fix display of likes

master
Bob Mottram 2019-08-30 21:48:52 +01:00
parent 05b4827cfb
commit ab9b42c211
2 changed files with 17 additions and 9 deletions

23
like.py
View File

@ -64,21 +64,28 @@ def undoLikesCollectionEntry(postFilename: str,objectUrl: str,actor: str,debug:
def likedByPerson(postJsonObject: {}, nickname: str,domain: str) -> bool: def likedByPerson(postJsonObject: {}, nickname: str,domain: str) -> bool:
"""Returns True if the given post is liked by the given person """Returns True if the given post is liked by the given person
""" """
if not postJsonObject.get('object'): if noOfLikes(postJsonObject)==0:
return False return False
if not isinstance(postJsonObject['object'], dict):
return False
if not postJsonObject['object'].get('likes'):
return False
if not postJsonObject['object']['likes'].get('items'):
postJsonObject['object']['likes']['items']=[]
postJsonObject['object']['likes']['totalItems']=0
actorMatch=domain+'/users/'+nickname actorMatch=domain+'/users/'+nickname
for item in postJsonObject['object']['likes']['items']: for item in postJsonObject['object']['likes']['items']:
if item['actor'].endswith(actorMatch): if item['actor'].endswith(actorMatch):
return True return True
return False return False
def noOfLikes(postJsonObject: {}) -> int:
"""Returns the number of likes ona given post
"""
if not postJsonObject.get('object'):
return 0
if not isinstance(postJsonObject['object'], dict):
return 0
if not postJsonObject['object'].get('likes'):
return 0
if not postJsonObject['object']['likes'].get('items'):
postJsonObject['object']['likes']['items']=[]
postJsonObject['object']['likes']['totalItems']=0
return len(postJsonObject['object']['likes']['items'])
def updateLikesCollection(postFilename: str,objectUrl: str, actor: str,debug: bool) -> None: def updateLikesCollection(postFilename: str,objectUrl: str, actor: str,debug: bool) -> None:
"""Updates the likes collection within a post """Updates the likes collection within a post
""" """

View File

@ -33,6 +33,7 @@ from posts import outboxMessageCreateWrap
from session import getJson from session import getJson
from auth import createPassword from auth import createPassword
from like import likedByPerson from like import likedByPerson
from like import noOfLikes
from announce import announcedByPerson from announce import announcedByPerson
from blocking import isBlocked from blocking import isBlocked
from content import getMentionsFromHtml from content import getMentionsFromHtml
@ -1549,7 +1550,7 @@ def individualPostAsHtml(baseDir: str, \
likeIcon='like_inactive.png' likeIcon='like_inactive.png'
likeLink='like' likeLink='like'
likeTitle='Like this post' likeTitle='Like this post'
if likedByPerson(postJsonObject,nickname,fullDomain): if noOfLikes(postJsonObject)>0:
likeIcon='like.png' likeIcon='like.png'
likeLink='unlike' likeLink='unlike'
likeTitle='Undo the like of this post' likeTitle='Undo the like of this post'