From 92fd59be1e8c279da336acd7da2f4b5c77544cf9 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Wed, 4 Oct 2023 00:10:05 +0200 Subject: [PATCH] [bugfix] Fix OneClick map download may not work with multiple maps sharing --- src/main/ipcs/bs-maps-ipcs.ts | 2 ++ .../additional-content/local-maps-manager.service.ts | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/ipcs/bs-maps-ipcs.ts b/src/main/ipcs/bs-maps-ipcs.ts index 9adb9753..24b4fef0 100644 --- a/src/main/ipcs/bs-maps-ipcs.ts +++ b/src/main/ipcs/bs-maps-ipcs.ts @@ -6,6 +6,7 @@ import { BsmLocalMap } from "shared/models/maps/bsm-local-map.interface"; import { BsvMapDetail } from "shared/models/maps"; import { IpcService } from "../services/ipc.service"; import { from } from "rxjs"; +import log from "electron-log" const ipc = IpcService.getInstance(); @@ -71,6 +72,7 @@ ipc.on("one-click-install-map", async (request: IpcRequest) => { utils.ipcSend(request.responceChannel, { success: true }); }) .catch(err => { + log.error(err); utils.ipcSend(request.responceChannel, { success: false, error: err }); }); }); diff --git a/src/main/services/additional-content/local-maps-manager.service.ts b/src/main/services/additional-content/local-maps-manager.service.ts index c50aa522..3b3c1b29 100644 --- a/src/main/services/additional-content/local-maps-manager.service.ts +++ b/src/main/services/additional-content/local-maps-manager.service.ts @@ -7,7 +7,7 @@ import { InstallationLocationService } from "../installation-location.service"; import { UtilsService } from "../utils.service"; import crypto from "crypto"; import { lstatSync } from "fs"; -import { copy, createReadStream, ensureDir, unlink } from "fs-extra"; +import { copy, createReadStream, ensureDir, realpath, unlink } from "fs-extra"; import StreamZip from "node-stream-zip"; import { RequestService } from "../request.service"; import sanitize from "sanitize-filename"; @@ -290,10 +290,16 @@ export class LocalMapsManagerService { const versions = await this.localVersion.getInstalledVersions(); const downloadedMap = await this.downloadMap(map, versions.pop()); + const downloadedMapRealFolder = await realpath(path.dirname(downloadedMap.path)); for (const version of versions) { const versionMapsPath = await this.getMapsFolderPath(version); await ensureDir(versionMapsPath); + + if((await realpath(versionMapsPath)) === downloadedMapRealFolder){ + continue; + } + await copy(downloadedMap.path, path.join(versionMapsPath, path.basename(downloadedMap.path)), { overwrite: true }); } }