mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-25 07:55:43 +00:00
f7b2799d39
Four more domain-eng modules out of `api/subsonic.ts`:
- `subsonicPlaylists.ts` — `getPlaylists`/`getPlaylist`/`createPlaylist`
/`updatePlaylist`/`updatePlaylistMeta`/`uploadPlaylistCoverArt`/
`uploadArtistImage`/`deletePlaylist`. The two upload helpers use
the Tauri-side CORS bypass (`upload_playlist_cover` /
`upload_artist_image`).
- `subsonicPlayQueue.ts` — `getPlayQueue`/`savePlayQueue`.
- `subsonicRadio.ts` — Internet Radio CRUD (4 fns), Tauri-side cover
art ops (3 fns), RadioBrowser search/top + `fetchUrlBytes`.
- `subsonicStatistics.ts` — `fetchStatisticsLibraryAggregates`/
`fetchStatisticsOverview`/`fetchStatisticsFormatSample` with their
three per-server-folder caches and the `statisticsPageCacheKey`
helper. `STATS_CACHE_TTL` renamed from the misleadingly-shared
`RATING_CACHE_TTL` constant.
Also: drop ~20 now-unused type/value imports from `subsonic.ts`, trim
three orphan jsdoc comments left behind by earlier slices, fix four
`vi.mock` targets (`queueSync`, `playerStore.persistence`) plus the
dynamic `await import('../api/subsonic')` calls in `ContextMenu.tsx`
to point at the new module paths.
Pure code-move. subsonic.ts: 561 → 144 LOC (−417). What's left:
ping/pingWithCredentials/probeInstantMix/scheduleInstantMixProbe +
internal `apiWithCredentials`/`restBaseFromUrl`.
21 lines
864 B
TypeScript
21 lines
864 B
TypeScript
import { api } from './subsonicClient';
|
|
import type { SubsonicSong } from './subsonicTypes';
|
|
|
|
export async function getPlayQueue(): Promise<{ current?: string; position?: number; songs: SubsonicSong[] }> {
|
|
try {
|
|
const data = await api<{ playQueue: { current?: string; position?: number; entry?: SubsonicSong[] } }>('getPlayQueue.view');
|
|
const pq = data.playQueue;
|
|
return { current: pq?.current, position: pq?.position, songs: pq?.entry ?? [] };
|
|
} catch {
|
|
return { songs: [] };
|
|
}
|
|
}
|
|
|
|
export async function savePlayQueue(songIds: string[], current?: string, position?: number): Promise<void> {
|
|
const params: Record<string, unknown> = {};
|
|
if (songIds.length > 0) params.id = songIds;
|
|
if (current !== undefined) params.current = current;
|
|
if (position !== undefined) params.position = position;
|
|
await api('savePlayQueue.view', params);
|
|
}
|