From 0f38f7b2e4a23d5958dbc301fec737f9e482ace3 Mon Sep 17 00:00:00 2001 From: mkhutornyi Date: Mon, 5 Jun 2023 16:39:33 -0600 Subject: [PATCH 1/5] Transform BigNumberPad component to functional one --- src/components/BigNumberPad.js | 113 +++++++++++++++------------------ 1 file changed, 50 insertions(+), 63 deletions(-) diff --git a/src/components/BigNumberPad.js b/src/components/BigNumberPad.js index 999b5dbd55d..054760ce0af 100644 --- a/src/components/BigNumberPad.js +++ b/src/components/BigNumberPad.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useState, useCallback} from 'react'; import {View} from 'react-native'; import _ from 'underscore'; import PropTypes from 'prop-types'; @@ -32,72 +32,59 @@ const padNumbers = [ ['.', '0', '<'], ]; -class BigNumberPad extends React.PureComponent { - constructor(props) { - super(props); +const BigNumberPad = ({ + numberPressed, + longPressHandlerStateChanged, + nativeID, + toLocaleDigit, +}) => { + const [timer, setTimer] = useState(null); - this.state = { - timer: null, - }; - } + const handleLongPress = useCallback((key) => { + if (key !== '<') return; - /** - * Handle long press key on number pad. - * Only handles the '<' key and starts the continuous input timer. - * - * @param {String} key - */ - handleLongPress(key) { - // Only handles deleting. - if (key !== '<') { - return; - } - this.props.longPressHandlerStateChanged(true); - const timer = setInterval(() => { - this.props.numberPressed(key); + longPressHandlerStateChanged(true); + const newTimer = setInterval(() => { + numberPressed(key); }, 100); - this.setState({timer}); - } + setTimer(newTimer); + }, [longPressHandlerStateChanged, numberPressed]); - render() { - return ( - - {_.map(padNumbers, (row, rowIndex) => ( - - {_.map(row, (column, columnIndex) => { - // Adding margin between buttons except first column to - // avoid unccessary space before the first column. - const marginLeft = columnIndex > 0 ? styles.ml3 : {}; - return ( -