Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/redirects.csv
Original file line number Diff line number Diff line change
Expand Up @@ -891,3 +891,5 @@ https://help.expensify.com/articles/expensify-classic/expensify-card/Set-Up-the-
https://help.expensify.com/classic,https://help.expensify.com/expensify-classic/hubs/
https://help.expensify.com/articles/new-expensify/expensify-card/Enable-Expensify-Card-notifications,https://help.expensify.com/articles/new-expensify/expensify-card/Expensify-Card-Notifications
https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts.md/Add-or-remove-a-business-bank-account,https://help.expensify.com/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-US-Business-Bank-Account
https://help.expensify.com/articles/Unlisted/Compliance-Documentation,https://help.expensify.com/articles/new-expensify/settings/Encryption-and-Data-Security
https://drive.google.com/file/d/1kxttniCMLFah4uPNjhknxs0Zor6tWGWE/view,https://s3-us-west-1.amazonaws.com/concierge-responses-expensify-com/uploads%2F1759782614043-Bridge_Letter_for_SOC_1_and_SOC_2_-_Sept_30_2025.pdf
6 changes: 4 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@
"react-native-url-polyfill": "^2.0.0",
"react-native-view-shot": "4.0.0",
"react-native-vision-camera": "^4.7.2",
"react-native-web": "0.20.0",
"react-native-web": "0.21.2",
"react-native-webview": "13.13.1",
"react-plaid-link": "3.3.2",
"react-web-config": "^1.0.0",
Expand Down
33 changes: 11 additions & 22 deletions patches/react-native-web/details.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# `react-native-web` patches

### [react-native-web+0.20.0+001+initial.patch](react-native-web+0.20.0+001+initial.patch)
### [react-native-web+0.21.2+001+initial.patch](react-native-web+0.21.2+001+initial.patch)

- Reason:

Expand All @@ -12,7 +12,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/24482

### [react-native-web+0.20.0+002+fixLastSpacer.patch](react-native-web+0.20.0+002+fixLastSpacer.patch)
### [react-native-web+0.21.2+002+fixLastSpacer.patch](react-native-web+0.21.2+002+fixLastSpacer.patch)

- Reason:

Expand All @@ -24,7 +24,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/32843

### [react-native-web+0.20.0+003+image-header-support.patch](react-native-web+0.20.0+003+image-header-support.patch)
### [react-native-web+0.21.2+003+image-header-support.patch](react-native-web+0.21.2+003+image-header-support.patch)

- Reason:

Expand All @@ -36,7 +36,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/13036

### [react-native-web+0.20.0+004+fixPointerEventDown.patch](react-native-web+0.20.0+004+fixPointerEventDown.patch)
### [react-native-web+0.21.2+004+fixPointerEventDown.patch](react-native-web+0.21.2+004+fixPointerEventDown.patch)

- Reason:

Expand All @@ -48,7 +48,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/38494

### [react-native-web+0.20.0+005+osr-improvement.patch](react-native-web+0.20.0+005+osr-improvement.patch)
### [react-native-web+0.21.2+005+osr-improvement.patch](react-native-web+0.21.2+005+osr-improvement.patch)

- Reason:

Expand All @@ -60,7 +60,7 @@
- E/App issue: 🛑
- PR introducing patch:

### [react-native-web+0.20.0+006+remove-focus-trap-from-modal.patch](react-native-web+0.20.0+006+remove-focus-trap-from-modal.patch)
### [react-native-web+0.21.2+006+remove-focus-trap-from-modal.patch](react-native-web+0.21.2+006+remove-focus-trap-from-modal.patch)

- Reason:

Expand All @@ -72,7 +72,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/39520

### [react-native-web+0.20.0+007+fix-scrollable-overflown-text.patch](react-native-web+0.20.0+007+fix-scrollable-overflown-text.patch)
### [react-native-web+0.21.2+007+fix-scrollable-overflown-text.patch](react-native-web+0.21.2+007+fix-scrollable-overflown-text.patch)

- Reason:

Expand All @@ -84,7 +84,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/47532

### [react-native-web+0.20.0+008+fix-nested-flatlist-scroll-on-web.patch](react-native-web+0.20.0+008+fix-nested-flatlist-scroll-on-web.patch)
### [react-native-web+0.21.2+008+fix-nested-flatlist-scroll-on-web.patch](react-native-web+0.21.2+008+fix-nested-flatlist-scroll-on-web.patch)

- Reason:

Expand All @@ -96,7 +96,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/60174

### [react-native-web+0.20.0+009+fix-two-direction-scroll-on-web.patch](react-native-web+0.20.0+009+fix-two-direction-scroll-on-web.patch)
### [react-native-web+0.21.2+009+fix-two-direction-scroll-on-web.patch](react-native-web+0.21.2+009+fix-two-direction-scroll-on-web.patch)

- Reason:

Expand All @@ -108,7 +108,7 @@
- E/App issue: 🛑
- PR introducing patch: https://github.com/Expensify/App/pull/60340

