Make replies to non-public posts non-public

main
Bob Mottram 2019-12-10 17:19:53 +00:00
parent f9a511984c
commit 72192282dd
2 changed files with 31 additions and 3 deletions

View File

@ -425,6 +425,17 @@ def noOfActiveAccountsMonthly(baseDir: str,months: int) -> bool:
accountCtr+=1
return accountCtr
def isPublicPostFromUrl(baseDir: str,nickname: str,domain: str,postUrl: str) -> bool:
"""Returns whether the given url is a public post
"""
postFilename=locatePost(baseDir,nickname,domain,postUrl)
if not postFilename:
return False
postJsonObject=loadJson(postFilename,1)
if not postJsonObject:
return False
return isPublicPost(postJsonObject)
def isPublicPost(postJsonObject: {}) -> bool:
"""Returns true if the given post is public
"""

View File

@ -25,6 +25,7 @@ from utils import getDomainFromActor
from utils import locatePost
from utils import noOfAccounts
from utils import isPublicPost
from utils import isPublicPostFromUrl
from utils import getDisplayName
from utils import getCachedPostDirectory
from utils import getCachedPostFilename
@ -934,11 +935,15 @@ def htmlNewPost(mediaInstance: bool,translate: {}, \
baseDir: str,httpPrefix: str, \
path: str,inReplyTo: str, \
mentions: [], \
reportUrl: str,pageNumber: int) -> str:
reportUrl: str,pageNumber: int, \
nickname: str,domain: str) -> str:
"""New post screen
"""
iconsDir=getIconsDir(baseDir)
replyStr=''
showPublicOnDropdown=True
if not path.endswith('/newshare'):
if not path.endswith('/newreport'):
if not inReplyTo:
@ -946,6 +951,17 @@ def htmlNewPost(mediaInstance: bool,translate: {}, \
else:
newPostText='<p class="new-post-text">'+translate['Write your reply to']+' <a href="'+inReplyTo+'">'+translate['this post']+'</a></p>'
replyStr='<input type="hidden" name="replyTo" value="'+inReplyTo+'">'
# if replying to a non-public post then also make this post non-public
if not isPublicPostFromUrl(baseDir,nickname,domain,inReplyTo):
newPostPath=path
if '?' in newPostPath:
newPostPath=newPostPath.split('?')[0]
if newPostPath.endswith('/newpost'):
path=path.replace('/newpost','/newfollowers')
elif newPostPath.endswith('/newunlisted'):
path=path.replace('/newunlisted','/newfollowers')
showPublicOnDropdown=False
else:
newPostText= \
'<p class="new-post-text">'+translate['Write your report below.']+'</p>'
@ -1106,6 +1122,7 @@ def htmlNewPost(mediaInstance: bool,translate: {}, \
dropDownContent=''
if not reportUrl:
dropDownContent+=' <div id="myDropdown" class="dropdown-content">'
if showPublicOnDropdown:
dropDownContent+=' <a href="'+pathBase+dropdownNewPostSuffix+'"><img loading="lazy" alt="" title="" src="/'+iconsDir+'/scope_public.png"/><b>'+translate['Public']+'</b><br>'+translate['Visible to anyone']+'</a>'
dropDownContent+=' <a href="'+pathBase+dropdownUnlistedSuffix+'"><img loading="lazy" alt="" title="" src="/'+iconsDir+'/scope_unlisted.png"/><b>'+translate['Unlisted']+'</b><br>'+translate['Not on public timeline']+'</a>'
dropDownContent+=' <a href="'+pathBase+dropdownFollowersSuffix+'"><img loading="lazy" alt="" title="" src="/'+iconsDir+'/scope_followers.png"/><b>'+translate['Followers']+'</b><br>'+translate['Only to followers']+'</a>'