From 30d61925c3e35bc9dd49baf7d4a659c4d6ae6261 Mon Sep 17 00:00:00 2001 From: webadderall <131426131+webadderall@users.noreply.github.com> Date: Wed, 18 Mar 2026 18:14:21 +1100 Subject: [PATCH] Fix TypeScript cleanup regressions --- src/components/launch/LaunchWindow.tsx | 2 +- .../video-editor/projectPersistence.ts | 2 +- src/contexts/I18nContext.tsx | 4 ++-- src/lib/exporter/audioEncoder.ts | 18 ++++++++++++------ src/lib/exporter/localMediaSource.ts | 2 +- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/components/launch/LaunchWindow.tsx b/src/components/launch/LaunchWindow.tsx index 69863fd5..5a7504df 100644 --- a/src/components/launch/LaunchWindow.tsx +++ b/src/components/launch/LaunchWindow.tsx @@ -167,7 +167,7 @@ export function LaunchWindow() { const [pausedTotal, setPausedTotal] = useState(0); const [selectedSource, setSelectedSource] = useState("Screen"); const [hasSelectedSource, setHasSelectedSource] = useState(false); - const [recordingsDirectory, setRecordingsDirectory] = useState(null); + const [, setRecordingsDirectory] = useState(null); const [activeDropdown, setActiveDropdown] = useState<"none" | "sources" | "more" | "mic" | "countdown" | "webcam">("none"); const [sources, setSources] = useState([]); const [sourcesLoading, setSourcesLoading] = useState(false); diff --git a/src/components/video-editor/projectPersistence.ts b/src/components/video-editor/projectPersistence.ts index 64eb9d91..182943fc 100644 --- a/src/components/video-editor/projectPersistence.ts +++ b/src/components/video-editor/projectPersistence.ts @@ -415,7 +415,7 @@ export function normalizeProjectEditor(editor: Partial): Pro reactToZoom: typeof webcam.reactToZoom === "boolean" ? webcam.reactToZoom - : legacyZoomScaleEffect !== null + : legacyZoomScaleEffect != null ? legacyZoomScaleEffect > 0 : DEFAULT_WEBCAM_REACT_TO_ZOOM, cornerRadius: isFiniteNumber(webcam.cornerRadius) diff --git a/src/contexts/I18nContext.tsx b/src/contexts/I18nContext.tsx index dda55641..c62e8188 100644 --- a/src/contexts/I18nContext.tsx +++ b/src/contexts/I18nContext.tsx @@ -119,8 +119,8 @@ function getInitialLocale(): AppLocale { } const storedLocale = window.localStorage.getItem(LOCALE_STORAGE_KEY) - if (storedLocale && isSupportedLocale(storedLocale)) { - return storedLocale + if (storedLocale) { + return normalizeLocale(storedLocale) } // Product default must be English on first launch unless user explicitly diff --git a/src/lib/exporter/audioEncoder.ts b/src/lib/exporter/audioEncoder.ts index 7b6b268d..40f50a1b 100644 --- a/src/lib/exporter/audioEncoder.ts +++ b/src/lib/exporter/audioEncoder.ts @@ -208,26 +208,32 @@ export class AudioProcessor { }[] = [] for (const region of audioRegions) { - const regionSource = await resolveMediaElementSource(region.audioPath) + const regionFileSource = await resolveMediaElementSource(region.audioPath) const audioEl = document.createElement('audio') - audioEl.src = regionSource.src + audioEl.src = regionFileSource.src audioEl.preload = 'auto' try { await this.waitForLoadedMetadata(audioEl) } catch { - regionSource.revoke() + regionFileSource.revoke() console.warn('[AudioProcessor] Failed to load audio region:', region.audioPath) continue } if (this.cancelled) throw new Error('Export cancelled') - const regionSource = audioContext.createMediaElementSource(audioEl) + const regionSourceNode = audioContext.createMediaElementSource(audioEl) const gainNode = audioContext.createGain() gainNode.gain.value = Math.max(0, Math.min(1, region.volume)) - regionSource.connect(gainNode) + regionSourceNode.connect(gainNode) gainNode.connect(destinationNode) - audioRegionElements.push({ media: audioEl, sourceNode: regionSource, gainNode, region, cleanup: regionSource.revoke }) + audioRegionElements.push({ + media: audioEl, + sourceNode: regionSourceNode, + gainNode, + region, + cleanup: regionFileSource.revoke, + }) } const { recorder, recordedBlobPromise } = this.startAudioRecording(destinationNode.stream) diff --git a/src/lib/exporter/localMediaSource.ts b/src/lib/exporter/localMediaSource.ts index 7aa81585..6e5c3710 100644 --- a/src/lib/exporter/localMediaSource.ts +++ b/src/lib/exporter/localMediaSource.ts @@ -69,7 +69,7 @@ export async function resolveMediaElementSource(resource: string): Promise<{ const bytes = result.data instanceof Uint8Array ? result.data : new Uint8Array(result.data); - const blob = new Blob([bytes], { type: inferMimeType(localFilePath) }); + const blob = new Blob([Uint8Array.from(bytes)], { type: inferMimeType(localFilePath) }); const objectUrl = URL.createObjectURL(blob); return {