diff --git a/assets/images/simple-illustrations/simple-illustration__foldersync.svg b/assets/images/simple-illustrations/simple-illustration__foldersync.svg
new file mode 100644
index 000000000000..ca3bfd59fd05
--- /dev/null
+++ b/assets/images/simple-illustrations/simple-illustration__foldersync.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/BlockingViews/FullPageErrorView.tsx b/src/components/BlockingViews/FullPageErrorView.tsx
index 6ffb8defccf0..4ecbfb7fef41 100644
--- a/src/components/BlockingViews/FullPageErrorView.tsx
+++ b/src/components/BlockingViews/FullPageErrorView.tsx
@@ -13,6 +13,12 @@ import {View} from 'react-native';
import BlockingView from './BlockingView';
import ForceFullScreenView from './ForceFullScreenView';
+/**
+ * Illustrations this view can show. Both are requested up front, because the lazy illustrations hook
+ * only seeds its asset map once per mount, so a name it wasn't given at mount resolves to PlaceholderIcon.
+ */
+type FullPageErrorViewIllustration = 'BrokenMagnifyingGlass' | 'FolderSync';
+
type FullPageErrorViewProps = {
testID?: string;
children?: React.ReactNode;
@@ -38,6 +44,15 @@ type FullPageErrorViewProps = {
/** Function to call when pressing the CTA button. The button only renders when this and `buttonTranslationKey` are both provided */
onButtonPress?: () => void;
+
+ /** Illustration shown above the title */
+ illustration?: FullPageErrorViewIllustration;
+
+ /** Width of the illustration */
+ illustrationWidth?: number;
+
+ /** Height of the illustration */
+ illustrationHeight?: number;
};
function FullPageErrorView({
@@ -51,9 +66,12 @@ function FullPageErrorView({
containerStyle,
buttonTranslationKey,
onButtonPress,
+ illustration = 'BrokenMagnifyingGlass',
+ illustrationWidth = variables.errorPageIconWidth,
+ illustrationHeight = variables.errorPageIconHeight,
}: FullPageErrorViewProps) {
const styles = useThemeStyles();
- const illustrations = useMemoizedLazyIllustrations(['BrokenMagnifyingGlass']);
+ const illustrations = useMemoizedLazyIllustrations(['BrokenMagnifyingGlass', 'FolderSync']);
if (shouldShow) {
return (
@@ -63,9 +81,9 @@ function FullPageErrorView({
testID={testID}
>
{
// A response replaces the snapshot's results rather than appending to them, so retrying at
// the paginated offset would leave only that later page behind. Retry from the first page.
diff --git a/src/languages/de.ts b/src/languages/de.ts
index 5027b4d511ff..44ab2eebd4d9 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -9541,6 +9541,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
title: 'Keine Ausgaben zum Genehmigen',
subtitle: 'Null Ausgaben. Maximale Entspannung. Gut gemacht!',
},
+ staleResults: {title: 'Aktualisierung erforderlich', subtitle: 'Diese Seite ist veraltet, aktualisieren Sie sie, um die neuesten Inhalte zu sehen', buttonText: 'Aktualisieren'},
},
columns: 'Spalten',
editColumns: 'Spalten bearbeiten',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 966be5c3dfe3..b4d3f95ff582 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -9749,6 +9749,7 @@ ${reportName}`,
emptyViolationSnapshotResults: {
subtitle: (formattedDate) => `Οι παραβάσεις παρακολουθούνται μόνο από ${formattedDate} και μετά. Δοκιμάστε να προσαρμόσετε τα φίλτρα ημερομηνίας σας.`,
},
+ staleResults: {title: 'Απαιτείται ανανέωση', subtitle: 'Αυτή η σελίδα είναι παρωχημένη, κάντε ανανέωση για να δείτε τα πιο πρόσφατα', buttonText: 'Ανανέωση'},
},
columns: 'Στήλες',
editColumns: 'Επεξεργασία στηλών',
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 92988a3a7906..c50519f37460 100644
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -9683,6 +9683,11 @@ const translations = {
title: 'No expenses to approve',
subtitle: 'Zero expenses. Maximum chill. Well done!',
},
+ staleResults: {
+ title: 'Refresh needed',
+ subtitle: 'This page is out of date, refresh to see the latest',
+ buttonText: 'Refresh',
+ },
},
columns: 'Columns',
editColumns: 'Edit columns',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 98f5aa59d875..8c1a39189422 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -9395,6 +9395,7 @@ ${reportName}`,
title: 'No hay gastos para aprobar',
subtitle: 'Cero gastos. Máxima relajación. ¡Bien hecho!',
},
+ staleResults: {title: 'Es necesario actualizar', subtitle: 'Esta página está desactualizada, actualiza para ver lo más reciente', buttonText: 'Actualizar'},
},
columns: 'Columnas',
editColumns: 'Editar columnas',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 0ccfe26792c2..06bbeaaa42c5 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -9560,6 +9560,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
title: 'Aucune dépense à approuver',
subtitle: 'Zéro dépense. Détente maximale. Bien joué !',
},
+ staleResults: {title: 'Actualisation requise', subtitle: 'Cette page n’est plus à jour, actualisez-la pour voir les dernières informations', buttonText: 'Actualiser'},
},
columns: 'Colonnes',
editColumns: 'Modifier les colonnes',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index b3161ed524b2..2cf2c0b76ae0 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -9497,6 +9497,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
title: 'Nessuna spesa da approvare',
subtitle: 'Zero spese. Massimo relax. Ben fatto!',
},
+ staleResults: {title: 'Aggiornamento necessario', subtitle: 'Questa pagina non è aggiornata, ricarica per vedere le ultime novità', buttonText: 'Aggiorna'},
},
columns: 'Colonne',
editColumns: 'Modifica colonne',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index f61deb35c198..c0f106c13c2b 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -9370,6 +9370,7 @@ ${reportName}`,
title: '承認する経費はありません',
subtitle: '経費はゼロ。リラックス度マックス。お見事です!',
},
+ staleResults: {title: '再読み込みが必要です', subtitle: 'このページは古くなっています。最新の情報を見るには再読み込みしてください。', buttonText: '更新'},
},
columns: '列',
editColumns: '列の編集',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 37feb82d1543..3371964dddd3 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -9465,6 +9465,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
title: 'Geen declaraties om goed te keuren',
subtitle: 'Nul uitgaven. Maximale chill. Goed gedaan!',
},
+ staleResults: {title: 'Vernieuwen nodig', subtitle: 'Deze pagina is verouderd, vernieuw om de laatste versie te zien', buttonText: 'Verversen'},
},
columns: 'Kolommen',
editColumns: 'Kolommen bewerken',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 2becadce0c37..afb52094ada3 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -9481,6 +9481,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
title: 'Brak wydatków do zatwierdzenia',
subtitle: 'Zero wydatków. Maksymalny luz. Dobra robota!',
},
+ staleResults: {title: 'Wymagane odświeżenie', subtitle: 'Ta strona jest nieaktualna, odśwież ją, żeby zobaczyć najnowszą wersję', buttonText: 'Odśwież'},
},
columns: 'Kolumny',
editColumns: 'Edytuj kolumny',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index c67506dc9fb5..53151764a126 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -9463,6 +9463,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
title: 'Nenhuma despesa para aprovar',
subtitle: 'Zero despesas. Máximo sossego. Muito bem!',
},
+ staleResults: {title: 'É preciso atualizar', subtitle: 'Esta página está desatualizada, atualize para ver a versão mais recente', buttonText: 'Atualizar'},
},
columns: 'Colunas',
editColumns: 'Editar colunas',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 6358d88d3ab9..f4b581c2165e 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -9118,6 +9118,7 @@ ${reportName}`,
title: '没有报销可审批',
subtitle: '零报销,最大轻松。干得好!',
},
+ staleResults: {title: '需要刷新', subtitle: '此页面已过期,刷新以查看最新内容', buttonText: '刷新'},
},
columns: '列',
editColumns: '编辑列',