Show next workout on EditSet page

This commit is contained in:
Brandon Presley 2022-08-24 12:46:47 +12:00
parent 384e3660c1
commit 0dcfc8eadf
4 changed files with 24 additions and 12 deletions

View File

@ -73,7 +73,7 @@ export default function EditSet() {
return ( return (
<View style={{padding: 10}}> <View style={{padding: 10}}>
<SetForm save={save} set={params.set} /> <SetForm save={save} set={params.set} next={params.next} />
</View> </View>
); );
} }

View File

@ -13,6 +13,7 @@ export type HomePageParams = {
Sets: {}; Sets: {};
EditSet: { EditSet: {
set: Set; set: Set;
next?: string;
}; };
}; };

View File

@ -6,9 +6,11 @@ import Set from './set';
export default function SetForm({ export default function SetForm({
save, save,
set, set,
next,
}: { }: {
set: Set; set: Set;
save: (set: Set) => void; save: (set: Set) => void;
next?: string;
}) { }) {
const [name, setName] = useState(set.name); const [name, setName] = useState(set.name);
const [reps, setReps] = useState(set.reps.toString()); const [reps, setReps] = useState(set.reps.toString());
@ -77,7 +79,12 @@ export default function SetForm({
onSubmitEditing={handleSubmit} onSubmitEditing={handleSubmit}
selectTextOnFocus selectTextOnFocus
/> />
<Text>{set.created?.replace('T', ' ')}</Text> {set.created && (
<Text style={{marginBottom: 10}}>
Created: {set.created?.replace('T', ' ')}
</Text>
)}
{next && <Text>Next: {next}</Text>}
</ScrollView> </ScrollView>
<Button <Button
disabled={!name} disabled={!name}

View File

@ -26,7 +26,8 @@ const defaultSet = {
export default function SetList() { export default function SetList() {
const [sets, setSets] = useState<Set[]>(); const [sets, setSets] = useState<Set[]>();
const [nextSet, setNextSet] = useState<Set>(); const [set, setSet] = useState<Set>();
const [nextWorkout, setNextWorkout] = useState<string>();
const [offset, setOffset] = useState(0); const [offset, setOffset] = useState(0);
const [search, setSearch] = useState(''); const [search, setSearch] = useState('');
const [refreshing, setRefreshing] = useState(false); const [refreshing, setRefreshing] = useState(false);
@ -112,18 +113,19 @@ export default function SetList() {
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(',');
let nextWorkout = todaysWorkouts[0]; let workout = todaysWorkouts[0];
if (todaysSets.length > 0) { if (todaysSets.length > 0) {
const count = todaysSets.filter( const count = todaysSets.filter(
s => s.name === todaysSets[0].name, s => s.name === todaysSets[0].name,
).length; ).length;
nextWorkout = todaysSets[0].name; workout = todaysSets[0].name;
if (count >= Number(settings.sets)) if (count >= Number(settings.sets))
nextWorkout = workout =
todaysWorkouts[todaysWorkouts.indexOf(todaysSets[0].name!) + 1]; todaysWorkouts[todaysWorkouts.indexOf(todaysSets[0].name!) + 1];
} }
const best = await getBest(nextWorkout); const best = await getBest(workout);
setNextSet({...best}); setSet({...best});
setNextWorkout(todaysWorkouts[todaysWorkouts.indexOf(workout) + 1]);
}, [getTodaysSets, getTodaysPlan, getBest, db]); }, [getTodaysSets, getTodaysPlan, getBest, db]);
useFocusEffect( useFocusEffect(
@ -167,9 +169,11 @@ export default function SetList() {
}, [search, end, offset, sets, db, selectSets]); }, [search, end, offset, sets, db, selectSets]);
const onAdd = useCallback(async () => { const onAdd = useCallback(async () => {
const set: Set = {...defaultSet}; navigation.navigate('EditSet', {
navigation.navigate('EditSet', {set: nextSet || set}); set: set || {...defaultSet},
}, [navigation, nextSet]); next: nextWorkout,
});
}, [navigation, set, nextWorkout]);
return ( return (
<View style={styles.container}> <View style={styles.container}>
@ -184,7 +188,7 @@ export default function SetList() {
/> />
} }
renderItem={renderItem} renderItem={renderItem}
keyExtractor={set => set.id!.toString()} keyExtractor={s => s.id!.toString()}
onEndReached={next} onEndReached={next}
refreshing={refreshing} refreshing={refreshing}
onRefresh={refreshLoader} onRefresh={refreshLoader}