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: '编辑列',