mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 15:25:46 +00:00
refactor(folderBrowser): co-locate folder-browser feature into features/folderBrowser
This commit is contained in:
@@ -35,7 +35,7 @@ const DeviceSync = lazy(() => import('@/features/deviceSync/pages/DeviceSync'));
|
|||||||
const OfflineLibrary = lazy(() => import('@/features/offline/pages/OfflineLibrary'));
|
const OfflineLibrary = lazy(() => import('@/features/offline/pages/OfflineLibrary'));
|
||||||
const LabelAlbums = lazy(() => import('@/features/album/pages/LabelAlbums'));
|
const LabelAlbums = lazy(() => import('@/features/album/pages/LabelAlbums'));
|
||||||
const SearchBrowsePage = lazy(() => import('@/features/search/pages/SearchBrowsePage'));
|
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 InternetRadio = lazy(() => import('@/features/radio/pages/InternetRadio'));
|
||||||
const Genres = lazy(() => import('../pages/Genres'));
|
const Genres = lazy(() => import('../pages/Genres'));
|
||||||
const GenreDetail = lazy(() => import('../pages/GenreDetail'));
|
const GenreDetail = lazy(() => import('../pages/GenreDetail'));
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ import type { Track } from '@/lib/media/trackTypes';
|
|||||||
import {
|
import {
|
||||||
folderBrowserHasKeyModifiers, isFolderBrowserArrowKey,
|
folderBrowserHasKeyModifiers, isFolderBrowserArrowKey,
|
||||||
type Column,
|
type Column,
|
||||||
} from '../../utils/componentHelpers/folderBrowserHelpers';
|
} from '@/features/folderBrowser/utils/folderBrowserHelpers';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
col: Column;
|
col: Column;
|
||||||
+1
-1
@@ -4,7 +4,7 @@ import { usePlayerStore } from '@/features/playback/store/playerStore';
|
|||||||
import {
|
import {
|
||||||
entryToTrack, folderBrowserHasKeyModifiers, isFolderBrowserArrowKey,
|
entryToTrack, folderBrowserHasKeyModifiers, isFolderBrowserArrowKey,
|
||||||
type Column, type NavPos,
|
type Column, type NavPos,
|
||||||
} from '../utils/componentHelpers/folderBrowserHelpers';
|
} from '@/features/folderBrowser/utils/folderBrowserHelpers';
|
||||||
|
|
||||||
interface Args {
|
interface Args {
|
||||||
columns: Column[];
|
columns: Column[];
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import { useLocation } from 'react-router-dom';
|
|||||||
import { getMusicDirectory, getMusicIndexes } from '@/lib/api/subsonicLibrary';
|
import { getMusicDirectory, getMusicIndexes } from '@/lib/api/subsonicLibrary';
|
||||||
import type { SubsonicDirectoryEntry } from '@/lib/api/subsonicTypes';
|
import type { SubsonicDirectoryEntry } from '@/lib/api/subsonicTypes';
|
||||||
import type { Track } from '@/lib/media/trackTypes';
|
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[] = [];
|
let persistedPlayingPathIds: string[] = [];
|
||||||
|
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import { useEffect, useRef, useState } from 'react';
|
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 {
|
interface Args {
|
||||||
columns: Column[];
|
columns: Column[];
|
||||||
@@ -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 {};
|
||||||
@@ -6,11 +6,11 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import {
|
import {
|
||||||
entryToAlbumIfPresent, entryToTrack,
|
entryToAlbumIfPresent, entryToTrack,
|
||||||
type Column, type ColumnKind, type NavPos,
|
type Column, type ColumnKind, type NavPos,
|
||||||
} from '../utils/componentHelpers/folderBrowserHelpers';
|
} from '@/features/folderBrowser/utils/folderBrowserHelpers';
|
||||||
import FolderBrowserColumn from '../components/folderBrowser/FolderBrowserColumn';
|
import FolderBrowserColumn from '@/features/folderBrowser/components/FolderBrowserColumn';
|
||||||
import { useFolderBrowserNowPlayingPath } from '../hooks/useFolderBrowserNowPlayingPath';
|
import { useFolderBrowserNowPlayingPath } from '@/features/folderBrowser/hooks/useFolderBrowserNowPlayingPath';
|
||||||
import { useFolderBrowserScrolling } from '../hooks/useFolderBrowserScrolling';
|
import { useFolderBrowserScrolling } from '@/features/folderBrowser/hooks/useFolderBrowserScrolling';
|
||||||
import { useFolderBrowserKeyboardNav } from '../hooks/useFolderBrowserKeyboardNav';
|
import { useFolderBrowserKeyboardNav } from '@/features/folderBrowser/hooks/useFolderBrowserKeyboardNav';
|
||||||
|
|
||||||
export default function FolderBrowser() {
|
export default function FolderBrowser() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
Reference in New Issue
Block a user