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