VulpesOS/assets/webapps/music.gaiamobile.org/js/services/artwork.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

64 lines
2 KiB
JavaScript

/* exported ArtworkService */
/* global Response, ServiceWorkerWare, bridge */
'use strict';
importScripts('components/bridge/client.js');
var client = bridge.client({
service: 'music-service',
endpoint: new BroadcastChannel('music-service')
});
function ArtworkService(worker) {
var stopAfter = ServiceWorkerWare.decorators.stopAfter;
worker.get('/api/artwork/original/:filePath', stopAfter((request) => {
return new Promise((resolve) => {
var filePath = decodeURIComponent(request.parameters.filePath);
client.method('getSongArtwork', filePath)
.then(file => resolve(respond(file)))
.catch((error) => {
resolve(new Response('', { status: 404 }));
});
});
}));
worker.get('/api/artwork/thumbnail/:filePath', stopAfter((request) => {
return new Promise((resolve) => {
var filePath = decodeURIComponent(request.parameters.filePath);
client.method('getSongThumbnail', filePath)
.then(file => resolve(respond(file)))
.catch((error) => {
resolve(new Response('', { status: 404 }));
});
});
}));
worker.get('/api/artwork/url/original/:filePath', stopAfter((request) => {
return new Promise((resolve) => {
var filePath = decodeURIComponent(request.parameters.filePath);
client.method('getSongArtworkURL', filePath)
.then(file => resolve(respond(file)))
.catch((error) => {
resolve(new Response('', { status: 404 }));
});
});
}));
worker.get('/api/artwork/url/thumbnail/:filePath', stopAfter((request) => {
return new Promise((resolve) => {
var filePath = decodeURIComponent(request.parameters.filePath);
client.method('getSongThumbnailURL', filePath)
.then(file => resolve(respond(file)))
.catch((error) => {
resolve(new Response('', { status: 404 }));
});
});
}));
function respond(response) {
return new Response(JSON.stringify(response), {
headers: { 'Content-Type': response.type || 'application/octet-stream' }
});
}
}