hiss/src/view/player.js
2025-02-04 14:21:03 -07:00

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)
}