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 {MARGIN, PADDING} from './constants';
|
||||||
import MassiveInput from './MassiveInput';
|
import MassiveInput from './MassiveInput';
|
||||||
import {updatePlanWorkouts} from './plan.service';
|
import {updatePlanWorkouts} from './plan.service';
|
||||||
import {addSet, getSet, updateManySet, updateSetImage} from './set.service';
|
import {addSet, updateManySet, updateSetImage} from './set.service';
|
||||||
import {WorkoutsPageParams} from './WorkoutsPage';
|
import {WorkoutsPageParams} from './WorkoutsPage';
|
||||||
|
|
||||||
export default function EditWorkout() {
|
export default function EditWorkout() {
|
||||||
const {params} = useRoute<RouteProp<WorkoutsPageParams, 'EditWorkout'>>();
|
const {params} = useRoute<RouteProp<WorkoutsPageParams, 'EditWorkout'>>();
|
||||||
const [name, setName] = useState(params.value.name);
|
|
||||||
const [removeImage, setRemoveImage] = useState(false);
|
const [removeImage, setRemoveImage] = useState(false);
|
||||||
const [showRemove, setShowRemove] = useState(false);
|
const [showRemove, setShowRemove] = useState(false);
|
||||||
const [steps, setSteps] = useState('');
|
const [name, setName] = useState(params.value.name);
|
||||||
const [uri, setUri] = useState<string>();
|
const [steps, setSteps] = useState(params.value.steps);
|
||||||
const [minutes, setMinutes] = useState('');
|
const [uri, setUri] = useState(params.value.image);
|
||||||
const [seconds, setSeconds] = useState('');
|
const [minutes, setMinutes] = useState(params.value.minutes?.toString());
|
||||||
|
const [seconds, setSeconds] = useState(params.value.seconds?.toString());
|
||||||
const [sets, setSets] = useState('');
|
const [sets, setSets] = useState('');
|
||||||
const navigation = useNavigation();
|
const navigation = useNavigation();
|
||||||
|
|
||||||
|
@ -37,15 +37,6 @@ export default function EditWorkout() {
|
||||||
title: params.value.name || 'New workout',
|
title: params.value.name || 'New workout',
|
||||||
});
|
});
|
||||||
if (!name) return;
|
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]),
|
}, [navigation, name, params.value.name]),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -54,8 +45,8 @@ export default function EditWorkout() {
|
||||||
oldName: params.value.name,
|
oldName: params.value.name,
|
||||||
newName: name || params.value.name,
|
newName: name || params.value.name,
|
||||||
sets,
|
sets,
|
||||||
seconds,
|
seconds: seconds?.toString() ?? '30',
|
||||||
minutes,
|
minutes: minutes?.toString() ?? '3',
|
||||||
steps,
|
steps,
|
||||||
});
|
});
|
||||||
await updatePlanWorkouts(params.value.name, name || params.value.name);
|
await updatePlanWorkouts(params.value.name, name || params.value.name);
|
||||||
|
@ -70,9 +61,9 @@ export default function EditWorkout() {
|
||||||
weight: 0,
|
weight: 0,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
image: uri,
|
image: uri,
|
||||||
minutes: +minutes,
|
minutes: minutes ? +minutes : 3,
|
||||||
seconds: +seconds,
|
seconds: seconds ? +seconds : 30,
|
||||||
sets: +sets,
|
sets: sets ? +sets : 3,
|
||||||
steps,
|
steps,
|
||||||
});
|
});
|
||||||
navigation.goBack();
|
navigation.goBack();
|
||||||
|
|
|
@ -3,15 +3,15 @@ import React, {useCallback, useState} from 'react';
|
||||||
import {GestureResponderEvent, Image} from 'react-native';
|
import {GestureResponderEvent, Image} from 'react-native';
|
||||||
import {List, Menu, Text} from 'react-native-paper';
|
import {List, Menu, Text} from 'react-native-paper';
|
||||||
import ConfirmDialog from './ConfirmDialog';
|
import ConfirmDialog from './ConfirmDialog';
|
||||||
|
import Set from './set';
|
||||||
import {deleteSetsBy} from './set.service';
|
import {deleteSetsBy} from './set.service';
|
||||||
import Workout from './workout';
|
|
||||||
import {WorkoutsPageParams} from './WorkoutsPage';
|
import {WorkoutsPageParams} from './WorkoutsPage';
|
||||||
|
|
||||||
export default function WorkoutItem({
|
export default function WorkoutItem({
|
||||||
item,
|
item,
|
||||||
onRemoved,
|
onRemoved,
|
||||||
}: {
|
}: {
|
||||||
item: Workout;
|
item: Set;
|
||||||
onRemoved: () => void;
|
onRemoved: () => void;
|
||||||
}) {
|
}) {
|
||||||
const [showMenu, setShowMenu] = useState(false);
|
const [showMenu, setShowMenu] = useState(false);
|
||||||
|
@ -33,8 +33,8 @@ export default function WorkoutItem({
|
||||||
[setShowMenu, setAnchor],
|
[setShowMenu, setAnchor],
|
||||||
);
|
);
|
||||||
|
|
||||||
const minutes = item.minutes.toString().padStart(2, '0');
|
const minutes = item.minutes?.toString().padStart(2, '0');
|
||||||
const seconds = item.seconds.toString().padStart(2, '0');
|
const seconds = item.seconds?.toString().padStart(2, '0');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
|
@ -7,16 +7,16 @@ import React, {useCallback, useEffect, useState} from 'react';
|
||||||
import {FlatList} from 'react-native';
|
import {FlatList} from 'react-native';
|
||||||
import {List} from 'react-native-paper';
|
import {List} from 'react-native-paper';
|
||||||
import Page from './Page';
|
import Page from './Page';
|
||||||
|
import Set from './set';
|
||||||
import {getDistinctSets} from './set.service';
|
import {getDistinctSets} from './set.service';
|
||||||
import SetList from './SetList';
|
import SetList from './SetList';
|
||||||
import Workout from './workout';
|
|
||||||
import WorkoutItem from './WorkoutItem';
|
import WorkoutItem from './WorkoutItem';
|
||||||
import {WorkoutsPageParams} from './WorkoutsPage';
|
import {WorkoutsPageParams} from './WorkoutsPage';
|
||||||
|
|
||||||
const limit = 15;
|
const limit = 15;
|
||||||
|
|
||||||
export default function WorkoutList() {
|
export default function WorkoutList() {
|
||||||
const [workouts, setWorkouts] = useState<Workout[]>();
|
const [workouts, setWorkouts] = useState<Set[]>();
|
||||||
const [offset, setOffset] = useState(0);
|
const [offset, setOffset] = useState(0);
|
||||||
const [search, setSearch] = useState('');
|
const [search, setSearch] = useState('');
|
||||||
const [end, setEnd] = useState(false);
|
const [end, setEnd] = useState(false);
|
||||||
|
@ -44,7 +44,7 @@ export default function WorkoutList() {
|
||||||
);
|
);
|
||||||
|
|
||||||
const renderItem = useCallback(
|
const renderItem = useCallback(
|
||||||
({item}: {item: Workout}) => (
|
({item}: {item: Set}) => (
|
||||||
<WorkoutItem item={item} key={item.name} onRemoved={refresh} />
|
<WorkoutItem item={item} key={item.name} onRemoved={refresh} />
|
||||||
),
|
),
|
||||||
[refresh],
|
[refresh],
|
||||||
|
@ -73,7 +73,7 @@ export default function WorkoutList() {
|
||||||
|
|
||||||
const onAdd = useCallback(async () => {
|
const onAdd = useCallback(async () => {
|
||||||
navigation.navigate('EditWorkout', {
|
navigation.navigate('EditWorkout', {
|
||||||
value: {name: '', sets: 3, image: '', steps: ''} as Workout,
|
value: {name: '', sets: 3, image: '', steps: '', reps: 0, weight: 0},
|
||||||
});
|
});
|
||||||
}, [navigation]);
|
}, [navigation]);
|
||||||
|
|
||||||
|
|
|
@ -5,13 +5,13 @@ import React from 'react';
|
||||||
import {IconButton} from 'react-native-paper';
|
import {IconButton} from 'react-native-paper';
|
||||||
import {DrawerParamList} from './App';
|
import {DrawerParamList} from './App';
|
||||||
import EditWorkout from './EditWorkout';
|
import EditWorkout from './EditWorkout';
|
||||||
import Workout from './workout';
|
import Set from './set';
|
||||||
import WorkoutList from './WorkoutList';
|
import WorkoutList from './WorkoutList';
|
||||||
|
|
||||||
export type WorkoutsPageParams = {
|
export type WorkoutsPageParams = {
|
||||||
WorkoutList: {};
|
WorkoutList: {};
|
||||||
EditWorkout: {
|
EditWorkout: {
|
||||||
value: Workout;
|
value: Set;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
const Stack = createStackNavigator<WorkoutsPageParams>();
|
const Stack = createStackNavigator<WorkoutsPageParams>();
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import {db} from './db';
|
import {db} from './db';
|
||||||
import Set from './set';
|
import Set from './set';
|
||||||
import Workout from './workout';
|
|
||||||
|
|
||||||
export const updateSet = async (value: Set) => {
|
export const updateSet = async (value: Set) => {
|
||||||
const update = `
|
const update = `
|
||||||
|
@ -115,7 +114,7 @@ export const updateManySet = async ({
|
||||||
minutes: string;
|
minutes: string;
|
||||||
seconds: string;
|
seconds: string;
|
||||||
sets: string;
|
sets: string;
|
||||||
steps: string;
|
steps?: string;
|
||||||
}) => {
|
}) => {
|
||||||
const update = `
|
const update = `
|
||||||
UPDATE sets SET name = ?, minutes = ?, seconds = ?, sets = ?, steps = ?
|
UPDATE sets SET name = ?, minutes = ?, seconds = ?, sets = ?, steps = ?
|
||||||
|
@ -146,9 +145,9 @@ export const getDistinctSets = async ({
|
||||||
search,
|
search,
|
||||||
limit,
|
limit,
|
||||||
offset,
|
offset,
|
||||||
}: PageParams): Promise<Workout[]> => {
|
}: PageParams): Promise<Set[]> => {
|
||||||
const select = `
|
const select = `
|
||||||
SELECT DISTINCT name, image, sets, minutes, seconds
|
SELECT name, image, sets, minutes, seconds, steps
|
||||||
FROM sets
|
FROM sets
|
||||||
WHERE sets.name LIKE ?
|
WHERE sets.name LIKE ?
|
||||||
GROUP BY sets.name
|
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