diff --git a/electron/commands/batch-upscayl.ts b/electron/commands/batch-upscayl.ts index ab3fcfe..3a57f31 100644 --- a/electron/commands/batch-upscayl.ts +++ b/electron/commands/batch-upscayl.ts @@ -20,6 +20,7 @@ import COMMAND from "../constants/commands"; import convertAndScale from "../utils/convert-and-scale"; import DEFAULT_MODELS from "../constants/models"; import { BatchUpscaylPayload } from "../../common/types/types"; +import { ImageFormat } from "../utils/types"; const batchUpscayl = async (event, payload: BatchUpscaylPayload) => { const mainWindow = getMainWindow(); @@ -27,7 +28,7 @@ const batchUpscayl = async (event, payload: BatchUpscaylPayload) => { // GET THE MODEL const model = payload.model; const gpuId = payload.gpuId; - const saveImageAs = payload.saveImageAs; + const saveImageAs = payload.saveImageAs as ImageFormat; // GET THE IMAGE DIRECTORY let inputDir = payload.batchFolderPath; diff --git a/electron/commands/double-upscayl.ts b/electron/commands/double-upscayl.ts index 476b744..b9b12c1 100644 --- a/electron/commands/double-upscayl.ts +++ b/electron/commands/double-upscayl.ts @@ -23,6 +23,7 @@ import logit from "../utils/logit"; import COMMAND from "../constants/commands"; import convertAndScale from "../utils/convert-and-scale"; import { DoubleUpscaylPayload } from "../../common/types/types"; +import { ImageFormat } from "../utils/types"; const doubleUpscayl = async (event, payload: DoubleUpscaylPayload) => { const mainWindow = getMainWindow(); @@ -37,7 +38,7 @@ const doubleUpscayl = async (event, payload: DoubleUpscaylPayload) => { outputDir = outputFolderPath; } const gpuId = payload.gpuId as string; - const saveImageAs = payload.saveImageAs as string; + const saveImageAs = payload.saveImageAs as ImageFormat; setNoImageProcessing(payload.noImageProcessing); setCompression(parseInt(payload.compression)); diff --git a/electron/commands/image-upscayl.ts b/electron/commands/image-upscayl.ts index a9fb113..73a12b1 100644 --- a/electron/commands/image-upscayl.ts +++ b/electron/commands/image-upscayl.ts @@ -7,12 +7,10 @@ import { folderPath, noImageProcessing, outputFolderPath, - overwrite, saveOutputFolder, setChildProcesses, setCompression, setNoImageProcessing, - setOverwrite, setStopped, stopped, } from "../utils/config-variables"; @@ -25,6 +23,7 @@ import { parse } from "path"; import DEFAULT_MODELS from "../constants/models"; import { getMainWindow } from "../main-window"; import { ImageUpscaylPayload } from "../../common/types/types"; +import { ImageFormat } from "../utils/types"; const imageUpscayl = async (event, payload: ImageUpscaylPayload) => { const mainWindow = getMainWindow(); @@ -34,13 +33,13 @@ const imageUpscayl = async (event, payload: ImageUpscaylPayload) => { return; } - setOverwrite(payload.overwrite); setNoImageProcessing(payload.noImageProcessing); setCompression(parseInt(payload.compression)); const model = payload.model as string; const gpuId = payload.gpuId as string; - const saveImageAs = payload.saveImageAs as string; + const saveImageAs = payload.saveImageAs as ImageFormat; + const overwrite = payload.overwrite as boolean; let inputDir = (payload.imagePath.match(/(.*)[\/\\]/)?.[1] || "") as string; let outputDir: string | undefined = diff --git a/electron/utils/config-variables.ts b/electron/utils/config-variables.ts index 192624c..5ccd65c 100644 --- a/electron/utils/config-variables.ts +++ b/electron/utils/config-variables.ts @@ -8,7 +8,6 @@ export let customModelsFolderPath: string | undefined = undefined; export let outputFolderPath: string | undefined = undefined; export let saveOutputFolder = false; export let compression = 0; -export let overwrite = false; export let stopped = false; export let childProcesses: { process: ChildProcessWithoutNullStreams; @@ -47,11 +46,6 @@ export function setCompression(value: number): void { logit("📐 Updating Compression: ", compression); } -export function setOverwrite(value: boolean): void { - overwrite = value; - logit("📝 Updating Overwrite: ", overwrite); -} - export function setStopped(value: boolean): void { stopped = value; logit("🛑 Updating Stopped: ", stopped); @@ -132,14 +126,6 @@ export function fetchLocalStorage(): void { setCompression(parseInt(lastSavedCompression)); } }); - // GET OVERWRITE (BOOLEAN) FROM LOCAL STORAGE - mainWindow.webContents - .executeJavaScript('localStorage.getItem("overwrite");', true) - .then((lastSavedOverwrite: string | null) => { - if (lastSavedOverwrite !== null) { - setOverwrite(lastSavedOverwrite === "true"); - } - }); // GET PROCESS IMAGE (BOOLEAN) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("noImageProcessing");', true) diff --git a/electron/utils/convert-and-scale.ts b/electron/utils/convert-and-scale.ts index e0aa94d..c82c3e2 100644 --- a/electron/utils/convert-and-scale.ts +++ b/electron/utils/convert-and-scale.ts @@ -3,13 +3,14 @@ import sharp, { FormatEnum, Metadata } from "sharp"; import logit from "./logit"; import { getMainWindow } from "../main-window"; import { compression } from "./config-variables"; +import { ImageFormat } from "./types"; const convertAndScale = async ( originalImagePath: string, upscaledImagePath: string, processedImagePath: string, scale: string, - saveImageAs: string, + saveImageAs: ImageFormat, onError: (error: any) => void ) => { if (saveImageAs === "png" && scale === "4" && compression === 0) { diff --git a/electron/utils/types.d.ts b/electron/utils/types.d.ts new file mode 100644 index 0000000..8a7f4c0 --- /dev/null +++ b/electron/utils/types.d.ts @@ -0,0 +1 @@ +export type ImageFormat = "png" | "jpg" | "webp"; diff --git a/package.json b/package.json index e7aa713..5d897d6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "upscayl", "private": true, - "version": "2.9.5", + "version": "2.9.6", "productName": "Upscayl", "author": { "name": "Nayam Amarshe", diff --git a/renderer/atoms/userSettingsAtom.ts b/renderer/atoms/userSettingsAtom.ts index 2685821..c695a98 100644 --- a/renderer/atoms/userSettingsAtom.ts +++ b/renderer/atoms/userSettingsAtom.ts @@ -26,3 +26,5 @@ export const noImageProcessingAtom = atomWithStorage( ); export const compressionAtom = atomWithStorage("compression", 0); + +export const overwriteAtom = atomWithStorage("overwrite", false); diff --git a/renderer/components/settings-tab/ImageFormatSelect.tsx b/renderer/components/settings-tab/ImageFormatSelect.tsx index e8981d9..ff56316 100644 --- a/renderer/components/settings-tab/ImageFormatSelect.tsx +++ b/renderer/components/settings-tab/ImageFormatSelect.tsx @@ -51,14 +51,12 @@ export function ImageFormatSelect({ disabled={noImageProcessing}> JPG - {/* WEBP + {/* WEBP */} */} + diff --git a/renderer/components/settings-tab/OverwriteToggle.tsx b/renderer/components/settings-tab/OverwriteToggle.tsx index 0da59dd..3ffd79a 100644 --- a/renderer/components/settings-tab/OverwriteToggle.tsx +++ b/renderer/components/settings-tab/OverwriteToggle.tsx @@ -1,21 +1,9 @@ +import { overwriteAtom } from "@/atoms/userSettingsAtom"; +import { useAtom } from "jotai"; import React, { useEffect } from "react"; -type OverwriteToggleProps = { - overwrite: boolean; - setOverwrite: (arg: any) => void; -}; - -const OverwriteToggle = ({ overwrite, setOverwrite }: OverwriteToggleProps) => { - useEffect(() => { - if (!localStorage.getItem("overwrite")) { - localStorage.setItem("overwrite", JSON.stringify(overwrite)); - } else { - const currentlySavedOverwrite = localStorage.getItem("overwrite"); - if (currentlySavedOverwrite) { - setOverwrite(currentlySavedOverwrite === "true"); - } - } - }, []); +const OverwriteToggle = () => { + const [overwrite, setOverwrite] = useAtom(overwriteAtom); return (
diff --git a/renderer/components/settings-tab/index.tsx b/renderer/components/settings-tab/index.tsx index 246d99d..9fd0170 100644 --- a/renderer/components/settings-tab/index.tsx +++ b/renderer/components/settings-tab/index.tsx @@ -12,6 +12,7 @@ import { useAtom, useAtomValue } from "jotai"; import { customModelsPathAtom, noImageProcessingAtom, + overwriteAtom, scaleAtom, } from "../../atoms/userSettingsAtom"; import { modelsListAtom } from "../../atoms/modelsListAtom"; @@ -33,8 +34,6 @@ interface IProps { gpuId: string; setGpuId: React.Dispatch>; logData: string[]; - overwrite: boolean; - setOverwrite: (arg: any) => void; os: "linux" | "mac" | "win" | undefined; show: boolean; setShow: React.Dispatch>; @@ -51,8 +50,6 @@ function SettingsTab({ saveImageAs, setSaveImageAs, logData, - overwrite, - setOverwrite, os, show, setShow, @@ -219,7 +216,7 @@ function SettingsTab({ setRememberOutputFolder={setRememberOutputFolder} /> - + {/* GPU ID INPUT */} diff --git a/renderer/pages/index.tsx b/renderer/pages/index.tsx index 34f785a..4b23eef 100644 --- a/renderer/pages/index.tsx +++ b/renderer/pages/index.tsx @@ -19,6 +19,7 @@ import { dontShowCloudModalAtom, noImageProcessingAtom, outputPathAtom, + overwriteAtom, progressAtom, scaleAtom, } from "../atoms/userSettingsAtom"; @@ -45,7 +46,7 @@ const Home = () => { const [version, setVersion] = useState(""); const [batchFolderPath, setBatchFolderPath] = useState(""); const [doubleUpscayl, setDoubleUpscayl] = useState(false); - const [overwrite, setOverwrite] = useState(false); + const overwrite = useAtomValue(overwriteAtom); const [upscaledBatchFolderPath, setUpscaledBatchFolderPath] = useState(""); const [doubleUpscaylCounter, setDoubleUpscaylCounter] = useState(0); const [gpuId, setGpuId] = useState(""); @@ -262,15 +263,6 @@ const Home = () => { useEffect(() => { const rememberOutputFolder = localStorage.getItem("rememberOutputFolder"); const lastOutputFolderPath = localStorage.getItem("lastOutputFolderPath"); - // GET OVERWRITE - if (!localStorage.getItem("overwrite")) { - localStorage.setItem("overwrite", JSON.stringify(overwrite)); - } else { - const currentlySavedOverwrite = localStorage.getItem("overwrite"); - if (currentlySavedOverwrite) { - setOverwrite(currentlySavedOverwrite === "true"); - } - } if (rememberOutputFolder === "true") { logit("🧠 Recalling Output Folder: ", lastOutputFolderPath); setOutputPath(lastOutputFolderPath); @@ -584,8 +576,6 @@ const Home = () => { saveImageAs={saveImageAs} setSaveImageAs={setSaveImageAs} logData={logData} - overwrite={overwrite} - setOverwrite={setOverwrite} os={os} show={showCloudModal} setShow={setShowCloudModal} diff --git a/resources/mac/bin/upscayl-bin b/resources/mac/bin/upscayl-bin index 901388b..2d5a719 100755 Binary files a/resources/mac/bin/upscayl-bin and b/resources/mac/bin/upscayl-bin differ