mirror of
https://github.com/upscayl/upscayl.git
synced 2024-11-28 09:20:52 +01:00
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
import fs from "fs";
|
|
import logit from "./logit";
|
|
import { MessageBoxOptions, app, dialog } from "electron";
|
|
import settings from "electron-settings";
|
|
|
|
const getModels = async (folderPath: string | undefined) => {
|
|
let models: string[] = [];
|
|
let isValid = false;
|
|
|
|
// SECURITY SCOPED BOOKMARKS
|
|
let closeAccess;
|
|
const customModelsBookmarks = await settings.get("custom-models-bookmarks");
|
|
if (customModelsBookmarks) {
|
|
console.log(
|
|
"🚀 => file: get-models.ts:18 => customModelsBookmarks:",
|
|
customModelsBookmarks
|
|
);
|
|
try {
|
|
closeAccess = app.startAccessingSecurityScopedResource(
|
|
customModelsBookmarks as string
|
|
);
|
|
} catch (error) {
|
|
logit("📁 Custom Models Bookmarks Error: ", error);
|
|
}
|
|
}
|
|
|
|
if (!folderPath) {
|
|
logit("❌ Invalid Custom Model Folder Detected");
|
|
const options: MessageBoxOptions = {
|
|
type: "error",
|
|
title: "Invalid Folder",
|
|
message:
|
|
"The selected folder does not contain valid model files. Make sure you select the folder that ONLY contains '.param' and '.bin' files.",
|
|
buttons: ["OK"],
|
|
};
|
|
dialog.showMessageBoxSync(options);
|
|
return null;
|
|
}
|
|
|
|
// READ CUSTOM MODELS FOLDER
|
|
fs.readdirSync(folderPath).forEach((file) => {
|
|
// log.log("Files in Folder: ", file);
|
|
if (
|
|
file.endsWith(".param") ||
|
|
file.endsWith(".PARAM") ||
|
|
file.endsWith(".bin") ||
|
|
file.endsWith(".BIN")
|
|
) {
|
|
isValid = true;
|
|
const modelName = file.substring(0, file.lastIndexOf(".")) || file;
|
|
if (!models.includes(modelName)) {
|
|
models.push(modelName);
|
|
}
|
|
}
|
|
});
|
|
|
|
if (!isValid) {
|
|
logit("❌ Invalid Custom Model Folder Detected");
|
|
const options: MessageBoxOptions = {
|
|
type: "error",
|
|
title: "Invalid Folder",
|
|
message:
|
|
"The selected folder does not contain valid model files. Make sure you select the folder that ONLY contains '.param' and '.bin' files.",
|
|
buttons: ["OK"],
|
|
};
|
|
dialog.showMessageBoxSync(options);
|
|
return null;
|
|
}
|
|
|
|
logit("🔎 Detected Custom Models: ", models);
|
|
return models;
|
|
};
|
|
|
|
export default getModels;
|