diff --git a/electron/index.ts b/electron/index.ts
index 90426d2..65f215a 100644
--- a/electron/index.ts
+++ b/electron/index.ts
@@ -36,6 +36,13 @@ function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
}
+// Path variables for file and folder selection
+let imagePath: string | undefined = undefined;
+let folderPath: string | undefined = undefined;
+let customModelsFolderPath: string | undefined = undefined;
+let outputFolderPath: string | undefined = undefined;
+let saveOutputFolder = false;
+
// Prepare the renderer once the app is ready
let mainWindow: BrowserWindow;
app.on("ready", async () => {
@@ -84,7 +91,7 @@ app.on("ready", async () => {
autoUpdater.checkForUpdates();
}
- // SAVE LAST IMAGE PATH TO LOCAL STORAGE
+ // GET LAST IMAGE PATH TO LOCAL STORAGE
mainWindow.webContents
.executeJavaScript('localStorage.getItem("lastImagePath");', true)
.then((lastImagePath: string | null) => {
@@ -93,7 +100,7 @@ app.on("ready", async () => {
}
});
- // SAVE LAST FOLDER PATH TO LOCAL STORAGE
+ // GET LAST FOLDER PATH TO LOCAL STORAGE
mainWindow.webContents
.executeJavaScript('localStorage.getItem("lastFolderPath");', true)
.then((lastFolderPath: string | null) => {
@@ -102,7 +109,7 @@ app.on("ready", async () => {
}
});
- // SAVE LAST CUSTOM MODELS FOLDER PATH TO LOCAL STORAGE
+ // GET LAST CUSTOM MODELS FOLDER PATH TO LOCAL STORAGE
mainWindow.webContents
.executeJavaScript(
'localStorage.getItem("lastCustomModelsFolderPath");',
@@ -114,7 +121,7 @@ app.on("ready", async () => {
}
});
- // SAVE LAST CUSTOM MODELS FOLDER PATH TO LOCAL STORAGE
+ // GET LAST CUSTOM MODELS FOLDER PATH TO LOCAL STORAGE
mainWindow.webContents
.executeJavaScript('localStorage.getItem("lastOutputFolderPath");', true)
.then((lastOutputFolderPath: string | null) => {
@@ -122,6 +129,15 @@ app.on("ready", async () => {
outputFolderPath = lastOutputFolderPath;
}
});
+
+ // GET LAST SAVE OUTPUT FOLDER (BOOLEAN) TO LOCAL STORAGE
+ mainWindow.webContents
+ .executeJavaScript('localStorage.getItem("rememberOutputFolder");', true)
+ .then((lastSaveOutputFolder: boolean | null) => {
+ if (lastSaveOutputFolder !== null) {
+ saveOutputFolder = lastSaveOutputFolder;
+ }
+ });
});
// Quit the app once all windows are closed
@@ -134,12 +150,6 @@ const logit = (...args: any) => {
mainWindow.webContents.send(commands.LOG, args.join(" "));
};
-// Path variables for file and folder selection
-let imagePath: string | undefined = undefined;
-let folderPath: string | undefined = undefined;
-let customModelsFolderPath: string | undefined = undefined;
-let outputFolderPath: string | undefined = undefined;
-
// Default models
const defaultModels = [
"realesrgan-x4plus",
@@ -163,19 +173,7 @@ ipcMain.handle(commands.SELECT_FILE, async () => {
return null;
} else {
logit("Selected File Path: ", filePaths[0]);
- const platform = getPlatform();
- imagePath =
- platform === "win"
- ? filePaths[0].replace(new RegExp(escapeRegExp("\\"), "g"), "\\\\")
- : filePaths[0];
- mainWindow.webContents
- .executeJavaScript(
- `localStorage.setItem("lastImagePath", "${imagePath}");`,
- true
- )
- .then(() => {
- logit(`Saved Last Image Path (${imagePath}) to Local Storage`);
- });
+ imagePath = filePaths[0];
let isValid = false;
// READ SELECTED FILES
@@ -221,25 +219,7 @@ ipcMain.handle(commands.SELECT_FOLDER, async (event, message) => {
return null;
} else {
logit("Selected Folder Path: ", folderPaths[0]);
- const platform = getPlatform();
- folderPath =
- platform === "win"
- ? folderPaths[0].replace(new RegExp(escapeRegExp("\\"), "g"), "\\\\")
- : folderPaths[0];
- mainWindow.webContents
- .executeJavaScript('localStorage.getItem("rememberOutputFolder");', true)
- .then((result) => {
- if (result === "false") return;
- mainWindow.webContents
- .executeJavaScript(
- `localStorage.setItem("lastFolderPath", "${folderPath}");`,
- true
- )
- .then(() => {
- logit(`Saved Last Folder Path (${folderPath}) to Local Storage`);
- });
- });
-
+ folderPath = folderPaths[0];
return folderPaths[0];
}
});
@@ -343,6 +323,21 @@ ipcMain.on(commands.DOUBLE_UPSCAYL, async (event, payload) => {
const saveImageAs = payload.saveImageAs as string;
const scale = payload.scale as string;
+ // SAVE OUTPUT FOLDER TO LOCAL STORAGE
+ mainWindow.webContents
+ .executeJavaScript('localStorage.getItem("rememberOutputFolder");', true)
+ .then((result) => {
+ if (result === "false") return;
+ mainWindow.webContents
+ .executeJavaScript(
+ `localStorage.setItem("lastFolderPath", "${folderPath}");`,
+ true
+ )
+ .then(() => {
+ logit(`Saved Last Folder Path (${folderPath}) to Local Storage`);
+ });
+ });
+
const isDefaultModel = defaultModels.includes(model);
// COPY IMAGE TO TMP FOLDER
diff --git a/renderer/components/LeftPaneImageSteps.tsx b/renderer/components/LeftPaneImageSteps.tsx
index 0fed493..233cccb 100644
--- a/renderer/components/LeftPaneImageSteps.tsx
+++ b/renderer/components/LeftPaneImageSteps.tsx
@@ -10,7 +10,6 @@ interface IProps {
selectImageHandler: () => Promise;
selectFolderHandler: () => Promise;
handleModelChange: (e: any) => void;
- handleDrop: (e: any) => void;
outputHandler: () => Promise;
upscaylHandler: () => Promise;
batchMode: boolean;
@@ -19,13 +18,8 @@ interface IProps {
outputPath: string;
doubleUpscayl: boolean;
setDoubleUpscayl: React.Dispatch>;
- model: string;
setModel: React.Dispatch>;
- isVideo: boolean;
- setIsVideo: React.Dispatch>;
- saveImageAs: string;
setSaveImageAs: React.Dispatch>;
- gpuId: string;
setGpuId: React.Dispatch>;
dimensions: {
width: number | null;
@@ -38,7 +32,6 @@ function LeftPaneImageSteps({
selectImageHandler,
selectFolderHandler,
handleModelChange,
- handleDrop,
outputHandler,
upscaylHandler,
batchMode,
@@ -47,13 +40,8 @@ function LeftPaneImageSteps({
outputPath,
doubleUpscayl,
setDoubleUpscayl,
- model,
setModel,
- isVideo,
- setIsVideo,
- gpuId,
setGpuId,
- saveImageAs,
setSaveImageAs,
dimensions,
}: IProps) {
@@ -84,7 +72,7 @@ function LeftPaneImageSteps({
} else {
const currentlySavedModel = JSON.parse(
localStorage.getItem("model")
- ) as (typeof modelOptions)[0];
+ ) as typeof modelOptions[0];
setCurrentModel(currentlySavedModel);
setModel(currentlySavedModel.value);
}
diff --git a/renderer/components/SettingsTab.tsx b/renderer/components/SettingsTab.tsx
index 095ccda..5a76504 100644
--- a/renderer/components/SettingsTab.tsx
+++ b/renderer/components/SettingsTab.tsx
@@ -2,19 +2,11 @@ import React, { useEffect, useState } from "react";
import { themeChange } from "theme-change";
import commands from "../../electron/commands";
import { useAtom } from "jotai";
-import {
- customModelsPathAtom,
- rememberOutputFolderAtom,
- scaleAtom,
-} from "../atoms/userSettingsAtom";
+import { customModelsPathAtom, scaleAtom } from "../atoms/userSettingsAtom";
import { modelsListAtom } from "../atoms/modelsListAtom";
interface IProps {
batchMode: boolean;
- setBatchMode: React.Dispatch>;
- rememberOutputFolder: boolean;
- setRememberOutputFolder: React.Dispatch>;
- imagePath: string;
setModel: React.Dispatch>;
saveImageAs: string;
setSaveImageAs: React.Dispatch>;
@@ -25,8 +17,6 @@ interface IProps {
function SettingsTab({
batchMode,
- setBatchMode,
- imagePath,
setModel,
gpuId,
setGpuId,
@@ -50,9 +40,7 @@ function SettingsTab({
const [scale, setScale] = useAtom(scaleAtom);
- const [rememberOutputFolder, setRememberOutputFolder] = useAtom(
- rememberOutputFolderAtom
- );
+ const [rememberOutputFolder, setRememberOutputFolder] = useState(false);
useEffect(() => {
themeChange(false);
@@ -71,7 +59,7 @@ function SettingsTab({
} else {
const currentlySavedModel = JSON.parse(
localStorage.getItem("model")
- ) as (typeof modelOptions)[0];
+ ) as typeof modelOptions[0];
setCurrentModel(currentlySavedModel);
setModel(currentlySavedModel.value);
}
@@ -82,6 +70,22 @@ function SettingsTab({
const currentlySavedGpuId = localStorage.getItem("gpuId");
setGpuId(currentlySavedGpuId);
}
+
+ if (!localStorage.getItem("rememberOutputFolder")) {
+ localStorage.setItem("rememberOutputFolder", "false");
+ } else {
+ const currentlySavedRememberOutputFolder = localStorage.getItem(
+ "rememberOutputFolder"
+ );
+ console.log(
+ "🚀 => file: SettingsTab.tsx:80 => currentlySavedRememberOutputFolder:",
+ currentlySavedRememberOutputFolder
+ );
+
+ setRememberOutputFolder(
+ currentlySavedRememberOutputFolder === "true" ? true : false
+ );
+ }
}, []);
useEffect(() => {
@@ -161,9 +165,19 @@ function SettingsTab({
{
- setRememberOutputFolder((oldValue) => !oldValue);
+ setRememberOutputFolder((oldValue) => {
+ if (oldValue === true) {
+ localStorage.removeItem("lastOutputFolderPath");
+ }
+
+ return !oldValue;
+ });
+ localStorage.setItem(
+ "rememberOutputFolder",
+ JSON.stringify(!rememberOutputFolder)
+ );
}}
/>
diff --git a/renderer/pages/index.tsx b/renderer/pages/index.tsx
index 71402e3..72a9f91 100644
--- a/renderer/pages/index.tsx
+++ b/renderer/pages/index.tsx
@@ -15,7 +15,6 @@ import { modelsListAtom } from "../atoms/modelsListAtom";
import {
batchModeAtom,
customModelsPathAtom,
- rememberOutputFolderAtom,
scaleAtom,
} from "../atoms/userSettingsAtom";
@@ -30,9 +29,6 @@ const Home = () => {
const [loaded, setLoaded] = useState(false);
const [version, setVersion] = useState("");
const [batchMode, setBatchMode] = useAtom(batchModeAtom);
- const [rememberOutputFolder, setRememberOutputFolder] = useAtom(
- rememberOutputFolderAtom
- );
const [batchFolderPath, setBatchFolderPath] = useState("");
const [upscaledBatchFolderPath, setUpscaledBatchFolderPath] = useState("");
const [doubleUpscayl, setDoubleUpscayl] = useState(false);
@@ -203,6 +199,18 @@ const Home = () => {
}
}, []);
+ useEffect(() => {
+ const rememberOutputFolder = localStorage.getItem("rememberOutputFolder");
+ const lastOutputFolderPath = localStorage.getItem("lastOutputFolderPath");
+
+ if (rememberOutputFolder === "true") {
+ setOutputPath(lastOutputFolderPath);
+ } else {
+ setOutputPath("");
+ localStorage.removeItem("lastOutputFolderPath");
+ }
+ }, []);
+
useEffect(() => {
setProgress("");
}, [batchMode]);
@@ -370,7 +378,6 @@ const Home = () => {
}
var dirname = filePath.match(/(.*)[\/\\]/)[1] || "";
- console.log("🚀 => handleDrop => dirname", dirname);
setOutputPath(dirname);
}
};
@@ -399,6 +406,10 @@ const Home = () => {
var path = await window.electron.invoke(commands.SELECT_FOLDER);
if (path !== null) {
setOutputPath(path);
+ const rememberOutputFolder = localStorage.getItem("rememberOutputFolder");
+ if (rememberOutputFolder) {
+ localStorage.setItem("lastOutputFolderPath", path);
+ }
} else {
console.log("Getting output path from input file");
}
@@ -517,7 +528,6 @@ const Home = () => {
selectImageHandler={selectImageHandler}
selectFolderHandler={selectFolderHandler}
handleModelChange={handleModelChange}
- handleDrop={handleDrop}
outputHandler={outputHandler}
upscaylHandler={upscaylHandler}
batchMode={batchMode}
@@ -526,13 +536,8 @@ const Home = () => {
outputPath={outputPath}
doubleUpscayl={doubleUpscayl}
setDoubleUpscayl={setDoubleUpscayl}
- model={model}
setModel={setModel}
- isVideo={isVideo}
- setIsVideo={setIsVideo}
- gpuId={gpuId}
setGpuId={setGpuId}
- saveImageAs={saveImageAs}
setSaveImageAs={setSaveImageAs}
dimensions={dimensions}
/>
@@ -541,10 +546,6 @@ const Home = () => {
{selectedTab === 1 && (
{
onDragOver={(e) => handleDragOver(e)}
onDragEnter={(e) => handleDragEnter(e)}
onDragLeave={(e) => handleDragLeave(e)}
- onPaste={(e) => handlePaste(e)}
- >
+ onPaste={(e) => handlePaste(e)}>
{progress.length > 0 &&
upscaledImagePath.length === 0 &&
upscaledBatchFolderPath.length === 0 &&
@@ -642,8 +642,7 @@ const Home = () => {
>