Add some useCallbacks

This commit is contained in:
Brandon Presley 2022-11-03 23:32:41 +13:00
parent da4484cf4f
commit 8019df7418
2 changed files with 16 additions and 16 deletions

View File

@ -43,12 +43,10 @@ export default function EditSet() {
[settings], [settings],
) )
const add = useCallback( const added = useCallback(
async (value: GymSet) => { async (value: GymSet) => {
startTimer(value.name) startTimer(value.name)
console.log(`${EditSet.name}.add`, {set: value}) console.log(`${EditSet.name}.add`, {set: value})
const result = await setRepo.save(value)
console.log({result})
if (!settings.notify) return if (!settings.notify) return
if ( if (
value.weight > set.weight || value.weight > set.weight ||
@ -59,20 +57,19 @@ export default function EditSet() {
[startTimer, set, settings], [startTimer, set, settings],
) )
const save = useCallback( const saved = useCallback(
async (value: GymSet) => { async (value: GymSet) => {
if (typeof set.id === 'number') await setRepo.save(value) if (typeof set.id !== 'number') added(value)
else await add(value)
navigation.goBack() navigation.goBack()
}, },
[add, set.id, navigation], [added, set.id, navigation],
) )
return ( return (
<> <>
<StackHeader title="Edit set" /> <StackHeader title="Edit set" />
<View style={{padding: PADDING, flex: 1}}> <View style={{padding: PADDING, flex: 1}}>
{settings && <SetForm settings={settings} save={save} set={set} />} {settings && <SetForm settings={settings} onSaved={saved} set={set} />}
</View> </View>
</> </>
) )

View File

@ -12,12 +12,12 @@ import {format} from './time'
import {toast} from './toast' import {toast} from './toast'
export default function SetForm({ export default function SetForm({
save, onSaved,
set, set,
settings, settings,
}: { }: {
set: GymSet set: GymSet
save: (set: GymSet) => void onSaved: (set: GymSet) => void
settings: Settings settings: Settings
}) { }) {
const [name, setName] = useState(set.name) const [name, setName] = useState(set.name)
@ -44,12 +44,12 @@ export default function SetForm({
console.log(`${SetForm.name}.handleSubmit:`, {image}) console.log(`${SetForm.name}.handleSubmit:`, {image})
const [{now}] = await getNow() const [{now}] = await getNow()
save({ const saved = await setRepo.save({
id: set.id,
name, name,
created: now, created: now,
reps: Number(reps), reps: Number(reps),
weight: Number(weight), weight: Number(weight),
id: set.id,
unit, unit,
image, image,
minutes: Number(set.minutes ?? 3), minutes: Number(set.minutes ?? 3),
@ -57,19 +57,20 @@ export default function SetForm({
sets: set.sets ?? 3, sets: set.sets ?? 3,
hidden: false, hidden: false,
}) })
onSaved(saved)
} }
const handleName = (value: string) => { const handleName = useCallback((value: string) => {
setName(value.replace(/,|'/g, '')) setName(value.replace(/,|'/g, ''))
if (value.match(/,|'/)) if (value.match(/,|'/))
toast('Commas and single quotes would break CSV exports') toast('Commas and single quotes would break CSV exports')
} }, [])
const handleUnit = (value: string) => { const handleUnit = useCallback((value: string) => {
setUnit(value.replace(/,|'/g, '')) setUnit(value.replace(/,|'/g, ''))
if (value.match(/,|'/)) if (value.match(/,|'/))
toast('Commas and single quotes would break CSV exports') toast('Commas and single quotes would break CSV exports')
} }, [])
const changeImage = useCallback(async () => { const changeImage = useCallback(async () => {
const {fileCopyUri} = await DocumentPicker.pickSingle({ const {fileCopyUri} = await DocumentPicker.pickSingle({
@ -148,6 +149,7 @@ export default function SetForm({
</Button> </Button>
)} )}
</View> </View>
<Button <Button
disabled={!name} disabled={!name}
mode="contained" mode="contained"
@ -155,6 +157,7 @@ export default function SetForm({
onPress={handleSubmit}> onPress={handleSubmit}>
Save Save
</Button> </Button>
<ConfirmDialog <ConfirmDialog
title="Remove image" title="Remove image"
onOk={handleRemove} onOk={handleRemove}