### [react-native-web+0.20.0+010+fullstory-support.patch](react-native-web+0.20.0+010+fullstory-support.patch)
### [react-native-web+0.21.2+010+fullstory-support.patch](react-native-web+0.21.2+010+fullstory-support.patch)

- Reason:

Expand All @@ -120,18 +120,7 @@
- E/App issue: As explained above the current solution can't be applied to upstream because it's tailored to Fullstory needs.
- PR introducing patch: https://github.com/Expensify/App/pull/67552

### [react-native-web+0.20.0+011+fix-memory-leak.patch](react-native-web+0.20.0+011+fix-memory-leak.patch)
- Reason:

```
Fixes memory leak on web caused by Animated API used in @react-navigation package
```

- Upstream PR/issue: https://github.com/necolas/react-native-web/pull/2800
- E/App issue: https://github.com/Expensify/App/issues/65820
- PR introducing patch: https://github.com/Expensify/App/pull/68834

### [react-native-web+0.20.0+012+fix-overscroll-recoil.patch](react-native-web+0.20.0+012+fix-overscroll-recoil.patch)
### [react-native-web+0.21.2+011+fix-overscroll-recoil.patch](react-native-web+0.21.2+011+fix-overscroll-recoil.patch)

- Reason:

Expand Down

This file was deleted.

23 changes: 6 additions & 17 deletions src/components/FocusModeNotification.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import React from 'react';
import {View} from 'react-native';
import useEnvironment from '@hooks/useEnvironment';
import useLocalize from '@hooks/useLocalize';
import useStyleUtils from '@hooks/useStyleUtils';
import useThemeStyles from '@hooks/useThemeStyles';
import {openLink} from '@libs/actions/Link';
import colors from '@styles/theme/colors';
import ConfirmModal from './ConfirmModal';
import {ThreeLeggedLaptopWoman} from './Icon/Illustrations';
import Text from './Text';
import TextLinkWithRef from './TextLink';
import RenderHTML from './RenderHTML';

