From 8fdb39c89f66e7dd27b2195882dffd91f8f9cf9a Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sun, 2 Jul 2023 02:06:33 +0200 Subject: [PATCH] [bugfix-272] fix wrong folder separator for maps --- src/main/preload.ts | 9 +++++++++ .../modal/modal-types/share-folders-modal.component.tsx | 2 +- src/renderer/config/default-configuration.config.ts | 6 +++++- src/renderer/preload.d.ts | 4 ++++ src/renderer/services/maps-manager.service.ts | 2 +- src/renderer/services/version-folder-linker.service.ts | 2 +- src/shared/models/provider-platform.enum.ts | 5 +++++ 7 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/shared/models/provider-platform.enum.ts diff --git a/src/main/preload.ts b/src/main/preload.ts index a9d266f5..61ced3c1 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -1,4 +1,7 @@ import { contextBridge, ipcRenderer, IpcRendererEvent } from "electron"; +import { ProviderPlatform } from "shared/models/provider-platform.enum"; + +const sep = process.platform === ProviderPlatform.WINDOWS ? "\\" : "/"; contextBridge.exposeInMainWorld("electron", { ipcRenderer: { @@ -18,4 +21,10 @@ contextBridge.exposeInMainWorld("electron", { ipcRenderer.removeAllListeners(channel); }, }, + path: { + sep, + join: (...args: string[]): string => { + return args.join(sep); + } + } }); diff --git a/src/renderer/components/modal/modal-types/share-folders-modal.component.tsx b/src/renderer/components/modal/modal-types/share-folders-modal.component.tsx index f7854d95..6bae79cf 100644 --- a/src/renderer/components/modal/modal-types/share-folders-modal.component.tsx +++ b/src/renderer/components/modal/modal-types/share-folders-modal.component.tsx @@ -108,7 +108,7 @@ const FolderItem = ({ version, relativeFolder, onDelete }: FolderProps) => { const t = useTranslation(); - const name = relativeFolder.split("\\").at(-1); + const name = relativeFolder.split(window.electron.path.sep).at(-1); const color = useThemeColor("first-color"); const variants: Variants = { diff --git a/src/renderer/config/default-configuration.config.ts b/src/renderer/config/default-configuration.config.ts index 5baa6f8f..9012fa7e 100644 --- a/src/renderer/config/default-configuration.config.ts +++ b/src/renderer/config/default-configuration.config.ts @@ -5,7 +5,11 @@ export const defaultConfiguration: { [key in DefaultConfigKey]: any } = { language: window.navigator.language.length <= 2 ? `${window.navigator.language}-${window.navigator.language.toLocaleUpperCase()}` : window.navigator.language, supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "de-DE"], default_mods: ["SongCore", "WhyIsThereNoLeaderboard", "BeatSaverDownloader", "BeatSaverVoting", "PlaylistManager"], - "default-shared-folders": ["Beat Saber_Data\\CustomLevels", "Beat Saber_Data\\CustomWIPLevels", "DLC"], + "default-shared-folders": [ + window.electron.path.join("Beat Saber_Data", "CustomLevels"), + window.electron.path.join("Beat Saber_Data", "CustomWIPLevels"), + "DLC" + ], }; export type DefaultConfigKey = "first-color" | "second-color" | "theme" | "language" | "supported_languages" | "default_mods" | "default-shared-folders"; diff --git a/src/renderer/preload.d.ts b/src/renderer/preload.d.ts index 9abb1aa2..ab023814 100644 --- a/src/renderer/preload.d.ts +++ b/src/renderer/preload.d.ts @@ -7,6 +7,10 @@ declare global { once(channel: string, func: (...args: any) => void): void; removeAllListeners(channel: string): void; }; + path: { + sep: "/"|"\\"; + join: (...args: string[]) => string; + }; }; } } diff --git a/src/renderer/services/maps-manager.service.ts b/src/renderer/services/maps-manager.service.ts index fb9184b6..0104dd05 100644 --- a/src/renderer/services/maps-manager.service.ts +++ b/src/renderer/services/maps-manager.service.ts @@ -26,7 +26,7 @@ export class MapsManagerService { } public static readonly REMEMBER_CHOICE_DELETE_MAP_KEY = "not-confirm-delete-map"; - public static readonly RELATIVE_MAPS_FOLDER = "Beat Saber_Data\\CustomLevels"; + public static readonly RELATIVE_MAPS_FOLDER = window.electron.path.join("Beat Saber_Data", "CustomLevels"); private readonly ipcService: IpcService; private readonly modal: ModalService; diff --git a/src/renderer/services/version-folder-linker.service.ts b/src/renderer/services/version-folder-linker.service.ts index 1e368d41..5b7c6b33 100644 --- a/src/renderer/services/version-folder-linker.service.ts +++ b/src/renderer/services/version-folder-linker.service.ts @@ -35,7 +35,7 @@ export class VersionFolderLinkerService { let progressOpened = false; if (!this.progress.isVisible) { - this.progress.showFake(0.01, null, action.relativeFolder.split("\\").at(-1)); + this.progress.showFake(0.01, null, action.relativeFolder.split(window.electron.path.sep).at(-1)); progressOpened = true; } diff --git a/src/shared/models/provider-platform.enum.ts b/src/shared/models/provider-platform.enum.ts new file mode 100644 index 00000000..42ab2a1a --- /dev/null +++ b/src/shared/models/provider-platform.enum.ts @@ -0,0 +1,5 @@ +export enum ProviderPlatform { + WINDOWS = "win32", + MAC = "darwin", + LINUX = "linux" +} \ No newline at end of file