Skip to content

Commit fac67c0

Browse files
committed
Improve cleanup logic for video and subtitle URLs
1 parent b7dade2 commit fac67c0

File tree

2 files changed

+27
-33
lines changed

2 files changed

+27
-33
lines changed

apps/web/app/s/[videoId]/_components/CapVideoPlayer.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,7 @@ export function CapVideoPlayer({
234234
}, retryInterval);
235235
}, [reloadVideo]);
236236

237-
// Reset state when video source changes
238237
useEffect(() => {
239-
resolvedSrc.refetch();
240238
setVideoLoaded(false);
241239
setHasError(false);
242240
isRetryingRef.current = false;
@@ -248,7 +246,7 @@ export function CapVideoPlayer({
248246
clearTimeout(retryTimeout.current);
249247
retryTimeout.current = null;
250248
}
251-
}, [resolvedSrc.refetch]);
249+
}, [videoSrc]);
252250

253251
// Track video duration for comment markers
254252
useEffect(() => {

apps/web/app/s/[videoId]/_components/ShareVideo.tsx

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ export const ShareVideo = forwardRef<
103103
}
104104
}, [transcriptContent, transcriptError]);
105105

106-
// Handle subtitle URL creation
107106
useEffect(() => {
108107
if (
109108
data.transcriptionStatus === "COMPLETE" &&
@@ -113,51 +112,48 @@ export const ShareVideo = forwardRef<
113112
const vttContent = formatTranscriptAsVTT(transcriptData);
114113
const blob = new Blob([vttContent], { type: "text/vtt" });
115114
const newUrl = URL.createObjectURL(blob);
116-
117-
// Clean up previous URL
118-
if (subtitleUrl) {
119-
URL.revokeObjectURL(subtitleUrl);
120-
}
121-
122-
setSubtitleUrl(newUrl);
115+
setSubtitleUrl((prev) => {
116+
if (prev) {
117+
URL.revokeObjectURL(prev);
118+
}
119+
return newUrl;
120+
});
123121

124122
return () => {
125123
URL.revokeObjectURL(newUrl);
126124
};
127-
} else {
128-
// Clean up if no longer needed
129-
if (subtitleUrl) {
130-
URL.revokeObjectURL(subtitleUrl);
131-
setSubtitleUrl(null);
132-
}
133125
}
134-
}, [data.transcriptionStatus, transcriptData, subtitleUrl]);
126+
setSubtitleUrl((prev) => {
127+
if (prev) {
128+
URL.revokeObjectURL(prev);
129+
}
130+
return null;
131+
});
132+
}, [data.transcriptionStatus, transcriptData]);
135133

136-
// Handle chapters URL creation
137134
useEffect(() => {
138135
if (chapters?.length > 0) {
139136
const vttContent = formatChaptersAsVTT(chapters);
140137
const blob = new Blob([vttContent], { type: "text/vtt" });
141138
const newUrl = URL.createObjectURL(blob);
142-
143-
// Clean up previous URL
144-
if (chaptersUrl) {
145-
URL.revokeObjectURL(chaptersUrl);
146-
}
147-
148-
setChaptersUrl(newUrl);
139+
setChaptersUrl((prev) => {
140+
if (prev) {
141+
URL.revokeObjectURL(prev);
142+
}
143+
return newUrl;
144+
});
149145

150146
return () => {
151147
URL.revokeObjectURL(newUrl);
152148
};
153-
} else {
154-
// Clean up if no longer needed
155-
if (chaptersUrl) {
156-
URL.revokeObjectURL(chaptersUrl);
157-
setChaptersUrl(null);
158-
}
159149
}
160-
}, [chapters, chaptersUrl]);
150+
setChaptersUrl((prev) => {
151+
if (prev) {
152+
URL.revokeObjectURL(prev);
153+
}
154+
return null;
155+
});
156+
}, [chapters]);
161157

162158
const isMp4Source =
163159
data.source.type === "desktopMP4" || data.source.type === "webMP4";

0 commit comments

Comments
 (0)