Skip to content

Commit 46730b7

Browse files
committed
Merge remote-tracking branch 'exfy/main' into sq-audit
2 parents bd9728f + a3a0005 commit 46730b7

461 files changed

Lines changed: 12002 additions & 4310 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 1009040500
115-
versionName "9.4.5-0"
114+
versionCode 1009040701
115+
versionName "9.4.7-1"
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/receipt-search.svg

Lines changed: 1 addition & 0 deletions
Loading

config/eslint/eslint.config.mjs

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,6 @@ const restrictedImportPaths = [
157157
];
158158

159159
const restrictedImportPatterns = [
160-
{
161-
group: ['**/TransitionTracker', './TransitionTracker', '../TransitionTracker'],
162-
message:
163-
"TransitionTracker is an internal primitive. Please use higher-level APIs (Navigation with 'afterTransition'/'waitForTransition', KeyboardUtils, useConfirmModal). See contributingGuides/INTERACTION_MANAGER.md.",
164-
},
165160
{
166161
group: ['**/assets/animations/**/*.json'],
167162
message: "Do not import animations directly. Please use the '@components/LottieAnimations' import instead.",
@@ -188,6 +183,26 @@ const restrictedReportNameImportPatterns = [
188183
},
189184
];
190185

186+
// `isPaidGroupPolicy` is BILLING/paid-only (Collect/Control). Existing usages are grandfathered via
187+
// eslint-seatbelt; this only flags NEW imports so they make a conscious choice: for workspace feature
188+
// gating (violations, report fields, workspace chat, report creation, expense-workspace usability) use
189+
// `isGroupPolicy` / `isReportInGroupPolicy` instead, otherwise free group plans like Submit (submit2026)
190+
// are wrongly excluded and access bugs return.
191+
const restrictedPaidGroupPolicyImportPatterns = [
192+
{
193+
group: ['**/PolicyUtils', '**/libs/PolicyUtils'],
194+
importNames: ['isPaidGroupPolicy'],
195+
message:
196+
'isPaidGroupPolicy is billing/paid-only (Collect/Control). For workspace feature gating use isGroupPolicy so free group plans like Submit are not excluded. If this is genuinely a billing/paid-only check, keep it and disable this line with a reason.',
197+
},
198+
{
199+
group: ['**/ReportUtils', '**/libs/ReportUtils'],
200+
importNames: ['isPaidGroupPolicy', 'isPaidGroupPolicyExpenseReport'],
201+
message:
202+
'isPaidGroupPolicy / isPaidGroupPolicyExpenseReport are billing/paid-only. For feature gating use isReportInGroupPolicy / isGroupPolicyExpenseReport so Submit workspaces are not excluded. If this is genuinely billing/paid-only, keep it and disable this line with a reason.',
203+
},
204+
];
205+
191206
const config = defineConfig([
192207
expensifyConfig,
193208
typescriptEslint.configs.recommendedTypeChecked,
@@ -255,8 +270,6 @@ const config = defineConfig([
255270

256271
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'],
257272
rules: {
258-
'@lwc/lwc/no-async-await': 'off',
259-
260273
// TypeScript specific rules
261274
'@typescript-eslint/prefer-enum-initializers': 'error',
262275
'@typescript-eslint/no-var-requires': 'off',
@@ -336,7 +349,6 @@ const config = defineConfig([
336349
'es/no-optional-chaining': 'off',
337350
'@typescript-eslint/no-deprecated': ['error', {allow: ['translateFn']}],
338351
'arrow-body-style': 'off',
339-
'no-continue': 'off',
340352
'no-empty': ['error', {allowEmptyCatch: true}],
341353

342354
// Import specific rules
@@ -715,7 +727,7 @@ const config = defineConfig([
715727
'error',
716728
{
717729
paths: restrictedImportPaths,
718-
patterns: [...restrictedImportPatterns, ...restrictedReportNameImportPatterns],
730+
patterns: [...restrictedImportPatterns, ...restrictedReportNameImportPatterns, ...restrictedPaidGroupPolicyImportPatterns],
719731
},
720732
],
721733
},

0 commit comments

Comments
 (0)