|
13 | 13 | from common_library.logging.logging_errors import create_troubleshooting_log_kwargs |
14 | 14 | from models_library.api_schemas_webserver.socketio import SocketIORoomStr |
15 | 15 | from models_library.products import ProductName |
| 16 | +from models_library.projects import ProjectID |
16 | 17 | from models_library.socketio import SocketMessageDict |
17 | 18 | from models_library.users import UserID |
18 | 19 | from pydantic import TypeAdapter |
|
23 | 24 | from ..groups.api import list_user_groups_ids_with_read_access |
24 | 25 | from ..login.decorators import login_required |
25 | 26 | from ..products import products_web |
26 | | -from ..resource_manager.user_sessions import managed_resource |
| 27 | +from ..resource_manager.user_sessions import PROJECT_ID_KEY, managed_resource |
27 | 28 | from ._utils import EnvironDict, SocketID, get_socket_server, register_socketio_handler |
28 | 29 | from .messages import SOCKET_IO_HEARTBEAT_EVENT, send_message_to_user |
29 | 30 |
|
@@ -99,6 +100,21 @@ async def _set_user_in_group_rooms( |
99 | 100 | await sio.enter_room(socket_id, SocketIORoomStr.from_user_id(user_id)) |
100 | 101 |
|
101 | 102 |
|
| 103 | +async def _set_user_in_project_rooms( |
| 104 | + app: web.Application, user_id: UserID, client_session_id: str, socket_id: SocketID |
| 105 | +) -> None: |
| 106 | + """Adds user in project rooms in case he has any project open""" |
| 107 | + project_ids = [] |
| 108 | + with managed_resource(user_id, client_session_id, app) as user_session: |
| 109 | + project_ids = await user_session.find_all_resources_of_user(PROJECT_ID_KEY) |
| 110 | + |
| 111 | + sio = get_socket_server(app) |
| 112 | + for project_id in project_ids: |
| 113 | + await sio.enter_room( |
| 114 | + socket_id, SocketIORoomStr.from_project_id(ProjectID(project_id)) |
| 115 | + ) |
| 116 | + |
| 117 | + |
102 | 118 | # |
103 | 119 | # socketio event handlers |
104 | 120 | # |
@@ -135,6 +151,7 @@ async def connect( |
135 | 151 | ) |
136 | 152 |
|
137 | 153 | await _set_user_in_group_rooms(app, user_id, socket_id) |
| 154 | + await _set_user_in_project_rooms(app, user_id, client_session_id, socket_id) |
138 | 155 |
|
139 | 156 | _logger.debug("Sending set_heartbeat_emit_interval with %s", _EMIT_INTERVAL_S) |
140 | 157 |
|
|
0 commit comments