Skip to content

Commit cb53953

Browse files
authored
Merge pull request #81899 from Expensify/cm-update-card-assign-getCommentLength
Fix card name validation to match backend byte counting
2 parents 60ae3a7 + a583269 commit cb53953

File tree

6 files changed

+36
-26
lines changed

6 files changed

+36
-26
lines changed

src/pages/settings/Wallet/PersonalCardEditNamePage.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1414
import {getDefaultCardName} from '@libs/CardUtils';
1515
import {addErrorMessage} from '@libs/ErrorUtils';
1616
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
17-
import {getFieldRequiredErrors} from '@libs/ValidationUtils';
17+
import {getFieldRequiredErrors, isValidInputLength} from '@libs/ValidationUtils';
1818
import Navigation from '@navigation/Navigation';
1919
import type {SettingsNavigatorParamList} from '@navigation/types';
2020
import {updateAssignedCardName} from '@userActions/Card';
@@ -46,9 +46,11 @@ function PersonalCardEditNamePage({route}: PersonalCardEditNamePageProps) {
4646

4747
const validate = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.EDIT_PERSONAL_CARD_NAME_FORM>): FormInputErrors<typeof ONYXKEYS.FORMS.EDIT_PERSONAL_CARD_NAME_FORM> => {
4848
const errors = getFieldRequiredErrors(values, [INPUT_IDS.NAME], translate);
49-
const length = values.name.length;
50-
if (length > CONST.STANDARD_LENGTH_LIMIT) {
51-
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', length, CONST.STANDARD_LENGTH_LIMIT));
49+
if (values.name) {
50+
const {isValid, byteLength} = isValidInputLength(values.name, CONST.STANDARD_LENGTH_LIMIT);
51+
if (!isValid) {
52+
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', byteLength, CONST.STANDARD_LENGTH_LIMIT));
53+
}
5254
}
5355
return errors;
5456
};

src/pages/workspace/companyCards/WorkspaceCompanyCardEditCardNamePage.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import useWorkspaceAccountID from '@hooks/useWorkspaceAccountID';
1515
import {getCompanyCardFeed, getCompanyFeeds, getDomainOrWorkspaceAccountID} from '@libs/CardUtils';
1616
import {addErrorMessage} from '@libs/ErrorUtils';
1717
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
18-
import {getFieldRequiredErrors} from '@libs/ValidationUtils';
18+
import {getFieldRequiredErrors, isValidInputLength} from '@libs/ValidationUtils';
1919
import Navigation from '@navigation/Navigation';
2020
import type {SettingsNavigatorParamList} from '@navigation/types';
2121
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
@@ -50,9 +50,11 @@ function WorkspaceCompanyCardEditCardNamePage({route}: WorkspaceCompanyCardEditC
5050

5151
const validate = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.EDIT_WORKSPACE_COMPANY_CARD_NAME_FORM>): FormInputErrors<typeof ONYXKEYS.FORMS.EDIT_WORKSPACE_COMPANY_CARD_NAME_FORM> => {
5252
const errors = getFieldRequiredErrors(values, [INPUT_IDS.NAME], translate);
53-
const length = values.name.length;
54-
if (length > CONST.STANDARD_LENGTH_LIMIT) {
55-
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', length, CONST.STANDARD_LENGTH_LIMIT));
53+
if (values.name) {
54+
const {isValid, byteLength} = isValidInputLength(values.name, CONST.STANDARD_LENGTH_LIMIT);
55+
if (!isValid) {
56+
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', byteLength, CONST.STANDARD_LENGTH_LIMIT));
57+
}
5658
}
5759
return errors;
5860
};

src/pages/workspace/companyCards/addNew/CardNameStep.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import useLocalize from '@hooks/useLocalize';
1111
import useOnyx from '@hooks/useOnyx';
1212
import useThemeStyles from '@hooks/useThemeStyles';
1313
import {addErrorMessage} from '@libs/ErrorUtils';
14-
import {getFieldRequiredErrors} from '@libs/ValidationUtils';
14+
import {getFieldRequiredErrors, isValidInputLength} from '@libs/ValidationUtils';
1515
import {setAddNewCompanyCardStepAndData} from '@userActions/CompanyCards';
1616
import CONST from '@src/CONST';
1717
import ONYXKEYS from '@src/ONYXKEYS';
@@ -25,9 +25,11 @@ function CardNameStep() {
2525

2626
const validate = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.ADD_NEW_CARD_FEED_FORM>): FormInputErrors<typeof ONYXKEYS.FORMS.ADD_NEW_CARD_FEED_FORM> => {
2727
const errors = getFieldRequiredErrors(values, [INPUT_IDS.CARD_TITLE], translate);
28-
const length = values.cardTitle.length;
29-
if (length > CONST.STANDARD_LENGTH_LIMIT) {
30-
addErrorMessage(errors, INPUT_IDS.CARD_TITLE, translate('common.error.characterLimitExceedCounter', length, CONST.STANDARD_LENGTH_LIMIT));
28+
if (values.cardTitle) {
29+
const {isValid, byteLength} = isValidInputLength(values.cardTitle, CONST.STANDARD_LENGTH_LIMIT);
30+
if (!isValid) {
31+
addErrorMessage(errors, INPUT_IDS.CARD_TITLE, translate('common.error.characterLimitExceedCounter', byteLength, CONST.STANDARD_LENGTH_LIMIT));
32+
}
3133
}
3234
return errors;
3335
};

src/pages/workspace/companyCards/assignCard/CardNameStep.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1313
import {addErrorMessage} from '@libs/ErrorUtils';
1414
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
1515
import type {SettingsNavigatorParamList} from '@libs/Navigation/types';
16-
import {getFieldRequiredErrors} from '@libs/ValidationUtils';
16+
import {getFieldRequiredErrors, isValidInputLength} from '@libs/ValidationUtils';
1717
import Navigation from '@navigation/Navigation';
1818
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
1919
import {setAssignCardStepAndData} from '@userActions/CompanyCards';
@@ -46,12 +46,12 @@ function CardNameStep({route}: CardNameStepProps) {
4646

4747
const validate = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.EDIT_WORKSPACE_COMPANY_CARD_NAME_FORM>): FormInputErrors<typeof ONYXKEYS.FORMS.EDIT_WORKSPACE_COMPANY_CARD_NAME_FORM> => {
4848
const errors = getFieldRequiredErrors(values, [INPUT_IDS.NAME], translate);
49-
const length = values.name.length;
50-
51-
if (length > CONST.STANDARD_LENGTH_LIMIT) {
52-
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', length, CONST.STANDARD_LENGTH_LIMIT));
49+
if (values.name) {
50+
const {isValid, byteLength} = isValidInputLength(values.name, CONST.STANDARD_LENGTH_LIMIT);
51+
if (!isValid) {
52+
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', byteLength, CONST.STANDARD_LENGTH_LIMIT));
53+
}
5354
}
54-
5555
return errors;
5656
};
5757

src/pages/workspace/expensifyCard/WorkspaceEditCardNamePage.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {updateExpensifyCardTitle} from '@libs/actions/Card';
1414
import {filterInactiveCards} from '@libs/CardUtils';
1515
import {addErrorMessage} from '@libs/ErrorUtils';
1616
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
17-
import {getFieldRequiredErrors} from '@libs/ValidationUtils';
17+
import {getFieldRequiredErrors, isValidInputLength} from '@libs/ValidationUtils';
1818
import Navigation from '@navigation/Navigation';
1919
import type {SettingsNavigatorParamList} from '@navigation/types';
2020
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
@@ -54,9 +54,11 @@ function WorkspaceEditCardNamePage({route}: WorkspaceEditCardNamePageProps) {
5454

5555
const validate = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_NAME_FORM>): FormInputErrors<typeof ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_NAME_FORM> => {
5656
const errors = getFieldRequiredErrors(values, [INPUT_IDS.NAME], translate);
57-
const length = values.name.length;
58-
if (length > CONST.STANDARD_LENGTH_LIMIT) {
59-
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', length, CONST.STANDARD_LENGTH_LIMIT));
57+
if (values.name) {
58+
const {isValid, byteLength} = isValidInputLength(values.name, CONST.STANDARD_LENGTH_LIMIT);
59+
if (!isValid) {
60+
addErrorMessage(errors, INPUT_IDS.NAME, translate('common.error.characterLimitExceedCounter', byteLength, CONST.STANDARD_LENGTH_LIMIT));
61+
}
6062
}
6163
return errors;
6264
};

src/pages/workspace/expensifyCard/issueNew/CardNameStep.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1313
import {getDefaultCardName} from '@libs/CardUtils';
1414
import {addErrorMessage} from '@libs/ErrorUtils';
1515
import {getUserNameByEmail} from '@libs/PersonalDetailsUtils';
16-
import {getFieldRequiredErrors} from '@libs/ValidationUtils';
16+
import {getFieldRequiredErrors, isValidInputLength} from '@libs/ValidationUtils';
1717
import {setIssueNewCardStepAndData} from '@userActions/Card';
1818
import CONST from '@src/CONST';
1919
import ONYXKEYS from '@src/ONYXKEYS';
@@ -47,9 +47,11 @@ function CardNameStep({policyID, stepNames, startStepIndex}: CardNameStepProps)
4747

4848
const validate = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.ISSUE_NEW_EXPENSIFY_CARD_FORM>): FormInputErrors<typeof ONYXKEYS.FORMS.ISSUE_NEW_EXPENSIFY_CARD_FORM> => {
4949
const errors = getFieldRequiredErrors(values, [INPUT_IDS.CARD_TITLE], translate);
50-
const length = values.cardTitle.length;
51-
if (length > CONST.STANDARD_LENGTH_LIMIT) {
52-
addErrorMessage(errors, INPUT_IDS.CARD_TITLE, translate('common.error.characterLimitExceedCounter', length, CONST.STANDARD_LENGTH_LIMIT));
50+
if (values.cardTitle) {
51+
const {isValid, byteLength} = isValidInputLength(values.cardTitle, CONST.STANDARD_LENGTH_LIMIT);
52+
if (!isValid) {
53+
addErrorMessage(errors, INPUT_IDS.CARD_TITLE, translate('common.error.characterLimitExceedCounter', byteLength, CONST.STANDARD_LENGTH_LIMIT));
54+
}
5355
}
5456
return errors;
5557
};

0 commit comments

Comments
 (0)