From fc2cb676d21797b23d460b746c3dbe288178b59c Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:38:34 +0200 Subject: [PATCH] [bugfix] Fix error when downloading playlist with OneClick and having maps linked --- src/main/ipcs/bs-playlist-ipcs.ts | 2 ++ .../local-playlists-manager.service.ts | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/ipcs/bs-playlist-ipcs.ts b/src/main/ipcs/bs-playlist-ipcs.ts index 13fa4489..ff3560d2 100644 --- a/src/main/ipcs/bs-playlist-ipcs.ts +++ b/src/main/ipcs/bs-playlist-ipcs.ts @@ -2,6 +2,7 @@ import { ipcMain } from "electron"; import { IpcRequest } from "shared/models/ipc"; import { LocalPlaylistsManagerService } from "../services/additional-content/local-playlists-manager.service"; import { UtilsService } from "../services/utils.service"; +import log from "electron-log"; ipcMain.on("one-click-install-playlist", async (event, request: IpcRequest) => { const utils = UtilsService.getInstance(); @@ -13,6 +14,7 @@ ipcMain.on("one-click-install-playlist", async (event, request: IpcRequest { + log.error(e); utils.ipcSend(request.responceChannel, { success: false, error: e }); }); }); diff --git a/src/main/services/additional-content/local-playlists-manager.service.ts b/src/main/services/additional-content/local-playlists-manager.service.ts index e4c539de..d9621f80 100644 --- a/src/main/services/additional-content/local-playlists-manager.service.ts +++ b/src/main/services/additional-content/local-playlists-manager.service.ts @@ -14,7 +14,7 @@ import { IpcRequest } from "shared/models/ipc"; import { BPList, DownloadPlaylistProgression } from "shared/models/playlists/playlist.interface"; import { copyFileSync, readFileSync } from "fs"; import { BeatSaverService } from "../thrid-party/beat-saver/beat-saver.service"; -import { copySync } from "fs-extra"; +import { copy, realpath } from "fs-extra"; import { ensureFolderExist, pathExist } from "../../helpers/fs.helpers"; export class LocalPlaylistsManagerService { @@ -180,14 +180,27 @@ export class LocalPlaylistsManagerService { const { bpListPath, mapsPath } = await lastValueFrom(this.downloadPlaylist(bpListUrl, versions.pop())); + if(mapsPath?.length === 0 || !bpListPath) { + return; + } + + const realSourceMapsFolder = await realpath(path.dirname(mapsPath[0])); + for (const version of versions) { await this.installBPListFile(bpListPath, version); + const versionMapsFolder = await this.maps.getMapsFolderPath(version); + const realDestMapsFolder = await realpath(versionMapsFolder); + + if(realSourceMapsFolder === realDestMapsFolder) { + continue; + } + for (const mapPath of mapsPath) { - const versionMapsFolder = await this.maps.getMapsFolderPath(version); + const mapDest = path.join(versionMapsFolder, path.basename(mapPath)); - copySync(mapPath, mapDest, { overwrite: true }); + await copy(mapPath, mapDest, { overwrite: true }); } } }