import { BSVersion } from "shared/bs-version.interface"; import { useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import { TabNavBar } from "renderer/components/shared/tab-nav-bar.component"; import { BsmDropdownButton } from "renderer/components/shared/bsm-dropdown-button.component"; import { BsmImage } from "renderer/components/shared/bsm-image.component"; import { BSUninstallerService } from "../services/bs-uninstaller.service"; import { BSVersionManagerService } from "../services/bs-version-manager.service"; import { ModalExitCode, ModalService } from "../services/modale.service"; import DefautVersionImage from "../../../assets/images/default-version-img.jpg"; import { IpcService } from "renderer/services/ipc.service"; import { LaunchSlide } from "renderer/components/version-viewer/slides/launch/launch-slide.component"; import { ModsSlide } from "renderer/components/version-viewer/slides/mods/mods-slide.component"; import { UninstallModal } from "renderer/components/modal/modal-types/uninstall-modal.component"; import { MapsPlaylistsPanel } from "renderer/components/maps-playlists-panel/maps-playlists-panel.component"; import { ShareFoldersModal } from "renderer/components/modal/modal-types/share-folders-modal.component"; import { ModelsPanel } from "renderer/components/models-management/models-panel.component"; import { useService } from "renderer/hooks/use-service.hook"; import { BSLauncherService } from "renderer/services/bs-launcher.service"; import { CreateLaunchShortcutModal } from "renderer/components/modal/modal-types/create-launch-shortcut-modal.component"; import { lastValueFrom } from "rxjs"; import { NotificationService } from "renderer/services/notification.service"; import { BsDownloaderService } from "renderer/services/bs-version-download/bs-downloader.service"; export function VersionViewer() { const bsUninstallerService = useService(BSUninstallerService); const bsVersionManagerService = useService(BSVersionManagerService); const modalService = useService(ModalService); const bsDownloader = useService(BsDownloaderService); const ipcService = useService(IpcService); const bsLauncher = useService(BSLauncherService); const notification = useService(NotificationService); const { state } = useLocation() as { state: BSVersion }; const navigate = useNavigate(); const [currentTabIndex, setCurrentTabIndex] = useState(0); const navigateToVersion = (version?: BSVersion) => { if (!version) { return navigate("/available-versions"); } navigate(`/bs-version/${version.BSVersion}`, { state: version }); }; const openFolder = () => lastValueFrom(ipcService.sendV2("bs-version.open-folder", state)); const verifyFiles = () => bsDownloader.verifyBsVersion(state); const uninstall = async () => { const modalCompleted = await modalService.openModal(UninstallModal, { data: state }); if (modalCompleted.exitCode === ModalExitCode.COMPLETED) { bsUninstallerService.uninstall(state).then(() => { bsVersionManagerService.askInstalledVersions().then(versions => { navigateToVersion(versions?.at(0)); }); }); } }; const edit = () => { bsVersionManagerService.editVersion(state).then(newVersion => { if (!newVersion) { return; } navigateToVersion(newVersion); }); }; const clone = () => { bsVersionManagerService.cloneVersion(state).then(newVersion => { if (!newVersion) { return; } navigateToVersion(newVersion); }); }; const handleModsDisclaimerDecline = () => { setCurrentTabIndex(() => 0); }; const openShareFolderModal = () => { modalService.openModal(ShareFoldersModal, {data: state}); }; const createLaunchShortcut = async () => { const { exitCode, data } = await modalService.openModal(CreateLaunchShortcutModal, {data: state}); if(exitCode !== ModalExitCode.COMPLETED){ return; } lastValueFrom(bsLauncher.createLaunchShortcut(data)).then(() => { notification.notifySuccess({ title: "notifications.create-launch-shortcut.success.title", desc: "notifications.create-launch-shortcut.success.msg" }); }).catch(() => { notification.notifyError({ title: "notifications.types.error", desc: "notifications.create-launch-shortcut.error.msg" }); }); } return ( <>
setCurrentTabIndex(i)} />
setCurrentTabIndex(() => 3)} />
); }