mirror of
https://github.com/webadderallorg/Recordly.git
synced 2026-11-09 23:43:35 +00:00
Fix TypeScript cleanup regressions
This commit is contained in:
1 parent
e064f738ae
commit
30d61925c3
5 files changed
+17
-11
No files matched your search
@@ -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<string | null>(null);
|
||||
const [, setRecordingsDirectory] = useState<string | null>(null);
|
||||
const [activeDropdown, setActiveDropdown] = useState<"none" | "sources" | "more" | "mic" | "countdown" | "webcam">("none");
|
||||
const [sources, setSources] = useState<DesktopSource[]>([]);
|
||||
const [sourcesLoading, setSourcesLoading] = useState(false);
|
||||
|
||||
@@ -415,7 +415,7 @@ export function normalizeProjectEditor(editor: Partial<ProjectEditorState>): Pro
|
||||
reactToZoom:
|
||||
typeof webcam.reactToZoom === "boolean"
|
||||
? webcam.reactToZoom
|
||||
: legacyZoomScaleEffect !== null
|
||||
: legacyZoomScaleEffect != null
|
||||
? legacyZoomScaleEffect > 0
|
||||
: DEFAULT_WEBCAM_REACT_TO_ZOOM,
|
||||
cornerRadius: isFiniteNumber(webcam.cornerRadius)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user