/*
    Предрейсовые осмотры - мобильное приложение
    Хук обработки аппаратной кнопки "Назад" (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;
