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 (
<View style={{padding: 10}}>
<SetForm save={save} set={params.set} />
<SetForm save={save} set={params.set} next={params.next} />
</View>
);
}

View File

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

View File

@ -6,9 +6,11 @@ import Set from './set';
export default function SetForm({
save,
set,
next,
}: {
set: Set;
save: (set: Set) => void;
next?: string;
}) {
const [name, setName] = useState(set.name);
const [reps, setReps] = useState(set.reps.toString());
@ -77,7 +79,12 @@ export default function SetForm({
onSubmitEditing={handleSubmit}
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>
<Button
disabled={!name}

View File

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