xref: /MusicFree/src/hooks/useHardwareBack.ts (revision 547b4a5c94e5deeb9b9f5460734344abfbb461c5)
1import {useEffect, useRef} from 'react';
2import {BackHandler, NativeEventSubscription} from 'react-native';
3
4export default function (
5    onHardwareBackPress: () => boolean | null | undefined,
6) {
7    const backHandlerRef = useRef<NativeEventSubscription>();
8    useEffect(() => {
9        if (backHandlerRef.current) {
10            backHandlerRef.current.remove();
11            backHandlerRef.current = undefined;
12        }
13
14        backHandlerRef.current = BackHandler.addEventListener(
15            'hardwareBackPress',
16            onHardwareBackPress,
17        );
18
19        return () => {
20            if (backHandlerRef.current) {
21                backHandlerRef.current.remove();
22                backHandlerRef.current = undefined;
23            }
24        };
25    }, []);
26}
27