Timothy Jaeryang Baek 4 月之前
父节点
当前提交
b4d7268bed
共有 2 个文件被更改,包括 22 次插入0 次删除
  1. 21 0
      backend/open_webui/socket/main.py
  2. 1 0
      src/lib/components/layout/Sidebar.svelte

+ 21 - 0
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())})

+ 1 - 0
src/lib/components/layout/Sidebar.svelte

@@ -415,6 +415,7 @@
 		});
 
 		if (res) {
+			$socket.emit('join-channels', { auth: { token: $user.token } });
 			await initChannels();
 			showCreateChannel = false;
 		}