70 lines
1.6 KiB
JavaScript
70 lines
1.6 KiB
JavaScript
import * as index from "../index/index.js"
|
|
|
|
export function State() {
|
|
hiss.state.queue = []
|
|
|
|
hiss.state.playing = {
|
|
currentTime: 0
|
|
}
|
|
hiss.state.playing.track = {
|
|
name: 'Nothing Playing',
|
|
artist: '-',
|
|
duration: Infinity,
|
|
coverId: null
|
|
}
|
|
}
|
|
|
|
export function Init() {
|
|
hiss.view.player = {
|
|
root: document.getElementById('player'),
|
|
cover: document.getElementById('track-cover'),
|
|
title: document.getElementById('track-title'),
|
|
artist: document.getElementById('track-artist'),
|
|
duration: document.getElementById('track-duration'),
|
|
currentTime: document.getElementById('track-timestamp')
|
|
}
|
|
hiss.view.player.focus = hiss.view.player.root
|
|
}
|
|
|
|
export async function Render() {
|
|
await renderInfo()
|
|
}
|
|
|
|
export function Open() {
|
|
Render()
|
|
}
|
|
|
|
export async function renderInfo() {
|
|
let track = hiss.state.playing.track
|
|
|
|
hiss.view.player.cover.src = await index.cover.Url(track.coverId) ?? ''
|
|
hiss.view.player.duration.innerText = formatTime(track.duration)
|
|
hiss.view.player.title.innerText = track.name
|
|
hiss.view.player.artist.innerText = track.artist
|
|
}
|
|
|
|
export const formatTime = currentTime => {
|
|
let minutes = Math.floor(currentTime / 60).toString()
|
|
let seconds = Math.floor(currentTime % 60).toString()
|
|
|
|
return minutes.padStart(2, '0') + ':' + seconds.padStart(2, '0')
|
|
}
|
|
|
|
export function Play(eTrack) {
|
|
|
|
}
|
|
|
|
export const Statuses = {
|
|
PLAYING: 0,
|
|
PAUSED: 1,
|
|
ENDED: 2
|
|
}
|
|
export function Status() {
|
|
if(hiss.view.playback.paused) {
|
|
return Statuses.PAUSED
|
|
}
|
|
}
|
|
|
|
export function Queue(eTrack) {
|
|
hiss.state.queue.push(eTrack)
|
|
} |