Skip to content

Commit 0fe1f19

Browse files
authored
Merge pull request #731 from extolkom/main
fix: ensure proper cleanup of SSE events with AbortController
2 parents f3508ff + d037bdf commit 0fe1f19

3 files changed

Lines changed: 20 additions & 13 deletions

File tree

frontend/src/app/streams/[id]/page.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -147,17 +147,17 @@ export default function StreamDetailsPage() {
147147

148148
// Handle SSE events
149149
useEffect(() => {
150-
if (streamEvents.length > 0) {
151-
const controller = new AbortController();
152-
const updateData = async () => {
153-
await Promise.all([
154-
fetchStream(controller.signal),
155-
fetchEvents(eventsPage, controller.signal),
156-
]);
157-
};
158-
void updateData();
159-
return () => controller.abort();
160-
}
150+
const controller = new AbortController();
151+
152+
const refreshStreamData = async () => {
153+
if (streamEvents.length > 0) {
154+
await Promise.all([fetchStream(controller.signal), fetchEvents(eventsPage, controller.signal)]);
155+
}
156+
};
157+
158+
refreshStreamData();
159+
160+
return () => controller.abort();
161161
}, [streamEvents, fetchStream, fetchEvents, eventsPage]);
162162

163163
// Live claimable counter

frontend/src/components/TransactionTracker.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,19 @@ export default function TransactionTracker({
150150

151151
// Reset state when returning to idle
152152
useEffect(() => {
153+
let timer: ReturnType<typeof setTimeout> | undefined;
154+
153155
if (status === "idle") {
154-
const timer = setTimeout(() => {
156+
timer = setTimeout(() => {
155157
setPollCount(0);
156158
setStreamData(null);
157159
setPreviousStreamData(null);
158160
}, 0);
159-
return () => clearTimeout(timer);
160161
}
162+
163+
return () => {
164+
if (timer) clearTimeout(timer);
165+
};
161166
}, [status]);
162167

163168
// Render based on status

frontend/tsconfig.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
"allowJs": true,
66
"skipLibCheck": true,
77
"strict": true,
8+
"noImplicitReturns": true,
9+
"noFallthroughCasesInSwitch": true,
810
"noEmit": true,
911
"esModuleInterop": true,
1012
"module": "esnext",

0 commit comments

Comments
 (0)