@@ -6,12 +6,30 @@ import { useSmartPlaybackRate } from './hooks/useSmartPlaybackRate';
66import { useMetronome , type MetronomePhase } from './hooks/useMetronome' ;
77import { Overlay } from './components/Overlay' ;
88
9+ // Helper function to parse URL parameters
10+ const getUrlParams = ( ) => {
11+ const params = new URLSearchParams ( window . location . search ) ;
12+ return {
13+ videoId : params . get ( 'v' ) ,
14+ spm : params . get ( 'spm' )
15+ } ;
16+ } ;
17+
918function App ( ) {
1019 const { status, metrics, connect, disconnect } = useRowingMetrics ( ) ;
1120 const { status : hrStatus , heartRateData, connect : hrConnect , disconnect : hrDisconnect } = useHeartRate ( ) ;
12- // Default video
13- const [ videoUrl , setVideoUrl ] = useState ( 'https://www.youtube.com/watch?v=FljjSVANT9I' ) ;
14- const [ baselineSpm , setBaselineSpm ] = useState ( 22 ) ;
21+
22+ // Parse URL parameters on initial load
23+ const urlParams = getUrlParams ( ) ;
24+ const videoId = urlParams . videoId ;
25+ const spmParam = urlParams . spm ;
26+
27+ // Set initial video URL based on URL parameter or default
28+ const initialVideoUrl = videoId ? `https://www.youtube.com/watch?v=${ videoId } ` : 'https://www.youtube.com/watch?v=FljjSVANT9I' ;
29+ const initialSpm = spmParam ? parseInt ( spmParam , 10 ) : 22 ;
30+
31+ const [ videoUrl , setVideoUrl ] = useState ( initialVideoUrl ) ;
32+ const [ baselineSpm , setBaselineSpm ] = useState ( initialSpm ) ;
1533 const [ metronomeEnabled , setMetronomeEnabled ] = useState ( false ) ;
1634 const [ metronomePhase , setMetronomePhase ] = useState < MetronomePhase > ( 'recovery' ) ;
1735 const [ isVideoPlaying , setIsVideoPlaying ] = useState ( false ) ;
0 commit comments