From 6b83f929ec5161f36c9ca9cf1a90b8730d18a653 Mon Sep 17 00:00:00 2001 From: DutchJavaDev Date: Sat, 11 Oct 2025 14:15:34 +0200 Subject: [PATCH 01/13] meaningfull name --- MyMusicClientSveltePwa/src/lib/scripts/storageService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MyMusicClientSveltePwa/src/lib/scripts/storageService.js b/MyMusicClientSveltePwa/src/lib/scripts/storageService.js index 53941b7..036fff9 100644 --- a/MyMusicClientSveltePwa/src/lib/scripts/storageService.js +++ b/MyMusicClientSveltePwa/src/lib/scripts/storageService.js @@ -18,7 +18,7 @@ export function setConfiguration(config) { setItem(ConfigKey, config); } -export function setPlaylists(playlists) { +export function setCachedPlaylists(playlists) { setItem(PlaylistsKey, playlists); } From 2c70293e49885f8606faf5ed18fe86e4fe3df162 Mon Sep 17 00:00:00 2001 From: DutchJavaDev Date: Sat, 11 Oct 2025 14:15:59 +0200 Subject: [PATCH 02/13] delete playlist --- MyMusicClientSveltePwa/src/lib/scripts/api.js | 167 ++++++++++-------- 1 file changed, 92 insertions(+), 75 deletions(-) diff --git a/MyMusicClientSveltePwa/src/lib/scripts/api.js b/MyMusicClientSveltePwa/src/lib/scripts/api.js index c0a1796..be2f19f 100644 --- a/MyMusicClientSveltePwa/src/lib/scripts/api.js +++ b/MyMusicClientSveltePwa/src/lib/scripts/api.js @@ -5,104 +5,121 @@ const staticAudioUrl = import.meta.env.VITE_STATIC_AUDIO_URL; import { getConfiguration } from "./storageService"; export async function fetchPlaylists() { - try { - const response = await fetch(`${baseApiUrl}/playlist`); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - const playlists = await response.json(); - return playlists.Data; - } catch (error) { - console.error("Error fetching playlists:", error); - return []; + try { + const response = await fetch(`${baseApiUrl}/playlist`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); } + const playlists = await response.json(); + return playlists.Data; + } catch (error) { + console.error("Error fetching playlists:", error); + return []; + } } -export async function fetchNewPlaylist(lastKnowPlaylistId){ - try { - const response = await fetch(`${baseApiUrl}/playlist?lastKnowPlaylistId=${lastKnowPlaylistId}`); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - const playlists = await response.json(); - return playlists.Data; - } catch (error) { - console.error("Error fetching playlists:", error); - return []; +export async function fetchNewPlaylist(lastKnowPlaylistId) { + try { + const response = await fetch(`${baseApiUrl}/playlist?lastKnowPlaylistId=${lastKnowPlaylistId}`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); } + const playlists = await response.json(); + return playlists.Data; + } catch (error) { + console.error("Error fetching playlists:", error); + return []; + } } export async function fetchNewPlaylistSongs(playlistId, lastKnowSongPosition) { - try { - const response = await fetch(`${baseApiUrl}/playlist/${playlistId}?lastKnowSongPosition=${lastKnowSongPosition}`); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - const songs = await response.json(); - return songs.Data; - } catch (error) { - console.error("Error fetching playlist songs:", error); - return []; + try { + const response = await fetch(`${baseApiUrl}/playlist/${playlistId}?lastKnowSongPosition=${lastKnowSongPosition}`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); } + const songs = await response.json(); + return songs.Data; + } catch (error) { + console.error("Error fetching playlist songs:", error); + return []; + } } export async function fetchPlaylistSongs(playlistId) { - try { - const response = await fetch(`${baseApiUrl}/playlist/${playlistId}`); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - const songs = await response.json(); - return songs.Data; - } catch (error) { - console.error("Error fetching playlist songs:", error); - return []; + try { + const response = await fetch(`${baseApiUrl}/playlist/${playlistId}`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); } + const songs = await response.json(); + return songs.Data; + } catch (error) { + console.error("Error fetching playlist songs:", error); + return []; + } } export async function createPlaylist(formData) { - try { - const response = await fetch(`${baseApiUrl}/playlist`, { - method: "POST", - body: formData - }) - - const jsonResponse = await response.json(); - - if (!response.ok) { - throw new Error(`HTTP error! status: ${jsonResponse.Data.Message}`); - } - return { - success: true, - data: jsonResponse - }; - } catch (error) { - console.error("Error creating playlist:", error); - return { - success: false, - data: error - }; + try { + const response = await fetch(`${baseApiUrl}/playlist`, { + method: "POST", + body: formData, + }); + + const jsonResponse = await response.json(); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${jsonResponse.Data.Message}`); } + return { + success: true, + data: jsonResponse, + }; + } catch (error) { + console.error("Error creating playlist:", error); + return { + success: false, + data: error, + }; + } } -export function getImageUrl(path) { - - var config = getConfiguration(); +export async function deletePlaylist(playlistId) { + try { + const response = await fetch(`${baseApiUrl}/playlist/${playlistId}`, { + method: "DELETE", + }); - if(config.byPassCache){ - return `${staticImageUrl}/${path}?cb=${new Date().getMilliseconds()}`; + if (!response.ok) { + throw new Error(`HTTP error! status: ${response}`); } + return { + success: true, + data: response, + }; + } catch (error) { + console.error("Error deleting playlist:", error); + return; + } +} - return `${staticImageUrl}/${path}`; +export function getImageUrl(path) { + var config = getConfiguration(); + + if (config.byPassCache) { + return `${staticImageUrl}/${path}?cb=${new Date().getMilliseconds()}`; + } + + return `${staticImageUrl}/${path}`; } export function getPlaybackUrl(source_id) { + var config = getConfiguration(); - var config = getConfiguration(); + if (config.byPassCache) { + return `${staticAudioUrl}/${source_id}.opus?cb=${new Date().getMilliseconds()}`; + } - if(config.byPassCache){ - return `${staticAudioUrl}/${source_id}.opus?cb=${new Date().getMilliseconds()}`; - } - - return `${staticAudioUrl}/${source_id}.opus`; // Assuming all audio files are in .opus format -} \ No newline at end of file + return `${staticAudioUrl}/${source_id}.opus`; // Assuming all audio files are in .opus format +} From bfea32e58b828054e6fb55255d795e882b9dd16e Mon Sep 17 00:00:00 2001 From: DutchJavaDev Date: Sat, 11 Oct 2025 14:16:15 +0200 Subject: [PATCH 03/13] option to delete --- MyMusicClientSveltePwa/src/App.svelte | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/MyMusicClientSveltePwa/src/App.svelte b/MyMusicClientSveltePwa/src/App.svelte index a95e824..823cc33 100644 --- a/MyMusicClientSveltePwa/src/App.svelte +++ b/MyMusicClientSveltePwa/src/App.svelte @@ -7,7 +7,7 @@ import { initializeRouteService, pathName, navigateTo, component, componentParams } from "./lib/scripts/routeService.js"; import PlayerBar from "./lib/components/PlayerBar.svelte"; import Modals from "./lib/components/Modals.svelte"; - import { initializePlaylistService } from "./lib/scripts/playlistService.js"; + import { initializePlaylistService, deleteCurrentPlaylist } from "./lib/scripts/playlistService.js"; import { initializePlaybackService } from "./lib/scripts/playbackService.js"; import { initializeMediaSessionService } from "./lib/scripts/mediasessionService.js"; import { searchQuery } from "./lib/scripts/util.js"; @@ -72,8 +72,9 @@ - @@ -89,6 +90,16 @@