+
+
-
+
{{ track.dt | formatTime }}
@@ -87,18 +89,26 @@ import { mapState } from 'vuex';
export default {
name: 'TrackListItem',
components: { ArtistsInLine, ExplicitSymbol },
+
props: {
- track: Object,
+ trackProp: Object,
highlightPlayingTrack: {
type: Boolean,
default: true,
},
},
+
data() {
return { hover: false, trackStyle: {} };
},
+
computed: {
...mapState(['settings']),
+ track() {
+ return this.type === 'cloudDisk'
+ ? this.trackProp.simpleSong
+ : this.trackProp;
+ },
imgUrl() {
let image =
this.track?.al?.picUrl ??
@@ -112,7 +122,7 @@ export default {
return [];
},
album() {
- return this.track.album || this.track.al;
+ return this.track.album || this.track.al || this.track?.simpleSong?.al;
},
translate() {
let t;
@@ -134,17 +144,14 @@ export default {
this.track.alia?.length > 0
);
},
- isTracklist() {
- return this.type === 'tracklist';
- },
isPlaylist() {
return this.type === 'playlist';
},
isLiked() {
- return this.$parent.liked.songs.includes(this.track.id);
+ return this.$parent.liked.songs.includes(this.track?.id);
},
isPlaying() {
- return this.$store.state.player.currentTrack.id === this.track.id;
+ return this.$store.state.player.currentTrack.id === this.track?.id;
},
trackClass() {
let trackClass = [this.type];
@@ -169,7 +176,20 @@ export default {
? !this.$store.state.settings.enableUnblockNeteaseMusic
: true;
},
+ showLikeButton() {
+ return this.type !== 'tracklist' && this.type !== 'cloudDisk';
+ },
+ showOrderNumber() {
+ return this.type === 'album';
+ },
+ showAlbumName() {
+ return this.type !== 'album' && this.type !== 'tracklist';
+ },
+ showTrackTime() {
+ return this.type !== 'tracklist';
+ },
},
+
methods: {
goToAlbum() {
this.$router.push({ path: '/album/' + this.track.al.id });
diff --git a/src/store/actions.js b/src/store/actions.js
index bff9910..fe10817 100644
--- a/src/store/actions.js
+++ b/src/store/actions.js
@@ -9,6 +9,7 @@ import {
likedAlbums,
likedArtists,
likedMVs,
+ cloudDisk,
} from '@/api/user';
export default {
@@ -147,4 +148,16 @@ export default {
}
});
},
+ fetchCloudDisk: ({ commit }) => {
+ if (!isAccountLoggedIn()) return;
+ return cloudDisk().then(result => {
+ console.log(result);
+ if (result.data) {
+ commit('updateLikedXXX', {
+ name: 'cloudDisk',
+ data: result.data,
+ });
+ }
+ });
+ },
};
diff --git a/src/store/state.js b/src/store/state.js
index 417e9fd..a0e04b1 100644
--- a/src/store/state.js
+++ b/src/store/state.js
@@ -19,6 +19,7 @@ export default {
albums: [],
artists: [],
mvs: [],
+ cloudDisk: [],
},
contextMenu: {
clickObjectID: 0,
diff --git a/src/views/library.vue b/src/views/library.vue
index 1b9d514..38bd0fd 100644
--- a/src/views/library.vue
+++ b/src/views/library.vue
@@ -80,14 +80,26 @@
>
{{ $t('library.mvs') }}