1 | import type {
|
2 | NavigationContainerRef,
|
3 | ParamListBase,
|
4 | } from '@react-navigation/core';
|
5 | import * as React from 'react';
|
6 | import { BackHandler } from 'react-native';
|
7 |
|
8 | export default function useBackButton(
|
9 | ref: React.RefObject<NavigationContainerRef<ParamListBase>>
|
10 | ) {
|
11 | React.useEffect(() => {
|
12 | const subscription = BackHandler.addEventListener(
|
13 | 'hardwareBackPress',
|
14 | () => {
|
15 | const navigation = ref.current;
|
16 |
|
17 | if (navigation == null) {
|
18 | return false;
|
19 | }
|
20 |
|
21 | if (navigation.canGoBack()) {
|
22 | navigation.goBack();
|
23 |
|
24 | return true;
|
25 | }
|
26 |
|
27 | return false;
|
28 | }
|
29 | );
|
30 |
|
31 | return () => subscription.remove();
|
32 | }, [ref]);
|
33 | }
|