You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
737 B
TypeScript
26 lines
737 B
TypeScript
import {useFocusEffect} from '@react-navigation/native'
|
|
import {useCallback, useState} from 'react'
|
|
import {NativeEventEmitter} from 'react-native'
|
|
import {TickEvent} from './TimerPage'
|
|
|
|
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) => {
|
|
console.log(`${useTimer.name}.tick:`, {event})
|
|
setMinutes(event.minutes)
|
|
setSeconds(event.seconds)
|
|
})
|
|
return listener.remove
|
|
}, []),
|
|
)
|
|
|
|
return {minutes, seconds}
|
|
}
|