Skip to content

Commit

Permalink
Moving playlist to folder works + fixed saving playlists with same fi…
Browse files Browse the repository at this point in the history
…lename
  • Loading branch information
DennisvHest committed Jul 26, 2024
1 parent a3ef9cc commit 31851c5
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 28 deletions.
17 changes: 0 additions & 17 deletions MapMaven.Core/Extensions/PlaylistManagerExtensions.cs

This file was deleted.

2 changes: 2 additions & 0 deletions MapMaven.Core/Models/EditPlaylistModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class EditPlaylistModel
public string Description { get; set; }
public string CoverImage { get; set; }

public PlaylistManager OriginalPlaylistManager { get; set; }
public PlaylistManager PlaylistManager { get; set; }

public EditPlaylistModel() { }
Expand All @@ -22,6 +23,7 @@ public EditPlaylistModel(Playlist playlist)
Description = playlist.Description;
CoverImage = playlist.CoverImage.Value;
PlaylistManager = playlist.PlaylistManager;
OriginalPlaylistManager = playlist.PlaylistManager;
}
}
}
32 changes: 21 additions & 11 deletions MapMaven.Core/Services/PlaylistService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ private async Task<Playlist> CreatePlaylist(EditPlaylistModel editPlaylistModel,
{
IPlaylist addedPlaylist = CreateIPlaylist(editPlaylistModel, playlistMaps);

editPlaylistModel.PlaylistManager.SavePlaylist(addedPlaylist);
editPlaylistModel.PlaylistManager.StorePlaylist(addedPlaylist);

var playlist = new Playlist(addedPlaylist, editPlaylistModel.PlaylistManager);

Expand All @@ -118,7 +118,7 @@ public async Task<Playlist> AddDynamicPlaylist(EditDynamicPlaylistModel editDyna
dynamicPlaylistConfiguration = editDynamicPlaylistModel.DynamicPlaylistConfiguration
});

editDynamicPlaylistModel.PlaylistManager.SavePlaylist(addedPlaylist);
editDynamicPlaylistModel.PlaylistManager.StorePlaylist(addedPlaylist);

var playlist = new Playlist(addedPlaylist, editDynamicPlaylistModel.PlaylistManager);

Expand All @@ -130,15 +130,14 @@ public async Task<Playlist> EditDynamicPlaylist(EditDynamicPlaylistModel editPla
var playlistToModify = editPlaylistModel.PlaylistManager.GetPlaylist(editPlaylistModel.FileName);

CreateValidConfiguration(editPlaylistModel);
UpdatePlaylist(editPlaylistModel, playlistToModify);

playlistToModify.SetCustomData("mapMaven", new
{
isDynamicPlaylist = true,
dynamicPlaylistConfiguration = editPlaylistModel.DynamicPlaylistConfiguration
});

editPlaylistModel.PlaylistManager.SavePlaylist(playlistToModify);
UpdatePlaylist(editPlaylistModel, playlistToModify);

await _beatSaberDataService.LoadAllPlaylists();

Expand Down Expand Up @@ -176,11 +175,24 @@ private static void CreateValidConfiguration(EditDynamicPlaylistModel editDynami
configuration.LeaderboardProvider = null;
}

private static void UpdatePlaylist(EditPlaylistModel editPlaylistModel, IPlaylist? playlistToModify)
private void UpdatePlaylist(EditPlaylistModel editPlaylistModel, IPlaylist? playlistToModify)
{
playlistToModify.Title = editPlaylistModel.Name;
playlistToModify.Description = editPlaylistModel.Description;
playlistToModify.SetCover(editPlaylistModel.CoverImage);

var movedToOtherFolder = editPlaylistModel.PlaylistManager != editPlaylistModel.OriginalPlaylistManager;

if (movedToOtherFolder)
{
var playlistFileName = GetUniqueFileName(editPlaylistModel); // Prevent overwriting existing playlists with same filename in other folder.

editPlaylistModel.OriginalPlaylistManager.DeletePlaylist(playlistToModify);

playlistToModify.Filename = playlistFileName;
}

editPlaylistModel.PlaylistManager.StorePlaylist(playlistToModify);
}

private IPlaylist CreateIPlaylist(EditPlaylistModel editPlaylistModel, IEnumerable<Map>? playlistMaps)
Expand Down Expand Up @@ -300,12 +312,10 @@ public async Task DeletePlaylist(Playlist playlist, bool deleteMaps = false)

public async Task<Playlist> EditPlaylist(EditPlaylistModel editPlaylistModel)
{
var playlistToModify = editPlaylistModel.PlaylistManager.GetPlaylist(editPlaylistModel.FileName);
var playlistToModify = editPlaylistModel.OriginalPlaylistManager.GetPlaylist(editPlaylistModel.FileName);

UpdatePlaylist(editPlaylistModel, playlistToModify);

editPlaylistModel.PlaylistManager.SavePlaylist(playlistToModify);

await _beatSaberDataService.LoadAllPlaylists();

return new Playlist(playlistToModify, editPlaylistModel.PlaylistManager);
Expand Down Expand Up @@ -337,7 +347,7 @@ private async Task AddMapsToPlaylist(IEnumerable<Map> maps, IPlaylist? playlistT

var playlistManager = _beatSaberDataService.PlaylistManager.GetManagerForPlaylist(playlistToModify);

playlistManager.SavePlaylist(playlistToModify);
playlistManager.StorePlaylist(playlistToModify);

if (loadPlaylists)
await _beatSaberDataService.LoadAllPlaylists();
Expand All @@ -362,7 +372,7 @@ public async Task RemoveMapsFromPlaylist(IEnumerable<Map> maps, Playlist playlis

playlistToModify.RemoveAll(m => mapHashes.Contains(m.Hash));

playlist.PlaylistManager.SavePlaylist(playlistToModify);
playlist.PlaylistManager.StorePlaylist(playlistToModify);

await _beatSaberDataService.LoadAllPlaylists();
}
Expand Down Expand Up @@ -391,7 +401,7 @@ private string GetUniqueFileName(EditPlaylistModel editPlaylistModel)
string uniqueFileName = fileName;
int count = 1;

while (File.Exists(Path.Join(_beatSaverFileService.PlaylistsLocation, $"{uniqueFileName}.bplist")))
while (File.Exists(Path.Join(editPlaylistModel.PlaylistManager.PlaylistPath, $"{uniqueFileName}.bplist")))
{
uniqueFileName = $"{fileName}({count})";
count++;
Expand Down

0 comments on commit 31851c5

Please sign in to comment.