diff --git a/src/app/AppRoutes.tsx b/src/app/AppRoutes.tsx index 48398f16..10c7d2a4 100644 --- a/src/app/AppRoutes.tsx +++ b/src/app/AppRoutes.tsx @@ -35,7 +35,7 @@ const DeviceSync = lazy(() => import('@/features/deviceSync/pages/DeviceSync')); const OfflineLibrary = lazy(() => import('@/features/offline/pages/OfflineLibrary')); const LabelAlbums = lazy(() => import('@/features/album/pages/LabelAlbums')); const SearchBrowsePage = lazy(() => import('@/features/search/pages/SearchBrowsePage')); -const FolderBrowser = lazy(() => import('../pages/FolderBrowser')); +const FolderBrowser = lazy(() => import('@/features/folderBrowser/pages/FolderBrowser')); const InternetRadio = lazy(() => import('@/features/radio/pages/InternetRadio')); const Genres = lazy(() => import('../pages/Genres')); const GenreDetail = lazy(() => import('../pages/GenreDetail')); diff --git a/src/components/folderBrowser/FolderBrowserColumn.tsx b/src/features/folderBrowser/components/FolderBrowserColumn.tsx similarity index 98% rename from src/components/folderBrowser/FolderBrowserColumn.tsx rename to src/features/folderBrowser/components/FolderBrowserColumn.tsx index df90aba1..c9d4f283 100644 --- a/src/components/folderBrowser/FolderBrowserColumn.tsx +++ b/src/features/folderBrowser/components/FolderBrowserColumn.tsx @@ -6,7 +6,7 @@ import type { Track } from '@/lib/media/trackTypes'; import { folderBrowserHasKeyModifiers, isFolderBrowserArrowKey, type Column, -} from '../../utils/componentHelpers/folderBrowserHelpers'; +} from '@/features/folderBrowser/utils/folderBrowserHelpers'; interface Props { col: Column; diff --git a/src/hooks/useFolderBrowserKeyboardNav.ts b/src/features/folderBrowser/hooks/useFolderBrowserKeyboardNav.ts similarity index 99% rename from src/hooks/useFolderBrowserKeyboardNav.ts rename to src/features/folderBrowser/hooks/useFolderBrowserKeyboardNav.ts index ca2f8d73..f1c484dd 100644 --- a/src/hooks/useFolderBrowserKeyboardNav.ts +++ b/src/features/folderBrowser/hooks/useFolderBrowserKeyboardNav.ts @@ -4,7 +4,7 @@ import { usePlayerStore } from '@/features/playback/store/playerStore'; import { entryToTrack, folderBrowserHasKeyModifiers, isFolderBrowserArrowKey, type Column, type NavPos, -} from '../utils/componentHelpers/folderBrowserHelpers'; +} from '@/features/folderBrowser/utils/folderBrowserHelpers'; interface Args { columns: Column[]; diff --git a/src/hooks/useFolderBrowserNowPlayingPath.ts b/src/features/folderBrowser/hooks/useFolderBrowserNowPlayingPath.ts similarity index 98% rename from src/hooks/useFolderBrowserNowPlayingPath.ts rename to src/features/folderBrowser/hooks/useFolderBrowserNowPlayingPath.ts index ac78673c..cffbfbe2 100644 --- a/src/hooks/useFolderBrowserNowPlayingPath.ts +++ b/src/features/folderBrowser/hooks/useFolderBrowserNowPlayingPath.ts @@ -3,7 +3,7 @@ import { useLocation } from 'react-router-dom'; import { getMusicDirectory, getMusicIndexes } from '@/lib/api/subsonicLibrary'; import type { SubsonicDirectoryEntry } from '@/lib/api/subsonicTypes'; import type { Track } from '@/lib/media/trackTypes'; -import type { Column, NavPos } from '../utils/componentHelpers/folderBrowserHelpers'; +import type { Column, NavPos } from '@/features/folderBrowser/utils/folderBrowserHelpers'; let persistedPlayingPathIds: string[] = []; diff --git a/src/hooks/useFolderBrowserScrolling.ts b/src/features/folderBrowser/hooks/useFolderBrowserScrolling.ts similarity index 97% rename from src/hooks/useFolderBrowserScrolling.ts rename to src/features/folderBrowser/hooks/useFolderBrowserScrolling.ts index cd01de9a..a6eeb017 100644 --- a/src/hooks/useFolderBrowserScrolling.ts +++ b/src/features/folderBrowser/hooks/useFolderBrowserScrolling.ts @@ -1,5 +1,5 @@ import { useEffect, useRef, useState } from 'react'; -import type { Column, NavPos } from '../utils/componentHelpers/folderBrowserHelpers'; +import type { Column, NavPos } from '@/features/folderBrowser/utils/folderBrowserHelpers'; interface Args { columns: Column[]; diff --git a/src/features/folderBrowser/index.ts b/src/features/folderBrowser/index.ts new file mode 100644 index 00000000..305f45ad --- /dev/null +++ b/src/features/folderBrowser/index.ts @@ -0,0 +1,9 @@ +/** + * Folder Browser feature — the Miller-column directory browser over the + * server's raw music folders (`getMusicFolders`/`getMusicDirectory`/ + * `getMusicIndexes`): the FolderBrowser page, its column component, the + * now-playing-path / scrolling / keyboard-nav hooks, and the pure path/entry + * helpers. The page is lazy-loaded by the router via its deep path, so it is + * not re-exported here; nothing else outside the feature consumes its modules. + */ +export {}; diff --git a/src/pages/FolderBrowser.tsx b/src/features/folderBrowser/pages/FolderBrowser.tsx similarity index 97% rename from src/pages/FolderBrowser.tsx rename to src/features/folderBrowser/pages/FolderBrowser.tsx index 6398cc9d..d7f2e8f7 100644 --- a/src/pages/FolderBrowser.tsx +++ b/src/features/folderBrowser/pages/FolderBrowser.tsx @@ -6,11 +6,11 @@ import { useTranslation } from 'react-i18next'; import { entryToAlbumIfPresent, entryToTrack, type Column, type ColumnKind, type NavPos, -} from '../utils/componentHelpers/folderBrowserHelpers'; -import FolderBrowserColumn from '../components/folderBrowser/FolderBrowserColumn'; -import { useFolderBrowserNowPlayingPath } from '../hooks/useFolderBrowserNowPlayingPath'; -import { useFolderBrowserScrolling } from '../hooks/useFolderBrowserScrolling'; -import { useFolderBrowserKeyboardNav } from '../hooks/useFolderBrowserKeyboardNav'; +} from '@/features/folderBrowser/utils/folderBrowserHelpers'; +import FolderBrowserColumn from '@/features/folderBrowser/components/FolderBrowserColumn'; +import { useFolderBrowserNowPlayingPath } from '@/features/folderBrowser/hooks/useFolderBrowserNowPlayingPath'; +import { useFolderBrowserScrolling } from '@/features/folderBrowser/hooks/useFolderBrowserScrolling'; +import { useFolderBrowserKeyboardNav } from '@/features/folderBrowser/hooks/useFolderBrowserKeyboardNav'; export default function FolderBrowser() { const { t } = useTranslation(); diff --git a/src/utils/componentHelpers/folderBrowserHelpers.ts b/src/features/folderBrowser/utils/folderBrowserHelpers.ts similarity index 100% rename from src/utils/componentHelpers/folderBrowserHelpers.ts rename to src/features/folderBrowser/utils/folderBrowserHelpers.ts