diff --git a/src/utils/library/genreBrowsePlayback.test.ts b/src/features/playback/utils/playback/genreBrowsePlayback.test.ts similarity index 93% rename from src/utils/library/genreBrowsePlayback.test.ts rename to src/features/playback/utils/playback/genreBrowsePlayback.test.ts index 8b925c9b..a035c450 100644 --- a/src/utils/library/genreBrowsePlayback.test.ts +++ b/src/features/playback/utils/playback/genreBrowsePlayback.test.ts @@ -22,23 +22,23 @@ vi.mock('@/lib/api/subsonicClient', () => ({ libraryScopeForServer: vi.fn(() => 'music'), })); -vi.mock('./libraryReady', () => ({ +vi.mock('@/utils/library/libraryReady', () => ({ libraryIsReady: vi.fn(), })); // Spread the real leaf module so other consumers pulled in transitively (the // album barrel reaches this via the artist↔album edge → useGenreAlbumBrowse needs // GENRE_ALBUM_FIRST_PAGE); only fetchGenreAlbumTotal is stubbed here. -vi.mock('./genreAlbumBrowse', async (importOriginal) => ({ - ...(await importOriginal()), +vi.mock('@/utils/library/genreAlbumBrowse', async (importOriginal) => ({ + ...(await importOriginal()), fetchGenreAlbumTotal: vi.fn(), })); import { libraryAdvancedSearch, libraryGetGenreAlbumCounts } from '@/lib/api/library'; import { fetchAllSongsByGenre, getGenres } from '@/lib/api/subsonicGenres'; -import { fetchGenreAlbumTotal } from './genreAlbumBrowse'; -import { resetGenreCatalogCountsCacheForTests } from './genreCatalogCountsCache'; -import { libraryIsReady } from './libraryReady'; +import { fetchGenreAlbumTotal } from '@/utils/library/genreAlbumBrowse'; +import { resetGenreCatalogCountsCacheForTests } from '@/utils/library/genreCatalogCountsCache'; +import { libraryIsReady } from '@/utils/library/libraryReady'; describe('genreBrowsePlayback', () => { beforeEach(() => { diff --git a/src/utils/library/genreBrowsePlayback.ts b/src/features/playback/utils/playback/genreBrowsePlayback.ts similarity index 94% rename from src/utils/library/genreBrowsePlayback.ts rename to src/features/playback/utils/playback/genreBrowsePlayback.ts index 4950e89e..0e1e6c97 100644 --- a/src/utils/library/genreBrowsePlayback.ts +++ b/src/features/playback/utils/playback/genreBrowsePlayback.ts @@ -8,8 +8,8 @@ import { libraryScopeForServer } from '@/lib/api/subsonicClient'; import type { Track } from '@/features/playback/store/playerStoreTypes'; import { songToTrack } from '@/features/playback/utils/playback/songToTrack'; import { shuffleArray } from '@/lib/util/shuffleArray'; -import { trackToSong } from './advancedSearchLocal'; -import { type AlbumBrowseSort } from './albumBrowseSort'; +import { trackToSong } from '@/utils/library/advancedSearchLocal'; +import { type AlbumBrowseSort } from '@/utils/library/albumBrowseSort'; import { genreCatalogCacheKey, getInflightGenreCatalog, @@ -17,9 +17,9 @@ import { peekGenreCatalogCache, trackInflightGenreCatalog, writeGenreCatalogCache, -} from './genreCatalogCountsCache'; -import { fetchGenreAlbumTotal } from './genreAlbumBrowse'; -import { libraryIsReady } from './libraryReady'; +} from '@/utils/library/genreCatalogCountsCache'; +import { fetchGenreAlbumTotal } from '@/utils/library/genreAlbumBrowse'; +import { libraryIsReady } from '@/utils/library/libraryReady'; /** Drop genres with no indexed albums/tracks (stale server list or orphan rows). */ export function filterGenresWithContent(genres: SubsonicGenre[]): SubsonicGenre[] { diff --git a/src/pages/GenreDetail.tsx b/src/pages/GenreDetail.tsx index 708d93a1..9b045763 100644 --- a/src/pages/GenreDetail.tsx +++ b/src/pages/GenreDetail.tsx @@ -22,7 +22,7 @@ import { usePlayerStore } from '@/features/playback/store/playerStore'; import { fetchGenreAlbumCount, fetchGenreTracksForPlayback, -} from '../utils/library/genreBrowsePlayback'; +} from '@/features/playback/utils/playback/genreBrowsePlayback'; import { lookupGenreAlbumCount } from '../utils/library/genreCatalogCountsCache'; import { libraryScopeForServer } from '@/lib/api/subsonicClient'; import { diff --git a/src/pages/Genres.tsx b/src/pages/Genres.tsx index 944a00b4..011d0541 100644 --- a/src/pages/Genres.tsx +++ b/src/pages/Genres.tsx @@ -7,7 +7,7 @@ import { APP_MAIN_SCROLL_VIEWPORT_ID } from '../constants/appScroll'; import { subscribeLibrarySyncIdle } from '@/lib/api/library'; import { useAuthStore } from '../store/authStore'; import { useLibraryIndexStore } from '../store/libraryIndexStore'; -import { fetchGenreCatalog, filterGenresWithContent } from '../utils/library/genreBrowsePlayback'; +import { fetchGenreCatalog, filterGenresWithContent } from '@/features/playback/utils/playback/genreBrowsePlayback'; import { libraryScopeForServer } from '@/lib/api/subsonicClient'; import { peekGenreCatalogCache } from '../utils/library/genreCatalogCountsCache'; import { resolveIndexKey } from '../utils/server/serverIndexKey'; diff --git a/src/pages/RandomMix.tsx b/src/pages/RandomMix.tsx index 5d4bc847..e750c055 100644 --- a/src/pages/RandomMix.tsx +++ b/src/pages/RandomMix.tsx @@ -13,7 +13,7 @@ import { fetchRandomMixSongsUntilFull, getMixMinRatingsConfigFromAuth, } from '../utils/mix/mixRatingFilter'; -import { fetchGenreCatalog } from '../utils/library/genreBrowsePlayback'; +import { fetchGenreCatalog } from '@/features/playback/utils/playback/genreBrowsePlayback'; import { AUDIOBOOK_GENRES, filterRandomMixSongs } from '../utils/componentHelpers/randomMixHelpers'; import RandomMixHeader from '../components/randomMix/RandomMixHeader'; import RandomMixFiltersPanel from '../components/randomMix/RandomMixFiltersPanel';