From b10e8dea76a29bbc1fd75a3c4c48a7ff54b7f28a Mon Sep 17 00:00:00 2001 From: Akshaya Salvi Date: Fri, 10 Sep 2021 22:09:32 +0530 Subject: [PATCH 1/3] Added maxLength to IOU Amount field --- src/CONST.js | 1 + src/pages/iou/steps/IOUAmountPage.js | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/CONST.js b/src/CONST.js index e8c1c270fc4b..372d9616cdc0 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -355,6 +355,7 @@ const CONST = { PAYPAL_ME: 'PayPal.me', VENMO: 'Venmo', }, + AMOUNT_MAX_LENGTH: 14, }, GROWL: { diff --git a/src/pages/iou/steps/IOUAmountPage.js b/src/pages/iou/steps/IOUAmountPage.js index 971ca196c788..4c9a1a41d53d 100755 --- a/src/pages/iou/steps/IOUAmountPage.js +++ b/src/pages/iou/steps/IOUAmountPage.js @@ -119,10 +119,12 @@ class IOUAmountPage extends React.Component { return; } - this.setState((prevState) => { - const amount = `${prevState.amount}${key}`; - return this.validateAmount(amount) ? {amount} : prevState; - }); + if (this.state.amount.length < CONST.IOU.AMOUNT_MAX_LENGTH) { + this.setState((prevState) => { + const amount = `${prevState.amount}${key}`; + return this.validateAmount(amount) ? {amount} : prevState; + }); + } } /** @@ -171,6 +173,7 @@ class IOUAmountPage extends React.Component { ref={el => this.textInput = el} value={this.state.amount} placeholder="0" + maxLength={CONST.IOU.AMOUNT_MAX_LENGTH} /> )} From daf14eebdd9099bac4730a951c23a37741f206fd Mon Sep 17 00:00:00 2001 From: Akshaya Salvi Date: Sat, 11 Sep 2021 01:10:03 +0530 Subject: [PATCH 2/3] Changed if to early return --- src/pages/iou/steps/IOUAmountPage.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pages/iou/steps/IOUAmountPage.js b/src/pages/iou/steps/IOUAmountPage.js index 6c01462fedd9..7a5ee3d44de9 100755 --- a/src/pages/iou/steps/IOUAmountPage.js +++ b/src/pages/iou/steps/IOUAmountPage.js @@ -131,12 +131,14 @@ class IOUAmountPage extends React.Component { return; } - if (this.state.amount.length < CONST.IOU.AMOUNT_MAX_LENGTH) { - this.setState((prevState) => { - const amount = `${prevState.amount}${key}`; - return this.validateAmount(amount) ? {amount: this.stripCommaFromAmount(amount)} : prevState; - }); + if (this.state.amount.length === CONST.IOU.AMOUNT_MAX_LENGTH) { + return; } + + this.setState((prevState) => { + const amount = `${prevState.amount}${key}`; + return this.validateAmount(amount) ? {amount: this.stripCommaFromAmount(amount)} : prevState; + }); } /** From 17abf790a8e40e05dc2bc93ab94e80d6b8d9d112 Mon Sep 17 00:00:00 2001 From: Akshaya Salvi Date: Sat, 11 Sep 2021 12:42:18 +0530 Subject: [PATCH 3/3] Moved length check to validateAmount --- src/pages/iou/steps/IOUAmountPage.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/pages/iou/steps/IOUAmountPage.js b/src/pages/iou/steps/IOUAmountPage.js index 7a5ee3d44de9..b3b7b8655a87 100755 --- a/src/pages/iou/steps/IOUAmountPage.js +++ b/src/pages/iou/steps/IOUAmountPage.js @@ -101,7 +101,7 @@ class IOUAmountPage extends React.Component { */ validateAmount(amount) { const decimalNumberRegex = new RegExp(/^\d+(,\d+)*(\.\d{0,3})?$/, 'i'); - return amount === '' || decimalNumberRegex.test(amount); + return amount === '' || (decimalNumberRegex.test(amount) && amount.length <= CONST.IOU.AMOUNT_MAX_LENGTH); } /** @@ -131,10 +131,6 @@ class IOUAmountPage extends React.Component { return; } - if (this.state.amount.length === CONST.IOU.AMOUNT_MAX_LENGTH) { - return; - } - this.setState((prevState) => { const amount = `${prevState.amount}${key}`; return this.validateAmount(amount) ? {amount: this.stripCommaFromAmount(amount)} : prevState; @@ -187,7 +183,6 @@ class IOUAmountPage extends React.Component { ref={el => this.textInput = el} value={this.state.amount} placeholder="0" - maxLength={CONST.IOU.AMOUNT_MAX_LENGTH} /> )}