Fix L29/L52: QUALITY_OPTIONS moved to UI module; installer spawn via child_process
L29: QUALITY_OPTIONS was a presentational constant living in store/downloads.ts,
coupling views to the store. Moved to src/renderer/src/qualityOptions.ts,
which assembles it directly from @shared/ipc. store/downloads.ts no longer
imports VIDEO/AUDIO_QUALITY_OPTIONS. Both consumers (DownloadBar, SettingsView)
updated to import from the new module.
L52: Replaced the fixed `setTimeout(app.quit, 1500)` installer handoff with a
detached spawn. The installer is spawned with stdio:'ignore' and unref'd so
it outlives AeroFetch even on a slow machine. app.quit() fires on setImmediate
so the IPC response returns to the renderer before the process exits.
typecheck + 242 tests green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,8 @@ import {
|
||||
WarningRegular
|
||||
} from '@fluentui/react-icons'
|
||||
import type { MediaInfo, FormatOption, PlaylistInfo } from '@shared/ipc'
|
||||
import { useDownloads, QUALITY_OPTIONS, type MediaKind } from '../store/downloads'
|
||||
import { useDownloads, type MediaKind } from '../store/downloads'
|
||||
import { QUALITY_OPTIONS } from '../qualityOptions'
|
||||
import { sameVideo } from '../store/queueStats'
|
||||
import { useSettings } from '../store/settings'
|
||||
import { Select } from './Select'
|
||||
|
||||
@@ -55,7 +55,8 @@ import {
|
||||
} from '@shared/ipc'
|
||||
import { useSettings } from '../store/settings'
|
||||
import { useSystemTheme } from '../store/systemTheme'
|
||||
import { QUALITY_OPTIONS, useDownloads } from '../store/downloads'
|
||||
import { useDownloads } from '../store/downloads'
|
||||
import { QUALITY_OPTIONS } from '../qualityOptions'
|
||||
import { useTemplates } from '../store/templates'
|
||||
import { useErrorLog } from '../store/errorlog'
|
||||
import { Select } from './Select'
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
import { VIDEO_QUALITY_OPTIONS, AUDIO_QUALITY_OPTIONS } from '@shared/ipc'
|
||||
|
||||
export const QUALITY_OPTIONS = {
|
||||
video: VIDEO_QUALITY_OPTIONS,
|
||||
audio: AUDIO_QUALITY_OPTIONS
|
||||
} as const
|
||||
@@ -1,7 +1,5 @@
|
||||
import { create } from 'zustand'
|
||||
import {
|
||||
VIDEO_QUALITY_OPTIONS,
|
||||
AUDIO_QUALITY_OPTIONS,
|
||||
type DownloadEvent,
|
||||
type DownloadMeta,
|
||||
type DownloadOptions,
|
||||
@@ -71,13 +69,6 @@ export interface DownloadItem {
|
||||
mediaItemId?: string
|
||||
}
|
||||
|
||||
// `satisfies` (not an annotation) so the tuple element types survive: under
|
||||
// noUncheckedIndexedAccess a `readonly string[]` index yields `string | undefined`,
|
||||
// but the const tuples keep `QUALITY_OPTIONS[kind][0]` known-defined (L168).
|
||||
export const QUALITY_OPTIONS = {
|
||||
video: VIDEO_QUALITY_OPTIONS,
|
||||
audio: AUDIO_QUALITY_OPTIONS
|
||||
} satisfies Record<MediaKind, readonly string[]>
|
||||
|
||||
// Placeholder channel shown while metadata is still being fetched. Tracked as a
|
||||
// constant so the meta/error/done handlers can recognise and clear it instead of
|
||||
|
||||
Reference in New Issue
Block a user