diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 23be163e9..1412b9139 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -193,6 +193,27 @@ async def user_join(sid, data): await sio.emit("user-count", {"count": len(USER_POOL.items())}) +@sio.on("join-channels") +async def join_channel(sid, data): + auth = data["auth"] if "auth" in data else None + if not auth or "token" not in auth: + return + + data = decode_token(auth["token"]) + if data is None or "id" not in data: + return + + user = Users.get_user_by_id(data["id"]) + if not user: + return + + # Join all the channels + channels = Channels.get_channels_by_user_id(user.id) + log.debug(f"{channels=}") + for channel in channels: + await sio.enter_room(sid, f"channel:{channel.id}") + + @sio.on("user-count") async def user_count(sid): await sio.emit("user-count", {"count": len(USER_POOL.items())}) diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index bc0a2c217..73877805a 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -415,6 +415,7 @@ }); if (res) { + $socket.emit('join-channels', { auth: { token: $user.token } }); await initChannels(); showCreateChannel = false; }