Skip to content

Commit 0ea89a3

Browse files
authored
chore: add cleanup callbacks to some useEffect calls (#13444)
1 parent 213848e commit 0ea89a3

File tree

4 files changed

+29
-10
lines changed

4 files changed

+29
-10
lines changed

site/src/contexts/useProxyLatency.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ export const useProxyLatency = (
225225
// Local storage cleanup
226226
garbageCollectStoredLatencies(proxies, maxStoredLatencies);
227227
});
228+
229+
return () => {
230+
observer.disconnect();
231+
};
228232
}, [proxies, latestFetchRequest, maxStoredLatencies]);
229233

230234
return {

site/src/pages/TemplateVersionEditorPage/TemplateVersionEditorPage.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,20 +245,32 @@ const useFileTree = (templateVersion: TemplateVersion | undefined) => {
245245
fileTree: undefined,
246246
tarFile: undefined,
247247
});
248+
248249
useEffect(() => {
250+
let stale = false;
249251
const initializeFileTree = async (file: ArrayBuffer) => {
250252
const tarFile = new TarReader();
251-
await tarFile.readFile(file);
252-
const fileTree = await createTemplateVersionFileTree(tarFile);
253-
setState({ fileTree, tarFile });
253+
try {
254+
await tarFile.readFile(file);
255+
// Ignore stale updates if this effect has been cancelled.
256+
if (stale) {
257+
return;
258+
}
259+
const fileTree = createTemplateVersionFileTree(tarFile);
260+
setState({ fileTree, tarFile });
261+
} catch (error) {
262+
console.error(error);
263+
displayError("Error on initializing the editor");
264+
}
254265
};
255266

256267
if (fileQuery.data) {
257-
initializeFileTree(fileQuery.data).catch((reason) => {
258-
console.error(reason);
259-
displayError("Error on initializing the editor");
260-
});
268+
void initializeFileTree(fileQuery.data);
261269
}
270+
271+
return () => {
272+
stale = true;
273+
};
262274
}, [fileQuery.data]);
263275

264276
return state;

site/src/pages/WorkspacePage/WorkspaceBuildProgress.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,10 @@ export const WorkspaceBuildProgress: FC<WorkspaceBuildProgressProps> = ({
9797
setProgressValue(est);
9898
setProgressText(text);
9999
};
100-
setTimeout(updateProgress, 5);
100+
const updateTimer = requestAnimationFrame(updateProgress);
101+
return () => {
102+
cancelAnimationFrame(updateTimer);
103+
};
101104
}, [progressValue, job, transitionStats]);
102105

103106
// HACK: the codersdk type generator doesn't support null values, but this

site/src/utils/templateVersion.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ export const getTemplateVersionFiles = async (
2323
return files;
2424
};
2525

26-
export const createTemplateVersionFileTree = async (
26+
export const createTemplateVersionFileTree = (
2727
tarReader: TarReader,
28-
): Promise<FileTree> => {
28+
): FileTree => {
2929
let fileTree: FileTree = {};
3030
for (const file of tarReader.fileInfo) {
3131
fileTree = set(

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy