diff --git a/Routes.tsx b/Routes.tsx index 47d9b59..f92d75e 100644 --- a/Routes.tsx +++ b/Routes.tsx @@ -1,5 +1,4 @@ import {createDrawerNavigator} from '@react-navigation/drawer'; -import {NavigationProp, useNavigation} from '@react-navigation/native'; import React, {useContext, useEffect, useState} from 'react'; import {useColorScheme} from 'react-native'; import {IconButton} from 'react-native-paper'; @@ -25,7 +24,6 @@ export default function Routes() { const [migrated, setMigrated] = useState(false); const dark = useColorScheme() === 'dark'; const {setColor} = useContext(CustomTheme); - const navigation = useNavigation>(); useEffect(() => { runMigrations() diff --git a/SetForm.tsx b/SetForm.tsx index 3109285..625e342 100644 --- a/SetForm.tsx +++ b/SetForm.tsx @@ -1,4 +1,11 @@ -import React, {useContext, useEffect, useRef, useState} from 'react'; +import {useFocusEffect} from '@react-navigation/native'; +import React, { + useCallback, + useContext, + useEffect, + useRef, + useState, +} from 'react'; import {ScrollView, View} from 'react-native'; import {Button, Text} from 'react-native-paper'; import MassiveInput from './MassiveInput'; @@ -30,17 +37,25 @@ export default function SetForm({ const repsRef = useRef(null); const unitRef = useRef(null); + useFocusEffect( + useCallback(() => { + repsRef?.current.focus(); + }, []), + ); + useEffect(() => { - console.log('SetForm.useEffect:', {uri, set, name, reps, unit}); + console.log('SetForm.useEffect:', {uri, set}); setName(set.name); setReps(set.reps.toString()); setWeight(set.weight.toString()); setUnit(set.unit); - if (!uri) + if (!set.image) getSets({search: set.name, limit: 1, offset: 0}).then(([s]) => setUri(s?.image), ); - }, [uri, set, name, reps, unit]); + else setUri(set.image); + repsRef?.current.focus(); + }, [uri, set]); const handleSubmit = () => { if (!name) return; @@ -77,7 +92,6 @@ export default function SetForm({ value={name} onChangeText={handleName} autoCorrect={false} - autoFocus={!name} blurOnSubmit={false} onSubmitEditing={() => repsRef.current?.focus()} /> @@ -89,7 +103,6 @@ export default function SetForm({ onSubmitEditing={() => weightRef.current?.focus()} selection={selection} onSelectionChange={e => setSelection(e.nativeEvent.selection)} - autoFocus={!!name} blurOnSubmit={false} innerRef={repsRef} /> diff --git a/SettingsPage.tsx b/SettingsPage.tsx index 5a8437b..caf9124 100644 --- a/SettingsPage.tsx +++ b/SettingsPage.tsx @@ -27,6 +27,7 @@ export default function SettingsPage() { const [showUnit, setShowUnit] = useState(!!settings.showUnit); const [workouts, setWorkouts] = useState(!!settings.workouts); const [steps, setSteps] = useState(!!settings.steps); + const [focus, setFocus] = useState(settings.focus); const {color, setColor} = useContext(CustomTheme); const {toast} = useContext(SnackbarContext); @@ -48,6 +49,7 @@ export default function SettingsPage() { color, workouts: +workouts, steps: +steps, + focus, }); getSettings(); }, [ @@ -61,6 +63,7 @@ export default function SettingsPage() { color, workouts, steps, + focus, ]); const changeAlarmEnabled = useCallback( @@ -173,6 +176,18 @@ export default function SettingsPage() { {input.name} ))} + {'focus'.includes(search.toLowerCase()) && ( + setFocus(value)}> + + + + + + )} {'theme'.includes(search.toLowerCase()) && ( )} {'alarm sound'.includes(search.toLowerCase()) && ( -