mirror of https://github.com/VERT-sh/VERT.git
fix: cleaner and better converter select logic
only shows converters compatible with .from and .to now as well
This commit is contained in:
parent
da580353ca
commit
55b67ec046
|
|
@ -17,30 +17,20 @@
|
||||||
|
|
||||||
let { file, onclose }: Props = $props();
|
let { file, onclose }: Props = $props();
|
||||||
|
|
||||||
const getCurrentConverter = (
|
const getAvailableConverters = (vertFile: VertFile) => {
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
return vertFile.isZip()
|
return vertFile.isZip()
|
||||||
? vertFile.converters[0]
|
? vertFile.converters
|
||||||
: vertFile.findConverters()[0];
|
: 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<ConversionSettings>({
|
let settings = $derived<ConversionSettings>({
|
||||||
converter: file ? getCurrentConverter(file)?.name : undefined,
|
converter: file ? getValidConverter(file)?.name : undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
const handleSettingChange = (key: string, value: any) => {
|
const handleSettingChange = (key: string, value: any) => {
|
||||||
|
|
@ -50,7 +40,7 @@
|
||||||
|
|
||||||
const applySettings = async (converterName: string) => {
|
const applySettings = async (converterName: string) => {
|
||||||
if (!file) return;
|
if (!file) return;
|
||||||
const converter = getCurrentConverter(file, converterName);
|
const converter = getValidConverter(file, converterName);
|
||||||
if (!converter) {
|
if (!converter) {
|
||||||
log(
|
log(
|
||||||
["settings", "modal"],
|
["settings", "modal"],
|
||||||
|
|
@ -93,14 +83,15 @@
|
||||||
>
|
>
|
||||||
<div class="flex flex-col gap-8 max-h-[calc(100vh-225px)] overflow-y-auto">
|
<div class="flex flex-col gap-8 max-h-[calc(100vh-225px)] overflow-y-auto">
|
||||||
{#if file}
|
{#if file}
|
||||||
{@const currentConverter = getCurrentConverter(file)}
|
{@const availableConverters = getAvailableConverters(file)}
|
||||||
{@const availableConverters = file.isZip()
|
{@const validConverter = getValidConverter(
|
||||||
? file.converters
|
file,
|
||||||
: file.findConverters()}
|
settings.converter,
|
||||||
|
)}
|
||||||
<p class="text-base">
|
<p class="text-base">
|
||||||
{@html sanitize(
|
{@html sanitize(
|
||||||
m["convert.settings.description"]({
|
m["convert.settings.description"]({
|
||||||
converter: currentConverter?.name || "unknown",
|
converter: validConverter?.name || "unknown",
|
||||||
filename: file.name,
|
filename: file.name,
|
||||||
}),
|
}),
|
||||||
)}
|
)}
|
||||||
|
|
@ -115,7 +106,7 @@
|
||||||
value: converter.name,
|
value: converter.name,
|
||||||
label: converter.name,
|
label: converter.name,
|
||||||
}))}
|
}))}
|
||||||
selected={settings.converter || currentConverter?.name}
|
selected={validConverter?.name}
|
||||||
settingsStyle
|
settingsStyle
|
||||||
onselect={(value) => {
|
onselect={(value) => {
|
||||||
settings = { converter: value }; // TODO: dont think i need to add the converter here
|
settings = { converter: value }; // TODO: dont think i need to add the converter here
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue