PlaylistHelper.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Microsoft.AspNetCore.Components;
  2. namespace FNZCM.BlazorWasm.Helpers
  3. {
  4. public class PlaylistHelper
  5. {
  6. public event Action Changed ;
  7. private readonly LocalStorageHelper localStorage;
  8. public PlaylistHelper(LocalStorageHelper localStorage) => this.localStorage = localStorage;
  9. public Dictionary<Guid, string> PlayListLoadSave { get => localStorage.Get<Dictionary<Guid, string>>() ?? new Dictionary<Guid, string>(); set => localStorage.Set(value); }
  10. public List<string> this[Guid playlistId]
  11. {
  12. get => localStorage.Get<List<string>>($"playlist-{playlistId}") ?? new List<string>();
  13. set => localStorage.Set(value, $"playlist-{playlistId}");
  14. }
  15. public void CreateNewPlaylist(string name)
  16. {
  17. var pls = PlayListLoadSave;
  18. pls[Guid.NewGuid()] = name;
  19. PlayListLoadSave = pls;
  20. Changed?.Invoke();
  21. }
  22. public void AddTrackToPlaylist(string trackPath, Guid playlistId)
  23. {
  24. var p = this[playlistId];
  25. p.Add(trackPath);
  26. this[playlistId] = p;
  27. Changed?.Invoke();
  28. }
  29. public void DeleteTrackInPlaylist(Guid playlistId, int index, string trackPathForConfirm)
  30. {
  31. var p = this[playlistId];
  32. if (index < p.Count && p[index] == trackPathForConfirm) p.RemoveAt(index);
  33. this[playlistId] = p;
  34. Changed?.Invoke();
  35. }
  36. public void Deleteplaylist(Guid playlistId)
  37. {
  38. localStorage.Remove($"playlist-{playlistId}");
  39. var pls = PlayListLoadSave;
  40. pls.Remove(playlistId);
  41. PlayListLoadSave = pls;
  42. Changed?.Invoke();
  43. }
  44. public void UpdatePlaylistName(Guid playlistId,string name)
  45. {
  46. var pls = PlayListLoadSave;
  47. pls[playlistId] = name;
  48. PlayListLoadSave = pls;
  49. Changed?.Invoke();
  50. }
  51. //TODO: Move order track in playlist
  52. }
  53. }