mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-03 20:13:02 +00:00
[client] use Queue store on songlist
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="folder">
|
<div class="folder">
|
||||||
<div class="table rounded" v-if="props.songs.length">
|
<div class="table rounded" v-if="props.tracks.length">
|
||||||
<div class="thead">
|
<div class="thead">
|
||||||
<div class="index"></div>
|
<div class="index"></div>
|
||||||
<div class="track-header">Track</div>
|
<div class="track-header">Track</div>
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="songlist">
|
<div class="songlist">
|
||||||
<SongItem
|
<SongItem
|
||||||
v-for="(song, index) in props.songs"
|
v-for="(song, index) in props.tracks"
|
||||||
:key="song"
|
:key="song.trackid"
|
||||||
:song="song"
|
:song="song"
|
||||||
:index="index + 1"
|
:index="index + 1"
|
||||||
@updateQueue="updateQueue"
|
@updateQueue="updateQueue"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="props.songs.length === 0 && search_query">
|
<div v-else-if="props.tracks.length === 0 && search_query">
|
||||||
<div class="no-results">
|
<div class="no-results">
|
||||||
<div class="text">Nothing down here 😑</div>
|
<div class="text">Nothing down here 😑</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -28,45 +28,39 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup lang="ts">
|
||||||
import { onMounted } from "@vue/runtime-core";
|
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
|
|
||||||
import SongItem from "../shared/SongItem.vue";
|
import SongItem from "../shared/SongItem.vue";
|
||||||
|
|
||||||
import routeLoader from "@/composables/routeLoader.js";
|
import routeLoader from "../../composables/routeLoader.js";
|
||||||
import perks from "@/composables/perks.js";
|
import state from "../../composables/state";
|
||||||
import state from "@/composables/state";
|
import useQStore from "../../stores/queue";
|
||||||
|
import { Track } from "../../interfaces";
|
||||||
|
|
||||||
const props = defineProps({
|
const queue = useQStore();
|
||||||
songs: {
|
|
||||||
type: Array,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
let route;
|
const props = defineProps<{
|
||||||
|
tracks: Track[];
|
||||||
|
path?: string;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
let route = useRoute().name;
|
||||||
|
console.log(route);
|
||||||
const search_query = state.search_query;
|
const search_query = state.search_query;
|
||||||
|
|
||||||
onMounted(() => {
|
function updateQueue(song: Track) {
|
||||||
route = useRoute().name;
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateQueue(song) {
|
|
||||||
let type;
|
|
||||||
|
|
||||||
switch (route) {
|
switch (route) {
|
||||||
// check which route the play request come from
|
// check which route the play request come from
|
||||||
case "FolderView":
|
case "FolderView":
|
||||||
type = "folder";
|
queue.playFromFolder(props.path, props.tracks, song);
|
||||||
break;
|
break;
|
||||||
case "AlbumView":
|
case "AlbumView":
|
||||||
type = "album";
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
perks.updateQueue(song, type);
|
// perks.updateQueue(song, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadAlbum(title, albumartist) {
|
function loadAlbum(title, albumartist) {
|
||||||
|
|||||||
@@ -3,18 +3,18 @@
|
|||||||
<div class="r-grid">
|
<div class="r-grid">
|
||||||
<div class="main-item border">
|
<div class="main-item border">
|
||||||
<p class="heading">COMING UP NEXT</p>
|
<p class="heading">COMING UP NEXT</p>
|
||||||
<div class="itemx" @click="playNext">
|
<div class="itemx" @click="queue.playNext">
|
||||||
<div
|
<div
|
||||||
class="album-art image"
|
class="album-art image"
|
||||||
:style="{
|
:style="{
|
||||||
backgroundImage: `url("${next.image}")`,
|
backgroundImage: `url("${queue.next.image}")`,
|
||||||
}"
|
}"
|
||||||
></div>
|
></div>
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
<p class="title ellip">{{ next.title }}</p>
|
<p class="title ellip">{{ queue.next.title }}</p>
|
||||||
<hr />
|
<hr />
|
||||||
<p class="artist ellip">
|
<p class="artist ellip">
|
||||||
<span v-for="artist in putCommas(next.artists)" :key="artist">{{
|
<span v-for="artist in putCommas(queue.next.artists)" :key="artist">{{
|
||||||
artist
|
artist
|
||||||
}}</span>
|
}}</span>
|
||||||
</p>
|
</p>
|
||||||
@@ -22,36 +22,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="scrollable-r border rounded">
|
<div class="scrollable-r border rounded">
|
||||||
<TrackItem v-for="song in queue" :key="song.trackid" :track="song" />
|
<TrackItem
|
||||||
|
v-for="t in queue.tracks"
|
||||||
|
:key="t.trackid"
|
||||||
|
:track="t"
|
||||||
|
@playThis="playThis"
|
||||||
|
:isCurrent="t.trackid === queue.current.trackid"
|
||||||
|
:isPlaying="queue.playing"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script setup lang="ts">
|
||||||
import perks from "@/composables/perks.js";
|
import perks from "../../composables/perks.js";
|
||||||
import audio from "@/composables/playAudio.js";
|
|
||||||
import { ref } from "@vue/reactivity";
|
import { ref } from "@vue/reactivity";
|
||||||
import TrackItem from "../shared/TrackItem.vue";
|
import TrackItem from "../shared/TrackItem.vue";
|
||||||
|
import useQStore from "../../stores/queue";
|
||||||
|
import { Track } from "../../interfaces.js";
|
||||||
|
const queue = useQStore();
|
||||||
|
|
||||||
export default {
|
const putCommas = perks.putCommas;
|
||||||
setup() {
|
|
||||||
const queue = ref(perks.queue);
|
|
||||||
const next = ref(perks.next);
|
|
||||||
|
|
||||||
const { playNext } = audio;
|
function playThis(track: Track) {
|
||||||
|
queue.play(track);
|
||||||
const putCommas = perks.putCommas;
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
playNext,
|
|
||||||
putCommas,
|
|
||||||
queue,
|
|
||||||
next,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
components: { TrackItem },
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|||||||
Reference in New Issue
Block a user