Fix file loading dialog fallback
Some checks failed
Build Windows App / build-windows (push) Has been cancelled

This commit is contained in:
MrSphay
2026-05-01 23:54:51 +02:00
parent c7711096ea
commit 1be74d1ad3
2 changed files with 54 additions and 6 deletions

View File

@@ -441,6 +441,33 @@ function addUnique(values: string[], value: string): string[] {
return values.some((entry) => normalizeKey(entry) === normalized) ? values : [...values, value];
}
function openFileWithBrowserPicker(): Promise<{ name: string; content: string } | null> {
return new Promise((resolve) => {
const input = document.createElement("input");
input.type = "file";
input.accept = ".env,.txt,text/plain";
input.addEventListener(
"change",
async () => {
const file = input.files?.[0];
if (!file) {
resolve(null);
return;
}
resolve({
name: file.name,
content: await file.text()
});
},
{ once: true }
);
input.click();
});
}
export default function App() {
const [input, setInput] = useState("");
const [loadedPath, setLoadedPath] = useState<string | null>(null);
@@ -480,10 +507,24 @@ export default function App() {
}, [ignoredAutoDefaults]);
async function openFile() {
const file = await window.envHelper?.openFile();
try {
if (window.envHelper?.openFile) {
const file = await window.envHelper.openFile();
if (file) {
setInput(file.content);
setLoadedPath(file.path);
}
return;
}
} catch (error) {
console.warn("Native file dialog failed, falling back to browser file input.", error);
}
const file = await openFileWithBrowserPicker();
if (file) {
setInput(file.content);
setLoadedPath(file.path);
setLoadedPath(file.name);
}
}