diff --git a/anonstream/routes/nojs.py b/anonstream/routes/nojs.py index 0ce8d12..412ffbe 100644 --- a/anonstream/routes/nojs.py +++ b/anonstream/routes/nojs.py @@ -151,7 +151,7 @@ async def nojs_submit_message(timestamp, user): else: state_id = None if message_was_added: - deverify(user) + deverify(user, timestamp=timestamp) url = url_for( 'nojs_chat_form', diff --git a/anonstream/tasks.py b/anonstream/tasks.py index 565e4e1..fe92fee 100644 --- a/anonstream/tasks.py +++ b/anonstream/tasks.py @@ -9,7 +9,7 @@ from quart import current_app, websocket from anonstream.broadcast import broadcast, broadcast_users_update from anonstream.stream import is_online, get_stream_title, get_stream_uptime_and_viewership -from anonstream.user import get_sunsettable_users +from anonstream.user import get_absent_users, get_sunsettable_users, deverify from anonstream.wrappers import with_timestamp CONFIG = current_app.config @@ -64,6 +64,12 @@ async def t_sunset_users(timestamp, iteration): if iteration == 0: return + # Deverify absent users + for user in get_absent_users(timestamp): + deverify(user, timestamp=timestamp) + + # Remove as many absent users as possible + # Broadcast a users update, in case any users being # removed have been mutated or are new. broadcast_users_update() diff --git a/anonstream/user.py b/anonstream/user.py index 0789666..021a986 100644 --- a/anonstream/user.py +++ b/anonstream/user.py @@ -173,8 +173,9 @@ def verify(user, digest, answer): return verification_happened -@with_timestamp() -def deverify(timestamp, user): +def deverify(user, timestamp=None): + if timestamp is None: + timestamp = get_timestamp() if user['verified'] and not user['broadcaster']: n_user_messages = 0 for message in reversed(MESSAGES): diff --git a/anonstream/websocket.py b/anonstream/websocket.py index ef91202..72d2875 100644 --- a/anonstream/websocket.py +++ b/anonstream/websocket.py @@ -122,7 +122,7 @@ def handle_inbound_message(timestamp, queue, user, nonce, comment, digest, answe else: notice = None if message_was_added: - deverify(user) + deverify(user, timestamp=timestamp) return { 'type': 'ack', 'nonce': nonce,