@@ -8,7 +8,7 @@ import LazyLoad, { ILazyLoadInstance } from "vanilla-lazyload";
88
99import { findHighContrastColor } from "./modules/color" ;
1010import { print , formatTime } from "./helper" ;
11- import { songs , currentSong , play , pause , prev , next , setVolume } from "./controller" ;
11+ import { songs , currentSong , play , pause , prev , next , setVolume , getCurrentTime } from "./controller" ;
1212import { setCircleProgress , setThemeColor , rotateToggle } from "./ui" ;
1313import cookie from "./modules/cookie" ;
1414
@@ -37,13 +37,10 @@ const colorthief = new ColorThief();
3737 audio . addEventListener ( "playing" , updatePlayPauseButton ) ;
3838 audio . addEventListener ( "pause" , updatePlayPauseButton ) ;
3939 audio . addEventListener ( "ended" , next ) ;
40- audio . addEventListener ( "durationchange" , function ( ) {
41- ( < HTMLSpanElement > el . querySelector ( ".penguin-player__player--progress-duration" ) ) . textContent = formatTime ( this . duration ) ;
42- } ) ;
4340 audio . addEventListener ( "timeupdate" , function ( ) {
44- setCircleProgress ( this . currentTime / this . duration * 100 ) ;
45- ( < HTMLSpanElement > el . querySelector ( ".penguin-player__player--progress-current" ) ) . textContent = formatTime ( this . currentTime ) ;
46- ( < HTMLDivElement > el . querySelector ( ".penguin-player__player--progress-inner" ) ) . style . width = ( this . currentTime / this . duration * 100 ) + "%" ;
41+ setCircleProgress ( getCurrentTime ( ) / songs [ currentSong ] . duration * 100 ) ;
42+ ( < HTMLSpanElement > el . querySelector ( ".penguin-player__player--progress-current" ) ) . textContent = formatTime ( getCurrentTime ( ) ) ;
43+ ( < HTMLDivElement > el . querySelector ( ".penguin-player__player--progress-inner" ) ) . style . width = ( getCurrentTime ( ) / songs [ currentSong ] . duration * 100 ) + "%" ;
4744 } ) ;
4845 audio . addEventListener ( "error" , ( ) => { print ( "Cannot play " + songs [ currentSong ] . name ) ; next ( ) ; } ) ;
4946 // Controls setup
@@ -96,6 +93,7 @@ let lazyLoad: ILazyLoadInstance;
9693function createSongElement ( song : Song , click : ( ) => void ) : HTMLElement {
9794 let songEl = document . createElement ( "div" ) ;
9895 songEl . classList . add ( "penguin-player__player--playlist-song" ) ;
96+ songEl . setAttribute ( "role" , "listitem" ) ;
9997 songEl . addEventListener ( "click" , click ) ;
10098 let img = document . createElement ( "img" ) ;
10199 img . classList . add ( "penguin-player__player--playlist-thumbnail" ) ;
@@ -127,7 +125,7 @@ function initialize(list: any) {
127125 for ( let track of list . tracks ) {
128126 let artists = "" ;
129127 for ( let artist of track . ar ) { artists += `, ${ artist . name } ` ; }
130- songs . push ( { id : track . id , name : track . name , artists : artists . substring ( 2 ) , album : track . al . name , thumbnail : track . al . picUrl . replace ( "http:" , "https:" ) } ) ;
128+ songs . push ( { id : track . id , name : track . name , artists : artists . substring ( 2 ) , album : track . al . name , thumbnail : track . al . picUrl . replace ( "http:" , "https:" ) , duration : track . dt / 1000 } ) ;
131129 }
132130 print ( "Playlist processed" ) ;
133131 let playlist : HTMLElement = el . querySelector ( ".penguin-player__player--playlist" ) ;
0 commit comments