Skip to content

Commit bd16745

Browse files
Fix async events loading in RemoteEventsList
- Added syncPromise to track initial sync completion - Added ensureSynced() method to wait for sync before returning events - Modified getEvents() to await sync completion before accessing cached events - Fixes issue where getEvents() returned empty array before sync completed This resolves the 'Loaded events: []' issue where events were not visible in the conversation manager despite successful API responses.
1 parent a43c5aa commit bd16745

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

example/src/components/ConversationManager.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,8 @@ export const ConversationManager: React.FC = () => {
138138
console.log('Loaded remote conversation:', remoteConversation);
139139

140140
// Get events
141-
const eventsResponse = await remoteConversation.state.events.getEvents();
142-
console.log('Loaded events response:', eventsResponse);
143-
const events = eventsResponse?.items || eventsResponse || [];
144-
console.log('Processed events:', events);
141+
const events = await remoteConversation.state.events.getEvents();
142+
console.log('Loaded events:', events);
145143

146144
// Get agent status
147145
const agentStatus = await remoteConversation.state.getAgentStatus();

src/events/remote-events-list.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,17 @@ export class RemoteEventsList {
1313
private cachedEvents: Event[] = [];
1414
private cachedEventIds = new Set<string>();
1515
private lock = new AsyncLock();
16+
private syncPromise: Promise<void>;
1617

1718
constructor(client: HttpClient, conversationId: string) {
1819
this.client = client;
1920
this.conversationId = conversationId;
2021
// Perform initial sync
21-
this.doFullSync();
22+
this.syncPromise = this.doFullSync();
23+
}
24+
25+
async ensureSynced(): Promise<void> {
26+
await this.syncPromise;
2227
}
2328

2429
private async doFullSync(): Promise<void> {
@@ -90,6 +95,7 @@ export class RemoteEventsList {
9095
}
9196

9297
async getEvents(start?: number, end?: number): Promise<Event[]> {
98+
await this.ensureSynced();
9399
return await this.lock.acquire(async () => {
94100
if (start === undefined && end === undefined) {
95101
return [...this.cachedEvents];

0 commit comments

Comments
 (0)