From bfcdec4f13fe51f12b724e4d40d15e4d63b3a31a Mon Sep 17 00:00:00 2001
From: OSBotify <76178356+OSBotify@users.noreply.github.com>
Date: Wed, 9 Feb 2022 08:31:18 -0800
Subject: [PATCH 1/2] Merge pull request #7650 from
Expensify/version-BUILD-1923c3db36cf02ad5627c2a57b85ae2fd7e3be1e
(cherry picked from commit 9810834ef7f8295707bcd72420c1b551c916df4c)
---
android/app/build.gradle | 4 ++--
ios/NewExpensify/Info.plist | 2 +-
ios/NewExpensifyTests/Info.plist | 2 +-
package-lock.json | 2 +-
package.json | 2 +-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 7083912d3a78..ef5a3efb1c08 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -152,8 +152,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
- versionCode 1001013701
- versionName "1.1.37-1"
+ versionCode 1001013702
+ versionName "1.1.37-2"
}
splits {
abi {
diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist
index 508f7b6a7820..9be2768eaa62 100644
--- a/ios/NewExpensify/Info.plist
+++ b/ios/NewExpensify/Info.plist
@@ -31,7 +31,7 @@
CFBundleVersion
- 1.1.37.1
+ 1.1.37.2
ITSAppUsesNonExemptEncryption
LSApplicationQueriesSchemes
diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist
index 12f5e3c66620..0188d71d7cf4 100644
--- a/ios/NewExpensifyTests/Info.plist
+++ b/ios/NewExpensifyTests/Info.plist
@@ -19,6 +19,6 @@
CFBundleSignature
????
CFBundleVersion
- 1.1.37.1
+ 1.1.37.2
diff --git a/package-lock.json b/package-lock.json
index ff2dab13db05..68c95a7c7c68 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "1.1.37-1",
+ "version": "1.1.37-2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 92ea9088c04c..0c2eb6b08fa9 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "1.1.37-1",
+ "version": "1.1.37-2",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
From cd91aa53b2cb331d1b28815f42e4feb0ee649120 Mon Sep 17 00:00:00 2001
From: Carlos Martins
Date: Wed, 9 Feb 2022 13:28:03 -0300
Subject: [PATCH 2/2] Merge pull request #7649 from
Expensify/tgolen-fire-infiniteloops
Optimize loops in formatting personal details
(cherry picked from commit 1923c3db36cf02ad5627c2a57b85ae2fd7e3be1e)
---
src/CONST.js | 1 +
src/libs/actions/PersonalDetails.js | 50 ++++++++++++++++-------------
2 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/src/CONST.js b/src/CONST.js
index 1a86d93f7e2c..e2d301cc0c56 100755
--- a/src/CONST.js
+++ b/src/CONST.js
@@ -282,6 +282,7 @@ const CONST = {
HOMEPAGE_REPORTS_LOADED: 'homepage_reports_loaded',
SWITCH_REPORT: 'switch_report',
SIDEBAR_LOADED: 'sidebar_loaded',
+ PERSONAL_DETAILS_FORMATTED: 'personal_details_formatted',
COLD: 'cold',
REPORT_ACTION_ITEM_LAYOUT_DEBOUNCE_TIME: 1500,
TOOLTIP_SENSE: 1000,
diff --git a/src/libs/actions/PersonalDetails.js b/src/libs/actions/PersonalDetails.js
index 22453fcd4ee9..d21475511faa 100644
--- a/src/libs/actions/PersonalDetails.js
+++ b/src/libs/actions/PersonalDetails.js
@@ -12,6 +12,7 @@ import * as ReportUtils from '../reportUtils';
import * as OptionsListUtils from '../OptionsListUtils';
import Growl from '../Growl';
import * as Localize from '../Localize';
+import Timing from './Timing';
let currentUserEmail = '';
Onyx.connect({
@@ -82,32 +83,37 @@ function getMaxCharacterError(isError) {
* @return {Object}
*/
function formatPersonalDetails(personalDetailsList) {
- return _.reduce(personalDetailsList, (finalObject, personalDetailsResponse, login) => {
+ Timing.start(CONST.TIMING.PERSONAL_DETAILS_FORMATTED);
+ const formattedResult = {};
+
+ // This method needs to be SUPER PERFORMANT because it can be called with a massive list of logins depending on the policies that someone belongs to
+ // eslint-disable-next-line rulesdir/prefer-underscore-method
+ Object.keys(personalDetailsList).forEach((login) => {
+ const personalDetailsResponse = personalDetailsList[login];
+
// Form the details into something that has all the data in an easy to use format.
const avatar = getAvatar(personalDetailsResponse, login);
const displayName = getDisplayName(login, personalDetailsResponse);
- const pronouns = lodashGet(personalDetailsResponse, 'pronouns', '');
- const timezone = lodashGet(personalDetailsResponse, 'timeZone', CONST.DEFAULT_TIME_ZONE);
- const firstName = lodashGet(personalDetailsResponse, 'firstName', '');
- const lastName = lodashGet(personalDetailsResponse, 'lastName', '');
- const payPalMeAddress = lodashGet(personalDetailsResponse, 'expensify_payPalMeAddress', '');
- const phoneNumber = lodashGet(personalDetailsResponse, 'phoneNumber', '');
-
- return {
- ...finalObject,
- [login]: {
- login,
- avatar,
- displayName,
- firstName,
- lastName,
- pronouns,
- timezone,
- payPalMeAddress,
- phoneNumber,
- },
+ const pronouns = personalDetailsResponse.pronouns || '';
+ const timezone = personalDetailsResponse.timeZone || CONST.DEFAULT_TIME_ZONE;
+ const firstName = personalDetailsResponse.firstName || '';
+ const lastName = personalDetailsResponse.lastName || '';
+ const payPalMeAddress = personalDetailsResponse.expensify_payPalMeAddress || '';
+ const phoneNumber = personalDetailsResponse.phoneNumber || '';
+ formattedResult[login] = {
+ login,
+ avatar,
+ displayName,
+ firstName,
+ lastName,
+ pronouns,
+ timezone,
+ payPalMeAddress,
+ phoneNumber,
};
- }, {});
+ });
+ Timing.end(CONST.TIMING.PERSONAL_DETAILS_FORMATTED);
+ return formattedResult;
}
/**