From 69d343a67c2312f44fb557684951567b7c8be4ed Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Thu, 26 May 2022 22:36:21 +0200 Subject: [PATCH] version page can be used now --- .../pages/version-viewer.component.tsx | 93 +++++++++++++++++-- 1 file changed, 87 insertions(+), 6 deletions(-) diff --git a/src/renderer/pages/version-viewer.component.tsx b/src/renderer/pages/version-viewer.component.tsx index ebf7a45d..51c33559 100644 --- a/src/renderer/pages/version-viewer.component.tsx +++ b/src/renderer/pages/version-viewer.component.tsx @@ -1,17 +1,98 @@ -import { useLocation } from 'react-router-dom' +import { BSVersion } from 'main/services/bs-version-manager.service'; +import { useEffect, useState } from 'react'; +import { useLocation } from 'react-router-dom'; +import { BsDownloaderService } from 'renderer/services/bs-downloader.service'; +import { map, Subscription } from 'rxjs'; +import BSLogo from '../../../assets/bs-logo.png'; +import BeatRunning from '../../../assets/beat-running.png'; +import { BSLauncherService, LaunchResult } from 'renderer/services/bs-launcher.service'; export function VersionViewer() { - const {state} = useLocation(); - console.log(state); + const {state} = useLocation() as {state: BSVersion}; + + const bsDownloaderService = BsDownloaderService.getInstance(); + const bsLauncherService = BSLauncherService.getInstance(); + + const [oculusMode, setOculusMode] = useState(false); + const [desktopMode, setDesktopMode] = useState(false); + const [debugMode, setDebugMode] = useState(false); + const [downloading, setDownloading] = useState(false); + const [downloadProgress, setDownloadProgress] = useState(0); + + const [subs, setSubs] = useState([] as Subscription[]); + + const [launchRes, setLaunchRes] = useState(null); + + useEffect(() => { + const downloadingSub = bsDownloaderService.currentBsVersionDownload$.subscribe(version => { + if(!version){ setDownloading(false); return } + if(state.BSVersion === version.BSVersion){ setDownloading(true); return } + setDownloading(false); + }); + setSubs([...subs, downloadingSub]); + + return () => { + subs.forEach(s => s.unsubscribe()); + setOculusMode(false); setDebugMode(false); setDesktopMode(false); + setDownloading(false); + setLaunchRes(null); + } + }, [state]); + + useEffect(() => { + if(!downloading){ return; } + const progressSub = bsDownloaderService.downloadProgress$.subscribe(progress => { + if(downloading){ setDownloadProgress(progress); } + }); + setSubs([...subs, progressSub]); + }, [downloading]) + + + + + const setMode = (mode: string, value: boolean) => { + if(mode === "debug"){ setDebugMode(value); } + if(mode === "oculus"){ setOculusMode(value); setDesktopMode(false); } + if(mode === "desktop"){ setDesktopMode(value); setOculusMode(false); } + } const launchBs = () => { - window.electron.ipcRenderer.sendMessage('bs-launch.steam'); //Temporary + bsLauncherService.launch(state, oculusMode, desktopMode, debugMode).then(res => setLaunchRes(res)); } return ( -