fix: Fix S3Configuration import error and integrate as Music Storage tab
- Fix FiTestTube import error by replacing with FiZap (which exists in react-icons) - Integrate S3 Configuration as a tab in Music Storage page - Remove standalone S3 Configuration route and header button - Clean up unused imports and routes - Improve organization by grouping S3 functionality with Music Storage The S3 Configuration is now accessible as a tab within the Music Storage page, and the import error has been resolved.
This commit is contained in:
parent
01c017a5e6
commit
7cc890557d
@ -7,7 +7,6 @@ import { PlaylistManager } from "./components/PlaylistManager";
|
|||||||
import { SongDetails } from "./components/SongDetails";
|
import { SongDetails } from "./components/SongDetails";
|
||||||
import { Configuration } from "./pages/Configuration";
|
import { Configuration } from "./pages/Configuration";
|
||||||
import { MusicStorage } from "./pages/MusicStorage";
|
import { MusicStorage } from "./pages/MusicStorage";
|
||||||
import { S3Configuration } from "./pages/S3Configuration";
|
|
||||||
import { PersistentMusicPlayer } from "./components/PersistentMusicPlayer";
|
import { PersistentMusicPlayer } from "./components/PersistentMusicPlayer";
|
||||||
import { MusicPlayerProvider, useMusicPlayer } from "./contexts/MusicPlayerContext";
|
import { MusicPlayerProvider, useMusicPlayer } from "./contexts/MusicPlayerContext";
|
||||||
import { useXmlParser } from "./hooks/useXmlParser";
|
import { useXmlParser } from "./hooks/useXmlParser";
|
||||||
@ -517,18 +516,6 @@ const RekordboxReader: React.FC = () => {
|
|||||||
🎵 Music Storage
|
🎵 Music Storage
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
{/* S3 Configuration Button */}
|
|
||||||
<Button
|
|
||||||
size="sm"
|
|
||||||
variant="ghost"
|
|
||||||
color="gray.300"
|
|
||||||
_hover={{ color: "white", bg: "whiteAlpha.200" }}
|
|
||||||
onClick={() => navigate('/s3-config')}
|
|
||||||
mr={2}
|
|
||||||
>
|
|
||||||
⚙️ S3 Config
|
|
||||||
</Button>
|
|
||||||
|
|
||||||
{/* Export Library Button */}
|
{/* Export Library Button */}
|
||||||
<IconButton
|
<IconButton
|
||||||
icon={<DownloadIcon />}
|
icon={<DownloadIcon />}
|
||||||
@ -557,7 +544,6 @@ const RekordboxReader: React.FC = () => {
|
|||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/config" element={<Configuration />} />
|
<Route path="/config" element={<Configuration />} />
|
||||||
<Route path="/music-storage" element={<MusicStorage />} />
|
<Route path="/music-storage" element={<MusicStorage />} />
|
||||||
<Route path="/s3-config" element={<S3Configuration />} />
|
|
||||||
<Route
|
<Route
|
||||||
path="*"
|
path="*"
|
||||||
element={
|
element={
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import {
|
|||||||
import { FiPlay, FiTrash2, FiMusic, FiRefreshCw } from 'react-icons/fi';
|
import { FiPlay, FiTrash2, FiMusic, FiRefreshCw } from 'react-icons/fi';
|
||||||
import { MusicUpload } from '../components/MusicUpload';
|
import { MusicUpload } from '../components/MusicUpload';
|
||||||
import { SongMatching } from '../components/SongMatching';
|
import { SongMatching } from '../components/SongMatching';
|
||||||
|
import { S3Configuration } from './S3Configuration';
|
||||||
import { useMusicPlayer } from '../contexts/MusicPlayerContext';
|
import { useMusicPlayer } from '../contexts/MusicPlayerContext';
|
||||||
import type { Song } from '../types/interfaces';
|
import type { Song } from '../types/interfaces';
|
||||||
|
|
||||||
@ -240,6 +241,9 @@ export const MusicStorage: React.FC = () => {
|
|||||||
<Tab color="gray.300" _selected={{ bg: "gray.700", color: "white", borderColor: "gray.600" }}>
|
<Tab color="gray.300" _selected={{ bg: "gray.700", color: "white", borderColor: "gray.600" }}>
|
||||||
Song Matching
|
Song Matching
|
||||||
</Tab>
|
</Tab>
|
||||||
|
<Tab color="gray.300" _selected={{ bg: "gray.700", color: "white", borderColor: "gray.600" }}>
|
||||||
|
S3 Configuration
|
||||||
|
</Tab>
|
||||||
</TabList>
|
</TabList>
|
||||||
|
|
||||||
<TabPanels flex={1} overflow="hidden">
|
<TabPanels flex={1} overflow="hidden">
|
||||||
@ -378,6 +382,11 @@ export const MusicStorage: React.FC = () => {
|
|||||||
<TabPanel bg="gray.900" height="100%" overflowY="auto">
|
<TabPanel bg="gray.900" height="100%" overflowY="auto">
|
||||||
<SongMatching />
|
<SongMatching />
|
||||||
</TabPanel>
|
</TabPanel>
|
||||||
|
|
||||||
|
{/* S3 Configuration Tab */}
|
||||||
|
<TabPanel bg="gray.900" height="100%" overflowY="auto">
|
||||||
|
<S3Configuration />
|
||||||
|
</TabPanel>
|
||||||
</TabPanels>
|
</TabPanels>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</VStack>
|
</VStack>
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import {
|
|||||||
Switch,
|
Switch,
|
||||||
FormHelperText,
|
FormHelperText,
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import { FiCheck, FiX, FiSettings, FiTestTube, FiSave } from 'react-icons/fi';
|
import { FiCheck, FiX, FiSettings, FiZap, FiSave } from 'react-icons/fi';
|
||||||
|
|
||||||
interface S3Config {
|
interface S3Config {
|
||||||
endpoint: string;
|
endpoint: string;
|
||||||
@ -330,7 +330,7 @@ export const S3Configuration: React.FC = () => {
|
|||||||
<Card bg="gray.800" borderColor="gray.700">
|
<Card bg="gray.800" borderColor="gray.700">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<HStack spacing={3}>
|
<HStack spacing={3}>
|
||||||
<Icon as={FiTestTube} w={5} h={5} color="blue.400" />
|
<Icon as={FiZap} w={5} h={5} color="blue.400" />
|
||||||
<Heading size="md" color="white">Test Connection</Heading>
|
<Heading size="md" color="white">Test Connection</Heading>
|
||||||
</HStack>
|
</HStack>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
@ -341,7 +341,7 @@ export const S3Configuration: React.FC = () => {
|
|||||||
</Text>
|
</Text>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
leftIcon={isTesting ? <Spinner size="sm" /> : <FiTestTube />}
|
leftIcon={isTesting ? <Spinner size="sm" /> : <FiZap />}
|
||||||
onClick={testConnection}
|
onClick={testConnection}
|
||||||
isLoading={isTesting}
|
isLoading={isTesting}
|
||||||
loadingText="Testing..."
|
loadingText="Testing..."
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user