Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Audit][Implementation] - Reduce Redundant Operations #37200

Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
60ea1a1
perf: remove redundant translations
hurali97 Feb 26, 2024
22f0ffa
perf: only parse the number if it matches the pattern
hurali97 Feb 26, 2024
643c7e1
perf: return early if displayName exists
hurali97 Feb 27, 2024
c683db7
test: fix failing test for formatPhoneNumber
hurali97 Feb 27, 2024
454a9b2
refactor: move translations to utils
hurali97 Feb 27, 2024
eb8f26c
fix: linting
hurali97 Feb 27, 2024
34cd2e8
refactor: use regex and dedicated const for sms domain
hurali97 Feb 28, 2024
707f56c
refactor: remove allocating a variable and return the evaluated expre…
hurali97 Feb 28, 2024
f36550f
refactor: use single-line comments
hurali97 Feb 29, 2024
e02b55a
refactor: use default policy room chat types from CONST
hurali97 Mar 4, 2024
7cbca08
revert: bring back localize.translateLocal
hurali97 Mar 4, 2024
4df1d3d
feat: add cache for translated values in Localize
hurali97 Mar 4, 2024
a7bd7d1
Merge branch 'main' of https://github.com/callstack-internal/Expensif…
hurali97 Mar 4, 2024
55eb5d2
refactor: delete common translation utils
hurali97 Mar 4, 2024
e643960
refactor: avoid multiple cache lookups
hurali97 Mar 4, 2024
f3d6f1f
fix: lint
hurali97 Mar 4, 2024
1755560
refactor: use dedicated map for each locale
hurali97 Mar 6, 2024
99dd34c
refactor: remove setImmediate
hurali97 Mar 6, 2024
3ff2f9c
refactor: remove not needed variable
hurali97 Mar 11, 2024
70bd88f
refactor: use Map of Maps to hold the locales with translated phrases
hurali97 Mar 11, 2024
9fc04db
refactor: move cache mechanism to translate function
hurali97 Mar 12, 2024
ce18f61
Merge branch 'main' of https://github.com/callstack-internal/Expensif…
hurali97 Mar 14, 2024
e22c22b
refactor: use dedicated function to get translated phrase to avoid du…
hurali97 Mar 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/CONST.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ const KEYBOARD_SHORTCUT_NAVIGATION_TYPE = 'NAVIGATION_SHORTCUT';
const cardActiveStates: number[] = [2, 3, 4, 7];

const CONST = {
MERGED_ACCOUNT_PREFIX: 'MERGED_',
hurali97 marked this conversation as resolved.
Show resolved Hide resolved
SMS_DOMAIN_PATTERN: 'expensify.sms',
hurali97 marked this conversation as resolved.
Show resolved Hide resolved
ANDROID_PACKAGE_NAME,
ANIMATED_TRANSITION: 300,
ANIMATED_TRANSITION_FROM_VALUE: 100,
Expand Down
5 changes: 5 additions & 0 deletions src/libs/LocalePhoneNumber.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Str from 'expensify-common/lib/str';
import Onyx from 'react-native-onyx';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import {parsePhoneNumber} from './PhoneNumber';

Expand All @@ -18,6 +19,10 @@ function formatPhoneNumber(number: string): string {
return '';
}

// do not parse the string, if it's not a phone number
if (number.indexOf(CONST.SMS_DOMAIN_PATTERN) === -1) {
return number;
}
const numberWithoutSMSDomain = Str.removeSMSDomain(number);
const parsedPhoneNumber = parsePhoneNumber(numberWithoutSMSDomain);

Expand Down
9 changes: 7 additions & 2 deletions src/libs/PersonalDetailsUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@ Onyx.connect({
},
});

const hiddenText = Localize.translateLocal('common.hidden');
const substringStartIndex = 8;
function getDisplayNameOrDefault(passedPersonalDetails?: Partial<PersonalDetails> | null, defaultValue = '', shouldFallbackToHidden = true): string {
const displayName = passedPersonalDetails?.displayName ? passedPersonalDetails.displayName.replace(CONST.REGEX.MERGED_ACCOUNT_PREFIX, '') : '';
const fallbackValue = shouldFallbackToHidden ? Localize.translateLocal('common.hidden') : '';
let displayName = passedPersonalDetails?.displayName ?? '';
if (displayName.startsWith(CONST.MERGED_ACCOUNT_PREFIX)) {
hurali97 marked this conversation as resolved.
Show resolved Hide resolved
displayName = displayName.substring(substringStartIndex);
hurali97 marked this conversation as resolved.
Show resolved Hide resolved
}
const fallbackValue = shouldFallbackToHidden ? hiddenText : '';
hurali97 marked this conversation as resolved.
Show resolved Hide resolved
return displayName || defaultValue || fallbackValue;
}

Expand Down
23 changes: 15 additions & 8 deletions src/libs/ReportUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -575,17 +575,18 @@ function getPolicyType(report: OnyxEntry<Report>, policies: OnyxCollection<Polic
return policies?.[`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`]?.type ?? '';
}

