import { ChildProcessWithoutNullStreams } from "child_process"; import { getMainWindow } from "../main-window"; import logit from "./logit"; /** * The saved image path so that the select image dialog can open to the last used path. */ export let savedImagePath: string | undefined = ""; export function setSavedImagePath(value: string | undefined): void { savedImagePath = value; logit("🖼️ Updating Image Path: ", savedImagePath); } /** * The saved folder path so that the select folder to upscayl dialog can open to the last used path. */ export let savedBatchUpscaylFolderPath: string | undefined = undefined; export function setSavedBatchUpscaylFolderPath( value: string | undefined, ): void { savedBatchUpscaylFolderPath = value; logit("📁 Updating Folder Path: ", savedBatchUpscaylFolderPath); } export let savedCustomModelsPath: string | undefined = undefined; export function setSavedCustomModelsPath(value: string | undefined): void { savedCustomModelsPath = value; logit("📁 Updating Custom Models Folder Path: ", savedCustomModelsPath); } export let savedOutputPath: string | undefined = undefined; export function setSavedOutputPath(value: string | undefined): void { savedOutputPath = value; logit("📁 Updating Output Folder Path: ", savedOutputPath); } export let rememberOutputFolder = false; export function setRememberOutputFolder(value: boolean): void { rememberOutputFolder = value; logit("💾 Updating Remember Output Folder: ", rememberOutputFolder); } export let savedCompression = 0; export function setCompression(value: number): void { savedCompression = value; logit("📐 Updating Compression: ", savedCompression); } export let stopped = false; export let childProcesses: { process: ChildProcessWithoutNullStreams; kill: () => boolean; }[] = []; export let noImageProcessing: boolean = false; export function setNoImageProcessing(value: boolean): void { noImageProcessing = value; logit("🖼️ Updating No Image Processing: ", noImageProcessing); } export let turnOffNotifications: boolean = false; export function setTurnOffNotifications(value: boolean): void { turnOffNotifications = value; logit("🔕 Updating Turn Off Notifications: ", turnOffNotifications); } export let customWidth: string | null = null; export function setCustomWidth(value: string | null): void { customWidth = value; logit("📏 Updating Custom Width: ", customWidth); } export let useCustomWidth: boolean = false; export function setUseCustomWidth(value: boolean): void { useCustomWidth = value; logit("📏 Updating Use Custom Width: ", useCustomWidth); } // SETTERS export function setStopped(value: boolean): void { stopped = value; logit("🛑 Updating Stopped: ", stopped); } export function setChildProcesses(value: { process: ChildProcessWithoutNullStreams; kill: () => boolean; }): void { childProcesses.push(value); logit( "👶 Updating Child Processes: ", JSON.stringify({ binary: childProcesses[0].process.spawnfile, args: childProcesses[0].process.spawnargs, }), ); } // LOCAL STORAGE export function fetchLocalStorage(): void { const mainWindow = getMainWindow(); if (!mainWindow) return; // GET LAST IMAGE PATH TO LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("lastImagePath");', true) .then((lastImagePath: string | null) => { if (lastImagePath && lastImagePath.length > 0) { setSavedImagePath(lastImagePath); } }); // GET LAST FOLDER PATH TO LOCAL STORAGE mainWindow.webContents .executeJavaScript( 'localStorage.getItem("lastSavedBatchUpscaylFolderPath");', true, ) .then((lastSavedBatchUpscaylFolderPath: string | null) => { if ( lastSavedBatchUpscaylFolderPath && lastSavedBatchUpscaylFolderPath.length > 0 ) { setSavedBatchUpscaylFolderPath(lastSavedBatchUpscaylFolderPath); } }); // GET LAST CUSTOM MODELS FOLDER PATH TO LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("customModelsFolderPath");', true) .then((value: string | null) => { if (value && value.length > 0) { setSavedCustomModelsPath(value); } }); // GET LAST CUSTOM MODELS FOLDER PATH TO LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("savedOutputPath");', true) .then((savedOutputPath: string | null) => { if (savedOutputPath && savedOutputPath.length > 0) { setSavedOutputPath(savedOutputPath); } }); // GET LAST SAVE OUTPUT FOLDER (BOOLEAN) TO LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("rememberOutputFolder");', true) .then((lastSaveOutputFolder: boolean | null) => { if (lastSaveOutputFolder !== null) { setRememberOutputFolder(lastSaveOutputFolder); } }); // GET IMAGE COMPRESSION (NUMBER) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("compression");', true) .then((lastSavedCompression: string | null) => { if (lastSavedCompression !== null) { setCompression(parseInt(lastSavedCompression)); } }); // GET PROCESS IMAGE (BOOLEAN) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("noImageProcessing");', true) .then((lastSaved: string | null) => { if (lastSaved !== null) { setNoImageProcessing(lastSaved === "true"); } }); // GET TURN OFF NOTIFICATIONS (BOOLEAN) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("turnOffNotifications");', true) .then((lastSaved: string | null) => { if (lastSaved !== null) { setTurnOffNotifications(lastSaved === "true"); } }); // GET CUSTOM WIDTH (STRING) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("customWidth");', true) .then((lastSaved: string | null) => { if (lastSaved !== null) { setCustomWidth(lastSaved); } }); // GET USE CUSTOM WIDTH (BOOLEAN) FROM LOCAL STORAGE mainWindow.webContents .executeJavaScript('localStorage.getItem("useCustomWidth");', true) .then((lastSaved: string | null) => { if (lastSaved !== null) { setUseCustomWidth(lastSaved === "true"); } }); }