2022-07-03 01:50:01 +00:00
|
|
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
|
import {NativeStackScreenProps} from '@react-navigation/native-stack';
|
|
|
|
import React, {useEffect, useState} from 'react';
|
2022-07-04 04:03:48 +00:00
|
|
|
import {StyleSheet, Text, View} from 'react-native';
|
|
|
|
import {Button, Switch, TextInput} from 'react-native-paper';
|
2022-07-03 01:50:01 +00:00
|
|
|
import {RootStackParamList} from './App';
|
|
|
|
import {getDb} from './db';
|
|
|
|
|
|
|
|
export default function Settings({
|
|
|
|
navigation,
|
|
|
|
}: NativeStackScreenProps<RootStackParamList, 'Settings'>) {
|
|
|
|
const [minutes, setMinutes] = useState<string>('');
|
|
|
|
const [seconds, setSeconds] = useState<string>('');
|
|
|
|
const [alarmEnabled, setAlarmEnabled] = useState<boolean>(true);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
(async () => {
|
|
|
|
setMinutes((await AsyncStorage.getItem('minutes')) || '3');
|
|
|
|
setSeconds((await AsyncStorage.getItem('seconds')) || '');
|
|
|
|
setAlarmEnabled((await AsyncStorage.getItem('alarmEnabled')) === 'true');
|
|
|
|
})();
|
|
|
|
}, [navigation]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (minutes) AsyncStorage.setItem('minutes', minutes);
|
|
|
|
if (seconds) AsyncStorage.setItem('seconds', seconds);
|
|
|
|
AsyncStorage.setItem('alarmEnabled', alarmEnabled ? 'true' : 'false');
|
|
|
|
}, [minutes, seconds, alarmEnabled]);
|
|
|
|
|
|
|
|
const clear = async () => {
|
|
|
|
const db = await getDb();
|
|
|
|
await db.executeSql(`DELETE FROM sets`);
|
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
|
|
<View style={styles.container}>
|
|
|
|
<TextInput
|
2022-07-04 04:03:48 +00:00
|
|
|
label="Rest minutes"
|
2022-07-03 01:50:01 +00:00
|
|
|
value={minutes}
|
|
|
|
keyboardType="numeric"
|
|
|
|
placeholder="3"
|
|
|
|
onChangeText={setMinutes}
|
2022-07-04 04:17:29 +00:00
|
|
|
style={styles.text}
|
2022-07-03 01:50:01 +00:00
|
|
|
/>
|
|
|
|
<TextInput
|
2022-07-04 04:03:48 +00:00
|
|
|
label="Rest seconds"
|
2022-07-03 01:50:01 +00:00
|
|
|
value={seconds}
|
|
|
|
keyboardType="numeric"
|
|
|
|
placeholder="30"
|
|
|
|
onChangeText={setSeconds}
|
2022-07-04 04:17:29 +00:00
|
|
|
style={styles.text}
|
2022-07-03 01:50:01 +00:00
|
|
|
/>
|
2022-07-04 04:17:29 +00:00
|
|
|
<Text style={styles.text}>Alarm enabled?</Text>
|
2022-07-03 01:50:01 +00:00
|
|
|
<Switch
|
2022-07-04 04:17:29 +00:00
|
|
|
style={[styles.text, {alignSelf: 'flex-start'}]}
|
2022-07-03 01:50:01 +00:00
|
|
|
value={alarmEnabled}
|
|
|
|
onValueChange={setAlarmEnabled}
|
|
|
|
/>
|
2022-07-05 03:33:42 +00:00
|
|
|
<Button
|
|
|
|
style={{alignSelf: 'flex-start', marginTop: 'auto'}}
|
|
|
|
icon="trash"
|
|
|
|
onPress={clear}>
|
|
|
|
Delete all data
|
2022-07-03 01:50:01 +00:00
|
|
|
</Button>
|
|
|
|
</View>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
const styles = StyleSheet.create({
|
|
|
|
container: {
|
|
|
|
padding: 10,
|
2022-07-05 03:33:42 +00:00
|
|
|
flex: 1,
|
2022-07-03 01:50:01 +00:00
|
|
|
},
|
2022-07-04 04:17:29 +00:00
|
|
|
text: {
|
|
|
|
marginBottom: 10,
|
|
|
|
},
|
2022-07-03 01:50:01 +00:00
|
|
|
});
|