Remove redundant fetching of workout in EditWorkout
This commit is contained in:
parent
5c4e1964b0
commit
fa56d48c25
|
@ -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();
|
||||
|
|
|
@ -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 (
|
||||
<>
|
||||
|
|
|
@ -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]);
|
||||
|
||||
|
|
|
@ -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>();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
export default interface Workout {
|
||||
name: string;
|
||||
sets: number;
|
||||
minutes: number;
|
||||
seconds: number;
|
||||
image: string;
|
||||
steps: string;
|
||||
}
|
Loading…
Reference in New Issue
Block a user