@@ -2,7 +2,7 @@ import type { JSX } from 'preact'
22// biome-ignore lint/correctness/noUnusedImports: Needed for JSX types
33import * as React from 'preact/compat'
44import type { Dispatch , StateUpdater } from 'preact/hooks'
5- import { useState } from 'preact/ hooks'
5+ import { useLocalStorage } from '../../ hooks/useLocalStorage '
66
77type Distance = {
88 name : string
@@ -56,20 +56,24 @@ function calculateSpeed(totalSeconds: number, distanceKm: number): number {
5656}
5757
5858export default function SplitsCalculator ( ) : JSX . Element {
59- const [ selectedDistance , setSelectedDistance ] = useState < Distance > (
60- DISTANCES [ 6 ] ,
61- ) // Marathon default
62- const [ time1 , setTime1 ] = useState < TimeInput > ( {
63- hours : 3 ,
64- minutes : 50 ,
65- seconds : 0 ,
66- } )
67- const [ showSecondTime , setShowSecondTime ] = useState ( false )
68- const [ time2 , setTime2 ] = useState < TimeInput > ( {
69- hours : 4 ,
70- minutes : 15 ,
71- seconds : 0 ,
72- } )
59+ const [ distanceName , setDistanceName ] = useLocalStorage < string > (
60+ 'runner-dashboard:splits.distanceName' ,
61+ 'Marathon' ,
62+ )
63+ const selectedDistance =
64+ DISTANCES . find ( d => d . name === distanceName ) ?? DISTANCES [ 6 ]
65+ const [ time1 , setTime1 ] = useLocalStorage < TimeInput > (
66+ 'runner-dashboard:splits.time1' ,
67+ { hours : 3 , minutes : 50 , seconds : 0 } ,
68+ )
69+ const [ showSecondTime , setShowSecondTime ] = useLocalStorage < boolean > (
70+ 'runner-dashboard:splits.showSecondTime' ,
71+ false ,
72+ )
73+ const [ time2 , setTime2 ] = useLocalStorage < TimeInput > (
74+ 'runner-dashboard:splits.time2' ,
75+ { hours : 4 , minutes : 15 , seconds : 0 } ,
76+ )
7377
7478 const totalSeconds1 = timeToSeconds ( time1 )
7579 const pacePerKm1 = calculatePacePerKm ( totalSeconds1 , selectedDistance . km )
@@ -139,7 +143,7 @@ export default function SplitsCalculator(): JSX.Element {
139143 < button
140144 key = { dist . name }
141145 type = "button"
142- onClick = { ( ) => setSelectedDistance ( dist ) }
146+ onClick = { ( ) => setDistanceName ( dist . name ) }
143147 class = { `rounded-lg px-4 py-2 text-sm font-medium transition-all cursor-pointer ${
144148 selectedDistance . name === dist . name
145149 ? 'bg-blue-500 text-white shadow-md'
0 commit comments