mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 15:25:46 +00:00
8cc022581f
Move the 5 subsonic api modules that M3 had co-located into features (subsonicAlbumInfo/Artists/Playlists/Radio/Statistics) into src/lib/api/, the feature-free infra layer, and drop their feature-barrel re-exports. Consumers now import these protocol calls directly from @/lib/api/subsonic*; the feature barrels export only domain UI/hooks/state. This is the consistent api placement (plan §10.3, revised: ALL subsonic protocol clients are feature-free infra, not per-feature) and it kills the documented api-induced feature<->feature cycles: offline->artist/playlist (getArtist/ getPlaylist*), album->artist (getArtistInfo), deviceSync/nowPlaying/orbit->*. Remaining artist<->album refs are UI-only (OpenArtistRefInline/coerceOpenArtist Refs) and offline->playlist is store-level (usePlaylistStore) — both deeper, tracked for M5, not api placement. Pure move: import specifiers + vi.mock/spy targets repointed; no behaviour change. tsc 0, lint 0/0, full suite 319 files / 2353 tests green. Tooling note: barrel-imported and dynamic-import api symbols were split out of @/features/* to @/lib/api/* (tsc-driven); 12 vi.mock barrels retargeted to the deep lib module (mock-collapse sweep), AlbumHeader's UI mock left untouched.
44 lines
2.1 KiB
TypeScript
44 lines
2.1 KiB
TypeScript
/**
|
|
* Playlist feature — the Playlists overview + PlaylistDetail (lazy via deep
|
|
* `pages/*`, not re-exported), playlist/folder UI (cards, hero, tracklist,
|
|
* filter toolbar, smart editor, folder views, CSV import), the playlist +
|
|
* folder + layout stores, the playlist Subsonic API, and the playlist data/
|
|
* selection/DnD/search/mutation/star hooks + play + CSV/smart utils.
|
|
*
|
|
* Stays OUT: the playlist context-menu items + add/move submenus (context-menu
|
|
* subsystem), the queue-panel Save/Load-playlist modals (queue UI), and
|
|
* `playlistDetailHelpers` (shared with offline + favorites; keeping it here
|
|
* would create a playlist⟷offline barrel cycle → lib/shared in M4).
|
|
*/
|
|
export * from './hooks/usePlaylistBulkPlayCallbacks';
|
|
export * from './hooks/usePlaylistCovers';
|
|
export * from './hooks/usePlaylistDerived';
|
|
export * from './hooks/usePlaylistDnDReorder';
|
|
export * from './hooks/usePlaylistPreview';
|
|
export * from './hooks/usePlaylistRouteEffects';
|
|
export * from './hooks/usePlaylistSelection';
|
|
export * from './hooks/usePlaylistsLibraryScopeCounts';
|
|
export * from './hooks/usePlaylistSongMutations';
|
|
export * from './hooks/usePlaylistSongSearch';
|
|
export * from './hooks/usePlaylistStarRating';
|
|
export * from './hooks/usePlaylistSuggestions';
|
|
export * from './store/playlistFolderStore';
|
|
export * from './store/playlistLayoutStore';
|
|
export * from './store/playlistStore';
|
|
export * from './utils/playlistBulkPlayActions';
|
|
export * from './utils/playlistDisplayedSongs';
|
|
export * from './utils/playlistFolders';
|
|
export * from './utils/playlistsSmart';
|
|
export * from './utils/playPlaylistById';
|
|
export * from './utils/runPlaylistCsvImport';
|
|
export * from './utils/runPlaylistLoad';
|
|
export * from './utils/runPlaylistReorderDrop';
|
|
export * from './utils/runPlaylistsActions';
|
|
export * from './utils/runPlaylistSaveMeta';
|
|
export * from './utils/runPlaylistsOpenSmartEditor';
|
|
export * from './utils/runPlaylistsSaveSmart';
|
|
export * from './utils/runPlaylistZipDownload';
|
|
export * from './utils/spotifyCsvImport';
|
|
export * from './utils/spotifyCsvMatch';
|
|
export * from './utils/startPlaylistRowDrag';
|