diff --git a/StartPlan.tsx b/StartPlan.tsx index 5d75f7c..6b16e74 100644 --- a/StartPlan.tsx +++ b/StartPlan.tsx @@ -11,7 +11,7 @@ import MassiveInput from './MassiveInput'; import {useSnackbar} from './MassiveSnack'; import {PlanPageParams} from './plan-page-params'; import Set from './set'; -import {addSet, countManyToday, getDistinctSets} from './set.service'; +import {addSet, countMany} from './set.service'; import SetForm from './SetForm'; import StackHeader from './StackHeader'; import {useSettings} from './use-settings'; @@ -30,7 +30,6 @@ export default function StartPlan() { const [selected, setSelected] = useState(0); const {settings} = useSettings(); const [counts, setCounts] = useState(); - const [distinctSets, setDistinctSets] = useState(); const weightRef = useRef(null); const repsRef = useRef(null); const unitRef = useRef(null); @@ -44,15 +43,11 @@ export default function StartPlan() { useFocusEffect( useCallback(() => { - countManyToday().then(newCounts => { + countMany(workouts).then(newCounts => { setCounts(newCounts); console.log(`${StartPlan.name}.focus:`, {newCounts}); }); - getDistinctSets({limit: 100, offset: 0, term: '%'}).then(newDistinct => { - setDistinctSets(newDistinct); - console.log(`${StartPlan.name}.focus:`, {newDistinct}); - }); - }, []), + }, [workouts]), ); const handleSubmit = async () => { @@ -67,7 +62,7 @@ export default function StartPlan() { image: set.image, unit, }); - countManyToday().then(setCounts); + countMany(workouts).then(setCounts); if ( settings.notify && (+weight > best.weight || (+reps > best.reps && +weight === best.weight)) @@ -110,20 +105,6 @@ export default function StartPlan() { [name, workouts], ); - const getDescription = useCallback( - (countName: string) => { - const count = counts?.find(c => c.name === countName); - console.log(`${StartPlan.name}:`, {count, countName}); - if (!distinctSets) return; - const distinct = distinctSets.find(d => d.name === countName); - console.log(`${StartPlan.name}:`, {distinct}); - if (settings.showSets) - return `${count?.total || 0} / ${distinct?.sets || 3}`; - return count?.total || '0'; - }, - [counts, distinctSets, settings.showSets], - ); - return ( <> @@ -157,13 +138,17 @@ export default function StartPlan() { innerRef={unitRef} /> )} - {counts && distinctSets && ( + {counts && ( ( select(index)} left={() => ( => { return Number(result.rows.item(0)?.total); }; -export const countManyToday = async (): Promise => { +export const countMany = async (names: string[]): Promise => { + const questions = names.map(_ => '?').join(','); + console.log({questions, names}); const select = ` - SELECT COUNT(*) as total, name FROM sets - WHERE created LIKE strftime('%Y-%m-%d%%', 'now', 'localtime') - AND NOT hidden - GROUP BY name + SELECT workouts.name, COUNT(sets.id) as total + FROM ( + SELECT distinct name FROM sets + WHERE name IN (${questions}) + ) workouts + LEFT JOIN sets ON sets.name = workouts.name + AND sets.created LIKE STRFTIME('%Y-%m-%d%%', 'now', 'localtime') + AND NOT sets.hidden + GROUP BY workouts.name; `; - const [result] = await db.executeSql(select); + const [result] = await db.executeSql(select, names); return result.rows.raw(); };