import AsyncStorage from '@react-native-async-storage/async-storage'; import React, {useEffect, useState} from 'react'; import {Button, Modal, StyleSheet, Text, View} from 'react-native'; import BackgroundTimer from 'react-native-background-timer'; export default function Alarm({onClose}: {onClose: () => void}) { const [seconds, setSeconds] = useState(0); const [minutes, setMinutes] = useState(0); let intervalId: number; useEffect(() => { AsyncStorage.getItem('nextAlarm').then(async next => { if (!next) return; const ms = new Date(next).getTime() - new Date().getTime(); if (ms <= 0) return; let secondsLeft = ms / 1000; console.log({secondsLeft}); setSeconds(secondsLeft % 60); setMinutes(Math.floor(secondsLeft / 60)); intervalId = setInterval(() => { console.log({seconds, secondsLeft}); secondsLeft--; if (secondsLeft <= 0) return clearInterval(intervalId); setSeconds(Math.ceil(secondsLeft % 60)); setMinutes(Math.floor(secondsLeft / 60)); }, 1000); }); return () => clearInterval(intervalId); }, []); const stop = () => { BackgroundTimer.clearInterval(intervalId); onClose(); }; return ( Rest {minutes}:{seconds}