@invergent/agent-chat-react 1.4.4 → 1.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -6419,44 +6419,63 @@ function WorkspacePanel({
6419
6419
  const [deleteTarget, setDeleteTarget] = useState(null);
6420
6420
  const [expandedPaths, setExpandedPaths] = useState(/* @__PURE__ */ new Set());
6421
6421
  const [width, setWidth] = useState(DEFAULT_WIDTH);
6422
+ const sessionIdRef = useRef(sessionId);
6422
6423
  const isResizing = useRef(false);
6423
6424
  const startX = useRef(0);
6424
6425
  const startWidth = useRef(DEFAULT_WIDTH);
6426
+ sessionIdRef.current = sessionId;
6425
6427
  const fetchTree = useCallback(async () => {
6426
6428
  if (!sessionId) {
6427
6429
  setEntries([]);
6428
6430
  setRootName("workspace");
6431
+ setExpandedPaths(/* @__PURE__ */ new Set());
6432
+ setTreeLoading(false);
6429
6433
  setTreeError(null);
6430
6434
  return;
6431
6435
  }
6436
+ const requestedSessionId = sessionId;
6432
6437
  setTreeLoading(true);
6433
6438
  setTreeError(null);
6434
6439
  try {
6435
- const tree = await adapter.getWorkspaceTree({ sessionId });
6440
+ const tree = await adapter.getWorkspaceTree({
6441
+ sessionId: requestedSessionId
6442
+ });
6443
+ if (sessionIdRef.current !== requestedSessionId) return;
6436
6444
  setEntries(tree.entries);
6437
6445
  setRootName(tree.root || "workspace");
6438
6446
  setExpandedPaths(new Set(collectExpandedPaths(tree.entries)));
6439
6447
  } catch (error) {
6448
+ if (sessionIdRef.current !== requestedSessionId) return;
6440
6449
  setEntries([]);
6441
6450
  setRootName("workspace");
6442
6451
  setTreeError(error.message);
6443
6452
  } finally {
6444
- setTreeLoading(false);
6453
+ if (sessionIdRef.current === requestedSessionId) {
6454
+ setTreeLoading(false);
6455
+ }
6445
6456
  }
6446
6457
  }, [adapter, sessionId]);
6447
6458
  const fetchFile = useCallback(
6448
6459
  async (path) => {
6449
6460
  if (!sessionId) return;
6461
+ const requestedSessionId = sessionId;
6450
6462
  setFileLoading(true);
6451
6463
  setFileError(null);
6452
6464
  try {
6453
- const nextFile = await adapter.getWorkspaceFile({ sessionId, path });
6465
+ const nextFile = await adapter.getWorkspaceFile({
6466
+ sessionId: requestedSessionId,
6467
+ path
6468
+ });
6469
+ if (sessionIdRef.current !== requestedSessionId) return;
6454
6470
  setFile(nextFile);
6455
6471
  } catch (error) {
6472
+ if (sessionIdRef.current !== requestedSessionId) return;
6456
6473
  setFile(null);
6457
6474
  setFileError(error.message);
6458
6475
  } finally {
6459
- setFileLoading(false);
6476
+ if (sessionIdRef.current === requestedSessionId) {
6477
+ setFileLoading(false);
6478
+ }
6460
6479
  }
6461
6480
  },
6462
6481
  [adapter, sessionId]