@kingstinct/react-native-healthkit
Version:
React Native bindings for HealthKit
32 lines (23 loc) • 748 B
text/typescript
import { useEffect, useRef } from 'react'
import subscribeToChanges from '../utils/subscribeToChanges'
import type { HKSampleTypeIdentifier } from '..'
function useSubscribeToChanges<TIdentifier extends HKSampleTypeIdentifier>(
identifier: TIdentifier,
onChange: () => void,
): void {
const onChangeRef = useRef(onChange)
useEffect(() => {
onChangeRef.current = onChange
}, [onChange])
useEffect(() => {
let cancelSubscription: (() => Promise<boolean>) | undefined
const init = async () => {
cancelSubscription = await subscribeToChanges(identifier, onChangeRef.current)
}
void init()
return () => {
void cancelSubscription?.()
}
}, [identifier])
}
export default useSubscribeToChanges