mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
72030f17fd
First Phase F slice. Splits the 1333-LOC `api/subsonic.ts` along its two most obvious axes: - `subsonicTypes.ts` — all ~24 exported interfaces + type aliases (album/song/artist/playlist/directory/genre/now-playing/radio, random-songs filters, three statistics shapes, search + starred results, AlbumInfo, structured-lyrics types, etc.) plus the `RADIO_PAGE_SIZE` constant. - `subsonicClient.ts` — token-auth + `getClient` + `api<T>()` + `libraryFilterParams` + `secureRandomSalt` / `getAuthParams` / `SUBSONIC_CLIENT`. The credential-bearing API helpers (`pingWithCredentials`, `apiWithCredentials`, `restBaseFromUrl`, `probeInstantMixWithCredentials`) stay in `subsonic.ts` for now — they could move into the client module in a follow-up. 66 external call sites migrated to direct imports from the new modules (no re-export shims in `subsonic.ts`). Pure code-move; contract test stays green. subsonic.ts: 1333 → 1078 LOC (−255).
28 lines
807 B
TypeScript
28 lines
807 B
TypeScript
import type { SubsonicSong } from '../api/subsonicTypes';
|
|
import type { Track } from '../store/playerStoreTypes';
|
|
export function songToTrack(song: SubsonicSong): Track {
|
|
return {
|
|
id: song.id,
|
|
title: song.title,
|
|
artist: song.artist,
|
|
album: song.album,
|
|
albumId: song.albumId,
|
|
artistId: song.artistId,
|
|
duration: song.duration,
|
|
coverArt: song.coverArt,
|
|
track: song.track,
|
|
year: song.year,
|
|
bitRate: song.bitRate,
|
|
suffix: song.suffix,
|
|
userRating: song.userRating,
|
|
replayGainTrackDb: song.replayGain?.trackGain,
|
|
replayGainAlbumDb: song.replayGain?.albumGain,
|
|
replayGainPeak: song.replayGain?.trackPeak,
|
|
starred: song.starred,
|
|
genre: song.genre,
|
|
samplingRate: song.samplingRate,
|
|
bitDepth: song.bitDepth,
|
|
size: song.size,
|
|
};
|
|
}
|