Skip to content

Commit ee580b7

Browse files
committed
Merge branch 'main' into @zfurtak/migrate-WorkspaceMembersSelectionList
2 parents 1d65f3f + 8f6de1c commit ee580b7

150 files changed

Lines changed: 3523 additions & 818 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/workflows/claude-review.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
4040
- name: Run Claude Code (code)
4141
if: steps.filter.outputs.code == 'true'
42-
uses: anthropics/claude-code-action@f30f5eecfce2f34fa72e40fa5f7bcdbdcad12eb8 # v1.0.14
42+
uses: anthropics/claude-code-action@a7e4c51380c42dd89b127f5e5f9be7b54020bc6b # v1.0.21
4343
with:
4444
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
4545
github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -50,7 +50,7 @@ jobs:
5050
5151
- name: Run Claude Code (docs)
5252
if: steps.filter.outputs.docs == 'true'
53-
uses: anthropics/claude-code-action@f30f5eecfce2f34fa72e40fa5f7bcdbdcad12eb8 # v1.0.14
53+
uses: anthropics/claude-code-action@a7e4c51380c42dd89b127f5e5f9be7b54020bc6b # v1.0.21
5454
with:
5555
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
5656
github_token: ${{ secrets.GITHUB_TOKEN }}

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ android {
114114
minSdkVersion rootProject.ext.minSdkVersion
115115
targetSdkVersion rootProject.ext.targetSdkVersion
116116
multiDexEnabled rootProject.ext.multiDexEnabled
117-
versionCode 1009026401
118-
versionName "9.2.64-1"
117+
versionCode 1009026500
118+
versionName "9.2.65-0"
119119
// Supported language variants must be declared here to avoid from being removed during the compilation.
120120
// This also helps us to not include unnecessary language variants in the APK.
121121
resConfigs "en", "es"
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading
693 Bytes
Loading

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.2.64</string>
26+
<string>9.2.65</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.2.64.1</string>
47+
<string>9.2.65.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.2.64</string>
14+
<string>9.2.65</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.2.64.1</string>
16+
<string>9.2.65.0</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

ios/ShareViewController/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.2.64</string>
14+
<string>9.2.65</string>
1515
<key>CFBundleVersion</key>
16-
<string>9.2.64.1</string>
16+
<string>9.2.65.0</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionAttributes</key>

jest/setup.ts

Lines changed: 66 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
/* eslint-disable max-classes-per-file */
22
import * as core from '@actions/core';
33
import '@shopify/flash-list/jestSetup';
4+
import {useMemo} from 'react';
45
import type * as RNAppLogs from 'react-native-app-logs';
6+
import type {ReadDirItem} from 'react-native-fs';
57
import 'react-native-gesture-handler/jestSetup';
68
import type * as RNKeyboardController from 'react-native-keyboard-controller';
79
import mockStorage from 'react-native-onyx/dist/storage/__mocks__';
@@ -69,6 +71,12 @@ jest.mock('react-native-fs', () => ({
6971
res();
7072
}),
7173
),
74+
readDir: jest.fn(
75+
() =>
76+
new Promise<ReadDirItem[]>((res) => {
77+
res([]);
78+
}),
79+
),
7280
CachesDirectoryPath: jest.fn(),
7381
}));
7482

@@ -135,60 +143,70 @@ jest.mock('../modules/hybrid-app/src/NativeReactNativeHybridApp', () => ({
135143
clearOldDotAfterSignOut: jest.fn(),
136144
}));
137145

146+
const mockUseMemo = useMemo;
147+
138148
// Mock lazy asset loading to be synchronous in tests
139149
jest.mock('../src/hooks/useLazyAsset.ts', () => ({
140-
useMemoizedLazyAsset: jest.fn(() => {
141-
// Return a mock asset immediately to avoid async loading in tests
142-
const mockAsset = {
143-
src: 'mock-icon',
144-
testID: 'mock-asset',
145-
// Add common icon properties that tests might expect
146-
height: 20,
147-
width: 20,
148-
};
149-
150-
return {
151-
asset: mockAsset,
152-
isLoaded: true,
153-
isLoading: false,
154-
hasError: false,
155-
};
156-
}),
157-
useMemoizedLazyIllustrations: jest.fn((names: readonly string[]) => {
158-
// Return a Record with all requested illustration names
159-
const mockIllustrations: Record<string, unknown> = {};
160-
for (const name of names) {
161-
mockIllustrations[name] = {
162-
src: `mock-${name}`,
163-
testID: `mock-illustration-${name}`,
150+
useMemoizedLazyAsset: jest.fn((importFn) =>
151+
mockUseMemo(() => {
152+
// Return a mock asset immediately to avoid async loading in tests
153+
const mockAsset = {
154+
src: 'mock-icon',
155+
testID: 'mock-asset',
156+
// Add common icon properties that tests might expect
164157
height: 20,
165158
width: 20,
166159
};
167-
}
168-
return mockIllustrations;
169-
}),
170-
useMemoizedLazyExpensifyIcons: jest.fn((names: readonly string[]) => {
171-
// Return a Record with all requested icon names
172-
const mockIcons: Record<string, unknown> = {};
173-
for (const name of names) {
174-
mockIcons[name] = {
175-
src: `mock-${name}`,
176-
testID: `mock-expensify-icon-${name}`,
177-
height: 20,
178-
width: 20,
160+
161+
return {
162+
asset: mockAsset,
163+
isLoaded: true,
164+
isLoading: false,
165+
hasError: false,
179166
};
180-
}
181-
return mockIcons;
182-
}),
183-
default: jest.fn(() => {
184-
const mockAsset = {src: 'mock-icon', testID: 'mock-asset'};
185-
return {
186-
asset: mockAsset,
187-
isLoaded: true,
188-
isLoading: false,
189-
hasError: false,
190-
};
191-
}),
167+
}, [importFn]),
168+
),
169+
useMemoizedLazyIllustrations: jest.fn((names: readonly string[]) =>
170+
mockUseMemo(() => {
171+
// Return a Record with all requested illustration names
172+
const mockIllustrations: Record<string, unknown> = {};
173+
for (const name of names) {
174+
mockIllustrations[name] = {
175+
src: `mock-${name}`,
176+
testID: `mock-illustration-${name}`,
177+
height: 20,
178+
width: 20,
179+
};
180+
}
181+
return mockIllustrations;
182+
}, [names]),
183+
),
184+
useMemoizedLazyExpensifyIcons: jest.fn((names: readonly string[]) =>
185+
mockUseMemo(() => {
186+
// Return a Record with all requested icon names
187+
const mockIcons: Record<string, unknown> = {};
188+
for (const name of names) {
189+
mockIcons[name] = {
190+
src: `mock-${name}`,
191+
testID: `mock-expensify-icon-${name}`,
192+
height: 20,
193+
width: 20,
194+
};
195+
}
196+
return mockIcons;
197+
}, [names]),
198+
),
199+
default: jest.fn((importFn) =>
200+
mockUseMemo(() => {
201+
const mockAsset = {src: 'mock-icon', testID: 'mock-asset'};
202+
return {
203+
asset: mockAsset,
204+
isLoaded: true,
205+
isLoading: false,
206+
hasError: false,
207+
};
208+
}, [importFn]),
209+
),
192210
}));
193211

194212
// Mock icon loading functions to resolve immediately

0 commit comments

Comments
 (0)