Keep selected activity history stable
This commit is contained in:
@@ -168,21 +168,32 @@ export function ActivityPanel() {
|
||||
() => collectLiveRunItems(liveRunStatus),
|
||||
[liveRunStatus],
|
||||
);
|
||||
const selectedMessageId = selectedId ? activityMessageId(selectedId) : null;
|
||||
const selectedMessageItems = selectedMessageId
|
||||
? messageItems.filter(
|
||||
(item) => activityMessageId(item.id) === selectedMessageId,
|
||||
)
|
||||
: [];
|
||||
const shouldUseLiveItems =
|
||||
!selectedMessageId &&
|
||||
liveItems.length > 0 &&
|
||||
activeSessionId !== null &&
|
||||
(activeSessionId !== replayedSessionId || hasActiveRun(liveRunStatus));
|
||||
const items = shouldUseLiveItems ? liveItems : messageItems;
|
||||
const selectedMessageId = selectedId ? activityMessageId(selectedId) : null;
|
||||
const selectedItems = selectedMessageId
|
||||
? items.filter((item) => activityMessageId(item.id) === selectedMessageId)
|
||||
: [];
|
||||
const visibleItems =
|
||||
selectedMessageId && selectedItems.length > 0 ? selectedItems : items;
|
||||
selectedMessageId && selectedMessageItems.length > 0
|
||||
? selectedMessageItems
|
||||
: selectedMessageId && selectedItems.length > 0
|
||||
? selectedItems
|
||||
: items;
|
||||
const selectedActivityMissing = Boolean(
|
||||
selectedMessageId &&
|
||||
!shouldUseLiveItems &&
|
||||
items.length > 0 &&
|
||||
messageItems.length > 0 &&
|
||||
selectedMessageItems.length === 0 &&
|
||||
selectedItems.length === 0,
|
||||
);
|
||||
const prevLatestIdRef = useRef<string | null>(null);
|
||||
@@ -207,13 +218,14 @@ export function ActivityPanel() {
|
||||
const latestId = items.at(-1)?.id ?? null;
|
||||
if (
|
||||
mode === "activity" &&
|
||||
!selectedId &&
|
||||
latestId &&
|
||||
latestId !== prevLatestIdRef.current
|
||||
) {
|
||||
openActivity();
|
||||
}
|
||||
prevLatestIdRef.current = latestId;
|
||||
}, [items, mode, openActivity]);
|
||||
}, [items, mode, openActivity, selectedId]);
|
||||
|
||||
if (!open) return null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user