importAlbum.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* eslint no-param-reassign: 0 */
  2. export default {
  3. namespaced: true,
  4. state: {
  5. discogsAlbum: {},
  6. originalPlaylistSongs: [],
  7. playlistSongs: [],
  8. editingSongs: false,
  9. discogsTab: "search",
  10. prefillDiscogs: false
  11. },
  12. getters: {},
  13. actions: {
  14. init: ({ commit }, data) => commit("init", data),
  15. showDiscogsTab: ({ commit }, tab) => commit("showDiscogsTab", tab),
  16. selectDiscogsAlbum: ({ commit }, discogsAlbum) =>
  17. commit("selectDiscogsAlbum", discogsAlbum),
  18. toggleDiscogsAlbum: ({ commit }) => {
  19. commit("toggleDiscogsAlbum");
  20. },
  21. setPlaylistSongs: ({ commit }, playlistSongs) =>
  22. commit("setPlaylistSongs", playlistSongs),
  23. updatePlaylistSongs: ({ commit }, playlistSongs) =>
  24. commit("updatePlaylistSongs", playlistSongs),
  25. updateEditingSongs: ({ commit }, editingSongs) =>
  26. commit("updateEditingSongs", editingSongs),
  27. resetPlaylistSongs: ({ commit }) => commit("resetPlaylistSongs"),
  28. updatePrefillDiscogs: ({ commit }, updatedPrefill) =>
  29. commit("updatePrefillDiscogs", updatedPrefill),
  30. updatePlaylistSong: ({ commit }, updatedSong) =>
  31. commit("updatePlaylistSong", updatedSong)
  32. },
  33. mutations: {
  34. init(state, { songs }) {
  35. state.originalPlaylistSongs = JSON.parse(JSON.stringify(songs));
  36. state.playlistSongs = JSON.parse(JSON.stringify(songs));
  37. },
  38. showDiscogsTab(state, tab) {
  39. state.discogsTab = tab;
  40. },
  41. selectDiscogsAlbum(state, discogsAlbum) {
  42. state.discogsAlbum = JSON.parse(JSON.stringify(discogsAlbum));
  43. if (state.discogsAlbum && state.discogsAlbum.tracks) {
  44. state.tracks = state.discogsAlbum.tracks.map(track => ({
  45. ...track,
  46. songs: []
  47. }));
  48. }
  49. },
  50. toggleDiscogsAlbum(state) {
  51. state.discogsAlbum.expanded = !state.discogsAlbum.expanded;
  52. },
  53. setPlaylistSongs(state, playlistSongs) {
  54. state.originalPlaylistSongs = JSON.parse(
  55. JSON.stringify(playlistSongs)
  56. );
  57. state.playlistSongs = JSON.parse(JSON.stringify(playlistSongs));
  58. },
  59. updatePlaylistSongs(state, playlistSongs) {
  60. state.playlistSongs = JSON.parse(JSON.stringify(playlistSongs));
  61. },
  62. updateEditingSongs(state, editingSongs) {
  63. state.editingSongs = editingSongs;
  64. },
  65. resetPlaylistSongs(state) {
  66. state.playlistSongs = JSON.parse(
  67. JSON.stringify(state.originalPlaylistSongs)
  68. );
  69. },
  70. updatePrefillDiscogs(state, updatedPrefill) {
  71. state.prefillDiscogs = updatedPrefill;
  72. },
  73. updatePlaylistSong(state, updatedSong) {
  74. state.playlistSongs.forEach((song, index) => {
  75. if (song._id === updatedSong._id)
  76. state.playlistSongs[index] = updatedSong;
  77. });
  78. state.originalPlaylistSongs.forEach((song, index) => {
  79. if (song._id === updatedSong._id)
  80. state.originalPlaylistSongs[index] = updatedSong;
  81. });
  82. }
  83. }
  84. };