type FocusModeNotificationProps = {
onClose: () => void;
Expand All @@ -19,7 +18,7 @@ function FocusModeNotification({onClose}: FocusModeNotificationProps) {
const StyleUtils = useStyleUtils();
const {environmentURL} = useEnvironment();
const {translate} = useLocalize();
const href = `${environmentURL}/settings/preferences/priority-mode`;
const priorityModePageUrl = `${environmentURL}/settings/preferences/priority-mode`;

return (
<ConfirmModal
Expand All @@ -30,19 +29,9 @@ function FocusModeNotification({onClose}: FocusModeNotificationProps) {
onBackdropPress={onClose}
onCancel={onClose}
prompt={
<Text>
{translate('focusModeUpdateModal.prompt')}
<TextLinkWithRef
style={styles.link}
onPress={() => {
onClose();
openLink(href, environmentURL);
}}
>
{translate('focusModeUpdateModal.settings')}
</TextLinkWithRef>
.
</Text>
<View style={[styles.renderHTML, styles.flexRow]}>
<RenderHTML html={translate('focusModeUpdateModal.prompt', {priorityModePageUrl})} />
</View>
}
isVisible
image={ThreeLeggedLaptopWoman}
Expand Down
12 changes: 12 additions & 0 deletions src/components/PriorityModeController.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,18 @@ export default function PriorityModeController() {
hasSwitched.current = true;
}, [accountID, currentRouteName, hasTriedFocusMode, hasTriedFocusModeMetadata, isInFocusMode, isInFocusModeMetadata, isLoadingReportData, validReportCount]);

useEffect(() => {
if (!shouldShowModal) {
return;
}
const isNarrowLayout = getIsNarrowLayout();
const shouldHideModalOnNavigation = (isNarrowLayout && currentRouteName !== SCREENS.HOME) || (!isNarrowLayout && currentRouteName !== SCREENS.REPORT);

if (shouldHideModalOnNavigation) {
setShouldShowModal(false);
}
}, [currentRouteName, shouldShowModal]);

return shouldShowModal ? <FocusModeNotification onClose={closeModal} /> : null;
}

Expand Down
5 changes: 3 additions & 2 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2733,8 +2734,8 @@ ${amount} für ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: 'Willkommen im #Fokus-Modus!',
prompt: 'Bleiben Sie auf dem Laufenden, indem Sie nur ungelesene Chats oder Chats sehen, die Ihre Aufmerksamkeit erfordern. Keine Sorge, Sie können dies jederzeit in ändern.',
settings: 'Einstellungen',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Bleiben Sie auf dem Laufenden, indem Sie nur ungelesene Chats oder Chats sehen, die Ihre Aufmerksamkeit erfordern. Keine Sorge, Sie können dies jederzeit in <a href="${priorityModePageUrl}">Einstellungen</a> ändern.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'Der gesuchte Chat kann nicht gefunden werden.',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2717,8 +2718,8 @@ const translations = {
},
focusModeUpdateModal: {
title: 'Welcome to #focus mode!',
prompt: "Stay on top of things by only seeing unread chats or chats that need your attention. Don't worry, you can change this at any point in ",
settings: 'settings',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Stay on top of things by only seeing unread chats or chats that need your attention. Don’t worry, you can change this at any point in <a href="${priorityModePageUrl}">settings</a>.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'The chat you are looking for cannot be found.',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2694,8 +2695,8 @@ ${amount} para ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: '¡Bienvenido al modo #concentración!',
prompt: 'Mantente al tanto de todo viendo sólo los chats no leídos o los que necesitan tu atención. No te preocupes, puedes cambiar el ajuste en cualquier momento desde la ',
settings: 'configuración',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Mantente al tanto de todo viendo sólo los chats no leídos o los que necesitan tu atención. No te preocupes, puedes cambiar el ajuste en cualquier momento desde la <a href="${priorityModePageUrl}">configuración</a>.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'El chat que estás buscando no se pudo encontrar.',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2729,8 +2730,8 @@ ${amount} pour ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: 'Bienvenue en mode #focus !',
prompt: 'Restez au courant des choses en ne voyant que les discussions non lues ou celles qui nécessitent votre attention. Ne vous inquiétez pas, vous pouvez changer cela à tout moment dans',
settings: 'paramètres',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Restez au courant des choses en ne voyant que les discussions non lues ou celles qui nécessitent votre attention. Ne vous inquiétez pas, vous pouvez changer cela à tout moment dans <a href="${priorityModePageUrl}">paramètres</a>.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'Le chat que vous recherchez est introuvable.',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2742,8 +2743,8 @@ ${amount} per ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: 'Benvenuto in modalità #focus!',
prompt: 'Rimani al passo vedendo solo le chat non lette o quelle che richiedono la tua attenzione. Non preoccuparti, puoi cambiare questa impostazione in qualsiasi momento in',
settings: 'impostazioni',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Rimani al passo vedendo solo le chat non lette o quelle che richiedono la tua attenzione. Non preoccuparti, puoi cambiare questa impostazione in qualsiasi momento in <a href="${priorityModePageUrl}">impostazioni</a>.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'La chat che stai cercando non può essere trovata.',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2731,8 +2732,8 @@ ${date} - ${merchant}に${amount}`,
},
focusModeUpdateModal: {
title: '#focusモードへようこそ!',
prompt: '未読のチャットや注意が必要なチャットのみを表示することで、物事を把握しましょう。心配しないでください、これはいつでも変更できます。',
settings: '設定',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`未読のチャットや注意が必要なチャットのみを表示することで、物事を把握しましょう。心配しないでください、これはいつでも<a href="${priorityModePageUrl}">設定</a>で変更できます。`,
},
notFound: {
chatYouLookingForCannotBeFound: 'お探しのチャットが見つかりません。',
Expand Down
5 changes: 3 additions & 2 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2743,8 +2744,8 @@ ${amount} voor ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: 'Welkom in de #focusmodus!',
prompt: 'Blijf op de hoogte door alleen ongelezen chats of chats die uw aandacht nodig hebben te bekijken. Maak je geen zorgen, je kunt dit op elk moment wijzigen in',
settings: 'instellingen',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Blijf op de hoogte door alleen ongelezen chats of chats die uw aandacht nodig hebben te bekijken. Maak je geen zorgen, je kunt dit op elk moment wijzigen in <a href="${priorityModePageUrl}">instellingen</a>.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'De chat die je zoekt kan niet worden gevonden.',
Expand Down
5 changes: 5 additions & 0 deletions src/languages/params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,10 @@ type MergeAccountIntoParams = {
login: string;
};

type FocusModeUpdateParams = {
priorityModePageUrl: string;
};

export type {
SettlementAccountReconciliationParams,
ContactMethodsRouteParams,
Expand Down Expand Up @@ -1253,4 +1257,5 @@ export type {
ErrorODIntegrationParams,
DisconnectYourBankAccountParams,
MergeAccountIntoParams,
FocusModeUpdateParams,
};
5 changes: 3 additions & 2 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ import type {
FiltersAmountBetweenParams,
FlightLayoverParams,
FlightParams,
FocusModeUpdateParams,
FormattedMaxLengthParams,
GoBackMessageParams,
ImportedTagsMessageParams,
Expand Down Expand Up @@ -2737,8 +2738,8 @@ ${amount} dla ${merchant} - ${date}`,
},
focusModeUpdateModal: {
title: 'Witamy w trybie #focus!',
prompt: 'Bądź na bieżąco, widząc tylko nieprzeczytane czaty lub czaty, które wymagają Twojej uwagi. Nie martw się, możesz to zmienić w dowolnym momencie w',
settings: 'ustawienia',
prompt: ({priorityModePageUrl}: FocusModeUpdateParams) =>
`Bądź na bieżąco, widząc tylko nieprzeczytane czaty lub czaty, które wymagają Twojej uwagi. Nie martw się, możesz to zmienić w dowolnym momencie w <a href="${priorityModePageUrl}">ustawienia</a>.`,
},
notFound: {
chatYouLookingForCannotBeFound: 'Nie można znaleźć czatu, którego szukasz.',
Expand Down
Loading
Loading