Use best as default for EditSet
This commit is contained in:
parent
d591d2e453
commit
c965064e57
56
EditSet.tsx
56
EditSet.tsx
|
@ -55,28 +55,62 @@ export default function EditSet() {
|
||||||
return result.rows.raw();
|
return result.rows.raw();
|
||||||
}, [db]);
|
}, [db]);
|
||||||
|
|
||||||
|
const getBest = useCallback(
|
||||||
|
async (query: string): Promise<Set> => {
|
||||||
|
const bestWeight = `
|
||||||
|
SELECT name, reps, unit, MAX(weight) AS weight
|
||||||
|
FROM sets
|
||||||
|
WHERE name = ?
|
||||||
|
GROUP BY name;
|
||||||
|
`;
|
||||||
|
const bestReps = `
|
||||||
|
SELECT name, MAX(reps) as reps, unit, weight
|
||||||
|
FROM sets
|
||||||
|
WHERE name = ?
|
||||||
|
AND weight = ?
|
||||||
|
GROUP BY name;
|
||||||
|
`;
|
||||||
|
const [weightResult] = await db.executeSql(bestWeight, [query]);
|
||||||
|
if (!weightResult)
|
||||||
|
return {
|
||||||
|
weight: 0,
|
||||||
|
name: '',
|
||||||
|
reps: 0,
|
||||||
|
created: new Date().toISOString(),
|
||||||
|
id: 0,
|
||||||
|
};
|
||||||
|
const [repsResult] = await db.executeSql(bestReps, [
|
||||||
|
query,
|
||||||
|
weightResult.rows.item(0).weight,
|
||||||
|
]);
|
||||||
|
return repsResult.rows.item(0);
|
||||||
|
},
|
||||||
|
[db],
|
||||||
|
);
|
||||||
|
|
||||||
const predict = useCallback(async () => {
|
const predict = useCallback(async () => {
|
||||||
if ((await AsyncStorage.getItem('predictiveSets')) === 'false') return;
|
if ((await AsyncStorage.getItem('predictiveSets')) === 'false') return;
|
||||||
const todaysPlan = await getTodaysPlan();
|
const todaysPlan = await getTodaysPlan();
|
||||||
if (todaysPlan.length === 0) return;
|
if (todaysPlan.length === 0) return;
|
||||||
const todaysSets = await getTodaysSets();
|
const todaysSets = await getTodaysSets();
|
||||||
const todaysWorkouts = todaysPlan[0].workouts.split(',');
|
const todaysWorkouts = todaysPlan[0].workouts.split(',');
|
||||||
if (todaysSets.length === 0) return setName(todaysWorkouts[0]);
|
let nextWorkout = todaysWorkouts[0];
|
||||||
|
if (todaysSets.length > 0) {
|
||||||
const count = todaysSets.filter(
|
const count = todaysSets.filter(
|
||||||
set => set.name === todaysSets[0].name,
|
set => set.name === todaysSets[0].name,
|
||||||
).length;
|
).length;
|
||||||
const maxSets = await AsyncStorage.getItem('maxSets');
|
const maxSets = await AsyncStorage.getItem('maxSets');
|
||||||
if (count < Number(maxSets)) {
|
nextWorkout = todaysSets[0].name;
|
||||||
setName(todaysSets[0].name);
|
if (count >= Number(maxSets))
|
||||||
setReps(todaysSets[0].reps.toString());
|
nextWorkout =
|
||||||
setWeight(todaysSets[0].weight.toString());
|
|
||||||
return setUnit(todaysSets[0].unit);
|
|
||||||
}
|
|
||||||
const nextWorkout =
|
|
||||||
todaysWorkouts[todaysWorkouts.indexOf(todaysSets[0].name!) + 1];
|
todaysWorkouts[todaysWorkouts.indexOf(todaysSets[0].name!) + 1];
|
||||||
if (!nextWorkout) return;
|
}
|
||||||
setName(nextWorkout);
|
const best = await getBest(nextWorkout);
|
||||||
}, [getTodaysSets, getTodaysPlan]);
|
setName(best.name);
|
||||||
|
setReps(best.reps.toString());
|
||||||
|
setWeight(best.weight.toString());
|
||||||
|
setUnit(best.unit);
|
||||||
|
}, [getTodaysSets, getTodaysPlan, getBest]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (params.set.id) return;
|
if (params.set.id) return;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user