diff --git a/src/renderer/pages/version-viewer.component.tsx b/src/renderer/pages/version-viewer.component.tsx index a7daddda..84e116c1 100644 --- a/src/renderer/pages/version-viewer.component.tsx +++ b/src/renderer/pages/version-viewer.component.tsx @@ -1,15 +1,25 @@ import { BSVersion } from '../../main/services/bs-version-manager.service'; import { useEffect, useState } from 'react'; -import { useLocation } from 'react-router-dom'; +import { useLocation, useNavigate } from 'react-router-dom'; import BSLogo from '../../../assets/bs-logo.png'; import { BSLauncherService, LaunchMods, LaunchResult } from '../services/bs-launcher.service'; import { TabNavBar } from 'renderer/components/shared/tab-nav-bar.component'; import wipGif from "../../../assets/wip.gif" import { ConfigurationService } from 'renderer/services/configuration.service'; +import { BsmDropdownButton } from 'renderer/components/shared/bsm-dropdown-button.component'; +import { BsmIcon, BsmIconType } from 'renderer/components/svgs/bsm-icon.component'; +import { BsmImage } from 'renderer/components/shared/bsm-image.component'; +import defaultImageVersion from "../../../assets/default-version-img.jpg" +import { BsmButton } from 'renderer/components/shared/bsm-button.component'; +import BeatRunning from "../../../assets/beat-running.png" +import { BSUninstallerService } from '../services/bs-uninstaller.service'; +import { BSVersionManagerService } from '../services/bs-version-manager.service'; +import { ModalExitCode, ModalService, ModalType } from '../services/modale.service'; export function VersionViewer() { const {state} = useLocation() as {state: BSVersion}; + const navigate = useNavigate(); //const bsLauncherService = BSLauncherService.getInstance(); const [oculusMode, setOculusMode] = useState(false); @@ -18,6 +28,9 @@ export function VersionViewer() { const [currentTabIndex, setCurrentTabIndex] = useState(0); const configService = ConfigurationService.getInstance(); + const bsUninstallerService = BSUninstallerService.getInstance(); + const bsVersionManagerService = BSVersionManagerService.getInstance(); + const modalService = ModalService.getInsance(); // const [launchRes, setLaunchRes] = useState(null); @@ -43,22 +56,45 @@ export function VersionViewer() { configService.set(mode, value); } + const dropDownActions = async (id: number) => { + if(id === 3){ + const modalCompleted = await modalService.openModal(ModalType.UNINSTALL, state) + if(modalCompleted.exitCode === ModalExitCode.COMPLETED){ + bsUninstallerService.uninstall(state) + .then(() => { + bsVersionManagerService.askInstalledVersions(); + const newVersionPage = bsVersionManagerService.getInstalledVersions()[0]; + navigate("/bs-version/"+newVersionPage.BSVersion, {state: newVersionPage}); + }) + .catch((e) => {console.log("*** ", e)}) + } + } + else if(id === 2){ + window.electron.ipcRenderer.sendMessage("bs-version.open-folder", state); + } + } + // const launchBs = () => { // bsLauncherService.launch(state, oculusMode, desktopMode, debugMode).then(res => setLaunchRes(res)); // } return ( <> - +
- +

{state.BSVersion}

setCurrentTabIndex(i)}/>
-
- setMode(LaunchMods.OCULUS_MOD, !oculusMode)} active={oculusMode} text="OCULUS MOD"/> - setMode(LaunchMods.DESKTOP_MOD, !desktopMode)} active={desktopMode} text="DESKTOP MOD"/> - setMode(LaunchMods.DEBUG_MOD, !debugMode)} active={debugMode} text="DEBUG MOD"/> +
+
+ setMode(LaunchMods.OCULUS_MOD, !oculusMode)} active={oculusMode} text="OCULUS MOD"/> + setMode(LaunchMods.DESKTOP_MOD, !desktopMode)} active={desktopMode} text="DESKTOP MOD"/> + setMode(LaunchMods.DEBUG_MOD, !debugMode)} active={debugMode} text="DEBUG MOD"/> +
+
+ +
@@ -74,12 +110,23 @@ export function VersionViewer() {
+ ) } -export function ToogleLunchMod(props: {onClick: Function, active: boolean, text: string}) { +function ToogleLunchMod(props: {onClick: Function, active: boolean, text: string, icon: BsmIconType}) { return ( - props.onClick()} className={`w-56 text-center cursor-pointer p-3 border-4 border-white rounded-full font-bold italic text-lg tracking-wide ml-3 mr-3 transition-all ${props.active && "bg-white text-black bg-opacity-70"} hover:bg-white hover:bg-opacity-70 hover:text-black`}>{props.text} +
props.onClick()}> +
+
+ + {props.text} +
+
); }