diff --git a/src/main/preload.ts b/src/main/preload.ts index b002e439..7af3d4f1 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -1,4 +1,7 @@ -import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; +import { contextBridge, ipcRenderer, IpcRendererEvent } from "electron"; +import { ProviderPlatform } from "shared/models/provider-platform.enum"; + +const sep = process.platform === ProviderPlatform.WINDOWS ? "\\" : "/"; contextBridge.exposeInMainWorld('electron', { ipcRenderer: { @@ -19,4 +22,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 6db7dbd7..dffb5178 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 @@ -100,7 +100,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 d7f666c4..66aa0374 100644 --- a/src/renderer/config/default-configuration.config.ts +++ b/src/renderer/config/default-configuration.config.ts @@ -1,16 +1,16 @@ export const defaultConfiguration: {[key in DefaultConfigKey]: any} = { "first-color": "#3b82ff", "second-color": "#ff4444", - "theme": "os", - "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"], + theme: "os", + 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", + 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 215d2d2b..ab023814 100644 --- a/src/renderer/preload.d.ts +++ b/src/renderer/preload.d.ts @@ -1,17 +1,18 @@ declare global { - interface Window { - electron: { - ipcRenderer: { - sendMessage(channel: string, args: any): void; - on( - channel: string, - func: (...args: any) => void - ): (() => void) | undefined; - once(channel: string, func: (...args: any) => void): void; - removeAllListeners(channel: string): void; - }; - }; - } + interface Window { + electron: { + ipcRenderer: { + sendMessage(channel: string, args: any): void; + on(channel: string, func: (...args: any) => void): (() => void) | undefined; + once(channel: string, func: (...args: any) => void): void; + removeAllListeners(channel: string): void; + }; + path: { + sep: "/"|"\\"; + join: (...args: string[]) => string; + }; + }; + } } export {}; diff --git a/src/renderer/services/maps-manager.service.ts b/src/renderer/services/maps-manager.service.ts index 8df78f91..48d00986 100644 --- a/src/renderer/services/maps-manager.service.ts +++ b/src/renderer/services/maps-manager.service.ts @@ -26,8 +26,8 @@ export class MapsManagerService { return MapsManagerService.instance; } - 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 REMEMBER_CHOICE_DELETE_MAP_KEY = "not-confirm-delete-map"; + 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 63878ba5..0353eca9 100644 --- a/src/renderer/services/version-folder-linker.service.ts +++ b/src/renderer/services/version-folder-linker.service.ts @@ -34,8 +34,8 @@ export class VersionFolderLinkerService{ let progressOpened = false; - if(!this.progress.isVisible){ - this.progress.showFake(.01, null, action.relativeFolder.split("\\").at(-1)); + if (!this.progress.isVisible) { + 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