Skip to content

Commit 09f1c8d

Browse files
committed
Merge branch 'main' into Opening-a-transaction-thread-can-be-slow-to-load-sometimes
2 parents ad56ca9 + 5c86b72 commit 09f1c8d

File tree

192 files changed

+2602
-603
lines changed

Some content is hidden

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

192 files changed

+2602
-603
lines changed

.eslintrc.js

+14-1
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,21 @@ module.exports = {
235235
],
236236
},
237237

238-
// Remove once no JS files are left
239238
overrides: [
239+
// Enforces every Onyx type and its properties to have a comment explaining its purpose.
240+
{
241+
files: ['src/types/onyx/**/*.ts'],
242+
rules: {
243+
'jsdoc/require-jsdoc': [
244+
'error',
245+
{
246+
contexts: ['TSInterfaceDeclaration', 'TSTypeAliasDeclaration', 'TSPropertySignature'],
247+
},
248+
],
249+
},
250+
},
251+
252+
// Remove once no JS files are left
240253
{
241254
files: ['*.js', '*.jsx'],
242255
rules: {

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ local.properties
3737
android/app/src/main/java/com/expensify/chat/generated/
3838
.cxx/
3939

40+
# VIM
41+
*.swp
42+
*.swo
43+
*~
44+
4045
# Vscode
4146
.vscode
4247

android/app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ android {
107107
minSdkVersion rootProject.ext.minSdkVersion
108108
targetSdkVersion rootProject.ext.targetSdkVersion
109109
multiDexEnabled rootProject.ext.multiDexEnabled
110-
versionCode 1001048009
111-
versionName "1.4.80-9"
110+
versionCode 1001048101
111+
versionName "1.4.81-1"
112112
// Supported language variants must be declared here to avoid from being removed during the compilation.
113113
// This also helps us to not include unnecessary language variants in the APK.
114114
resConfigs "en", "es"

docs/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,18 @@ Just update the content for each variable accordingly or remove it if the inform
186186
Assume that we want to rename the article `The Free Plan` to `Freemium Features` for the hub `billing and plan types` in New Expensify platform.
187187
1. Go to `docs/articles/new-expensify/billing-and-plan-types`
188188
2. Rename `The-Free-Plan.md` to `Freemium-Features.md`. Use dashes for spaces in the file name.
189+
3. Add an entry in redirects.csv for the old article pointing to the new article.
189190

190191
Note: It is important that the file has `.md` extension.
191192

193+
# How to hide an article temporarily
194+
Video demo available [here 🧵](https://expensify.slack.com/archives/C02NK2DQWUX/p1717772272605829?thread_ts=1717523271.137469&cid=C02NK2DQWUX).
195+
1. Open github's in built code editor by pressing `.` on your keyboard. ([instructions here](https://docs.github.com/en/codespaces/the-githubdev-web-based-editor#opening-the-githubdev-editor))
196+
2. Go to the article that you want to hide `docs/articles/...`.
197+
3. Drag and drop the article inside the hidden folder `docs/Hidden/`.
198+
4. Add a redirect for it in `docs/redirects.csv` to ensure that we don't have broken links. You can choose to point it to the home page or the article's hub.
199+
5. Commit the changes and raise a PR.
200+
192201
# How the site is deployed
193202
This site is hosted on Cloudflare pages. Whenever code is merged to main, the github action `deployExpensifyHelp` will run.
194203

docs/articles/new-expensify/travel/Coming-Soon.md

-6
This file was deleted.

ios/NewExpensify/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<key>CFBundlePackageType</key>
2020
<string>APPL</string>
2121
<key>CFBundleShortVersionString</key>
22-
<string>1.4.80</string>
22+
<string>1.4.81</string>
2323
<key>CFBundleSignature</key>
2424
<string>????</string>
2525
<key>CFBundleURLTypes</key>
@@ -40,7 +40,7 @@
4040
</dict>
4141
</array>
4242
<key>CFBundleVersion</key>
43-
<string>1.4.80.9</string>
43+
<string>1.4.81.1</string>
4444
<key>FullStory</key>
4545
<dict>
4646
<key>OrgId</key>

ios/NewExpensifyTests/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
<key>CFBundlePackageType</key>
1616
<string>BNDL</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.4.80</string>
18+
<string>1.4.81</string>
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleVersion</key>
22-
<string>1.4.80.9</string>
22+
<string>1.4.81.1</string>
2323
</dict>
2424
</plist>

ios/NotificationServiceExtension/Info.plist

+2-2
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>1.4.80</string>
14+
<string>1.4.81</string>
1515
<key>CFBundleVersion</key>
16-
<string>1.4.80.9</string>
16+
<string>1.4.81.1</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

ios/Podfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1852,7 +1852,7 @@ PODS:
18521852
- RNGoogleSignin (10.0.1):
18531853
- GoogleSignIn (~> 7.0)
18541854
- React-Core
1855-
- RNLiveMarkdown (0.1.70):
1855+
- RNLiveMarkdown (0.1.83):
18561856
- glog
18571857
- hermes-engine
18581858
- RCT-Folly (= 2022.05.16.00)
@@ -1870,9 +1870,9 @@ PODS:
18701870
- React-utils
18711871
- ReactCommon/turbomodule/bridging
18721872
- ReactCommon/turbomodule/core
1873-
- RNLiveMarkdown/common (= 0.1.70)
1873+
- RNLiveMarkdown/common (= 0.1.83)
18741874
- Yoga
1875-
- RNLiveMarkdown/common (0.1.70):
1875+
- RNLiveMarkdown/common (0.1.83):
18761876
- glog
18771877
- hermes-engine
18781878
- RCT-Folly (= 2022.05.16.00)
@@ -2589,7 +2589,7 @@ SPEC CHECKSUMS:
25892589
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
25902590
RNGestureHandler: 74b7b3d06d667ba0bbf41da7718f2607ae0dfe8f
25912591
RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0
2592-
RNLiveMarkdown: 23250f3d64c9d5f82ff36c4733c03544af0222d2
2592+
RNLiveMarkdown: 88030b7d9a31f5f6e67743df48ad952d64513b4a
25932593
RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81
25942594
rnmapbox-maps: df8fe93dbd251f25022f4023d31bc04160d4d65c
25952595
RNPermissions: 0b61d30d21acbeafe25baaa47d9bae40a0c65216

package-lock.json

+11-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "new.expensify",
3-
"version": "1.4.80-9",
3+
"version": "1.4.81-1",
44
"author": "Expensify, Inc.",
55
"homepage": "https://new.expensify.com",
66
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
@@ -65,7 +65,7 @@
6565
"@babel/plugin-proposal-private-methods": "^7.18.6",
6666
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
6767
"@dotlottie/react-player": "^1.6.3",
68-
"@expensify/react-native-live-markdown": "0.1.70",
68+
"@expensify/react-native-live-markdown": "0.1.83",
6969
"@expo/metro-runtime": "~3.1.1",
7070
"@formatjs/intl-datetimeformat": "^6.10.0",
7171
"@formatjs/intl-listformat": "^7.2.2",

src/CONST.ts

+25-3
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,7 @@ const CONST = {
15801580
APPROVE: 'approve',
15811581
TRACK: 'track',
15821582
},
1583-
AMOUNT_MAX_LENGTH: 10,
1583+
AMOUNT_MAX_LENGTH: 8,
15841584
RECEIPT_STATE: {
15851585
SCANREADY: 'SCANREADY',
15861586
OPEN: 'OPEN',
@@ -3873,10 +3873,10 @@ const CONST = {
38733873
type: 'meetGuide',
38743874
autoCompleted: false,
38753875
title: 'Meet your setup specialist',
3876-
description: ({adminsRoomLink, guideCalendarLink}: {adminsRoomLink: string; guideCalendarLink: string}) =>
3876+
description: ({adminsRoomLink}: {adminsRoomLink: string}) =>
38773877
`Meet your setup specialist, who can answer any questions as you get started with Expensify. Yes, a real human!\n` +
38783878
'\n' +
3879-
`Chat with the specialist in your [#admins room](${adminsRoomLink}) or [schedule a call](${guideCalendarLink}) today.`,
3879+
`Chat with the specialist in your [#admins room](${adminsRoomLink}).`,
38803880
},
38813881
{
38823882
type: 'setupCategories',
@@ -4815,6 +4815,28 @@ const CONST = {
48154815
},
48164816

48174817
SUBSCRIPTION_SIZE_LIMIT: 20000,
4818+
SUBSCRIPTION_POSSIBLE_COST_SAVINGS: {
4819+
COLLECT_PLAN: 10,
4820+
CONTROL_PLAN: 18,
4821+
},
4822+
FEEDBACK_SURVEY_OPTIONS: {
4823+
TOO_LIMITED: {
4824+
ID: 'tooLimited',
4825+
TRANSLATION_KEY: 'feedbackSurvey.tooLimited',
4826+
},
4827+
TOO_EXPENSIVE: {
4828+
ID: 'tooExpensive',
4829+
TRANSLATION_KEY: 'feedbackSurvey.tooExpensive',
4830+
},
4831+
INADEQUATE_SUPPORT: {
4832+
ID: 'inadequateSupport',
4833+
TRANSLATION_KEY: 'feedbackSurvey.inadequateSupport',
4834+
},
4835+
BUSINESS_CLOSING: {
4836+
ID: 'businessClosing',
4837+
TRANSLATION_KEY: 'feedbackSurvey.businessClosing',
4838+
},
4839+
},
48184840
} as const;
48194841

48204842
type Country = keyof typeof CONST.ALL_COUNTRIES;

src/ONYXKEYS.ts

+2
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,8 @@ type OnyxValuesMapping = {
630630
[ONYXKEYS.BETAS]: OnyxTypes.Beta[];
631631
[ONYXKEYS.NVP_PRIORITY_MODE]: ValueOf<typeof CONST.PRIORITY_MODE>;
632632
[ONYXKEYS.NVP_BLOCKED_FROM_CONCIERGE]: OnyxTypes.BlockedFromConcierge;
633+
634+
// The value of this nvp is a string representation of the date when the block expires, or an empty string if the user is not blocked
633635
[ONYXKEYS.NVP_BLOCKED_FROM_CHAT]: string;
634636
[ONYXKEYS.NVP_PRIVATE_PUSH_NOTIFICATION_ID]: string;
635637
[ONYXKEYS.NVP_TRY_FOCUS_MODE]: boolean;

src/ROUTES.ts

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ const ROUTES = {
104104
SETTINGS_SUBSCRIPTION: 'settings/subscription',
105105
SETTINGS_SUBSCRIPTION_SIZE: 'settings/subscription/subscription-size',
106106
SETTINGS_SUBSCRIPTION_ADD_PAYMENT_CARD: 'settings/subscription/add-payment-card',
107+
SETTINGS_SUBSCRIPTION_DISABLE_AUTO_RENEW_SURVEY: 'settings/subscription/disable-auto-renew-survey',
107108
SETTINGS_PRIORITY_MODE: 'settings/preferences/priority-mode',
108109
SETTINGS_LANGUAGE: 'settings/preferences/language',
109110
SETTINGS_THEME: 'settings/preferences/theme',

src/SCREENS.ts

+1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ const SCREENS = {
108108
ROOT: 'Settings_Subscription',
109109
SIZE: 'Settings_Subscription_Size',
110110
ADD_PAYMENT_CARD: 'Settings_Subscription_Add_Payment_Card',
111+
DISABLE_AUTO_RENEW_SURVEY: 'Settings_Subscription_DisableAutoRenewSurvey',
111112
},
112113
},
113114
SAVE_THE_WORLD: {

src/components/AttachmentPicker/index.native.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import RNFetchBlob from 'react-native-blob-util';
55
import RNDocumentPicker from 'react-native-document-picker';
66
import type {DocumentPickerOptions, DocumentPickerResponse} from 'react-native-document-picker';
77
import {launchImageLibrary} from 'react-native-image-picker';
8-
import type {Asset, Callback, CameraOptions, ImagePickerResponse} from 'react-native-image-picker';
8+
import type {Asset, Callback, CameraOptions, ImageLibraryOptions, ImagePickerResponse} from 'react-native-image-picker';
99
import ImageSize from 'react-native-image-size';
1010
import type {FileObject, ImagePickerResponse as FileResponse} from '@components/AttachmentModal';
1111
import * as Expensicons from '@components/Icon/Expensicons';
@@ -41,11 +41,12 @@ type Item = {
4141
* See https://github.com/react-native-image-picker/react-native-image-picker/#options
4242
* for ImagePicker configuration options
4343
*/
44-
const imagePickerOptions = {
44+
const imagePickerOptions: Partial<CameraOptions | ImageLibraryOptions> = {
4545
includeBase64: false,
4646
saveToPhotos: false,
4747
selectionLimit: 1,
4848
includeExtra: false,
49+
assetRepresentationMode: 'current',
4950
};
5051

5152
/**

src/components/ConfirmModal.tsx

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import CONST from '@src/CONST';
77
import type IconAsset from '@src/types/utils/IconAsset';
88
import ConfirmContent from './ConfirmContent';
99
import Modal from './Modal';
10+
import type BaseModalProps from './Modal/types';
1011

1112
type ConfirmModalProps = {
1213
/** Title of the modal */
@@ -74,6 +75,9 @@ type ConfirmModalProps = {
7475
* We are attempting to migrate to a new refocus manager, adding this property for gradual migration.
7576
* */
7677
shouldEnableNewFocusManagement?: boolean;
78+
79+
/** How to re-focus after the modal is dismissed */
80+
restoreFocusType?: BaseModalProps['restoreFocusType'];
7781
};
7882

7983
function ConfirmModal({
@@ -98,6 +102,7 @@ function ConfirmModal({
98102
onConfirm,
99103
image,
100104
shouldEnableNewFocusManagement,
105+
restoreFocusType,
101106
}: ConfirmModalProps) {
102107
const {isSmallScreenWidth} = useResponsiveLayout();
103108
const styles = useThemeStyles();
@@ -112,6 +117,7 @@ function ConfirmModal({
112117
type={isSmallScreenWidth ? CONST.MODAL.MODAL_TYPE.BOTTOM_DOCKED : CONST.MODAL.MODAL_TYPE.CONFIRM}
113118
innerContainerStyle={image ? styles.pt0 : {}}
114119
shouldEnableNewFocusManagement={shouldEnableNewFocusManagement}
120+
restoreFocusType={restoreFocusType}
115121
>
116122
<ConfirmContent
117123
title={title}

0 commit comments

Comments
 (0)