From dd1cfb70e9d14269da50d9f645e05784df909b3e Mon Sep 17 00:00:00 2001 From: Ruslan Shestopalyuk Date: Mon, 30 Dec 2024 06:17:39 -0800 Subject: [PATCH] Improve typing of BackHandler (#48411) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48411 ## Changelog: [Internal] - Floow-up to https://github.com/facebook/react-native/pull/48388, based on the diff discussion (D67648077). Adds a bit better typing to `BackHandler.js`. Reviewed By: blakef Differential Revision: D67713236 fbshipit-source-id: 95435898d8ea87f6ae32a6db859d6641e1264972 --- .../Libraries/Utilities/BackHandler.android.js | 9 +++++---- .../react-native/Libraries/Utilities/BackHandler.ios.js | 9 ++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/react-native/Libraries/Utilities/BackHandler.android.js b/packages/react-native/Libraries/Utilities/BackHandler.android.js index fedc3aeb4a3..14fb436c8c4 100644 --- a/packages/react-native/Libraries/Utilities/BackHandler.android.js +++ b/packages/react-native/Libraries/Utilities/BackHandler.android.js @@ -14,12 +14,13 @@ import RCTDeviceEventEmitter from '../EventEmitter/RCTDeviceEventEmitter'; const DEVICE_BACK_EVENT = 'hardwareBackPress'; type BackPressEventName = 'backPress' | 'hardwareBackPress'; +type BackPressHandler = () => ?boolean; -const _backPressSubscriptions = []; +const _backPressSubscriptions: Array = []; RCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function () { for (let i = _backPressSubscriptions.length - 1; i >= 0; i--) { - if (_backPressSubscriptions[i] && _backPressSubscriptions[i]()) { + if (_backPressSubscriptions[i]?.()) { return; } } @@ -57,7 +58,7 @@ type TBackHandler = {| +exitApp: () => void, +addEventListener: ( eventName: BackPressEventName, - handler: () => ?boolean, + handler: BackPressHandler, ) => {remove: () => void, ...}, |}; const BackHandler: TBackHandler = { @@ -76,7 +77,7 @@ const BackHandler: TBackHandler = { */ addEventListener: function ( eventName: BackPressEventName, - handler: () => ?boolean, + handler: BackPressHandler, ): {remove: () => void, ...} { if (_backPressSubscriptions.indexOf(handler) === -1) { _backPressSubscriptions.push(handler); diff --git a/packages/react-native/Libraries/Utilities/BackHandler.ios.js b/packages/react-native/Libraries/Utilities/BackHandler.ios.js index f024cdb9d35..bc4cf85c634 100644 --- a/packages/react-native/Libraries/Utilities/BackHandler.ios.js +++ b/packages/react-native/Libraries/Utilities/BackHandler.ios.js @@ -4,13 +4,12 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * + * @flow strict-local * @format - * @flow */ -'use strict'; - type BackPressEventName = 'backPress' | 'hardwareBackPress'; +type BackPressHandler = () => ?boolean; function emptyFunction(): void {} @@ -18,13 +17,13 @@ type TBackHandler = {| +exitApp: () => void, +addEventListener: ( eventName: BackPressEventName, - handler: () => ?boolean, + handler: BackPressHandler, ) => {remove: () => void, ...}, |}; let BackHandler: TBackHandler = { exitApp: emptyFunction, - addEventListener(_eventName: BackPressEventName, _handler: Function) { + addEventListener(_eventName: BackPressEventName, _handler: BackPressHandler) { return { remove: emptyFunction, };