A music player that connects to your cloud/distributed storage.
at v4 1.4 kB view raw
1import { ostiary, rpc, workerProxy } from "@common/worker.js"; 2 3/** 4 * @import {Track} from "@definitions/types.d.ts" 5 * @import {ActionsWithTunnel, ProxiedActions} from "@common/worker.d.ts" 6 * @import {InputActions} from "@components/input/types.d.ts" 7 * @import {Actions as QueueEngineActions} from "@components/engine/queue/types.d.ts" 8 * @import {Actions} from "./types.d.ts" 9 */ 10 11//////////////////////////////////////////// 12// ACTIONS 13//////////////////////////////////////////// 14 15/** 16 * @type {ActionsWithTunnel<Actions>["poolAvailable"]} 17 */ 18export async function poolAvailable({ data, ports }) { 19 const cachedTracks = data.filter((t) => t.kind !== "placeholder"); 20 21 /** @type {ProxiedActions<InputActions>} */ 22 const input = workerProxy(() => ports.input); 23 24 /** @type {ProxiedActions<QueueEngineActions>} */ 25 const queue = workerProxy(() => ports.queue); 26 27 ports.input.start(); 28 ports.queue.start(); 29 30 // Consult input 31 const groups = await input.groupConsult(cachedTracks); 32 33 /** @type {Track[]} */ 34 let availableTracks = []; 35 36 Object.values(groups).forEach((value) => { 37 if (value.available === false) return; 38 availableTracks = availableTracks.concat(value.tracks); 39 }, []); 40 41 // Set pool 42 await queue.pool(availableTracks); 43} 44 45//////////////////////////////////////////// 46// ⚡️ 47//////////////////////////////////////////// 48 49ostiary((context) => { 50 rpc(context, { poolAvailable }); 51});