Remove redundant fetching of workout in EditWorkout

This commit is contained in:
Brandon Presley 2022-09-24 14:48:52 +12:00
parent 5c4e1964b0
commit fa56d48c25
6 changed files with 24 additions and 42 deletions

View File

@ -12,18 +12,18 @@ import ConfirmDialog from './ConfirmDialog';
import {MARGIN, PADDING} from './constants';
import MassiveInput from './MassiveInput';
import {updatePlanWorkouts} from './plan.service';
import {addSet, getSet, updateManySet, updateSetImage} from './set.service';
import {addSet, updateManySet, updateSetImage} from './set.service';
import {WorkoutsPageParams} from './WorkoutsPage';
export default function EditWorkout() {
const {params} = useRoute<RouteProp<WorkoutsPageParams, 'EditWorkout'>>();
const [name, setName] = useState(params.value.name);
const [removeImage, setRemoveImage] = useState(false);
const [showRemove, setShowRemove] = useState(false);
const [steps, setSteps] = useState('');
const [uri, setUri] = useState<string>();
const [minutes, setMinutes] = useState('');
const [seconds, setSeconds] = useState('');
const [name, setName] = useState(params.value.name);
const [steps, setSteps] = useState(params.value.steps);
const [uri, setUri] = useState(params.value.image);
const [minutes, setMinutes] = useState(params.value.minutes?.toString());
const [seconds, setSeconds] = useState(params.value.seconds?.toString());
const [sets, setSets] = useState('');
const navigation = useNavigation();
@ -37,15 +37,6 @@ export default function EditWorkout() {
title: params.value.name || 'New workout',
});
if (!name) return;
getSet(name).then(set => {
console.log(`${EditWorkout.name}.focus`, {set, name});
if (!set) return;
setUri(set.image);
setMinutes(set.minutes?.toString() ?? '3');
setSeconds(set.seconds?.toString() ?? '30');
setSets(set.sets?.toString() ?? '3');
setSteps(set.steps ?? '');
});
}, [navigation, name, params.value.name]),
);
@ -54,8 +45,8 @@ export default function EditWorkout() {
oldName: params.value.name,
newName: name || params.value.name,
sets,
seconds,
minutes,
seconds: seconds?.toString() ?? '30',
minutes: minutes?.toString() ?? '3',
steps,
});
await updatePlanWorkouts(params.value.name, name || params.value.name);
@ -70,9 +61,9 @@ export default function EditWorkout() {
weight: 0,
hidden: true,
image: uri,
minutes: +minutes,
seconds: +seconds,
sets: +sets,
minutes: minutes ? +minutes : 3,
seconds: seconds ? +seconds : 30,
sets: sets ? +sets : 3,
steps,
});
navigation.goBack();

View File

@ -3,15 +3,15 @@ import React, {useCallback, useState} from 'react';
import {GestureResponderEvent, Image} from 'react-native';
import {List, Menu, Text} from 'react-native-paper';
import ConfirmDialog from './ConfirmDialog';
import Set from './set';
import {deleteSetsBy} from './set.service';
import Workout from './workout';
import {WorkoutsPageParams} from './WorkoutsPage';
export default function WorkoutItem({
item,
onRemoved,
}: {
item: Workout;
item: Set;
onRemoved: () => void;
}) {
const [showMenu, setShowMenu] = useState(false);
@ -33,8 +33,8 @@ export default function WorkoutItem({
[setShowMenu, setAnchor],
);
const minutes = item.minutes.toString().padStart(2, '0');
const seconds = item.seconds.toString().padStart(2, '0');
const minutes = item.minutes?.toString().padStart(2, '0');
const seconds = item.seconds?.toString().padStart(2, '0');
return (
<>

View File

@ -7,16 +7,16 @@ import React, {useCallback, useEffect, useState} from 'react';
import {FlatList} from 'react-native';
import {List} from 'react-native-paper';
import Page from './Page';
import Set from './set';
import {getDistinctSets} from './set.service';
import SetList from './SetList';
import Workout from './workout';
import WorkoutItem from './WorkoutItem';
import {WorkoutsPageParams} from './WorkoutsPage';
const limit = 15;
export default function WorkoutList() {
const [workouts, setWorkouts] = useState<Workout[]>();
const [workouts, setWorkouts] = useState<Set[]>();
const [offset, setOffset] = useState(0);
const [search, setSearch] = useState('');
const [end, setEnd] = useState(false);
@ -44,7 +44,7 @@ export default function WorkoutList() {
);
const renderItem = useCallback(
({item}: {item: Workout}) => (
({item}: {item: Set}) => (
<WorkoutItem item={item} key={item.name} onRemoved={refresh} />
),
[refresh],
@ -73,7 +73,7 @@ export default function WorkoutList() {
const onAdd = useCallback(async () => {
navigation.navigate('EditWorkout', {
value: {name: '', sets: 3, image: '', steps: ''} as Workout,
value: {name: '', sets: 3, image: '', steps: '', reps: 0, weight: 0},
});
}, [navigation]);

View File

@ -5,13 +5,13 @@ import React from 'react';
import {IconButton} from 'react-native-paper';
import {DrawerParamList} from './App';
import EditWorkout from './EditWorkout';
import Workout from './workout';
import Set from './set';
import WorkoutList from './WorkoutList';
export type WorkoutsPageParams = {
WorkoutList: {};
EditWorkout: {
value: Workout;
value: Set;
};
};
const Stack = createStackNavigator<WorkoutsPageParams>();

View File

@ -1,6 +1,5 @@
import {db} from './db';
import Set from './set';
import Workout from './workout';
export const updateSet = async (value: Set) => {
const update = `
@ -115,7 +114,7 @@ export const updateManySet = async ({
minutes: string;
seconds: string;
sets: string;
steps: string;
steps?: string;
}) => {
const update = `
UPDATE sets SET name = ?, minutes = ?, seconds = ?, sets = ?, steps = ?
@ -146,9 +145,9 @@ export const getDistinctSets = async ({
search,
limit,
offset,
}: PageParams): Promise<Workout[]> => {
}: PageParams): Promise<Set[]> => {
const select = `
SELECT DISTINCT name, image, sets, minutes, seconds
SELECT name, image, sets, minutes, seconds, steps
FROM sets
WHERE sets.name LIKE ?
GROUP BY sets.name

View File

@ -1,8 +0,0 @@
export default interface Workout {
name: string;
sets: number;
minutes: number;
seconds: number;
image: string;
steps: string;
}