mastoradio-la-radio-di-mast.../src/store.js

52 lines
1.4 KiB
JavaScript
Raw Normal View History

2020-01-16 20:10:40 +01:00
import { writable, derived, get } from 'svelte/store'
2020-01-20 03:26:18 +01:00
import { writableLocalStorage } from '/services/svelte.js'
2020-01-16 20:10:40 +01:00
export const domain = writableLocalStorage('domain', 'eldritch.cafe')
export const hashtags = writableLocalStorage('hashtags', [
'np',
'nowplaying',
'tootradio',
'pouetradio'
])
2020-01-18 05:13:38 +01:00
export const paused = writable(true)
2020-01-16 20:10:40 +01:00
export const muted = writableLocalStorage('muted', false)
export const volume = writableLocalStorage('volume', 100)
2020-02-14 16:48:49 +01:00
export const queue = writable([])
2020-01-20 04:49:38 +01:00
export const next = writable(null)
2020-02-14 16:48:49 +01:00
export const current = writable(null)
2020-01-16 20:10:40 +01:00
export const enqueueing = writable(false)
2020-01-20 04:49:38 +01:00
2020-01-16 20:10:40 +01:00
export const loading = writable(false)
2020-02-14 16:48:49 +01:00
const index = derived([queue, current], ([$queue, $current]) => {
const i = $queue.indexOf($current)
return i === -1 ? null : i
})
2020-01-16 20:10:40 +01:00
2020-02-14 16:48:49 +01:00
export const canPrevious = derived([queue, index], ([$queue, $index]) => $index !== null && $index > 0)
export const canNext = derived([queue, index], ([$queue, $index]) => $index !== null && $index < $queue.length - 1)
2020-01-16 20:10:40 +01:00
2020-01-20 03:26:18 +01:00
2020-02-14 16:48:49 +01:00
export const select = track => {
console.log(`Select ${track.metadata.title}`)
current.set(track)
}
2020-01-16 20:10:40 +01:00
2020-01-20 04:49:38 +01:00
export const selectPrevious = () => {
if (get(canPrevious)) {
2020-02-14 16:48:49 +01:00
const $queue = get(queue)
const $index = get(index)
select($queue[$index - 1])
2020-01-20 04:49:38 +01:00
}
}
2020-01-20 03:26:18 +01:00
2020-01-20 04:49:38 +01:00
export const selectNext = () => {
if (get(canNext)) {
2020-02-14 16:48:49 +01:00
const $queue = get(queue)
2020-01-20 04:49:38 +01:00
const $index = get(index)
2020-02-14 16:48:49 +01:00
select($queue[$index + 1])
2020-01-16 20:10:40 +01:00
}
}