@nent/core
Version:
44 lines (41 loc) • 1.31 kB
JavaScript
/*!
* NENT 2022
*/
import { M as Mutex } from './mutex-e5645c85.js';
import { g as getDataProvider } from './factory-acbf0d3d.js';
import { I as InMemoryProvider } from './memory-0d63dacd.js';
const tracksKey = 'tracks';
const sessionFallback = new InMemoryProvider();
const collectionMutex = new Mutex();
function parseTracks(tracks) {
return JSON.parse(tracks || '[]');
}
function stringifyTracks(tracks) {
return JSON.stringify(tracks || '[]');
}
async function getSessionTracks() {
const unlock = await collectionMutex.lock();
var provider = (await getDataProvider('session')) || sessionFallback;
const tracks = await provider.get(tracksKey);
unlock();
return tracks ? parseTracks(tracks) : [];
}
async function setSessionTracks(tracks) {
return await collectionMutex.dispatch(async () => {
const provider = ((await getDataProvider('session')) ||
sessionFallback);
await provider.set(tracksKey, stringifyTracks(tracks));
});
}
async function playedTrack(trackId) {
const tracks = await getSessionTracks();
return tracks.includes(trackId);
}
async function markTrack(trackId) {
const tracks = await getSessionTracks();
if (tracks.includes(trackId))
return;
tracks.push(trackId);
await setSessionTracks(tracks);
}
export { markTrack as m, playedTrack as p };