import * as React from 'react'; import { AccessibilityInfo, Platform } from 'react-native'; import { useAMAContext } from '../providers/AMAProvider'; export const useTimedAction = () => { const { isScreenReaderEnabled } = useAMAContext(); const onTimeout = React.useCallback( async ( callback: () => void, milliseconds: number, ): Promise> => { if (isScreenReaderEnabled && Platform.OS === 'ios') { return new Promise(resolve => { resolve(null); }); } const timeout = await getRecommendedTimeoutMillis(milliseconds); return setTimeout(callback, timeout); }, [isScreenReaderEnabled], ); return { onTimeout, }; }; async function getRecommendedTimeoutMillis( milliseconds: number, ): Promise { return Platform.OS === 'android' ? await AccessibilityInfo.getRecommendedTimeoutMillis(milliseconds) : new Promise(resolve => { resolve(milliseconds); }); }