mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Tidying of reply notifications
							parent
							
								
									6f0a5bf3d5
								
							
						
					
					
						commit
						6f43314d34
					
				
							
								
								
									
										98
									
								
								inbox.py
								
								
								
								
							
							
						
						
									
										98
									
								
								inbox.py
								
								
								
								
							|  | @ -2599,6 +2599,57 @@ def _receiveQuestionVote(baseDir: str, nickname: str, domain: str, | |||
|                           signingPrivateKeyPem) | ||||
| 
 | ||||
| 
 | ||||
| def _createReplyNotificationFile(baseDir: str, nickname: str, domain: str, | ||||
|                                  handle: str, debug: bool, postIsDM: bool, | ||||
|                                  postJsonObject: {}, actor: str, | ||||
|                                  updateIndexList: [], httpPrefix: str, | ||||
|                                  defaultReplyIntervalHours: int) -> bool: | ||||
|     """Generates a file indicating that a new reply has arrived | ||||
|     The file can then be used by other systems to create a notification | ||||
|     xmpp, matrix, email, etc | ||||
|     """ | ||||
|     isReplyToMutedPost = False | ||||
|     if postIsDM: | ||||
|         return isReplyToMutedPost | ||||
|     if not isReply(postJsonObject, actor): | ||||
|         return isReplyToMutedPost | ||||
|     if nickname == 'inbox': | ||||
|         return isReplyToMutedPost | ||||
|     # replies index will be updated | ||||
|     updateIndexList.append('tlreplies') | ||||
| 
 | ||||
|     conversationId = None | ||||
|     if postJsonObject['object'].get('conversation'): | ||||
|         conversationId = postJsonObject['object']['conversation'] | ||||
| 
 | ||||
|     if not postJsonObject['object'].get('inReplyTo'): | ||||
|         return isReplyToMutedPost | ||||
|     inReplyTo = postJsonObject['object']['inReplyTo'] | ||||
|     if not inReplyTo: | ||||
|         return isReplyToMutedPost | ||||
|     if not isinstance(inReplyTo, str): | ||||
|         return isReplyToMutedPost | ||||
|     if not isMuted(baseDir, nickname, domain, inReplyTo, conversationId): | ||||
|         # check if the reply is within the allowed time period | ||||
|         # after publication | ||||
|         replyIntervalHours = \ | ||||
|             getReplyIntervalHours(baseDir, nickname, domain, | ||||
|                                   defaultReplyIntervalHours) | ||||
|         if canReplyTo(baseDir, nickname, domain, inReplyTo, | ||||
|                       replyIntervalHours): | ||||
|             actUrl = localActorUrl(httpPrefix, nickname, domain) | ||||
|             _replyNotify(baseDir, handle, actUrl + '/tlreplies') | ||||
|         else: | ||||
|             if debug: | ||||
|                 print('Reply to ' + inReplyTo + ' is outside of the ' + | ||||
|                       'permitted interval of ' + str(replyIntervalHours) + | ||||
|                       ' hours') | ||||
|             return False | ||||
|     else: | ||||
|         isReplyToMutedPost = True | ||||
|     return isReplyToMutedPost | ||||
| 
 | ||||
| 
 | ||||
| def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int, | ||||
|                        session, keyId: str, handle: str, messageJson: {}, | ||||
|                        baseDir: str, httpPrefix: str, sendThreads: [], | ||||
|  | @ -2870,47 +2921,12 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int, | |||
|             actor = localActorUrl(httpPrefix, nickname, domainFull) | ||||
| 
 | ||||
|             # create a reply notification file if needed | ||||
|             if not postIsDM and isReply(postJsonObject, actor): | ||||
|                 if nickname != 'inbox': | ||||
|                     # replies index will be updated | ||||
|                     updateIndexList.append('tlreplies') | ||||
| 
 | ||||
|                     conversationId = None | ||||
|                     if postJsonObject['object'].get('conversation'): | ||||
|                         conversationId = \ | ||||
|                             postJsonObject['object']['conversation'] | ||||
| 
 | ||||
|                     if postJsonObject['object'].get('inReplyTo'): | ||||
|                         inReplyTo = postJsonObject['object']['inReplyTo'] | ||||
|                         if inReplyTo: | ||||
|                             if isinstance(inReplyTo, str): | ||||
|                                 if not isMuted(baseDir, nickname, domain, | ||||
|                                                inReplyTo, conversationId): | ||||
|                                     # check if the reply is within the allowed | ||||
|                                     # time period after publication | ||||
|                                     hrs = defaultReplyIntervalHours | ||||
|                                     replyIntervalHours = \ | ||||
|                                         getReplyIntervalHours(baseDir, | ||||
|                                                               nickname, | ||||
|                                                               domain, hrs) | ||||
|                                     if canReplyTo(baseDir, nickname, domain, | ||||
|                                                   inReplyTo, | ||||
|                                                   replyIntervalHours): | ||||
|                                         actUrl = \ | ||||
|                                             localActorUrl(httpPrefix, | ||||
|                                                           nickname, domain) | ||||
|                                         _replyNotify(baseDir, handle, | ||||
|                                                      actUrl + '/tlreplies') | ||||
|                                     else: | ||||
|                                         if debug: | ||||
|                                             print('Reply to ' + inReplyTo + | ||||
|                                                   ' is outside of the ' + | ||||
|                                                   'permitted interval of ' + | ||||
|                                                   str(replyIntervalHours) + | ||||
|                                                   ' hours') | ||||
|                                         return False | ||||
|                                 else: | ||||
|                                     isReplyToMutedPost = True | ||||
|             isReplyToMutedPost = \ | ||||
|                 _createReplyNotificationFile(baseDir, nickname, domain, | ||||
|                                              handle, debug, postIsDM, | ||||
|                                              postJsonObject, actor, | ||||
|                                              updateIndexList, httpPrefix, | ||||
|                                              defaultReplyIntervalHours) | ||||
| 
 | ||||
|             if isImageMedia(session, baseDir, httpPrefix, | ||||
|                             nickname, domain, postJsonObject, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue