From 55b67ec04672bf4bddbcae67f5cae857161f6d55 Mon Sep 17 00:00:00 2001 From: Maya Date: Tue, 10 Mar 2026 13:31:06 +0300 Subject: [PATCH] fix: cleaner and better converter select logic only shows converters compatible with .from and .to now as well --- .../functional/popups/SettingsModal.svelte | 45 ++++++++----------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/src/lib/components/functional/popups/SettingsModal.svelte b/src/lib/components/functional/popups/SettingsModal.svelte index 54055f4..acb94de 100644 --- a/src/lib/components/functional/popups/SettingsModal.svelte +++ b/src/lib/components/functional/popups/SettingsModal.svelte @@ -17,30 +17,20 @@ let { file, onclose }: Props = $props(); - const getCurrentConverter = ( - vertFile: VertFile, - converterOverride?: string, - ) => { - const converterName = - converterOverride || vertFile.conversionSettings.converter; - const availableConverters = vertFile.isZip() - ? vertFile.converters - : vertFile.findConverters(); - - if (converterName) { - const selectedConverter = - availableConverters.find((c) => c.name === converterName) || - vertFile.converters.find((c) => c.name === converterName); - if (selectedConverter) return selectedConverter; - } - + const getAvailableConverters = (vertFile: VertFile) => { return vertFile.isZip() - ? vertFile.converters[0] - : vertFile.findConverters()[0]; + ? vertFile.converters + : vertFile.findConverters([vertFile.from, vertFile.to]); + }; + + const getValidConverter = (vertFile: VertFile, converterName?: string) => { + const available = getAvailableConverters(vertFile); + const name = converterName || vertFile.conversionSettings.converter; + return available.find((c) => c.name === name) || available[0]; }; let settings = $derived({ - converter: file ? getCurrentConverter(file)?.name : undefined, + converter: file ? getValidConverter(file)?.name : undefined, }); const handleSettingChange = (key: string, value: any) => { @@ -50,7 +40,7 @@ const applySettings = async (converterName: string) => { if (!file) return; - const converter = getCurrentConverter(file, converterName); + const converter = getValidConverter(file, converterName); if (!converter) { log( ["settings", "modal"], @@ -93,14 +83,15 @@ >
{#if file} - {@const currentConverter = getCurrentConverter(file)} - {@const availableConverters = file.isZip() - ? file.converters - : file.findConverters()} + {@const availableConverters = getAvailableConverters(file)} + {@const validConverter = getValidConverter( + file, + settings.converter, + )}

{@html sanitize( m["convert.settings.description"]({ - converter: currentConverter?.name || "unknown", + converter: validConverter?.name || "unknown", filename: file.name, }), )} @@ -115,7 +106,7 @@ value: converter.name, label: converter.name, }))} - selected={settings.converter || currentConverter?.name} + selected={validConverter?.name} settingsStyle onselect={(value) => { settings = { converter: value }; // TODO: dont think i need to add the converter here