From 1b0fb4ece961dcf52a32a392103ae70b1ae49ce2 Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Sat, 07 Mar 2026 12:39:56 +0100
Subject: [PATCH] feat: route incoming messages to correct session by sessionId

---
 types/index.ts           |    3 +++
 contexts/ChatContext.tsx |   18 +++++++++++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/contexts/ChatContext.tsx b/contexts/ChatContext.tsx
index 788bb31..54a548c 100644
--- a/contexts/ChatContext.tsx
+++ b/contexts/ChatContext.tsx
@@ -285,7 +285,11 @@
             timestamp: Date.now(),
             status: "sent",
           };
-          addMessageToActive(msg);
+          if (data.sessionId) {
+            addMessageToSession(data.sessionId, msg);
+          } else {
+            addMessageToActive(msg);
+          }
           notifyIncomingMessage("PAILot", data.content ?? "New message");
           break;
         }
@@ -308,7 +312,11 @@
             timestamp: Date.now(),
             status: "sent",
           };
-          addMessageToActive(msg);
+          if (data.sessionId) {
+            addMessageToSession(data.sessionId, msg);
+          } else {
+            addMessageToActive(msg);
+          }
           notifyIncomingMessage("PAILot", data.content ?? "Voice message");
           if (msg.audioUri && canAutoplay()) {
             playAudio(msg.audioUri).catch(() => {});
@@ -326,7 +334,11 @@
             timestamp: Date.now(),
             status: "sent",
           };
-          addMessageToActive(msg);
+          if (data.sessionId) {
+            addMessageToSession(data.sessionId, msg);
+          } else {
+            addMessageToActive(msg);
+          }
           notifyIncomingMessage("PAILot", data.caption ?? "New image");
           break;
         }
diff --git a/types/index.ts b/types/index.ts
index 0c97f86..97846eb 100644
--- a/types/index.ts
+++ b/types/index.ts
@@ -56,18 +56,21 @@
 export interface WsIncomingText {
   type: "text";
   content: string;
+  sessionId?: string;
 }
 
 export interface WsIncomingVoice {
   type: "voice";
   content: string;
   audioBase64?: string;
+  sessionId?: string;
 }
 
 export interface WsIncomingImage {
   type: "image";
   imageBase64: string;
   caption?: string;
+  sessionId?: string;
 }
 
 export interface WsSession {

--
Gitblit v1.3.1