Skip to content

Commit e4a639d

Browse files
committed
Merge branch 'main' into fix/94612
2 parents 88087f6 + c8716e2 commit e4a639d

283 files changed

Lines changed: 7689 additions & 3705 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.

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 1009042202
115-
versionName "9.4.22-2"
114+
versionCode 1009042400
115+
versionName "9.4.24-0"
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"

android/app/src/main/java/com/expensify/chat/MainApplication.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.multidex.MultiDexApplication
1414
import com.expensify.chat.bootsplash.BootSplashPackage
1515
import com.expensify.chat.navbar.NavBarManagerPackage
1616
import com.expensify.chat.shortcutManagerModule.ShortcutManagerPackage
17+
import com.margelo.nitro.nitrofetch.AutoPrefetcher
1718
import com.facebook.react.PackageList
1819
import com.facebook.react.ReactApplication
1920
import com.facebook.react.ReactHost
@@ -73,6 +74,13 @@ class MainApplication : MultiDexApplication(), ReactApplication {
7374
return
7475
}
7576

77+
// This is the entrypoint for prefetching with `react-native-nitro-fetch`.
78+
try {
79+
AutoPrefetcher.prefetchOnStart(this)
80+
} catch (_: Throwable) {
81+
System.err.println("Error initializing Nitro `AutoPrefetcher`")
82+
}
83+
7684
loadReactNative(this)
7785

7886
// Force the app to LTR mode.

config/eslint/eslint.config.mjs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,14 @@ const restrictedPaidGroupPolicyImportPatterns = [
203203
},
204204
];
205205

