From 1f9398448233649bf34065ba7a2ba07deea86cf7 Mon Sep 17 00:00:00 2001 From: Psychotoxical <171614930+Psychotoxical@users.noreply.github.com> Date: Tue, 30 Jun 2026 19:34:28 +0200 Subject: [PATCH] refactor(hooks): move generic scroll/pagination/dnd UI hooks into lib/hooks --- src/app/AppShell.tsx | 2 +- src/features/album/hooks/useAlbumBrowseData.ts | 4 ++-- src/features/album/hooks/useGenreAlbumBrowse.ts | 4 ++-- src/features/album/pages/Albums.tsx | 4 ++-- src/features/album/pages/LosslessAlbums.tsx | 6 +++--- src/features/album/pages/NewReleases.tsx | 8 ++++---- src/features/album/pages/RandomAlbums.tsx | 4 ++-- src/features/artist/hooks/useArtistsInfiniteScroll.ts | 2 +- src/features/artist/pages/Artists.tsx | 8 ++++---- src/features/composers/pages/Composers.tsx | 6 +++--- src/features/genre/pages/GenreDetail.tsx | 4 ++-- src/features/search/components/PagedSongList.tsx | 2 +- .../settings/components/ArtistLayoutCustomizer.tsx | 2 +- .../settings/components/LyricsSourcesCustomizer.tsx | 2 +- .../settings/components/QueueToolbarCustomizer.tsx | 2 +- src/features/settings/components/ServersTab.tsx | 2 +- src/features/settings/components/SidebarCustomizer.tsx | 2 +- src/{ => lib}/hooks/useAsyncInpagePagination.test.ts | 2 +- src/{ => lib}/hooks/useAsyncInpagePagination.ts | 0 src/{ => lib}/hooks/useAsyncInpageScroll.ts | 4 ++-- src/{ => lib}/hooks/useClientSliceInfiniteScroll.test.ts | 4 ++-- src/{ => lib}/hooks/useClientSliceInfiniteScroll.ts | 4 ++-- src/{ => lib}/hooks/useGlobalDndAndSelectionBlockers.ts | 0 src/{ => lib}/hooks/useInpageScrollSentinel.test.ts | 2 +- src/{ => lib}/hooks/useInpageScrollSentinel.ts | 0 src/{ => lib}/hooks/useInpageScrollViewport.ts | 0 src/{ => lib}/hooks/useListReorderDnd.ts | 2 +- src/{ => lib}/hooks/useMainstageInpageHeaderTight.ts | 0 28 files changed, 41 insertions(+), 41 deletions(-) rename src/{ => lib}/hooks/useAsyncInpagePagination.test.ts (94%) rename src/{ => lib}/hooks/useAsyncInpagePagination.ts (100%) rename src/{ => lib}/hooks/useAsyncInpageScroll.ts (86%) rename src/{ => lib}/hooks/useClientSliceInfiniteScroll.test.ts (84%) rename src/{ => lib}/hooks/useClientSliceInfiniteScroll.ts (94%) rename src/{ => lib}/hooks/useGlobalDndAndSelectionBlockers.ts (100%) rename src/{ => lib}/hooks/useInpageScrollSentinel.test.ts (84%) rename src/{ => lib}/hooks/useInpageScrollSentinel.ts (100%) rename src/{ => lib}/hooks/useInpageScrollViewport.ts (100%) rename src/{ => lib}/hooks/useListReorderDnd.ts (97%) rename src/{ => lib}/hooks/useMainstageInpageHeaderTight.ts (100%) diff --git a/src/app/AppShell.tsx b/src/app/AppShell.tsx index 8f0b6feb..08fede40 100644 --- a/src/app/AppShell.tsx +++ b/src/app/AppShell.tsx @@ -45,7 +45,7 @@ import { usePrefetchReleaseNotes } from '../hooks/usePrefetchReleaseNotes'; import { useTrayMenuI18n } from '../hooks/useTrayMenuI18n'; import { useServerCapabilitiesProbe } from '../hooks/useServerCapabilitiesProbe'; import { useQueueResizer } from '@/features/queue'; -import { useGlobalDndAndSelectionBlockers } from '../hooks/useGlobalDndAndSelectionBlockers'; +import { useGlobalDndAndSelectionBlockers } from '@/lib/hooks/useGlobalDndAndSelectionBlockers'; import { useAppActivityTracking } from '../hooks/useAppActivityTracking'; import { useMainScrollingIndicator } from '../hooks/useMainScrollingIndicator'; import { useCoverNavigationPriority } from '../hooks/useCoverNavigationPriority'; diff --git a/src/features/album/hooks/useAlbumBrowseData.ts b/src/features/album/hooks/useAlbumBrowseData.ts index db5ece3b..b53139e5 100644 --- a/src/features/album/hooks/useAlbumBrowseData.ts +++ b/src/features/album/hooks/useAlbumBrowseData.ts @@ -37,9 +37,9 @@ import { mergeAlbumCatalogChunk, } from '@/features/album/utils/albumBrowseCatalogChunk'; import { useOfflineBrowseContext } from '@/features/offline'; -import { useClientSliceInfiniteScroll } from '@/hooks/useClientSliceInfiniteScroll'; +import { useClientSliceInfiniteScroll } from '@/lib/hooks/useClientSliceInfiniteScroll'; import { useDebouncedValue } from '@/lib/hooks/useDebouncedValue'; -import { useInpageScrollSentinel } from '@/hooks/useInpageScrollSentinel'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; const PAGE_SIZE = 30; const CLIENT_SLICE_PAGE_SIZE = 60; diff --git a/src/features/album/hooks/useGenreAlbumBrowse.ts b/src/features/album/hooks/useGenreAlbumBrowse.ts index 3c0b945e..882b7266 100644 --- a/src/features/album/hooks/useGenreAlbumBrowse.ts +++ b/src/features/album/hooks/useGenreAlbumBrowse.ts @@ -7,8 +7,8 @@ import { GENRE_ALBUM_CATALOG_CHUNK, GENRE_ALBUM_FIRST_PAGE, } from '@/lib/library/genreAlbumBrowse'; -import { useClientSliceInfiniteScroll } from '@/hooks/useClientSliceInfiniteScroll'; -import { useInpageScrollSentinel } from '@/hooks/useInpageScrollSentinel'; +import { useClientSliceInfiniteScroll } from '@/lib/hooks/useClientSliceInfiniteScroll'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; const CLIENT_SLICE_PAGE_SIZE = GENRE_ALBUM_FIRST_PAGE; diff --git a/src/features/album/pages/Albums.tsx b/src/features/album/pages/Albums.tsx index 664fe35d..f0612e87 100644 --- a/src/features/album/pages/Albums.tsx +++ b/src/features/album/pages/Albums.tsx @@ -27,8 +27,8 @@ import SelectionToggleButton from '@/ui/SelectionToggleButton'; import FilterQuickClear from '@/ui/FilterQuickClear'; import { usePerfProbeFlags } from '@/utils/perf/perfFlags'; import { useRangeSelection } from '@/lib/hooks/useRangeSelection'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import InpageScrollSentinel from '@/ui/InpageScrollSentinel'; import { VirtualCardGrid } from '@/ui/VirtualCardGrid'; import OverlayScrollArea from '@/ui/OverlayScrollArea'; diff --git a/src/features/album/pages/LosslessAlbums.tsx b/src/features/album/pages/LosslessAlbums.tsx index c91436bf..ea12139c 100644 --- a/src/features/album/pages/LosslessAlbums.tsx +++ b/src/features/album/pages/LosslessAlbums.tsx @@ -13,7 +13,7 @@ import { useDownloadModalStore } from '@/features/offline'; import { usePlayerStore } from '@/features/playback/store/playerStore'; import { useZipDownloadStore } from '@/features/offline'; import { useRangeSelection } from '@/lib/hooks/useRangeSelection'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; import { usePerfProbeFlags } from '@/utils/perf/perfFlags'; import { showToast } from '@/utils/ui/toast'; import { invoke } from '@tauri-apps/api/core'; @@ -24,8 +24,8 @@ import { albumGridWarmCovers } from '@/cover/layoutSizes'; import { VirtualCardGrid } from '@/ui/VirtualCardGrid'; import OverlayScrollArea from '@/ui/OverlayScrollArea'; import { LOSSLESS_ALBUMS_INPAGE_SCROLL_VIEWPORT_ID } from '@/constants/appScroll'; -import { useInpageScrollSentinel } from '@/hooks/useInpageScrollSentinel'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import InpageScrollSentinel from '@/ui/InpageScrollSentinel'; import { useLibraryIndexStore } from '@/store/libraryIndexStore'; import SortDropdown from '@/ui/SortDropdown'; diff --git a/src/features/album/pages/NewReleases.tsx b/src/features/album/pages/NewReleases.tsx index 3bce90c2..1e7746eb 100644 --- a/src/features/album/pages/NewReleases.tsx +++ b/src/features/album/pages/NewReleases.tsx @@ -20,14 +20,14 @@ import { showToast } from '@/utils/ui/toast'; import { useZipDownloadStore } from '@/features/offline'; import { useRangeSelection } from '@/lib/hooks/useRangeSelection'; import { usePerfProbeFlags } from '@/utils/perf/perfFlags'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; import { albumGridWarmCovers } from '@/cover/layoutSizes'; import { VirtualCardGrid } from '@/ui/VirtualCardGrid'; import OverlayScrollArea from '@/ui/OverlayScrollArea'; import { NEW_RELEASES_INPAGE_SCROLL_VIEWPORT_ID } from '@/constants/appScroll'; -import { useAsyncInpagePagination } from '@/hooks/useAsyncInpagePagination'; -import { useInpageScrollSentinel } from '@/hooks/useInpageScrollSentinel'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useAsyncInpagePagination } from '@/lib/hooks/useAsyncInpagePagination'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import InpageScrollSentinel from '@/ui/InpageScrollSentinel'; import { useAlbumGridBrowseFilters, type AlbumGridBrowseSnapshot } from '@/features/album/hooks/useAlbumGridBrowseFilters'; import { useAlbumBrowseScrollRestore } from '@/features/album/hooks/useAlbumBrowseScrollRestore'; diff --git a/src/features/album/pages/RandomAlbums.tsx b/src/features/album/pages/RandomAlbums.tsx index 1ff007c2..c1d50113 100644 --- a/src/features/album/pages/RandomAlbums.tsx +++ b/src/features/album/pages/RandomAlbums.tsx @@ -31,8 +31,8 @@ import { import { VirtualCardGrid } from '@/ui/VirtualCardGrid'; import OverlayScrollArea from '@/ui/OverlayScrollArea'; import { RANDOM_ALBUMS_INPAGE_SCROLL_VIEWPORT_ID } from '@/constants/appScroll'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import { useAlbumGridBrowseFilters, type AlbumGridBrowseSnapshot } from '@/features/album/hooks/useAlbumGridBrowseFilters'; import { useAlbumBrowseScrollRestore } from '@/features/album/hooks/useAlbumBrowseScrollRestore'; import { useAlbumBrowseScrollSnapshotSync, type AlbumBrowseScrollSnapshot } from '@/features/album/hooks/useAlbumBrowseFilters'; diff --git a/src/features/artist/hooks/useArtistsInfiniteScroll.ts b/src/features/artist/hooks/useArtistsInfiniteScroll.ts index 422711ed..a83b3b85 100644 --- a/src/features/artist/hooks/useArtistsInfiniteScroll.ts +++ b/src/features/artist/hooks/useArtistsInfiniteScroll.ts @@ -6,4 +6,4 @@ export { useClientSliceInfiniteScroll as useArtistsInfiniteScroll, type UseClientSliceInfiniteScrollArgs as UseArtistsInfiniteScrollArgs, type UseClientSliceInfiniteScrollResult as UseArtistsInfiniteScrollResult, -} from '@/hooks/useClientSliceInfiniteScroll'; +} from '@/lib/hooks/useClientSliceInfiniteScroll'; diff --git a/src/features/artist/pages/Artists.tsx b/src/features/artist/pages/Artists.tsx index 17613dfc..b6d44eea 100644 --- a/src/features/artist/pages/Artists.tsx +++ b/src/features/artist/pages/Artists.tsx @@ -24,10 +24,10 @@ import { useArtistsFiltering } from '@/features/artist/hooks/useArtistsFiltering import { useLibraryIgnoredArticles } from '@/hooks/useLibraryIgnoredArticles'; import { useArtistsBrowseCatalog } from '@/features/artist/hooks/useArtistsBrowseCatalog'; import { useBrowseArtistTextSearch } from '@/features/artist/hooks/useBrowseArtistTextSearch'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; -import { useClientSliceInfiniteScroll } from '@/hooks/useClientSliceInfiniteScroll'; -import { useInpageScrollSentinel } from '@/hooks/useInpageScrollSentinel'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; +import { useClientSliceInfiniteScroll } from '@/lib/hooks/useClientSliceInfiniteScroll'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import { ArtistsGridView } from '@/features/artist/components/ArtistsGridView'; import { ArtistsListView } from '@/features/artist/components/ArtistsListView'; import InpageScrollSentinel from '@/ui/InpageScrollSentinel'; diff --git a/src/features/composers/pages/Composers.tsx b/src/features/composers/pages/Composers.tsx index 0e98ca1a..99ea5836 100644 --- a/src/features/composers/pages/Composers.tsx +++ b/src/features/composers/pages/Composers.tsx @@ -10,7 +10,7 @@ import { useTranslation } from 'react-i18next'; import { useVirtualizer } from '@tanstack/react-virtual'; import { APP_MAIN_SCROLL_VIEWPORT_ID, COMPOSERS_INPAGE_SCROLL_VIEWPORT_ID } from '@/constants/appScroll'; import { useElementClientHeightById, useElementClientHeightForElement } from '@/lib/hooks/useResizeClientHeight'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; import { useBrowseArtistTextSearch } from '@/features/artist'; import { useComposersBrowseFilters, type ComposerBrowseScrollSnapshot } from '@/features/composers/hooks/useComposersBrowseFilters'; import { useComposersBrowseScrollRestore } from '@/features/composers/hooks/useComposersBrowseScrollRestore'; @@ -26,8 +26,8 @@ import { usePerfProbeFlags } from '@/utils/perf/perfFlags'; import { VirtualCardGrid } from '@/ui/VirtualCardGrid'; import OverlayScrollArea from '@/ui/OverlayScrollArea'; import { useVirtualizerScrollMargin } from '@/lib/hooks/useVirtualizerScrollMargin'; -import { useClientSliceInfiniteScroll } from '@/hooks/useClientSliceInfiniteScroll'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useClientSliceInfiniteScroll } from '@/lib/hooks/useClientSliceInfiniteScroll'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import InpageScrollSentinel from '@/ui/InpageScrollSentinel'; const ALPHABET = [ALL_SENTINEL, '#', ...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')]; diff --git a/src/features/genre/pages/GenreDetail.tsx b/src/features/genre/pages/GenreDetail.tsx index 335d79c5..9676b3a8 100644 --- a/src/features/genre/pages/GenreDetail.tsx +++ b/src/features/genre/pages/GenreDetail.tsx @@ -13,9 +13,9 @@ import { useAlbumBrowseScrollSnapshotSync, type AlbumBrowseScrollSnapshot } from import { useGenreAlbumBrowse } from '@/features/album'; import { useAlbumBrowseScrollRestore } from '@/features/album'; import { useGenreDetailBrowse } from '@/features/genre/hooks/useGenreDetailBrowse'; -import { useInpageScrollViewport } from '@/hooks/useInpageScrollViewport'; +import { useInpageScrollViewport } from '@/lib/hooks/useInpageScrollViewport'; import { useLongPressAction } from '@/lib/hooks/useLongPressAction'; -import { useMainstageInpageHeaderTight } from '@/hooks/useMainstageInpageHeaderTight'; +import { useMainstageInpageHeaderTight } from '@/lib/hooks/useMainstageInpageHeaderTight'; import { useAuthStore } from '@/store/authStore'; import { useLibraryIndexStore } from '@/store/libraryIndexStore'; import { usePlayerStore } from '@/features/playback/store/playerStore'; diff --git a/src/features/search/components/PagedSongList.tsx b/src/features/search/components/PagedSongList.tsx index 0334fae3..67e6365a 100644 --- a/src/features/search/components/PagedSongList.tsx +++ b/src/features/search/components/PagedSongList.tsx @@ -1,7 +1,7 @@ import type { SubsonicSong } from '@/lib/api/subsonicTypes'; import React, { useRef } from 'react'; import SongRow, { SongListHeader } from '@/features/search/components/SongRow'; -import { useInpageScrollSentinel } from '@/hooks/useInpageScrollSentinel'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; import InpageScrollSentinel from '@/ui/InpageScrollSentinel'; interface Props { diff --git a/src/features/settings/components/ArtistLayoutCustomizer.tsx b/src/features/settings/components/ArtistLayoutCustomizer.tsx index 5c3b33fc..1a40ab12 100644 --- a/src/features/settings/components/ArtistLayoutCustomizer.tsx +++ b/src/features/settings/components/ArtistLayoutCustomizer.tsx @@ -1,7 +1,7 @@ import { useCallback, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { useArtistLayoutStore, type ArtistSectionConfig, type ArtistSectionId } from '@/features/artist'; -import { useListReorderDnd } from '@/hooks/useListReorderDnd'; +import { useListReorderDnd } from '@/lib/hooks/useListReorderDnd'; import { applyListReorderById, type ListReorderDropTarget } from '@/utils/componentHelpers/listReorder'; import { ReorderGripHandle } from '@/features/settings/components/ReorderGripHandle'; diff --git a/src/features/settings/components/LyricsSourcesCustomizer.tsx b/src/features/settings/components/LyricsSourcesCustomizer.tsx index 33b357bc..dcdfe10a 100644 --- a/src/features/settings/components/LyricsSourcesCustomizer.tsx +++ b/src/features/settings/components/LyricsSourcesCustomizer.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'; import { useShallow } from 'zustand/react/shallow'; import { useAuthStore } from '@/store/authStore'; import type { LyricsSourceId } from '@/store/authStoreTypes'; -import { useListReorderDnd } from '@/hooks/useListReorderDnd'; +import { useListReorderDnd } from '@/lib/hooks/useListReorderDnd'; import { applyListReorderById, type ListReorderDropTarget } from '@/utils/componentHelpers/listReorder'; import { ReorderGripHandle } from '@/features/settings/components/ReorderGripHandle'; import { SettingsToggle } from '@/features/settings/components/SettingsToggle'; diff --git a/src/features/settings/components/QueueToolbarCustomizer.tsx b/src/features/settings/components/QueueToolbarCustomizer.tsx index a858f2bf..e1a104f2 100644 --- a/src/features/settings/components/QueueToolbarCustomizer.tsx +++ b/src/features/settings/components/QueueToolbarCustomizer.tsx @@ -2,7 +2,7 @@ import { useCallback, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { Blend, Infinity as InfinityIcon, ListMusic, MoveRight, Share2, Shuffle, Trash2, Waves } from 'lucide-react'; import { useQueueToolbarStore, QueueToolbarButtonId } from '@/store/queueToolbarStore'; -import { useListReorderDnd } from '@/hooks/useListReorderDnd'; +import { useListReorderDnd } from '@/lib/hooks/useListReorderDnd'; import { applyListReorderById, type ListReorderDropTarget } from '@/utils/componentHelpers/listReorder'; import { ReorderGripHandle } from '@/features/settings/components/ReorderGripHandle'; diff --git a/src/features/settings/components/ServersTab.tsx b/src/features/settings/components/ServersTab.tsx index 7490f2d8..e669fc0b 100644 --- a/src/features/settings/components/ServersTab.tsx +++ b/src/features/settings/components/ServersTab.tsx @@ -37,7 +37,7 @@ import { serverIndexKeyForProfile } from '@/utils/server/serverIndexKey'; import { switchActiveServer } from '@/utils/server/switchActiveServer'; import { AddServerForm } from '@/features/settings/components/AddServerForm'; import { ServerCapabilityHeaderBadge } from '@/features/settings/components/ServerCapabilityHeaderBadge'; -import { useListReorderDnd } from '@/hooks/useListReorderDnd'; +import { useListReorderDnd } from '@/lib/hooks/useListReorderDnd'; import { applyListReorderById, type ListReorderDropTarget } from '@/utils/componentHelpers/listReorder'; import { ReorderGripHandle } from '@/features/settings/components/ReorderGripHandle'; import { tooltipAttrs } from '@/ui/tooltipAttrs'; diff --git a/src/features/settings/components/SidebarCustomizer.tsx b/src/features/settings/components/SidebarCustomizer.tsx index f49cca1e..97e10f96 100644 --- a/src/features/settings/components/SidebarCustomizer.tsx +++ b/src/features/settings/components/SidebarCustomizer.tsx @@ -5,7 +5,7 @@ import { useSidebarStore, SidebarItemConfig, CONSERVED_SIDEBAR_NAV_IDS } from '@ import { useLuckyMixAvailable } from '@/features/randomMix'; import { ALL_NAV_ITEMS } from '@/config/navItems'; import { applySidebarReorderById } from '@/features/sidebar'; -import { useListReorderDnd } from '@/hooks/useListReorderDnd'; +import { useListReorderDnd } from '@/lib/hooks/useListReorderDnd'; import type { ListReorderDropTarget } from '@/utils/componentHelpers/listReorder'; import { ReorderGripHandle } from '@/features/settings/components/ReorderGripHandle'; import { SettingsGroup } from '@/features/settings/components/SettingsGroup'; diff --git a/src/hooks/useAsyncInpagePagination.test.ts b/src/lib/hooks/useAsyncInpagePagination.test.ts similarity index 94% rename from src/hooks/useAsyncInpagePagination.test.ts rename to src/lib/hooks/useAsyncInpagePagination.test.ts index 432745af..affcda09 100644 --- a/src/hooks/useAsyncInpagePagination.test.ts +++ b/src/lib/hooks/useAsyncInpagePagination.test.ts @@ -1,6 +1,6 @@ import { act, renderHook } from '@testing-library/react'; import { describe, expect, it, vi } from 'vitest'; -import { useAsyncInpagePagination } from './useAsyncInpagePagination'; +import { useAsyncInpagePagination } from '@/lib/hooks/useAsyncInpagePagination'; describe('useAsyncInpagePagination', () => { it('blocks concurrent page requests', async () => { diff --git a/src/hooks/useAsyncInpagePagination.ts b/src/lib/hooks/useAsyncInpagePagination.ts similarity index 100% rename from src/hooks/useAsyncInpagePagination.ts rename to src/lib/hooks/useAsyncInpagePagination.ts diff --git a/src/hooks/useAsyncInpageScroll.ts b/src/lib/hooks/useAsyncInpageScroll.ts similarity index 86% rename from src/hooks/useAsyncInpageScroll.ts rename to src/lib/hooks/useAsyncInpageScroll.ts index 0243a515..38fa65a0 100644 --- a/src/hooks/useAsyncInpageScroll.ts +++ b/src/lib/hooks/useAsyncInpageScroll.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; -import { useAsyncInpagePagination } from './useAsyncInpagePagination'; -import { useInpageScrollSentinel } from './useInpageScrollSentinel'; +import { useAsyncInpagePagination } from '@/lib/hooks/useAsyncInpagePagination'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; export type UseAsyncInpageScrollArgs = { pageSize: number; diff --git a/src/hooks/useClientSliceInfiniteScroll.test.ts b/src/lib/hooks/useClientSliceInfiniteScroll.test.ts similarity index 84% rename from src/hooks/useClientSliceInfiniteScroll.test.ts rename to src/lib/hooks/useClientSliceInfiniteScroll.test.ts index 4af1a477..ede63517 100644 --- a/src/hooks/useClientSliceInfiniteScroll.test.ts +++ b/src/lib/hooks/useClientSliceInfiniteScroll.test.ts @@ -1,8 +1,8 @@ import { act, renderHook } from '@testing-library/react'; import { describe, expect, it, vi } from 'vitest'; -import { useClientSliceInfiniteScroll } from './useClientSliceInfiniteScroll'; +import { useClientSliceInfiniteScroll } from '@/lib/hooks/useClientSliceInfiniteScroll'; -vi.mock('./useInpageScrollSentinel', () => ({ +vi.mock('@/lib/hooks/useInpageScrollSentinel', () => ({ useInpageScrollSentinel: () => vi.fn(), })); diff --git a/src/hooks/useClientSliceInfiniteScroll.ts b/src/lib/hooks/useClientSliceInfiniteScroll.ts similarity index 94% rename from src/hooks/useClientSliceInfiniteScroll.ts rename to src/lib/hooks/useClientSliceInfiniteScroll.ts index 6f5df3c0..406a4990 100644 --- a/src/hooks/useClientSliceInfiniteScroll.ts +++ b/src/lib/hooks/useClientSliceInfiniteScroll.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useRef, useState } from 'react'; -import { APP_MAIN_SCROLL_VIEWPORT_ID } from '../constants/appScroll'; -import { useInpageScrollSentinel } from './useInpageScrollSentinel'; +import { APP_MAIN_SCROLL_VIEWPORT_ID } from '@/constants/appScroll'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; export type UseClientSliceInfiniteScrollArgs = { pageSize: number; diff --git a/src/hooks/useGlobalDndAndSelectionBlockers.ts b/src/lib/hooks/useGlobalDndAndSelectionBlockers.ts similarity index 100% rename from src/hooks/useGlobalDndAndSelectionBlockers.ts rename to src/lib/hooks/useGlobalDndAndSelectionBlockers.ts diff --git a/src/hooks/useInpageScrollSentinel.test.ts b/src/lib/hooks/useInpageScrollSentinel.test.ts similarity index 84% rename from src/hooks/useInpageScrollSentinel.test.ts rename to src/lib/hooks/useInpageScrollSentinel.test.ts index d39ec6bd..01945733 100644 --- a/src/hooks/useInpageScrollSentinel.test.ts +++ b/src/lib/hooks/useInpageScrollSentinel.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it, vi } from 'vitest'; import { renderHook } from '@testing-library/react'; -import { useInpageScrollSentinel } from './useInpageScrollSentinel'; +import { useInpageScrollSentinel } from '@/lib/hooks/useInpageScrollSentinel'; describe('useInpageScrollSentinel', () => { it('returns a callback ref function', () => { diff --git a/src/hooks/useInpageScrollSentinel.ts b/src/lib/hooks/useInpageScrollSentinel.ts similarity index 100% rename from src/hooks/useInpageScrollSentinel.ts rename to src/lib/hooks/useInpageScrollSentinel.ts diff --git a/src/hooks/useInpageScrollViewport.ts b/src/lib/hooks/useInpageScrollViewport.ts similarity index 100% rename from src/hooks/useInpageScrollViewport.ts rename to src/lib/hooks/useInpageScrollViewport.ts diff --git a/src/hooks/useListReorderDnd.ts b/src/lib/hooks/useListReorderDnd.ts similarity index 97% rename from src/hooks/useListReorderDnd.ts rename to src/lib/hooks/useListReorderDnd.ts index 8be42c24..90f77403 100644 --- a/src/hooks/useListReorderDnd.ts +++ b/src/lib/hooks/useListReorderDnd.ts @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; import { useDragDrop } from '@/lib/dnd/DragDropContext'; -import type { ListReorderDropTarget } from '../utils/componentHelpers/listReorder'; +import type { ListReorderDropTarget } from '@/utils/componentHelpers/listReorder'; interface Options { /** Payload discriminator the drag source emits, e.g. `'lyrics_source_reorder'`. */ diff --git a/src/hooks/useMainstageInpageHeaderTight.ts b/src/lib/hooks/useMainstageInpageHeaderTight.ts similarity index 100% rename from src/hooks/useMainstageInpageHeaderTight.ts rename to src/lib/hooks/useMainstageInpageHeaderTight.ts