/* Предрейсовые осмотры - мобильное приложение Хук обработки аппаратной кнопки "Назад" (Android) */ //--------------------- //Подключение библиотек //--------------------- const React = require('react'); //React и хуки const { BackHandler, Platform } = require('react-native'); //BackHandler и платформа //----------- //Тело модуля //----------- //Хук обработки аппаратной кнопки "Назад" const useHardwareBackPress = handler => { //Ref для хранения актуального обработчика const handlerRef = React.useRef(handler); //Обновление ref при изменении обработчика React.useEffect(() => { handlerRef.current = handler; }, [handler]); React.useEffect(() => { //BackHandler работает только на Android if (Platform.OS !== 'android') { return; } //Обработчик нажатия кнопки "Назад" const backHandler = () => { if (typeof handlerRef.current === 'function') { return handlerRef.current(); } return false; }; //Подписка на событие const subscription = BackHandler.addEventListener('hardwareBackPress', backHandler); //Отписка при размонтировании return () => { subscription.remove(); }; }, []); }; //---------------- //Интерфейс модуля //---------------- module.exports = useHardwareBackPress;