diff --git a/tildes/tildes/views/api/web/comment.py b/tildes/tildes/views/api/web/comment.py index db33e3b..390ef43 100644 --- a/tildes/tildes/views/api/web/comment.py +++ b/tildes/tildes/views/api/web/comment.py @@ -26,17 +26,20 @@ from tildes.views.decorators import ic_view_config def _increment_topic_comments_seen( - request: Request, - comment: Comment, + request: Request, + comment: Comment, ) -> None: - """If the user has the "track comment visits" feature enabled, we want to + """Increment the number of comments in a topic the user has viewed. + + If the user has the "track comment visits" feature enabled, we want to increment the number of comments they've seen in the thread that the comment came from, so that they don't *both* get a notification as well as have the thread highlight with "(1 new)". This should only happen if their last visit was before the comment was posted, however. Below, this is implemented as a INSERT ... ON CONFLICT DO UPDATE so that it will insert a new topic visit with 1 comment if they didn't previously have one at - all. """ + all. + """ if request.user.track_comment_visits: statement = ( insert(TopicVisit.__table__) @@ -334,15 +337,17 @@ def put_mark_comments_read( request: Request, clear_all_previous: str = 'false' ) -> Response: - """Mark comments read clearing notifications and removing them from topics - 'new' count. if the query param clear_all_previous is 'true' all - notifications prior to the target will be cleared.""" + """Mark comment(s) read clearing notifications. + + comment(s) are removed from unread_notifications and the from topics + 'new' count. If the query param clear_all_previous is 'true' all + notifications prior to the target will be cleared. + """ comment = request.context + response = IC_NOOP if clear_all_previous == 'true': - prev_notifications = ( - request.query(CommentNotification).filter( CommentNotification.is_unread == True, #noqa CommentNotification.created_time <= @@ -358,14 +363,12 @@ def put_mark_comments_read( ) for notification in prev_notifications: - notification.is_unread = False - _increment_topic_comments_seen(request, notification.comment) - + notification.is_unread = False + _increment_topic_comments_seen(request, notification.comment) - return Response('Your comment notifications have been cleared.') + response = Response('Your comment notifications have been cleared.') else: - request.query(CommentNotification).filter( CommentNotification.user == request.user, CommentNotification.comment == comment, @@ -374,4 +377,4 @@ def put_mark_comments_read( _increment_topic_comments_seen(request, comment) - return IC_NOOP + return response