diff --git a/server/subsonic/media_retrieval.go b/server/subsonic/media_retrieval.go index 38543c3d..54eecabd 100644 --- a/server/subsonic/media_retrieval.go +++ b/server/subsonic/media_retrieval.go @@ -39,6 +39,7 @@ func (c *MediaRetrievalController) GetCoverArt(w http.ResponseWriter, r *http.Re } size := utils.ParamInt(r, "size", 0) + w.Header().Set("cache-control", "public, max-age=300") err = c.cover.Get(r.Context(), id, size, w) switch { diff --git a/ui/src/album/AlbumDetails.js b/ui/src/album/AlbumDetails.js index fd3a0319..deac9f09 100644 --- a/ui/src/album/AlbumDetails.js +++ b/ui/src/album/AlbumDetails.js @@ -20,11 +20,9 @@ const AlbumDetails = ({ classes, record }) => { return ( diff --git a/ui/src/player/queue.js b/ui/src/player/queue.js index a464a886..171f98eb 100644 --- a/ui/src/player/queue.js +++ b/ui/src/player/queue.js @@ -10,9 +10,9 @@ const PLAYER_PLAY_ALBUM = 'PLAYER_PLAY_ALBUM' const mapToAudioLists = (item) => ({ name: item.title, singer: item.artist, - cover: subsonicUrl('getCoverArt', item.id, 'size=300'), - musicSrc: subsonicUrl('stream', item.id), - scrobble: (submit) => subsonicUrl('scrobble', item.id, `submission=${submit}`) + cover: subsonicUrl('getCoverArt', item.id, { size: 300 }), + musicSrc: subsonicUrl('stream', item.id, { ts: true }), + scrobble: (submit) => subsonicUrl('scrobble', item.id, { submission: submit }) }) const addTrack = (data) => ({ diff --git a/ui/src/subsonic/index.js b/ui/src/subsonic/index.js index 3c5a4248..db0f80c5 100644 --- a/ui/src/subsonic/index.js +++ b/ui/src/subsonic/index.js @@ -1,13 +1,22 @@ const subsonicUrl = (command, id, options) => { - const username = localStorage.getItem('username') - const token = localStorage.getItem('subsonic-token') - const salt = localStorage.getItem('subsonic-salt') - const timeStamp = new Date().getTime() - const url = `rest/${command}?u=${username}&f=json&v=1.8.0&c=NavidromeUI&t=${token}&s=${salt}&id=${id}&_=${timeStamp}` + const params = new URLSearchParams() + params.append('u', localStorage.getItem('username')) + params.append('t', localStorage.getItem('subsonic-token')) + params.append('s', localStorage.getItem('subsonic-salt')) + params.append('f', 'json') + params.append('v', '1.8.0') + params.append('c', 'NavidromeUI') + params.append('id', id) if (options) { - return url + '&' + options + if (options.ts) { + options['_'] = new Date().getTime() + delete options.ts + } + Object.keys(options).forEach((k) => { + params.append(k, options[k]) + }) } - return url + return `rest/${command}?${params.toString()}` } export { subsonicUrl }