const unavailableWorkspaceText = Localize.translateLocal('workspace.common.unavailable');
/**
* Get the policy name from a given report
*/
function getPolicyName(report: OnyxEntry<Report> | undefined | EmptyObject, returnEmptyIfNotFound = false, policy: OnyxEntry<Policy> | undefined = undefined): string {
const noPolicyFound = returnEmptyIfNotFound ? '' : Localize.translateLocal('workspace.common.unavailable');
const noPolicyFound = returnEmptyIfNotFound ? '' : unavailableWorkspaceText;
if (isEmptyObject(report)) {
return noPolicyFound;
}

if ((!allPolicies || Object.keys(allPolicies).length === 0) && !report?.policyName) {
return Localize.translateLocal('workspace.common.unavailable');
return unavailableWorkspaceText;
}
const finalPolicy = policy ?? allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`];

Expand Down Expand Up @@ -773,11 +774,12 @@ function isAnnounceRoom(report: OnyxEntry<Report>): boolean {
return getChatType(report) === CONST.REPORT.CHAT_TYPE.POLICY_ANNOUNCE;
}

const chatTypes = [CONST.REPORT.CHAT_TYPE.POLICY_ADMINS, CONST.REPORT.CHAT_TYPE.POLICY_ANNOUNCE, CONST.REPORT.CHAT_TYPE.DOMAIN_ALL];
hurali97 marked this conversation as resolved.
Show resolved Hide resolved
/**
* Whether the provided report is a default room
*/
function isDefaultRoom(report: OnyxEntry<Report>): boolean {
return [CONST.REPORT.CHAT_TYPE.POLICY_ADMINS, CONST.REPORT.CHAT_TYPE.POLICY_ANNOUNCE, CONST.REPORT.CHAT_TYPE.DOMAIN_ALL].some((type) => type === getChatType(report));
return chatTypes.some((type) => type === getChatType(report));
}

/**
Expand Down Expand Up @@ -1625,6 +1627,7 @@ function getPersonalDetailsForAccountID(accountID: number): Partial<PersonalDeta
);
}

const hiddenText = Localize.translateLocal('common.hidden');
/**
* Get the displayName for a single report participant.
*/
Expand All @@ -1646,7 +1649,7 @@ function getDisplayNameForParticipant(accountID?: number, shouldUseShortForm = f
const longName = PersonalDetailsUtils.getDisplayNameOrDefault(personalDetails, formattedLogin, shouldFallbackToHidden);

// If the user's personal details (first name) should be hidden, make sure we return "hidden" instead of the short name
if (shouldFallbackToHidden && longName === Localize.translateLocal('common.hidden')) {
if (shouldFallbackToHidden && longName === hiddenText) {
return longName;
}

Expand Down Expand Up @@ -2495,6 +2498,10 @@ function getAdminRoomInvitedParticipants(parentReportAction: ReportAction | Reco
return roomName ? `${verb} ${users} ${preposition} ${roomName}` : `${verb} ${users}`;
}

const deletedTaskText = Localize.translateLocal('parentReportAction.deletedTask');
const deletedMessageText = Localize.translateLocal('parentReportAction.deletedMessage');
const attachmentText = Localize.translateLocal('common.attachment');
const archivedText = Localize.translateLocal('common.archived');
/**
* Get the title for a report.
*/
Expand All @@ -2507,13 +2514,13 @@ function getReportName(report: OnyxEntry<Report>, policy: OnyxEntry<Policy> = nu
}

if (parentReportAction?.message?.[0]?.isDeletedParentAction) {
return Localize.translateLocal('parentReportAction.deletedMessage');
return deletedMessageText;
}

const isAttachment = ReportActionsUtils.isReportActionAttachment(!isEmptyObject(parentReportAction) ? parentReportAction : null);
const parentReportActionMessage = (parentReportAction?.message?.[0]?.text ?? '').replace(/(\r\n|\n|\r)/gm, ' ');
if (isAttachment && parentReportActionMessage) {
return `[${Localize.translateLocal('common.attachment')}]`;
return `[${attachmentText}]`;
}
if (
parentReportAction?.message?.[0]?.moderationDecision?.decision === CONST.MODERATION.MODERATOR_DECISION_PENDING_HIDE ||
Expand All @@ -2529,7 +2536,7 @@ function getReportName(report: OnyxEntry<Report>, policy: OnyxEntry<Policy> = nu
}

if (isTaskReport(report) && isCanceledTaskReport(report, parentReportAction)) {
return Localize.translateLocal('parentReportAction.deletedTask');
return deletedTaskText;
}

if (isChatRoom(report) || isTaskReport(report)) {
Expand All @@ -2545,7 +2552,7 @@ function getReportName(report: OnyxEntry<Report>, policy: OnyxEntry<Policy> = nu
}

if (isArchivedRoom(report)) {
formattedName += ` (${Localize.translateLocal('common.archived')})`;
formattedName += ` (${archivedText})`;
}

if (formattedName) {
Expand Down
Loading