2023-06-27 03:16:59 +00:00
|
|
|
import { useFocusEffect } from '@react-navigation/native'
|
|
|
|
import { useCallback, useState } from 'react'
|
|
|
|
import { NativeEventEmitter } from 'react-native'
|
|
|
|
import { TickEvent } from './TimerPage'
|
2022-11-10 02:15:27 +00:00
|
|
|
|
|
|
|
export default function useTimer() {
|
|
|
|
const [minutes, setMinutes] = useState('00')
|
|
|
|
const [seconds, setSeconds] = useState('00')
|
|
|
|
|
|
|
|
useFocusEffect(
|
|
|
|
useCallback(() => {
|
|
|
|
setMinutes('00')
|
|
|
|
setSeconds('00')
|
|
|
|
const emitter = new NativeEventEmitter()
|
|
|
|
const listener = emitter.addListener('tick', (event: TickEvent) => {
|
2023-06-27 03:16:59 +00:00
|
|
|
console.log(`${useTimer.name}.tick:`, { event })
|
2022-11-10 02:15:27 +00:00
|
|
|
setMinutes(event.minutes)
|
|
|
|
setSeconds(event.seconds)
|
|
|
|
})
|
|
|
|
return listener.remove
|
|
|
|
}, []),
|
|
|
|
)
|
|
|
|
|
2023-06-27 03:16:59 +00:00
|
|
|
return { minutes, seconds }
|
2022-11-10 02:15:27 +00:00
|
|
|
}
|