206+
// Headless email chart CLI cannot use useTheme; charts always render with the light theme.
207+
const victoryChartRendererRestrictedImportPaths = restrictedImportPaths.filter((restriction) => restriction.name !== '@styles/theme');
208+
const victoryChartRendererRestrictedImportPatterns = [
209+
...restrictedImportPatterns.filter((restriction) => restriction.group[0] !== '@styles/theme/themes/**'),
210+
...restrictedReportNameImportPatterns,
211+
...restrictedPaidGroupPolicyImportPatterns,
212+
];
213+
206214
const config = defineConfig([
207215
expensifyConfig,
208216
typescriptEslint.configs.recommendedTypeChecked,
@@ -764,6 +772,16 @@ const config = defineConfig([
764772
project: path.resolve(projectRoot, 'server/victory-chart-renderer/tsconfig.json'),
765773
},
766774
},
775+
rules: {
776+
// Headless CLI cannot use useTheme; email charts always render with the light theme.
777+
'no-restricted-imports': [
778+
'error',
779+
{
780+
paths: victoryChartRendererRestrictedImportPaths,
781+
patterns: victoryChartRendererRestrictedImportPatterns,
782+
},
783+
],
784+
},
767785
},
768786

769787
globalIgnores([

config/eslint/eslint.seatbelt.tsv

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,6 @@
379379
"../../src/components/Search/SearchPageHeader/useSearchPageInput.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
380380
"../../src/components/Search/SearchPageHeader/useSearchPageInput.tsx" "react-hooks/set-state-in-effect" 2
381381
"../../src/components/Search/SearchQueryProvider.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
382-
"../../src/components/Search/SearchResultsProvider.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
383382
"../../src/components/Search/SearchRouter/SearchRouter.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
384383
"../../src/components/Search/SearchRouter/SearchRouter.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
385384
"../../src/components/Search/SearchRouter/SearchRouterUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
@@ -736,7 +735,7 @@
736735
"../../src/libs/ReportPrimaryActionUtils.ts" "no-restricted-imports" 1
737736
"../../src/libs/ReportTitleUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
738737
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/getPolicy" 28
739-
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/translateLocal" 34
738+
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-deprecated/translateLocal" 30
740739
"../../src/libs/ReportUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 33
741740
"../../src/libs/ReportUtils.ts" "rulesdir/no-onyx-connect" 16
742741
"../../src/libs/SearchAutocompleteUtils.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
@@ -1774,7 +1773,6 @@
17741773
"../../tests/unit/NextStepUtilsTest.ts" "@typescript-eslint/no-deprecated/buildNextStepNew" 23
17751774
"../../tests/unit/NextStepUtilsTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
17761775
"../../tests/unit/OnboardingSelectorsTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 10
1777-
"../../tests/unit/OnyxDerivedTest.tsx" "@typescript-eslint/no-unsafe-type-assertion" 8
17781776
"../../tests/unit/OnyxUpdateManagerTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
17791777
"../../tests/unit/OptionListContextProviderTest.tsx" "@typescript-eslint/no-unsafe-type-assertion" 10
17801778
"../../tests/unit/OptionsListUtilsTest.tsx" "@typescript-eslint/no-unsafe-type-assertion" 50
@@ -1922,7 +1920,6 @@
19221920
"../../tests/unit/hooks/useIsSidebarRouteActive.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
19231921
"../../tests/unit/hooks/useLazyAsset.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 5
19241922
"../../tests/unit/hooks/useNonPersonalCardList.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 3
1925-
"../../tests/unit/hooks/useOdometerReadingsState.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
19261923
"../../tests/unit/hooks/useOdometerReceiptStitcherTest.tsx" "@typescript-eslint/no-unsafe-type-assertion" 5
19271924
"../../tests/unit/hooks/useOtherFeedsForFeedSelector.test.tsx" "@typescript-eslint/no-unsafe-type-assertion" 16
19281925
"../../tests/unit/hooks/usePendingConciergeResponse.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 6
@@ -1934,7 +1931,7 @@
19341931
"../../tests/unit/hooks/useSearchSections.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
19351932
"../../tests/unit/hooks/useSearchShouldCalculateTotals.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
19361933
"../../tests/unit/hooks/useSelectedTransactionsActions.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
1937-
"../../tests/unit/hooks/useSelectionModeReportActions.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 6
1934+
"../../tests/unit/hooks/useSelectionModeReportActions.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
19381935
"../../tests/unit/hooks/useSplitContextHooks.test.tsx" "@typescript-eslint/no-unsafe-type-assertion" 3
19391936
"../../tests/unit/hooks/useSplitEffectivePolicy.test.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
19401937
"../../tests/unit/hooks/useSplitParticipants.test.tsx" "@typescript-eslint/no-unsafe-type-assertion" 4
@@ -1988,7 +1985,6 @@
19881985
"../../tests/unit/sanitizeStringForJSONParseTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 2
19891986
"../../tests/unit/selectors/CardTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 10
19901987
"../../tests/unit/selectors/PolicyTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 16
1991-
"../../tests/unit/selectors/TodosTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 12
19921988
"../../tests/unit/showReportActionNotificationTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
19931989
"../../tests/unit/submitDismissStrategiesTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 7
19941990
"../../tests/unit/submitWithDismissFirstTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 3
@@ -2018,6 +2014,7 @@
20182014
"../../tests/unit/useSubPageTest.tsx" "@typescript-eslint/no-unsafe-type-assertion" 2
20192015
"../../tests/unit/useSubStepTest.tsx" "@typescript-eslint/no-deprecated/useSubStep" 13
20202016
"../../tests/unit/useSyncFocusTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 1
2017+
"../../tests/unit/useTodoCountsTest.tsx" "@typescript-eslint/no-unsafe-type-assertion" 1
20212018
"../../tests/unit/useTodosTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 4
20222019
"../../tests/unit/useTransactionViolationsTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 21
20232020
"../../tests/unit/useWorkspacesTabIndicatorStatusTest.ts" "@typescript-eslint/no-unsafe-type-assertion" 6

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,7 @@
830830
"reimbursability",
831831
"reimbursementid",
832832
"reimbursible",
833+
"reminted",
833834
"remotedesktop",
834835
"remotesync",
835836
"removeHiddenElems",

docs/articles/new-expensify/connections/netsuite/Configure-Netsuite.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ For additional control:
9595
- **Invite Employees & Set Approvals** – Imports employees and sets workflow
9696
- **Auto Create Employees/Vendors** – Automatically creates a NetSuite record if one doesn’t exist
9797
- **Enable Newly Imported Categories** – Activates newly synced Expense Categories
98-
- **Sync Consolidated Travel Billing Settlements** – If Expensify Travel's Consolidated Travel Billing feature is enabled, turn on this toggle to continuously reconcile Consolidated Travel Billing settlements through NetSuite. When enabled, select a **Reconciliation account** to match your Consolidated Travel Billing settlement account.
98+
- **Sync Consolidated Travel Billing Settlements** – If Expensify Travel's Consolidated Travel Billing feature is enabled, turn on this toggle to continuously reconcile settlements through NetSuite. When enabled, select a **Reconciliation account** to match your settlement account.
9999
- **Approval Levels** – Set approval levels for:
100100
- Expense Reports
101101
- Vendor Bills

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* @format
33
*/
44
// import of polyfills should always be first
5+
import './src/polyfills/NitroFetch';
56
import './src/polyfills/PromiseWithResolvers';
67
import './src/polyfills/requestIdleCallback';
78
import {AppRegistry} from 'react-native';

ios/NewExpensify/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<key>CFBundlePackageType</key>
2424
<string>APPL</string>
2525
<key>CFBundleShortVersionString</key>
26-
<string>9.4.22</string>
26+
<string>9.4.24</string>
2727
<key>CFBundleSignature</key>
2828
<string>????</string>
2929
<key>CFBundleURLTypes</key>
@@ -44,7 +44,7 @@
4444
</dict>
4545
</array>
4646
<key>CFBundleVersion</key>
47-
<string>9.4.22.2</string>
47+
<string>9.4.24.0</string>
4848
<key>FullStory</key>
4949
<dict>
5050
<key>OrgId</key>

ios/NotificationServiceExtension/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<key>CFBundleName</key>
1212
<string>$(PRODUCT_NAME)</string>
1313
<key>CFBundleShortVersionString</key>
14-
<string>9.4.22</string>
14+
<string>9.4.24</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.4.22.2</string>
16+
<string>9.4.24.0</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

0 commit comments

Comments
 (0)