From ff98dc7d9b5ae230844c18a21cb394dfc6faaa67 Mon Sep 17 00:00:00 2001 From: njzy Date: Wed, 2 Dec 2020 00:37:57 +0800 Subject: [PATCH] fix(utils/isTrackPlayable): songs that have been removed from the shelves cannot be played either --- src/api/playlist.js | 5 ++++- src/api/track.js | 2 +- src/utils/common.js | 11 ++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/api/playlist.js b/src/api/playlist.js index d643b50..6c761da 100644 --- a/src/api/playlist.js +++ b/src/api/playlist.js @@ -47,7 +47,10 @@ export function getPlaylistDetail(id, noCache = false) { method: "get", params, }).then((data) => { - data.playlist.tracks = mapTrackPlayableStatus(data.playlist.tracks); + data.playlist.tracks = mapTrackPlayableStatus( + data.playlist.tracks, + data.privileges || [] + ); return data; }); } diff --git a/src/api/track.js b/src/api/track.js index 11876c7..43a7d2a 100644 --- a/src/api/track.js +++ b/src/api/track.js @@ -34,7 +34,7 @@ export function getTrackDetail(ids) { ids, }, }).then((data) => { - data.songs = mapTrackPlayableStatus(data.songs); + data.songs = mapTrackPlayableStatus(data.songs, data.privileges); return data; }); } diff --git a/src/utils/common.js b/src/utils/common.js index e529dd8..5e7e2ea 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -25,12 +25,21 @@ export function isTrackPlayable(track) { ) { result.playable = false; result.reason = "No Copyright"; + } else if (track.privilege?.st < 0) { + result.playable = false; + result.reason = "The song has been removed from the shelves"; } return result; } -export function mapTrackPlayableStatus(tracks) { +export function mapTrackPlayableStatus(tracks, privileges = []) { return tracks.map((t) => { + const privilege = privileges.find((item) => item.id === t.id) || {}; + if (t.privilege) { + Object.assign(t.privilege, privilege); + } else { + t.privilege = privilege; + } let result = isTrackPlayable(t); t.playable = result.playable; t.reason = result.reason;