import { useState, useEffect, useRef, useCallback } from "react"; import commands from "../../main/commands"; import { ReactCompareSlider, ReactCompareSliderImage, } from "react-compare-slider"; import Animated from "../public/loading.svg"; import Image from "next/image"; const Home = () => { const [imagePath, SetImagePath] = useState(""); const [upscaledImagePath, setUpscaledImagePath] = useState(""); const [outputPath, SetOutputPath] = useState(""); const [scaleFactor, setScaleFactor] = useState(4); const [progress, setProgress] = useState(""); const [model, setModel] = useState("realesrgan-x4plus"); const [loaded, setLoaded] = useState(false); const [version, setVersion] = useState(""); useEffect(() => { setVersion(navigator.userAgent.match(/Upscayl\/([\d\.]+\d+)/)[1]); }, []); useEffect(() => { setLoaded(true); window.electron.on(commands.UPSCAYL_PROGRESS, (_, data) => { if (data.includes("invalid gpu")){ alert("Error!!! Please make sure your GPU supports vulkan") } else if (data.length > 0 && data.length < 10) setProgress(data); }); window.electron.on(commands.UPSCAYL_DONE, (_, data) => { setUpscaledImagePath(data); }); }, []); const selectImageHandler = async () => { SetImagePath(""); setUpscaledImagePath(""); setProgress(""); var path = await window.electron.invoke(commands.SELECT_FILE); if (path !== "cancelled") { SetImagePath(path); var dirname = path.match(/(.*)[\/\\]/)[1] || ""; SetOutputPath(dirname); } }; const handleModelChange = (e) => { setModel(e.target.value); }; const outputHandler = async () => { var path = await window.electron.invoke(commands.SELECT_FOLDER); if (path !== "cancelled") { SetOutputPath(path); } else { console.log("Getting output path from input file"); } }; const upscaylHandler = async () => { if (imagePath !== "") { setUpscaledImagePath(""); setProgress("Hold on..."); await window.electron.send(commands.UPSCAYL, { scaleFactor, imagePath, outputPath, model, }); } else { alert("Please select an image!!!") } }; return (
{/* HEADER */}

Upscayl

AI Image Upscaler

{/* LEFT PANE */}
{/* STEP 1 */}

Step 1

{/* STEP 2 */}

Step 2

Select Upscaling Type

{/* STEP 3

Step 3

Select Scale Factor

*/} {/* STEP 4 */}

Step 3

Defaults to Image's path

{/* STEP 4 */}

Step 5

Copyright © 2022 -{" "} Upscayl

Made by{" "} TGS963 {" "} and{" "} Nayam Amarshe

{/* RIGHT PANE */}
{progress.length > 0 && (

{progress}

)} {imagePath.length === 0 ? ( <>

Select an Image to Upscale

Upscale v{version}

) : upscaledImagePath.length === 0 ? ( ) : ( } itemTwo={ } className="object-contain" /> )}
); }; export default Home;