Skip to content

Commit 44b4136

Browse files
feat: Add default tag name constant and refine tag handling logic
1 parent 7fa20f5 commit 44b4136

5 files changed

Lines changed: 21 additions & 6 deletions

File tree

src/CONST/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3263,6 +3263,7 @@ const CONST = {
32633263
tags: {},
32643264
},
32653265
} as PolicyTagLists,
3266+
DEFAULT_TAG_NAME: 'Tag',
32663267
REQUIRE_RECEIPTS_OVER_OPTIONS: {
32673268
DEFAULT: 'default',
32683269
NEVER: 'never',

src/languages/en.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6945,7 +6945,7 @@ const translations = {
69456945
maxAge: ({maxAge}: ViolationsMaxAgeParams) => `Date older than ${maxAge} days`,
69466946
missingCategory: 'Missing category',
69476947
missingComment: 'Description required for selected category',
6948-
missingTag: ({tagName}: ViolationsMissingTagParams = {}) => `Missing ${tagName ?? 'Tag'}`,
6948+
missingTag: ({tagName}: ViolationsMissingTagParams = {}) => `Missing ${tagName ?? 'tag'}`,
69496949
modifiedAmount: ({type, displayPercentVariance}: ViolationsModifiedAmountParams) => {
69506950
switch (type) {
69516951
case 'distance':

src/libs/PolicyUtils.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,6 +513,16 @@ function escapeTagName(tag: string) {
513513
return tag?.replaceAll(CONST.COLON, '\\:');
514514
}
515515

516+
/**
517+
* Checks if a tag list name is the default 'Tag' name
518+
*/
519+
function isDefaultTagName(tagName: string | undefined): boolean {
520+
if (!tagName) {
521+
return false;
522+
}
523+
return tagName.trim().toLowerCase() === CONST.POLICY.DEFAULT_TAG_NAME.trim().toLowerCase();
524+
}
525+
516526
/**
517527
* Gets a count of enabled tags of a policy
518528
*/
@@ -1725,6 +1735,7 @@ export {
17251735
getPolicyEmployeeAccountIDs,
17261736
isMemberPolicyAdmin,
17271737
getActivePoliciesWithExpenseChatAndPerDiemEnabled,
1738+
isDefaultTagName,
17281739
};
17291740

17301741
export type {MemberEmailsToAccountIDs};

src/libs/Violations/ViolationsUtils.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import * as CurrencyUtils from '@libs/CurrencyUtils';
99
import DateUtils from '@libs/DateUtils';
1010
import {isReceiptError} from '@libs/ErrorUtils';
1111
import Parser from '@libs/Parser';
12-
import {getDistanceRateCustomUnitRate, getPerDiemRateCustomUnitRate, getSortedTagKeys, isTaxTrackingEnabled} from '@libs/PolicyUtils';
12+
import {getDistanceRateCustomUnitRate, getPerDiemRateCustomUnitRate, getSortedTagKeys, isDefaultTagName, isTaxTrackingEnabled} from '@libs/PolicyUtils';
1313
import * as TransactionUtils from '@libs/TransactionUtils';
1414
import {shouldShowViolation} from '@libs/TransactionUtils';
1515
import CONST from '@src/CONST';
@@ -38,7 +38,8 @@ function getTagViolationsForSingleLevelTags(
3838
// Add 'tagOutOfPolicy' violation if tag is not in policy
3939
if (!hasTagOutOfPolicyViolation && updatedTransaction.tag && !isTagInPolicy) {
4040
const tagName = policyTagList[policyTagListName]?.name;
41-
newTransactionViolations.push({name: CONST.VIOLATIONS.TAG_OUT_OF_POLICY, type: CONST.VIOLATION_TYPES.VIOLATION, data: {tagName}});
41+
const tagNameToShow = isDefaultTagName(tagName) ? undefined : tagName;
42+
newTransactionViolations.push({name: CONST.VIOLATIONS.TAG_OUT_OF_POLICY, type: CONST.VIOLATION_TYPES.VIOLATION, data: {tagName: tagNameToShow}});
4243
}
4344

4445
// Remove 'tagOutOfPolicy' violation if tag is in policy
@@ -54,7 +55,8 @@ function getTagViolationsForSingleLevelTags(
5455
// Add 'missingTag violation' if tag is required and not set
5556
if (!hasMissingTagViolation && !updatedTransaction.tag && policyRequiresTags) {
5657
const tagName = policyTagList[policyTagListName]?.name;
57-
newTransactionViolations.push({name: CONST.VIOLATIONS.MISSING_TAG, type: CONST.VIOLATION_TYPES.VIOLATION, data: {tagName}});
58+
const tagNameToShow = isDefaultTagName(tagName) ? undefined : tagName;
59+
newTransactionViolations.push({name: CONST.VIOLATIONS.MISSING_TAG, type: CONST.VIOLATION_TYPES.VIOLATION, data: {tagName: tagNameToShow}});
5860
}
5961
return newTransactionViolations;
6062
}

src/pages/iou/request/step/IOURequestStepTag.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
1616
import {setDraftSplitTransaction, setMoneyRequestTag, updateMoneyRequestTag} from '@libs/actions/IOU';
1717
import {insertTagIntoTransactionTagsString} from '@libs/IOUUtils';
1818
import Navigation from '@libs/Navigation/Navigation';
19-
import {getTagList, getTagListName, getTagLists, hasDependentTags as hasDependentTagsPolicyUtils, isPolicyAdmin} from '@libs/PolicyUtils';
19+
import {getTagList, getTagListName, getTagLists, hasDependentTags as hasDependentTagsPolicyUtils, isDefaultTagName, isPolicyAdmin} from '@libs/PolicyUtils';
2020
import type {OptionData} from '@libs/ReportUtils';
2121
import {hasEnabledTags} from '@libs/TagsOptionsListUtils';
2222
import {getTag, getTagArrayFromName, isExpenseUnreported} from '@libs/TransactionUtils';
@@ -59,6 +59,7 @@ function IOURequestStepTag({
5959

6060
const tagListIndex = Number(rawTagIndex);
6161
const policyTagListName = getTagListName(policyTags, tagListIndex);
62+
const tagListNameToShow = useMemo(() => (isDefaultTagName(policyTagListName) ? undefined : policyTagListName), [policyTagListName]);
6263

6364
const isEditing = action === CONST.IOU.ACTION.EDIT;
6465
const isSplitBill = iouType === CONST.IOU.TYPE.SPLIT;
@@ -175,7 +176,7 @@ function IOURequestStepTag({
175176
)}
176177
{!!shouldShowTag && (
177178
<>
178-
<Text style={[styles.ph5, styles.pv3]}>{translate('iou.tagSelection', {policyTagListName})}</Text>
179+
<Text style={[styles.ph5, styles.pv3]}>{translate('iou.tagSelection', {policyTagListName: tagListNameToShow})}</Text>
179180
<TagPicker
180181
policyID={policyID}
181182
tagListName={policyTagListName}

0 commit comments

Comments
 (0)