33 行
942 B
Python
33 行
942 B
Python
# SPDX-FileCopyrightText: 2022 n9k <https://gitler.moe/ninya9k>
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
from quart import current_app
|
|
|
|
from anonstream.utils.user import get_user_for_websocket
|
|
|
|
USERS = current_app.users
|
|
USERS_BY_TOKEN = current_app.users_by_token
|
|
USERS_UPDATE_BUFFER = current_app.users_update_buffer
|
|
|
|
def broadcast(users, payload):
|
|
for user in users:
|
|
for queue in user['websockets']:
|
|
queue.put_nowait(payload)
|
|
|
|
def broadcast_users_update():
|
|
users_for_websocket = {}
|
|
for token in USERS_UPDATE_BUFFER:
|
|
user = USERS_BY_TOKEN[token]
|
|
token_hash = user['token_hash']
|
|
users_for_websocket[token_hash] = get_user_for_websocket(user)
|
|
|
|
if users_for_websocket:
|
|
broadcast(
|
|
users=USERS,
|
|
payload={
|
|
'type': 'set-users',
|
|
'users': users_for_websocket,
|
|
},
|
|
)
|
|
USERS_UPDATE_BUFFER.clear()
|