import AsyncStorage from '@react-native-async-storage/async-storage'; import React, {useEffect, useState} from 'react'; import {StyleSheet, Text} from 'react-native'; import {Button, Modal, Portal} from 'react-native-paper'; export default function Alarm() { const [show, setShow] = useState(false); const [seconds, setSeconds] = useState(0); const [minutes, setMinutes] = useState(0); useEffect(() => { if (!show) return; let intervalId: number; (async () => { const next = await AsyncStorage.getItem('nextAlarm'); if (!next) return; const ms = new Date(next).getTime() - new Date().getTime(); if (ms <= 0) return; let secondsLeft = ms / 1000; setSeconds(Math.floor(secondsLeft % 60)); setMinutes(Math.floor(secondsLeft / 60)); intervalId = setInterval(() => { secondsLeft--; if (secondsLeft <= 0) return clearInterval(intervalId); setSeconds(Math.floor(secondsLeft % 60)); setMinutes(Math.floor(secondsLeft / 60)); }, 1000); })(); return () => clearInterval(intervalId); }, [show]); return ( <> setShow(false)}> Resting {minutes}:{seconds} ); } const styles = StyleSheet.create({ center: { alignItems: 'center', alignSelf: 'center', marginBottom: 10, }, title: { fontSize: 18, }, });