import AsyncStorage from '@react-native-async-storage/async-storage'; import React, {useContext, useEffect, useState} from 'react'; import {NativeModules, StyleSheet, Text, View} from 'react-native'; import {Button, Snackbar, Switch, TextInput} from 'react-native-paper'; import {DatabaseContext} from './App'; import BatteryDialog from './BatteryDialog'; const {getItem, setItem} = AsyncStorage; export default function SettingsPage() { const [minutes, setMinutes] = useState(''); const [seconds, setSeconds] = useState(''); const [alarmEnabled, setAlarmEnabled] = useState(false); const [snackbar, setSnackbar] = useState(''); const [showBattery, setShowBattery] = useState(false); const [ignoring, setIgnoring] = useState(false); const db = useContext(DatabaseContext); const refresh = async () => { setMinutes((await getItem('minutes')) || ''); setSeconds((await getItem('seconds')) || ''); setAlarmEnabled((await getItem('alarmEnabled')) === 'true'); NativeModules.AlarmModule.ignoringBatteryOptimizations(setIgnoring); }; useEffect(() => { refresh(); }, []); const clear = async () => { setSnackbar('Deleting all data...'); setTimeout(() => setSnackbar(''), 5000); await db.executeSql(`DELETE FROM sets`); }; const exportSets = () => { NativeModules.ExportModule.sets(); }; const importSets = () => { NativeModules.ImportModule.sets(); }; const changeAlarmEnabled = (enabled: boolean) => { setAlarmEnabled(enabled); if (enabled && !ignoring) setShowBattery(true); setItem('alarmEnabled', enabled ? 'true' : 'false'); }; return ( { setMinutes(text); setItem('minutes', text); }} style={styles.text} /> { setSeconds(s); setItem('seconds', s); }} style={styles.text} /> Rest timers setSnackbar('')} action={{label: 'Close', onPress: () => setSnackbar('')}}> {snackbar} ); } const styles = StyleSheet.create({ container: { padding: 10, flex: 1, }, text: { marginBottom: 10, }, });