Skip to content

Commit f7de4ab

Browse files
committed
Merge branches 'jasper-securePrivatePersonalDetails-redo' and 'main' of github.com:Expensify/App into jasper-securePrivatePersonalDetails-redo
2 parents 7210618 + c7a4859 commit f7de4ab

495 files changed

Lines changed: 15051 additions & 4651 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ This is a checklist for PR authors. Please make sure to complete all tasks and c
9191
- [ ] I verified that comments were added to code that is not self explanatory
9292
- [ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
9393
- [ ] I verified any copy / text shown in the product is localized by adding it to `src/languages/*` files and using the [translation method](https://github.com/Expensify/App/blob/4510fc76bbf5df699a2575bfb49a276af90f3ed7/src/components/LocaleContextProvider.tsx#L80)
94-
- [ ] If any non-english text was added/modified, I used [JaimeGPT](https://chatgpt.com/g/g-2dgOQl5VM-english-to-spanish-translator-aka-jaimegpt) to get English > Spanish translation. I then posted it in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
9594
- [ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the [localization methods](https://github.com/Expensify/App/blob/4510fc76bbf5df699a2575bfb49a276af90f3ed7/src/components/LocaleContextProvider.tsx#L116-L123)
9695
- [ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
9796
- [ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
@@ -155,4 +154,4 @@ This is a checklist for PR authors. Please make sure to complete all tasks and c
155154

156155
<!-- add screenshots or videos here -->
157156

158-
</details>
157+
</details>

.github/workflows/buildWeb.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ on:
3030
jobs:
3131
build:
3232
name: Build Web
33-
runs-on: blacksmith-32vcpu-ubuntu-2404
33+
runs-on: blacksmith-8vcpu-ubuntu-2404
3434
outputs:
3535
TAR_FILENAME: webBuild.tar.gz
3636
ZIP_FILENAME: webBuild.zip

.github/workflows/reassurePerformanceTests.yml

Lines changed: 73 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -7,62 +7,91 @@ on:
77
paths-ignore: [docs/**, help/**, .github/**, contributingGuides/**, tests/**, '**.md', '**.sh']
88

99
jobs:
10-
perf-tests:
10+
baseline-perf-tests:
11+
if: ${{ github.actor != 'OSBotify' }}
12+
runs-on: blacksmith-4vcpu-ubuntu-2404
13+
steps:
14+
- name: Checkout baseline branch
15+
# v1
16+
uses: useblacksmith/checkout@41cdeedae8edb2e684ba22896a5fd2a3cb85db6b
17+
18+
- name: Checkout baseline branch
19+
shell: bash
20+
run: |
21+
set -e
22+
BASELINE_BRANCH=${BASELINE_BRANCH:="main"}
23+
git fetch origin "$BASELINE_BRANCH" --no-tags
24+
git checkout --force --detach "origin/$BASELINE_BRANCH" --no-recurse-submodules
25+
26+
- name: Setup NodeJS
27+
uses: ./.github/actions/composite/setupNode
28+
29+
- name: Run baseline performance tests
30+
shell: bash
31+
run: NODE_OPTIONS=--experimental-vm-modules npx reassure --baseline
32+
33+
- name: Upload baseline performance results
34+
# v6
35+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
36+
with:
37+
name: reassure-baseline-results
38+
path: ./.reassure/baseline.perf
39+
include-hidden-files: true
40+
41+
branch-perf-tests:
1142
if: ${{ github.actor != 'OSBotify' }}
1243
runs-on: blacksmith-4vcpu-ubuntu-2404
1344
steps:
1445
- name: Checkout
46+
# v1
47+
uses: useblacksmith/checkout@41cdeedae8edb2e684ba22896a5fd2a3cb85db6b
48+
49+
- name: Setup NodeJS
50+
uses: ./.github/actions/composite/setupNode
51+
52+
- name: Run branch performance tests
53+
shell: bash
54+
env:
55+
BRANCH: ${{ github.head_ref }}
56+
COMMIT_HASH: ${{ github.event.pull_request.head.sha }}
57+
run: NODE_OPTIONS=--experimental-vm-modules npx reassure --branch="$BRANCH" --commit-hash="$COMMIT_HASH" --no-compare
58+
59+
- name: Upload branch performance results
1560
# v6
16-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
61+
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
1762
with:
18-
fetch-depth: 0
63+
name: reassure-branch-results
64+
path: ./.reassure/current.perf
65+
include-hidden-files: true
66+
67+
validate-perf-tests:
68+
if: ${{ github.actor != 'OSBotify' }}
69+
runs-on: blacksmith-4vcpu-ubuntu-2404
70+
needs: [baseline-perf-tests, branch-perf-tests]
71+
steps:
72+
- name: Checkout
73+
# v1
74+
uses: useblacksmith/checkout@41cdeedae8edb2e684ba22896a5fd2a3cb85db6b
1975

2076
- name: Setup NodeJS
2177
uses: ./.github/actions/composite/setupNode
2278

23-
- name: Set dummy git credentials
24-
run: |
25-
git config --global user.email "test@test.com"
26-
git config --global user.name "Test"
79+
- name: Download baseline performance results
80+
# v7
81+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
82+
with:
83+
name: reassure-baseline-results
84+
path: ./.reassure
2785

28-
- name: Get common ancestor commit
29-
run: |
30-
git fetch origin main
31-
common_ancestor=$(git merge-base "${{ github.sha }}" origin/main)
32-
echo "COMMIT_HASH=$common_ancestor" >> "$GITHUB_ENV"
86+
- name: Download branch performance results
87+
# v7
88+
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
89+
with:
90+
name: reassure-branch-results
91+
path: ./.reassure
3392

34-
- name: Clean up deleted files
35-
run: |
36-
DELETED_FILES=$(git diff --name-only --diff-filter=D "$COMMIT_HASH" "${{ github.sha }}")
37-
for file in $DELETED_FILES; do
38-
if [ -n "$file" ]; then
39-
rm -f "$file"
40-
echo "Deleted file: $file"
41-
fi
42-
done
43-
- name: Capture PR head SHA
44-
if: ${{ github.event_name == 'pull_request' }}
45-
run: echo "PR_SHA=${{ github.event.pull_request.head.sha }}" >> "$GITHUB_ENV"
46-
47-
- name: Run performance testing script
48-
shell: bash
49-
run: |
50-
set -e
51-
BASELINE_BRANCH=${BASELINE_BRANCH:="main"}
52-
git fetch origin "$BASELINE_BRANCH" --no-tags --depth=1
53-
54-
git checkout --force --detach "origin/$BASELINE_BRANCH" --no-recurse-submodules
55-
npm install --force || (rm -rf node_modules && npm install --force)
56-
NODE_OPTIONS=--experimental-vm-modules npx reassure --baseline
57-
58-
git checkout --force --detach "${PR_SHA:-${GITHUB_SHA}}" --no-recurse-submodules
59-
60-
if ! git merge --no-commit --allow-unrelated-histories "$BASELINE_BRANCH" -X ours; then
61-
git checkout --ours .
62-
fi
63-
64-
npm install --force || (rm -rf node_modules && npm install --force)
65-
NODE_OPTIONS=--experimental-vm-modules npx reassure --branch
93+
- name: Compare performance results
94+
run: node -e "require('@callstack/reassure-compare').compare().catch((error) => { console.error(error); process.exit(1); })"
6695

6796
- name: Validate output.json
6897
id: validateReassureOutput

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ concurrency:
1414
jobs:
1515
jest:
1616
if: ${{ github.event.head_commit.author.name != 'OSBotify' && github.event.head_commit.author.name != 'imgbot[bot]' || github.event_name == 'workflow_call' }}
17-
runs-on: blacksmith-4vcpu-ubuntu-2404
17+
runs-on: blacksmith-8vcpu-ubuntu-2404
1818
env:
1919
CI: true
2020
NODE_OPTIONS: "--experimental-vm-modules --max-old-space-size=8192"

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ android {
111111
minSdkVersion rootProject.ext.minSdkVersion
112112
targetSdkVersion rootProject.ext.targetSdkVersion
113113
multiDexEnabled rootProject.ext.multiDexEnabled
114-
versionCode 1009037800
115-
versionName "9.3.78-0"
114+
versionCode 1009037904
115+
versionName "9.3.79-4"
116116
// Supported language variants must be declared here to avoid from being removed during the compilation.
117117
// This also helps us to not include unnecessary language variants in the APK.
118118
resConfigs "en", "es"

assets/images/multifactorAuthentication/card-reader.svg

Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

config/eslint/eslint.seatbelt.tsv

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"../../src/Expensify.tsx" "react-hooks/set-state-in-effect" 1
1919
"../../src/GlobalModals.tsx" "no-restricted-syntax" 2
2020
"../../src/ONYXKEYS.ts" "no-restricted-syntax" 2
21-
"../../src/ROUTES.ts" "@typescript-eslint/no-deprecated/getUrlWithBackToParam" 171
21+
"../../src/ROUTES.ts" "@typescript-eslint/no-deprecated/getUrlWithBackToParam" 160
2222
"../../src/components/AccountingConnectionConfirmationModal.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
2323
"../../src/components/ActionSheetAwareScrollView/useActionSheetAwareScrollViewRef.ts" "react-hooks/immutability" 1
2424
"../../src/components/ActionSheetAwareScrollView/useActionSheetKeyboardSpacing.ts" "@typescript-eslint/no-deprecated/useScrollViewOffset" 1
@@ -199,7 +199,6 @@
199199
"../../src/components/VideoPlayer/BaseVideoPlayer.tsx" "no-restricted-syntax" 1
200200
"../../src/components/VideoPlayer/BaseVideoPlayer.tsx" "react-hooks/refs" 13
201201
"../../src/components/VideoPlayer/BaseVideoPlayer.tsx" "react-hooks/set-state-in-effect" 2
202-
"../../src/components/WalletStatementModal/index.tsx" "@typescript-eslint/no-deprecated/frameBorder" 1
203202
"../../src/components/WideRHPContextProvider/useShouldRenderOverlay.ts" "react-hooks/set-state-in-effect" 1
204203
"../../src/components/ZeroWidthView/index.tsx" "no-restricted-syntax" 2
205204
"../../src/hooks/useAnimatedHighlightStyle/index.ts" "react-hooks/set-state-in-effect" 2
@@ -224,16 +223,14 @@
224223
"../../src/hooks/useNewTransactions.ts" "react-hooks/refs" 2
225224
"../../src/hooks/useOutstandingBalanceGuard.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
226225
"../../src/hooks/usePaymentOptions.ts" "react-hooks/refs" 1
227-
"../../src/hooks/usePersonalDetailSearchSelector/index.native.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
228226
"../../src/hooks/usePrevious.ts" "react-hooks/refs" 1
229227
"../../src/hooks/useProactiveAppReview.ts" "react-hooks/purity" 1
230228
"../../src/hooks/useRestoreInputFocus/index.android.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
231229
"../../src/hooks/useReviewDuplicatesNavigation.tsx" "react-hooks/set-state-in-effect" 1
232230
"../../src/hooks/useSearchBulkActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 5
233231
"../../src/hooks/useSearchBulkActions.ts" "react-hooks/exhaustive-deps" 1
234232
"../../src/hooks/useSearchBulkActions.ts" "react-hooks/preserve-manual-memoization" 2
235-
"../../src/hooks/useSearchHighlightAndScroll.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
236-
"../../src/hooks/useSearchSelector/index.native.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
233+
"../../src/hooks/useSearchHighlightAndScroll.ts" "no-restricted-imports" 1
237234
"../../src/hooks/useSelectionModeReportActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 2
238235
"../../src/hooks/useSidebarOrderedReports.tsx" "react-hooks/purity" 1
239236
"../../src/hooks/useSidebarOrderedReports.tsx" "react-hooks/refs" 5
@@ -251,7 +248,6 @@
251248
"../../src/libs/CurrencyUtils.ts" "rulesdir/no-onyx-connect" 1
252249
"../../src/libs/Environment/betaChecker/index.android.ts" "no-restricted-syntax" 1
253250
"../../src/libs/ErrorUtils.ts" "@typescript-eslint/no-deprecated/translateLocal" 1
254-
"../../src/libs/Fullstory/index.ts" "no-restricted-syntax" 1
255251
"../../src/libs/KeyboardShortcut/isEnterWhileComposition.ts" "@typescript-eslint/no-deprecated/event.keyCode" 1
256252
"../../src/libs/KeyboardShortcut/isEnterWhileComposition.ts" "no-restricted-syntax" 1
257253
"../../src/libs/LocalePhoneNumber.ts" "rulesdir/no-onyx-connect" 1
@@ -294,8 +290,8 @@
294290
"../../src/libs/Parser.ts" "rulesdir/no-onyx-connect" 2
295291
"../../src/libs/PersonalDetailsUtils.ts" "@typescript-eslint/no-deprecated/translateLocal" 3
296292
"../../src/libs/PersonalDetailsUtils.ts" "rulesdir/no-onyx-connect" 2
297-
"../../src/libs/Pusher/index.native.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
298-
"../../src/libs/Pusher/index.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
293+
"../../src/libs/Pusher/index.native.ts" "no-restricted-imports" 1
294+
"../../src/libs/Pusher/index.ts" "no-restricted-imports" 1
299295
"../../src/libs/ReceiptUploadRetryHandler/handleFileRetry.ts" "no-restricted-syntax" 1
300296
"../../src/libs/ReportActionItemEventHandler/index.android.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
301297
"../../src/libs/ReportActionsUtils.ts" "@typescript-eslint/no-deprecated/reportAction.sequenceNumber" 1
@@ -306,7 +302,7 @@
306302
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/getReportName" 3
307303
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/getSearchReportName" 1
308304
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/translateLocal" 43
309-
"../../src/libs/ReportUtils.ts" "rulesdir/no-onyx-connect" 17
305+
"../../src/libs/ReportUtils.ts" "rulesdir/no-onyx-connect" 16
310306
"../../src/libs/SearchUIUtils.ts" "@typescript-eslint/no-deprecated/getSearchReportName" 1
311307
"../../src/libs/SubscriptionUtils.ts" "rulesdir/no-onyx-connect" 1
312308
"../../src/libs/TransactionUtils/index.ts" "@typescript-eslint/no-deprecated/translateLocal" 5
@@ -416,7 +412,6 @@
416412
"../../src/libs/actions/Transaction.ts" "rulesdir/no-onyx-connect" 3
417413
"../../src/libs/actions/Travel.ts" "no-restricted-syntax" 1
418414
"../../src/libs/actions/TravelInvoicing.ts" "no-restricted-syntax" 3
419-
"../../src/libs/actions/TwoFactorAuthActions.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
420415
"../../src/libs/actions/UnreportedExpenses.tsx" "no-restricted-syntax" 1
421416
"../../src/libs/actions/User.ts" "no-restricted-syntax" 8
422417
"../../src/libs/actions/VacationDelegate.ts" "no-restricted-syntax" 2
@@ -515,7 +510,7 @@
515510
"../../src/pages/inbox/report/ReportActionsList.tsx" "react-hooks/refs" 5
516511
"../../src/pages/inbox/report/ReportActionsList.tsx" "react-hooks/set-state-in-effect" 3
517512
"../../src/pages/inbox/report/TripSummary.tsx" "rulesdir/no-default-id-values" 1
518-
"../../src/pages/inbox/report/UserTypingEventListener.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 4
513+
"../../src/pages/inbox/report/UserTypingEventListener.tsx" "no-restricted-imports" 1
519514
"../../src/pages/inbox/report/shouldUseEmojiPickerSelection/index.web.ts" "no-restricted-syntax" 1
520515
"../../src/pages/inbox/report/useReportActionsNewActionLiveTail.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
521516
"../../src/pages/inbox/report/withReportOrNotFound.tsx" "react-hooks/refs" 3
@@ -524,7 +519,6 @@
524519
"../../src/pages/iou/SplitExpenseEditPage.tsx" "react-hooks/preserve-manual-memoization" 3
525520
"../../src/pages/iou/SplitExpensePage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
526521
"../../src/pages/iou/SplitExpensePage.tsx" "react-hooks/set-state-in-effect" 3
527-
"../../src/pages/iou/request/ParticipantSearchResults.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
528522
"../../src/pages/iou/request/step/IOURequestEditReportCommon.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
529523
"../../src/pages/iou/request/step/IOURequestStepAmount.tsx" "react-hooks/set-state-in-effect" 1
530524
"../../src/pages/iou/request/step/IOURequestStepCategory.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
@@ -562,6 +556,7 @@
562556
"../../src/pages/settings/Security/MergeAccounts/AccountDetailsPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 3
563557
"../../src/pages/settings/Security/MergeAccounts/AccountValidatePage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
564558
"../../src/pages/settings/Security/MergeAccounts/MergeResultPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
559+
"../../src/pages/settings/Security/TwoFactorAuth/DynamicVerifyPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
565560
"../../src/pages/settings/Security/TwoFactorAuth/ReplaceDeviceVerifyNewPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
566561
"../../src/pages/settings/Security/TwoFactorAuth/VerifyPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
567562
"../../src/pages/settings/Subscription/CardAuthenticationModal/index.tsx" "react-hooks/set-state-in-effect" 1
@@ -651,8 +646,6 @@
651646
"../../src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
652647
"../../src/pages/workspace/expensifyCard/WorkspaceEditCardLimitTypePage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
653648
"../../src/pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 2
654-
"../../src/pages/workspace/hr/WorkspaceHRPage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
655-
"../../src/pages/workspace/hr/gusto/GustoApprovalModePage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
656649
"../../src/pages/workspace/members/ImportMembersPage.tsx" "no-restricted-syntax" 1
657650
"../../src/pages/workspace/members/ImportMembersPage.tsx" "rulesdir/no-default-id-values" 1
658651
"../../src/pages/workspace/members/ImportedMembersConfirmationPage.tsx" "react-hooks/refs" 7

config/webpack/webpack.common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
181181
new PreloadWebpackPlugin({
182182
rel: 'preload',
183183
as: 'font',
184-
fileWhitelist: [/\.woff2|ttf$/],
184+
fileWhitelist: [/^(?!.*seguiemj).*\.(woff2|ttf)$/],
185185
include: 'allAssets',
186186
}),
187187
new PreloadWebpackPlugin({

0 commit comments

Comments
 (0)