diff --git a/src/api/endpoints/library.ts b/src/api/endpoints/library.ts index 164b874..5219f3e 100644 --- a/src/api/endpoints/library.ts +++ b/src/api/endpoints/library.ts @@ -201,6 +201,18 @@ export const libraryApi = api.injectEndpoints({ }), invalidatesTags: (_r, _e, trackId) => [{ type: 'Track', id: trackId }], }), + // Enqueue a transcode to a cached Opus + HLS rendition (§6.6). Fire-and- + // forget: the worker does the work, playback keeps using the original. + optimizeTrack: build.mutation< + { status: string; job_id: string; quality: string }, + { trackId: string; quality?: string } + >({ + query: ({ trackId, quality = 'high' }) => ({ + url: `/tracks/${trackId}/optimize`, + method: 'POST', + params: { quality }, + }), + }), }), overrideExisting: false, }); @@ -219,4 +231,5 @@ export const { useLazyGetMetadataMatchesQuery, useApplyMetadataMutation, useEnrichTrackMutation, + useOptimizeTrackMutation, } = libraryApi; diff --git a/src/api/endpoints/streaming.ts b/src/api/endpoints/streaming.ts index 8a8e9c3..dda7d93 100644 --- a/src/api/endpoints/streaming.ts +++ b/src/api/endpoints/streaming.ts @@ -5,9 +5,17 @@ import { getApiBaseUrl } from '../../config/runtime-config'; * param because `