platypush/platypush/backend/http/webapp/src/mixins/Music/Status.vue

67 lines
1.4 KiB
Vue

<script>
export default {
methods: {
parseStatus(status) {
return Object.entries(status).reduce((obj, [k, v]) => {
switch (k) {
case 'bitrate':
case 'volume':
obj[k] = parseInt(v)
break
case 'consume':
case 'random':
case 'repeat':
case 'single':
obj[k] = !!parseInt(+v)
break
case 'playing_pos':
case 'song': // Legacy mpd format
obj.playingPos = parseInt(v)
break
case 'time':
if (v.split) { // Handle the `elapsed:duration` legacy mpd format
v = v.split(':')
if (v.length === 1) {
obj.elapsed = parseInt(v[0])
} else {
obj.elapsed = parseInt(v[0])
obj.duration = parseInt(v[1])
}
} else {
obj.elapsed = v
}
break
case 'track':
if (v?.time != null) {
obj.duration = v.time
}
if (v?.playlistPos != null) {
obj.playingPos = v.pos
}
break
case 'duration':
obj.duration = parseInt(v)
break
case 'elapsed':
break
default:
obj[k] = v
break
}
return obj
}, {})
},
}
}
</script>