loop / src / App.jsx
167 words
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { useEffect } from 'react';
import { Routes, Route, useLocation } from 'react-router-dom';
import { TimerProvider, useTimerContext } from './contexts/TimerContext';
import Header from './components/Header';
import MiniPlayer from './components/MiniPlayer';
import SoundPicker from './components/SoundPicker';
import Home from './pages/Home';
import Player from './pages/Player';
import Support from './pages/Support';
import Privacy from './pages/Privacy';
import Terms from './pages/Terms';

function AppContent() {
  const {
    showSoundPicker,
    onToggleSoundPicker,
    selectedSound,
    onSelectSound,
    customTrack,
    onImportTrack,
    onToggleLoop,
  } = useTimerContext();

  const location = useLocation();
  const isPlayerPage = location.pathname === '/player';

  useEffect(() => {
    document.body.style.overflow = showSoundPicker ? 'hidden' : '';
    return () => { document.body.style.overflow = ''; };
  }, [showSoundPicker]);

  return (
    <>
      {!isPlayerPage && <Header />}
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/clip" element={<Home />} />
        <Route path="/player" element={<Player />} />
        <Route path="/support" element={<Support />} />
        <Route path="/privacy" element={<Privacy />} />
        <Route path="/terms" element={<Terms />} />
      </Routes>
      {!isPlayerPage && <MiniPlayer />}
      <SoundPicker
        isOpen={showSoundPicker}
        onClose={onToggleSoundPicker}
        selectedSound={selectedSound}
        onSelectSound={onSelectSound}
        customTrack={customTrack}
        onImportTrack={onImportTrack}
        onToggleLoop={onToggleLoop}
      />
    </>
  );
}

function App() {
  return (
    <TimerProvider>
      <AppContent />
    </TimerProvider>
  );
}

export default App;

static mirror of HEAD · about · clone: git clone https://git.makefuture.ro/loop.git