Add Campfire integration import pages - #100580
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx bun ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 830d6ed25d
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@s77rt Could you merge main, fix failing checks and resolve AI comments? |
|
@truph01 I have addressed the review comments. (BE is still not ready for testing though) @lakchote Please run translate workflow #100580 (comment) |
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index c6c8ea85..136557b2 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -8647,6 +8647,11 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
subsidiarySelectDescription: 'Wählen Sie die Tochtergesellschaft in Campfire aus, von der Sie Daten importieren möchten.',
noSubsidiariesFound: 'Keine Tochtergesellschaften gefunden',
noSubsidiariesFoundDescription: 'Bitte fügen Sie eine Entität in Campfire hinzu und synchronisieren Sie die Verbindung erneut',
+ importDescription: 'Wählen Sie aus, welche Kodierungskonfigurationen aus Campfire importiert werden sollen.',
+ accountTypesDescription: 'Ihre Campfire-Konten werden als Kategorien importiert.',
+ enableNewAccountsTitle: 'Neu importierte Konten aktivieren',
+ enableNewAccountsDescription: 'Neue Campfire-Konten werden als Kategorien verfügbar sein.',
+ dimensionsImport: 'Alle Campfire-Dimensionen werden als Tags importiert',
},
},
getAssistancePage: {
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 0cbaf4e9..1348b9dd 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -8813,6 +8813,11 @@ ${reportName}`,
subsidiarySelectDescription: 'Επιλέξτε τη θυγατρική στο Campfire από την οποία θέλετε να εισαγάγετε δεδομένα.',
noSubsidiariesFound: 'Δεν βρέθηκαν θυγατρικές',
noSubsidiariesFoundDescription: 'Παρακαλούμε προσθέστε μια οντότητα στο Campfire και συγχρονίστε ξανά τη σύνδεση',
+ importDescription: 'Επιλέξτε ποιες ρυθμίσεις κωδικοποίησης θέλετε να εισαγάγετε από το Campfire.',
+ accountTypesDescription: 'Οι λογαριασμοί Campfire σας θα εισαχθούν ως κατηγορίες.',
+ enableNewAccountsTitle: 'Ενεργοποίηση νέων εισαγόμενων λογαριασμών',
+ enableNewAccountsDescription: 'Οι νέοι λογαριασμοί Campfire θα είναι διαθέσιμοι ως κατηγορίες.',
+ dimensionsImport: 'Όλες οι διαστάσεις Campfire εισάγονται ως ετικέτες',
},
},
getAssistancePage: {
diff --git a/src/languages/es.ts b/src/languages/es.ts
index f20cb8d8..7089a6b9 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -8487,6 +8487,11 @@ ${reportName}`,
subsidiarySelectDescription: 'Elige la filial en Campfire de la que te gustaría importar datos.',
noSubsidiariesFound: 'No se han encontrado filiales',
noSubsidiariesFoundDescription: 'Por favor, añade una entidad en Campfire y sincroniza la conexión de nuevo',
+ importDescription: 'Elige qué configuraciones de codificación quieres importar desde Campfire.',
+ accountTypesDescription: 'Tus cuentas de Campfire se importarán como categorías.',
+ enableNewAccountsTitle: 'Habilitar cuentas recién importadas',
+ enableNewAccountsDescription: 'Las nuevas cuentas de Campfire estarán disponibles como categorías.',
+ dimensionsImport: 'Todas las dimensiones de Campfire se importan como etiquetas',
},
},
getAssistancePage: {
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index ade7d46c..aa197f10 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -8667,6 +8667,11 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
subsidiarySelectDescription: 'Choisissez la filiale dans Campfire à partir de laquelle vous souhaitez importer des données.',
noSubsidiariesFound: 'Aucune filiale trouvée',
noSubsidiariesFoundDescription: 'Veuillez ajouter une entité dans Campfire et synchroniser à nouveau la connexion',
+ importDescription: 'Choisissez les configurations de codage à importer depuis Campfire.',
+ accountTypesDescription: 'Vos comptes Campfire seront importés en tant que catégories.',
+ enableNewAccountsTitle: 'Activer les nouveaux comptes importés',
+ enableNewAccountsDescription: 'Les nouveaux comptes Campfire seront disponibles en tant que catégories.',
+ dimensionsImport: 'Toutes les dimensions Campfire sont importées en tant que tags',
},
},
getAssistancePage: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index b33758fa..a27954e9 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -8599,6 +8599,11 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
subsidiarySelectDescription: 'Scegli la consociata in Campfire da cui vuoi importare i dati.',
noSubsidiariesFound: 'Nessuna consociata trovata',
noSubsidiariesFoundDescription: "Aggiungi un'entità in Campfire e sincronizza di nuovo la connessione",
+ importDescription: 'Scegli quali configurazioni di codifica importare da Campfire.',
+ accountTypesDescription: 'I tuoi account Campfire verranno importati come categorie.',
+ enableNewAccountsTitle: 'Abilita i conti appena importati',
+ enableNewAccountsDescription: 'I nuovi account Campfire saranno disponibili come categorie.',
+ dimensionsImport: 'Tutte le dimensioni Campfire vengono importate come tag',
},
},
getAssistancePage: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 0d8491f9..4f9d7081 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -8493,6 +8493,11 @@ ${reportName}`,
subsidiarySelectDescription: 'データを取り込みたい Campfire 内の子会社を選択してください。',
noSubsidiariesFound: '子会社が見つかりません',
noSubsidiariesFoundDescription: 'Campfire でエンティティを追加して、接続をもう一度同期してください',
+ importDescription: 'Campfire からインポートするコーディング設定を選択してください。',
+ accountTypesDescription: 'Campfire のアカウントはカテゴリとしてインポートされます。',
+ enableNewAccountsTitle: '新しくインポートされた口座を有効にする',
+ enableNewAccountsDescription: '新しい Campfire アカウントは、カテゴリーとして利用できるようになります。',
+ dimensionsImport: 'すべての Campfire ディメンションがタグとしてインポートされます',
},
},
getAssistancePage: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 912bf057..4dbf3b8c 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -8573,6 +8573,11 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
subsidiarySelectDescription: 'Kies de dochteronderneming in Campfire waarvan je gegevens wilt importeren.',
noSubsidiariesFound: 'Geen dochterondernemingen gevonden',
noSubsidiariesFoundDescription: 'Voeg alsjeblieft een entiteit toe in Campfire en synchroniseer de verbinding opnieuw',
+ importDescription: 'Kies welke boekhoudconfiguraties je wilt importeren uit Campfire.',
+ accountTypesDescription: 'Je Campfire-accounts worden geïmporteerd als categorieën.',
+ enableNewAccountsTitle: 'Nieuw geïmporteerde rekeningen inschakelen',
+ enableNewAccountsDescription: 'Nieuwe Campfire-accounts zijn beschikbaar als categorieën.',
+ dimensionsImport: 'Alle Campfire-dimensies worden als labels geïmporteerd',
},
},
getAssistancePage: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 1d03a82d..33b0df9a 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -8597,6 +8597,11 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
subsidiarySelectDescription: 'Wybierz spółkę zależną w Campfire, z której chcesz zaimportować dane.',
noSubsidiariesFound: 'Nie znaleziono żadnych spółek zależnych',
noSubsidiariesFoundDescription: 'Dodaj proszę jednostkę w Campfire i zsynchronizuj połączenie ponownie',
+ importDescription: 'Wybierz, które konfiguracje kodowania zaimportować z Campfire.',
+ accountTypesDescription: 'Twoje konta Campfire zostaną zaimportowane jako kategorie.',
+ enableNewAccountsTitle: 'Włącz nowo zaimportowane konta',
+ enableNewAccountsDescription: 'Nowe konta Campfire będą dostępne jako kategorie.',
+ dimensionsImport: 'Wszystkie wymiary Campfire są importowane jako tagi',
},
},
getAssistancePage: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index ced21bcf..61bb0b74 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -8580,6 +8580,11 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
subsidiarySelectDescription: 'Escolha a subsidiária no Campfire da qual você gostaria de importar dados.',
noSubsidiariesFound: 'Nenhuma subsidiária encontrada',
noSubsidiariesFoundDescription: 'Adicione uma entidade no Campfire e sincronize a conexão novamente',
+ importDescription: 'Escolha quais configurações de codificação importar do Campfire.',
+ accountTypesDescription: 'Suas contas do Campfire serão importadas como categorias.',
+ enableNewAccountsTitle: 'Ativar contas recém-importadas',
+ enableNewAccountsDescription: 'Novas contas Campfire estarão disponíveis como categorias.',
+ dimensionsImport: 'Todas as dimensões do Campfire são importadas como etiquetas',
},
},
getAssistancePage: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index d9010e61..0adb8154 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -8273,6 +8273,11 @@ ${reportName}`,
subsidiarySelectDescription: '选择要从中导入数据的 Campfire 子公司。',
noSubsidiariesFound: '未找到子公司',
noSubsidiariesFoundDescription: '请在 Campfire 中添加一个实体,然后再次同步连接',
+ importDescription: '选择要从 Campfire 导入的编码配置。',
+ accountTypesDescription: '您的 Campfire 账户将会作为类别导入。',
+ enableNewAccountsTitle: '启用新导入的账户',
+ enableNewAccountsDescription: '新的 Campfire 账户将可用作类别。',
+ dimensionsImport: '所有 Campfire 维度都会作为标签导入',
},
},
getAssistancePage: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
Reviewer Checklist
Screenshots/VideosMacOS: Chrome / SafariScreen.Recording.2026-09-15.at.01.01.17.mov |
|
The code changes look good. We just need to wait until the |
|
BE PR has just been merged, let's wait for deploy |
|
@truph01 you can use the staging server and it will work |
|
I could not review this diff, so I did not approve the workflow runs. An Expensify employee will review it and approve them manually. |
|
I noticed that some calls are not returning all the expected updates and causes the app to call Screen.Recording.2026-09-17.at.1.43.22.PM.mov |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 lakchote has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/lakchote in version: 9.4.82-0 🚀
|
|
🚀 Deployed to staging by https://github.com/lakchote in version: 9.4.86-0 🚀
|
|
🚀 Deployed to staging by https://github.com/lakchote in version: 9.4.89-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 9.4.89-0 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
Fixed Issues
$ #100180
PROPOSAL:
Tests
Screen.Recording.2026-09-17.at.1.30.28.PM.mov
Offline tests
Same as Tests
QA Steps
Same as Tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari