Skip to content

Commit ce4b271

Browse files
committed
fix(frontend): empty state renders a few ms before responses are processed, and in some cases some responses remain unprocessed due to a cleared timeout
1 parent e50a877 commit ce4b271

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

modules/core/js_modules/Hm_MessagesStore.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class Hm_MessagesStore {
7272

7373
// Batch processing for multiple requests
7474
const pendingResponses = new Map();
75-
let processingTimeout = null;
75+
const processingTimeouts = {};
7676

7777
const processPendingResponses = () => {
7878
if (pendingResponses.size === 0) return;
@@ -119,17 +119,22 @@ class Hm_MessagesStore {
119119
};
120120

121121
await Promise.all(this.fetch(hideLoadingState).map((req) => {
122-
return req.then((response) => {
123-
pendingResponses.set(response.sourceId, response);
122+
return new Promise((resolve) => {
123+
req.then((response) => {
124+
pendingResponses.set(response.sourceId, response);
124125

125-
if (processingTimeout) {
126-
clearTimeout(processingTimeout);
127-
}
126+
if (processingTimeouts[response.sourceId]) {
127+
clearTimeout(processingTimeouts[response.sourceId]);
128+
}
128129

129-
// Process after a short delay to allow batching
130-
processingTimeout = setTimeout(processPendingResponses, 10);
131-
}, (error) => {
132-
console.error('Error loading messages from source:', error);
130+
// Process after a short delay to allow batching
131+
processingTimeouts[response.sourceId] = setTimeout(() => {
132+
processPendingResponses();
133+
resolve(response);
134+
}, 10);
135+
}, (error) => {
136+
console.error('Error loading messages from source:', error);
137+
});
133138
});
134139
}));
135140

0 commit comments

Comments
 (0)