hw-gs-player

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

queue.ts (3659B)


      1 /*
      2 This Script manages the queue for play.
      3 */
      4 
      5 import { ref } from "vue";
      6 
      7 export interface Queue {
      8     videoId: string;
      9     SongName: string;
     10 }
     11 
     12 let queue: Queue[] = [];
     13 const albumTitle = ref<string>("Unknown Album");
     14 let nextSong: string= "";
     15 const playerRenderKey = ref(0);
     16 const isLoop = ref(false);
     17 const isFavorite = ref(false);
     18 let songIndex:number = 0;
     19 
     20 function get_albumTitle(): string {
     21     return albumTitle.value;
     22 }
     23 
     24 function get_next(){
     25     console.log("get_next was called");
     26     if (isLoop.value) {
     27         console.log("loop is true");
     28         playerRenderKey.value += 1;
     29     } else {
     30         songIndex++;
     31         if (queue[songIndex] === null) {
     32             console.log("queue was ended");
     33         } else {
     34             nextSong = queue[songIndex].videoId;
     35             console.log("i will play " + nextSong);
     36             playerRenderKey.value += 1;
     37         }
     38     }
     39 }
     40 
     41 function get_nowSong(): Queue {
     42     const favoriteList: Queue[] = JSON.parse(localStorage.getItem("favorite") || "[]");
     43     for (let i = 0; i < favoriteList.length; i++) {
     44         if (favoriteList[i].videoId === queue[songIndex]?.videoId) {
     45             isFavorite.value = true;
     46             break;
     47         }else{
     48             isFavorite.value = false;
     49         }
     50     }
     51     const currentSong: Queue = queue[songIndex];
     52     return currentSong;
     53 }
     54 
     55 function add_album(Album: Queue[], AlbumTitle: string) {
     56     queue = [...Album];
     57     albumTitle.value = AlbumTitle;
     58     console.log(queue.map((queue) => queue.SongName));
     59     playerRenderKey.value += 1;
     60 }
     61 
     62 function del_all() {
     63     queue = [];
     64     albumTitle.value = "Unknown Album";
     65 }
     66 
     67 function get_playerRenderKey() {
     68     return playerRenderKey;
     69 }
     70 
     71 function onLoopButton() {
     72     isLoop.value = !isLoop.value;
     73     console.log("loop is " + isLoop.value);
     74 }
     75 
     76 function get_queueTitleList(): string[] {
     77     console.log("get_queueTitleList was called");
     78     console.log(queue.map((queue) => queue.SongName));
     79     return queue.map((map) => map.SongName);
     80 }
     81 
     82 function event_favorite(song: Queue | undefined) {
     83     console.log("event_favorite was called");
     84     if (song === undefined) {
     85         console.log("song is undefined");
     86         return;
     87     }
     88 
     89     if (!isFavorite.value) {
     90         console.log("this song is already favorite");
     91         if (localStorage.getItem("favorite") === null) {
     92             console.log("favorite is null");
     93             localStorage.setItem("favorite", JSON.stringify([song]));
     94         } else {
     95             console.log("favorite is " + localStorage.getItem("favorite"));
     96             let favoriteList = JSON.parse(localStorage.getItem("favorite") || "[]");
     97             favoriteList.push(song);
     98             localStorage.setItem("favorite", JSON.stringify(favoriteList));
     99         }
    100         isFavorite.value = true;
    101     } else {
    102         console.log("this song is not favorite");
    103         let favoriteList: Queue[] = JSON.parse(localStorage.getItem("favorite") || "[]");
    104         for (let i = 0; i < favoriteList.length; i++) {
    105             if (favoriteList[i].videoId === song.videoId) {
    106                 favoriteList.splice(i, 1);
    107                 localStorage.setItem("favorite", JSON.stringify(favoriteList));
    108                 break;
    109             }
    110         }
    111         isFavorite.value = false;
    112     }
    113 }
    114 
    115 function play_in_queue(recivedIndex: number) {
    116     songIndex = recivedIndex;
    117     console.log("songIndex is "+songIndex+"(in play_in_queue()")
    118     playerRenderKey.value++;
    119 }
    120 
    121 export default {
    122     get_albumTitle,
    123     get_next,
    124     get_nowSong,
    125     add_album,
    126     del_all,
    127     get_playerRenderKey,
    128     onLoopButton,
    129     get_queueTitleList,
    130     event_favorite,
    131     play_in_queue,
    132     isLoop,
    133     isFavorite,
    134     queue,
    135 };