From 2c7901e8b31c176e3dfbef00a9bba4aa7215d6ea Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Mon, 16 May 2022 22:09:22 +0200 Subject: [PATCH] =?UTF-8?q?listage=20des=20version=20BS=20dispo,=20le=20pa?= =?UTF-8?q?th=20de=20BS=20steam=20est=20mtn=20bien=20d=C3=A9t=C3=A9ct?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ipcs/bs-launcher-ipcs.ts | 4 +-- src/main/services/bs-installer.service.ts | 12 ++++--- .../services/bs-version-manager.service.ts | 1 + src/main/services/steam.service.ts | 18 +++++------ src/renderer/App.tsx | 12 ++++--- .../available-versions-array.component.tsx | 31 +++++++++++++++++++ .../components/nav-bar/nav-bar.component.tsx | 6 ++-- .../title-bar/title-bar.component.tsx | 2 +- src/renderer/index.css | 6 ++-- .../available-versions-list.components.tsx | 17 ++++++++++ .../pages/version-viewer.component.tsx | 3 +- .../pages/versions-list.components.tsx | 7 ----- .../reducers/bs-versions-available.reducer.ts | 20 ++++++++++++ src/renderer/store/store.ts | 3 +- tailwind.config.js | 10 ++++++ 15 files changed, 111 insertions(+), 41 deletions(-) create mode 100644 src/renderer/components/available-versions-array.component.tsx create mode 100644 src/renderer/pages/available-versions-list.components.tsx delete mode 100644 src/renderer/pages/versions-list.components.tsx create mode 100644 src/renderer/store/reducers/bs-versions-available.reducer.ts diff --git a/src/main/ipcs/bs-launcher-ipcs.ts b/src/main/ipcs/bs-launcher-ipcs.ts index 36709761..febc06cc 100644 --- a/src/main/ipcs/bs-launcher-ipcs.ts +++ b/src/main/ipcs/bs-launcher-ipcs.ts @@ -30,9 +30,7 @@ ipcMain.on('test-launch', async () => { ipcMain.on('bs-launch.steam', async (event, args) => { const steamService = SteamService.getInstance(); - const beatSaberSteamFolder = path.join(await steamService.getSteamGamesFolder(), "Beat Saber"); + const beatSaberSteamFolder = await steamService.getGameFolder(BS_APP_ID, "Beat Saber"); const beatSaberSteamExe = path.join(beatSaberSteamFolder, BS_EXECUTABLE); const spawnProcess = spawn(`\"${beatSaberSteamExe}\"`, [], {shell: true, cwd: beatSaberSteamFolder, env: {...process.env, "SteamAppId": BS_APP_ID}}); - - }) diff --git a/src/main/services/bs-installer.service.ts b/src/main/services/bs-installer.service.ts index 9c89eb62..3ac2b356 100644 --- a/src/main/services/bs-installer.service.ts +++ b/src/main/services/bs-installer.service.ts @@ -30,11 +30,15 @@ export class BSInstallerService{ public async getInstalledBsVersion(): Promise{ const versions: BSVersion[] = []; - if(this.steamService.isGameInstalled(BS_APP_ID)){ - const steamBsFolder = path.join(await this.steamService.getSteamGamesFolder(), "Beat Saber"); + console.log("aaa"); + const steamBsFolder = await this.steamService.getGameFolder(BS_APP_ID, "Beat Saber") + console.log(steamBsFolder); + if(steamBsFolder && this.utils.pathExist(steamBsFolder)){ const steamBsVersion = await this.bsVersionService.getVersionOfBSFolder(steamBsFolder); - const steamVersionDetails = this.bsVersionService.getVersionDetailFromVersionNumber(steamBsVersion); - versions.push(steamVersionDetails ? {...steamVersionDetails, steam: true} : {BSVersion: steamBsVersion, steam: true}); + if(steamBsVersion){ + const steamVersionDetails = this.bsVersionService.getVersionDetailFromVersionNumber(steamBsVersion); + versions.push(steamVersionDetails ? {...steamVersionDetails, steam: true} : {BSVersion: steamBsVersion, steam: true}); + } } if(!this.utils.folderExist(this.getBSInstallationFolder())){ return versions } diff --git a/src/main/services/bs-version-manager.service.ts b/src/main/services/bs-version-manager.service.ts index c8ea6cb7..e24fd9ea 100644 --- a/src/main/services/bs-version-manager.service.ts +++ b/src/main/services/bs-version-manager.service.ts @@ -70,6 +70,7 @@ export class BSVersionManagerService{ public async getVersionOfBSFolder(bsPath: string): Promise{ const versionFilePath = path.join(bsPath, 'Beat Saber_Data', 'globalgamemanagers'); + console.log(versionFilePath); if(!this.utilsService.pathExist(versionFilePath)){ return null; } const versionsAvailable = await this.getAvailableVersions(); diff --git a/src/main/services/steam.service.ts b/src/main/services/steam.service.ts index a732c79f..802c1ecc 100644 --- a/src/main/services/steam.service.ts +++ b/src/main/services/steam.service.ts @@ -37,28 +37,24 @@ export class SteamService{ return this.steamPath; } - public async getSteamGamesFolder(): Promise{ - this.isGameInstalled(""); - const steamFolder = await this.getSteamPath(); - return path.join(steamFolder, 'steamapps', 'common'); - } - - public async isGameInstalled(gameId: string): Promise{ + public async getGameFolder(gameId: string, gameFolder?: string): Promise{ const steamPath = await this.getSteamPath(); let libraryFolders: any = path.join(steamPath, 'steamapps', 'libraryfolders.vdf'); - if(!this.utils.pathExist(libraryFolders)){ return false; } + if(!this.utils.pathExist(libraryFolders)){ console.log("null 1"); return null; } libraryFolders = parse(await readFile(libraryFolders, {encoding: 'utf-8'})); - if(!libraryFolders.libraryfolders){ return false; } + if(!libraryFolders.libraryfolders){ return null; } libraryFolders = libraryFolders.libraryfolders for(const libKey in Object.keys(libraryFolders)){ + console.log(libraryFolders[libKey]); if(!libraryFolders[libKey] || !libraryFolders[libKey]["apps"]){ continue; } - if(libraryFolders[libKey]["apps"][gameId]){ return true }; + if(libraryFolders[libKey]["apps"][gameId]){ return path.join(libraryFolders[libKey]["path"], "steamapps", "common", gameFolder); }; } - return false; + console.log("null 3") + return null; } } diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 9b4743b0..8e1d8450 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -1,10 +1,10 @@ import { NavBar } from "./components/nav-bar/nav-bar.component"; import TitleBar from "./components/title-bar/title-bar.component"; import { Routes, Route } from "react-router-dom"; -import VersionsList from "./pages/versions-list.components"; +import { AvailableVersionsList } from "./pages/available-versions-list.components"; import { useDispatch, useSelector } from "react-redux"; import { useEffect } from "react"; -import VersionViewer from "./pages/version-viewer.component"; +import { VersionViewer } from "./pages/version-viewer.component"; export default function App() { @@ -13,23 +13,25 @@ export default function App() { useEffect(() => { initIpcsListener(); window.electron.ipcRenderer.sendMessage('bs-version.installed-versions'); + window.electron.ipcRenderer.sendMessage('bs-version.request-versions'); }, []) const initIpcsListener= () => { window.electron.ipcRenderer.on('bs-version.installed-versions', versions => dispatch({type: 'INSTALLED_BS_ADD_ALL', payload: versions})); + window.electron.ipcRenderer.on('bs-version.request-versions', versions => dispatch({type: 'AVAILABLE_BS_INIT', payload: versions})); } return ( -
+
-
+
}/> - }/> + }/>
diff --git a/src/renderer/components/available-versions-array.component.tsx b/src/renderer/components/available-versions-array.component.tsx new file mode 100644 index 00000000..14f0a135 --- /dev/null +++ b/src/renderer/components/available-versions-array.component.tsx @@ -0,0 +1,31 @@ +import { BSVersion } from "../../main/services/bs-version-manager.service" +import { useEffect, useState } from "react" + +export function AvailableVersionsArray({versions}: {versions: BSVersion[]}) { + + const [versionsMap, setVersionsMap] = useState(new Map()) + + console.log(versions); + + useEffect(() => { + organiseVersions() + }, []) + + + const organiseVersions = () => { + const newMap = new Map(); + versions.forEach(v => { + newMap.set(v.year, [...(newMap.has(v.year) ? newMap.get(v.year) : []), v]); + }) + + setVersionsMap(newMap); + } + + console.log(versionsMap); + + return ( +
+ { versions.map(v => ) } +
+ ) +} diff --git a/src/renderer/components/nav-bar/nav-bar.component.tsx b/src/renderer/components/nav-bar/nav-bar.component.tsx index 8025761d..7d62f897 100644 --- a/src/renderer/components/nav-bar/nav-bar.component.tsx +++ b/src/renderer/components/nav-bar/nav-bar.component.tsx @@ -7,12 +7,10 @@ import { BSVersion } from 'main/services/bs-version-manager.service'; export function NavBar() { - const { installedVersions }: {installedVersions: BSVersion[]} = useSelector((state: any) => ({...state.installedBSReducer})); - - console.log(installedVersions); + const { installedVersions }: {installedVersions: BSVersion[]} = useSelector((state: any) => state.installedBSReducer); return ( -