From ea1ef3706c2c9d1277645a0763d659f7dbf37004 Mon Sep 17 00:00:00 2001 From: Maxime Bonvin Date: Sat, 6 Jun 2020 14:13:10 +0200 Subject: [PATCH] force filename to be correctly formatted on new playlist --- src/libraries/os/beatSaber/installer/PlaylistInstaller.ts | 6 +++++- src/libraries/playlist/PlaylistFilename.ts | 2 +- src/libraries/playlist/loader/serializer/JsonSerializer.ts | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libraries/os/beatSaber/installer/PlaylistInstaller.ts b/src/libraries/os/beatSaber/installer/PlaylistInstaller.ts index 4a309043..d5bc242d 100644 --- a/src/libraries/os/beatSaber/installer/PlaylistInstaller.ts +++ b/src/libraries/os/beatSaber/installer/PlaylistInstaller.ts @@ -11,6 +11,7 @@ import PlaylistScanner from "@/libraries/scanner/playlist/PlaylistScanner"; import PlaylistFormatType from "@/libraries/playlist/PlaylistFormatType"; import store from "@/plugins/store"; import PlaylistFilenameExtension from "@/libraries/playlist/PlaylistFilenameExtension"; +import PlaylistFilename from "@/libraries/playlist/PlaylistFilename"; declare const __static: string; const defaultCoverPath = path.join(__static, "defaultCover.jpg"); @@ -38,7 +39,10 @@ export default class PlaylistInstaller { ] as PlaylistFormatType; const extension = PlaylistFilenameExtension.GetFor(format); const filepath = path - .join(await BeatSaber.getPlaylistFolder(), `${name}.${extension}`) + .join( + await BeatSaber.getPlaylistFolder(), + `${PlaylistFilename.computeFilenameFor(name)}.${extension}` + ) .toLowerCase(); const emptyPlaylist = { diff --git a/src/libraries/playlist/PlaylistFilename.ts b/src/libraries/playlist/PlaylistFilename.ts index 860578a4..dd2748d9 100644 --- a/src/libraries/playlist/PlaylistFilename.ts +++ b/src/libraries/playlist/PlaylistFilename.ts @@ -26,7 +26,7 @@ export default class PlaylistFilename { return newPlaylistPath; } - private static computeFilenameFor(title: string) { + public static computeFilenameFor(title: string) { return title.replace(/[^a-zA-Z0-9]+/g, "_").toLowerCase(); } } diff --git a/src/libraries/playlist/loader/serializer/JsonSerializer.ts b/src/libraries/playlist/loader/serializer/JsonSerializer.ts index 1f481fb2..f63db46f 100644 --- a/src/libraries/playlist/loader/serializer/JsonSerializer.ts +++ b/src/libraries/playlist/loader/serializer/JsonSerializer.ts @@ -4,7 +4,6 @@ import { PlaylistBase, PlaylistMap } from "@/libraries/playlist/PlaylistLocal"; import Base64SrcLoader from "@/libraries/os/utils/Base64SrcLoader"; export default class JsonSerializer extends PlaylistSerializer { - // eslint-disable-next-line class-methods-use-this public async serialize(playlist: PlaylistBase): Promise { const data = JsonSerializer.format(playlist); await fs.writeFile(this.filepath, JSON.stringify(data));