Give up on hidden drawer navigation.
Auto focusing is all messed up here and I don't think all this trouble is worth it.
This commit is contained in:
parent
8a74d750c4
commit
3ec685a76e
|
@ -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<NavigationProp<DrawerParamList>>();
|
||||
|
||||
useEffect(() => {
|
||||
runMigrations()
|
||||
|
|
25
SetForm.tsx
25
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<any>(null);
|
||||
const unitRef = useRef<any>(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}
|
||||
/>
|
||||
|
|
|
@ -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}
|
||||
</Switch>
|
||||
))}
|
||||
{'focus'.includes(search.toLowerCase()) && (
|
||||
<Picker
|
||||
style={{color}}
|
||||
dropdownIconColor={color}
|
||||
selectedValue={focus}
|
||||
onValueChange={value => setFocus(value)}>
|
||||
<Picker.Item value="" label="Don't auto focus" />
|
||||
<Picker.Item value="name" label="Auto focus Name" />
|
||||
<Picker.Item value="reps" label="Auto focus Reps" />
|
||||
<Picker.Item value="weight" label="Auto focus Weight" />
|
||||
</Picker>
|
||||
)}
|
||||
{'theme'.includes(search.toLowerCase()) && (
|
||||
<Picker
|
||||
style={{color}}
|
||||
|
@ -190,7 +205,9 @@ export default function SettingsPage() {
|
|||
</Picker>
|
||||
)}
|
||||
{'alarm sound'.includes(search.toLowerCase()) && (
|
||||
<Button style={{alignSelf: 'flex-start'}} onPress={changeSound}>
|
||||
<Button
|
||||
style={{alignSelf: 'flex-start', marginTop: MARGIN}}
|
||||
onPress={changeSound}>
|
||||
Alarm sound
|
||||
{sound
|
||||
? ': ' + sound.split('/')[sound.split('/').length - 1]
|
||||
|
|
3
db.ts
3
db.ts
|
@ -103,6 +103,9 @@ const migrations = [
|
|||
`
|
||||
ALTER TABLE settings ADD COLUMN nextAlarm TEXT NULL
|
||||
`,
|
||||
`
|
||||
ALTER TABLE settings ADD COLUMN focus TEXT NULL
|
||||
`,
|
||||
];
|
||||
|
||||
export let db: SQLiteDatabase;
|
||||
|
|
|
@ -10,4 +10,5 @@ export default interface Settings {
|
|||
workouts: number;
|
||||
steps: number;
|
||||
nextAlarm?: string;
|
||||
focus?: 'name' | 'reps' | 'weight';
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user