Skip to content

Commit 600eeae

Browse files
committed
Merge branch 'main' into fix/73763-add-business-bank-account-opens-personal-bank-account-flow
2 parents 556b607 + fbed79d commit 600eeae

File tree

642 files changed

+12319
-5703
lines changed

Some content is hidden

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

642 files changed

+12319
-5703
lines changed

.claude/agents/code-inline-reviewer.md

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -198,39 +198,6 @@ memo(ReportActionItem, (prevProps, nextProps) =>
198198
)
199199
```
200200

201-
---
202-
203-
### [PERF-6] Use specific properties as hook dependencies
204-
205-
- **Search patterns**: `useEffect`, `useMemo`, `useCallback` dependency arrays
206-
207-
- **Condition**: In `useEffect`, `useMemo`, and `useCallback`, specify individual object properties as dependencies instead of passing entire objects.
208-
- **Reasoning**: Passing entire objects as dependencies causes hooks to re-execute whenever any property changes, even unrelated ones. Specifying individual properties creates more granular dependency tracking, reducing unnecessary hook executions and improving performance predictability.
209-
210-
Good:
211-
212-
```tsx
213-
const {amountColumnSize, dateColumnSize, taxAmountColumnSize} = useMemo(() => {
214-
return {
215-
amountColumnSize: transactionItem.isAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
216-
taxAmountColumnSize: transactionItem.isTaxAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
217-
dateColumnSize: transactionItem.shouldShowYear ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
218-
};
219-
}, [transactionItem.isAmountColumnWide, transactionItem.isTaxAmountColumnWide, transactionItem.shouldShowYear]);
220-
```
221-
222-
Bad:
223-
224-
```tsx
225-
const {amountColumnSize, dateColumnSize, taxAmountColumnSize} = useMemo(() => {
226-
return {
227-
amountColumnSize: transactionItem.isAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
228-
taxAmountColumnSize: transactionItem.isTaxAmountColumnWide ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
229-
dateColumnSize: transactionItem.shouldShowYear ? CONST.SEARCH.TABLE_COLUMN_SIZES.WIDE : CONST.SEARCH.TABLE_COLUMN_SIZES.NORMAL,
230-
};
231-
}, [transactionItem]);
232-
```
233-
234201
## Instructions
235202

236203
1. **First, get the list of changed files and their diffs:**

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ This is a checklist for PR authors. Please make sure to complete all tasks and c
8585
- [ ] iOS: Native
8686
- [ ] iOS: mWeb Safari
8787
- [ ] MacOS: Chrome / Safari
88-
- [ ] MacOS: Desktop
8988
- [ ] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
9089
- [ ] I verified there are no new alerts related to the `canBeMissing` param for `useOnyx`
9190
- [ ] I followed proper code patterns (see [Reviewing the code](https://github.com/Expensify/App/blob/main/contributingGuides/PR_REVIEW_GUIDELINES.md#reviewing-the-code))
@@ -157,11 +156,4 @@ This is a checklist for PR authors. Please make sure to complete all tasks and c
157156

158157
<!-- add screenshots or videos here -->
159158

160-
</details>
161-
162-
<details>
163-
<summary>MacOS: Desktop</summary>
164-
165-
<!-- add screenshots or videos here -->
166-
167-
</details>
159+
</details>

.github/actions/composite/setupNode/action.yml

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ inputs:
66
description: "Indicates if node is set up for hybrid app"
77
required: false
88
default: 'false'
9-
IS_DESKTOP_BUILD:
10-
description: "Indicates if node is set up for desktop app"
11-
required: false
12-
default: 'false'
139

1410
outputs:
1511
cache-hit:
@@ -27,9 +23,7 @@ runs:
2723
with:
2824
node-version-file: '.nvmrc'
2925
cache: npm
30-
cache-dependency-path: |
31-
normalized-package-lock.json
32-
desktop/package-lock.json
26+
cache-dependency-path: normalized-package-lock.json
3327

3428
- id: cache-node-modules
3529
# v4
@@ -46,14 +40,6 @@ runs:
4640
path: Mobile-Expensify/node_modules
4741
key: ${{ runner.os }}-node-modules-${{ hashFiles('Mobile-Expensify/package-lock.json', 'Mobile-Expensify/patches/**') }}
4842

49-
- id: cache-desktop-node-modules
50-
if: inputs.IS_DESKTOP_BUILD == 'true'
51-
# v4
52-
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
53-
with:
54-
path: desktop/node_modules
55-
key: ${{ runner.os }}-desktop-node-modules-${{ hashFiles('desktop/package-lock.json', 'desktop/patches/**') }}
56-
5743
- name: Remove ND node_modules if needed for hybrid app build
5844
if: inputs.IS_HYBRID_BUILD == 'true' && steps.cache-node-modules.outputs.cache-hit == 'true' && steps.cache-old-dot-node-modules.outputs.cache-hit != 'true'
5945
shell: bash
@@ -65,12 +51,4 @@ runs:
6551
with:
6652
timeout_minutes: 30
6753
max_attempts: 3
68-
command: npm ci
69-
70-
- name: Install node packages for desktop submodule
71-
if: inputs.IS_DESKTOP_BUILD == 'true' && steps.cache-desktop-node-modules.outputs.cache-hit != 'true'
72-
uses: nick-fields/retry@3f757583fb1b1f940bc8ef4bf4734c8dc02a5847
73-
with:
74-
timeout_minutes: 30
75-
max_attempts: 3
76-
command: cd desktop && npm ci
54+
command: npm ci

.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ async function run(): Promise<IssuesCreateResponse | void> {
164164
});
165165

166166
// Then make sure we include any demoted or closed blockers as well, and just check them off automatically
167+
// eslint-disable-next-line unicorn/no-array-for-each
167168
currentChecklistData?.deployBlockers.forEach((deployBlocker) => {
168169
const isResolved = deployBlockers.findIndex((openBlocker) => openBlocker.number === deployBlocker.number) < 0;
169170
deployBlockers.push({
@@ -173,6 +174,7 @@ async function run(): Promise<IssuesCreateResponse | void> {
173174
});
174175

175176
// Include any existing Mobile-Expensify PRs from the current checklist that aren't in the new merged list
177+
// eslint-disable-next-line unicorn/no-array-for-each
176178
currentChecklistData?.PRListMobileExpensify.forEach((existingPR) => {
177179
const isAlreadyIncluded = PRListMobileExpensify.findIndex((pr) => pr.number === existingPR.number) >= 0;
178180
if (!isAlreadyIncluded) {

.github/actions/javascript/createOrUpdateStagingDeploy/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11674,6 +11674,7 @@ async function run() {
1167411674
};
1167511675
});
1167611676
// Then make sure we include any demoted or closed blockers as well, and just check them off automatically
11677+
// eslint-disable-next-line unicorn/no-array-for-each
1167711678
currentChecklistData?.deployBlockers.forEach((deployBlocker) => {
1167811679
const isResolved = deployBlockers.findIndex((openBlocker) => openBlocker.number === deployBlocker.number) < 0;
1167911680
deployBlockers.push({
@@ -11682,6 +11683,7 @@ async function run() {
1168211683
});
1168311684
});
1168411685
// Include any existing Mobile-Expensify PRs from the current checklist that aren't in the new merged list
11686+
// eslint-disable-next-line unicorn/no-array-for-each
1168511687
currentChecklistData?.PRListMobileExpensify.forEach((existingPR) => {
1168611688
const isAlreadyIncluded = PRListMobileExpensify.findIndex((pr) => pr.number === existingPR.number) >= 0;
1168711689
if (!isAlreadyIncluded) {

.github/actions/javascript/getGraphiteString/getGraphiteString.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const run = () => {
2626
let timestamp: number;
2727

2828
// Iterate over each entry
29+
// eslint-disable-next-line unicorn/no-array-for-each
2930
regressionEntries.forEach((entry) => {
3031
// Skip empty lines
3132
if (entry.trim() === '') {

.github/actions/javascript/getGraphiteString/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2747,6 +2747,7 @@ const run = () => {
27472747
let graphiteString = '';
27482748
let timestamp;
27492749
// Iterate over each entry
2750+
// eslint-disable-next-line unicorn/no-array-for-each
27502751
regressionEntries.forEach((entry) => {
27512752
// Skip empty lines
27522753
if (entry.trim() === '') {

.github/actions/javascript/markPullRequestsAsDeployed/action.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ inputs:
2020
ANDROID:
2121
description: "Android job result ('success', 'failure', 'cancelled', or 'skipped')"
2222
required: true
23-
DESKTOP:
24-
description: "Desktop job result ('success', 'failure', 'cancelled', or 'skipped')"
25-
required: true
2623
IOS:
2724
description: "iOS job result ('success', 'failure', 'cancelled', or 'skipped')"
2825
required: true

.github/actions/javascript/markPullRequestsAsDeployed/index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12840,7 +12840,6 @@ async function run() {
1284012840
const isProd = ActionUtils.getJSONInput('IS_PRODUCTION_DEPLOY', { required: true });
1284112841
const version = core.getInput('DEPLOY_VERSION', { required: true });
1284212842
const androidResult = getDeployTableMessage(core.getInput('ANDROID', { required: true }));
12843-
const desktopResult = getDeployTableMessage(core.getInput('DESKTOP', { required: true }));
1284412843
const iOSResult = getDeployTableMessage(core.getInput('IOS', { required: true }));
1284512844
const webResult = getDeployTableMessage(core.getInput('WEB', { required: true }));
1284612845
const date = core.getInput('DATE');
@@ -12852,7 +12851,7 @@ async function run() {
1285212851
message += `on ${date}`;
1285312852
}
1285412853
message += `🚀`;
12855-
message += `\n\nplatform | result\n---|---\n🖥 desktop 🖥|${desktopResult}`;
12854+
message += `\n\nplatform | result\n---|---`;
1285612855
message += `\n🕸 web 🕸|${webResult}`;
1285712856
message += `\n🤖 android 🤖|${androidResult}\n🍎 iOS 🍎|${iOSResult}`;
1285812857
if (note) {

.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ async function run() {
103103
const version = core.getInput('DEPLOY_VERSION', {required: true});
104104

105105
const androidResult = getDeployTableMessage(core.getInput('ANDROID', {required: true}) as PlatformResult);
106-
const desktopResult = getDeployTableMessage(core.getInput('DESKTOP', {required: true}) as PlatformResult);
107106
const iOSResult = getDeployTableMessage(core.getInput('IOS', {required: true}) as PlatformResult);
108107
const webResult = getDeployTableMessage(core.getInput('WEB', {required: true}) as PlatformResult);
109108

@@ -117,7 +116,7 @@ async function run() {
117116
message += `on ${date}`;
118117
}
119118
message += `🚀`;
120-
message += `\n\nplatform | result\n---|---\n🖥 desktop 🖥|${desktopResult}`;
119+
message += `\n\nplatform | result\n---|---`;
121120
message += `\n🕸 web 🕸|${webResult}`;
122121
message += `\n🤖 android 🤖|${androidResult}\n🍎 iOS 🍎|${iOSResult}`;
123122

0 commit comments

Comments
 (0)