[No QA] [HR Import] Show "You must disconnect first" modal #91415
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 ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
3ac74a9 to
c0240f2
Compare
This comment has been minimized.
This comment has been minimized.
c0240f2 to
6d20aaf
Compare
|
@nyomanjyotisa Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
dannymcclain
left a comment
There was a problem hiding this comment.
Video looks good to me 👍 (this is a visual/design review only!)
| holdEducationModalWidth: 400, | ||
| changePolicyEducationModalWidth: 400, | ||
| builtInProtectionModalWidth: 400, | ||
| hrAlreadyConnectedModalWidth: 400, |
There was a problem hiding this comment.
@jmusial all these modals are the same size, maybe time for a standardization
There was a problem hiding this comment.
Well, only the last 2 ones are for confirm modals, others are education, so I would't join them together. Can unify the 2
| disconnect: 'Disconnect', | ||
| disconnectTitle: (providerName: string) => `Disconnect ${providerName}`, | ||
| disconnectPrompt: (providerName: string) => `Are you sure you want to disconnect ${providerName}?`, | ||
| alreadyConnectedTitle: 'Cannot connect to multiple HR platform', |
There was a problem hiding this comment.
| alreadyConnectedTitle: 'Cannot connect to multiple HR platform', | |
| alreadyConnectedTitle: 'Cannot connect to multiple HR platforms', |
grgia
left a comment
There was a problem hiding this comment.
code-wise just need the plural typo fixed really
🦜 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 3c6b3837..6538e8fb 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -7188,8 +7188,8 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
disconnect: 'Trennen',
disconnectTitle: (providerName: string) => `${providerName} trennen`,
disconnectPrompt: (providerName: string) => `Möchten Sie ${providerName} wirklich trennen?`,
- alreadyConnectedTitle: 'Verbindung mit mehreren HR-Plattformen nicht möglich',
- alreadyConnectedPrompt: 'Sie müssen Ihre derzeitige HR-Plattform trennen, bevor Sie eine andere verbinden.',
+ alreadyConnectedTitle: 'Es kann keine Verbindung zu mehreren HR-Plattformen hergestellt werden',
+ alreadyConnectedPrompt: 'Sie müssen Ihre aktuelle HR-Plattform trennen, bevor Sie eine andere verbinden.',
lastSync: (relativeDate: string) => `Zuletzt synchronisiert ${relativeDate}`,
syncError: (providerName: string) => `Verbindung zu ${providerName} nicht möglich`,
connectionDescription: (providerName: string) => `Verbinden Sie ${providerName}, um Mitarbeitergenehmigungen mit Ihrem Workspace zu synchronisieren.`,
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 61efb9b2..00433b6a 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -6289,7 +6289,7 @@ ${amount} para ${merchant} - ${date}`,
disconnect: 'Desconectar',
disconnectTitle: (providerName: string) => `Desconectar ${providerName}`,
disconnectPrompt: (providerName: string) => `¿Seguro que quieres desconectar ${providerName}?`,
- alreadyConnectedTitle: 'No se puede conectar a múltiples plataformas de RR. HH.',
+ alreadyConnectedTitle: 'No se puede conectar a varias plataformas de RR. HH.',
alreadyConnectedPrompt: 'Debes desconectar tu plataforma de RR. HH. actual antes de conectar otra.',
lastSync: (relativeDate: string) => `Última sincronización ${relativeDate}`,
syncError: (providerName: string) => `No se puede conectar con ${providerName}`,
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 683c2304..9b347d41 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -7212,7 +7212,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
disconnectTitle: (providerName: string) => `Déconnecter ${providerName}`,
disconnectPrompt: (providerName: string) => `Êtes-vous sûr de vouloir déconnecter ${providerName} ?`,
alreadyConnectedTitle: 'Impossible de se connecter à plusieurs plateformes RH',
- alreadyConnectedPrompt: "Vous devez déconnecter votre plateforme RH actuelle avant d'en connecter une autre.",
+ alreadyConnectedPrompt: 'Vous devez déconnecter votre plateforme RH actuelle avant d’en connecter une autre.',
lastSync: (relativeDate: string) => `Dernière synchronisation ${relativeDate}`,
syncError: (providerName: string) => `Impossible de se connecter à ${providerName}`,
connectionDescription: (providerName: string) => `Connectez ${providerName} pour synchroniser les approbations des employés avec votre espace de travail.`,
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 362b3dcd..14af8e03 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -7176,7 +7176,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
disconnectTitle: (providerName: string) => `Disconnetti ${providerName}`,
disconnectPrompt: (providerName: string) => `Sei sicuro di voler disconnettere ${providerName}?`,
alreadyConnectedTitle: 'Impossibile connettersi a più piattaforme HR',
- alreadyConnectedPrompt: "Devi disconnettere la tua piattaforma HR attuale prima di collegarne un'altra.",
+ alreadyConnectedPrompt: 'Devi disconnettere la tua attuale piattaforma HR prima di collegarne un’altra.',
lastSync: (relativeDate: string) => `Ultima sincronizzazione ${relativeDate}`,
syncError: (providerName: string) => `Impossibile connettersi a ${providerName}`,
connectionDescription: (providerName: string) => `Collega ${providerName} per mantenere sincronizzate le approvazioni dei dipendenti con il tuo spazio di lavoro.`,
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 8e432350..7f87aa0e 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -7150,8 +7150,8 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
disconnect: 'Ontkoppelen',
disconnectTitle: (providerName: string) => `${providerName} ontkoppelen`,
disconnectPrompt: (providerName: string) => `Weet je zeker dat je ${providerName} wilt ontkoppelen?`,
- alreadyConnectedTitle: 'Kan geen verbinding maken met meerdere HR-platforms',
- alreadyConnectedPrompt: 'Je moet je huidige HR-platform ontkoppelen voordat je een ander verbindt.',
+ alreadyConnectedTitle: 'Kan niet met meerdere HR-platformen verbinden',
+ alreadyConnectedPrompt: 'Je moet je huidige HR-platform loskoppelen voordat je een ander kunt verbinden.',
lastSync: (relativeDate: string) => `Laatst gesynchroniseerd ${relativeDate}`,
syncError: (providerName: string) => `Kan geen verbinding maken met ${providerName}`,
connectionDescription: (providerName: string) => `Verbind ${providerName} om goedkeuringen van werknemers gesynchroniseerd te houden met je werkruimte.`,
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 712b9e7e..fff51ab9 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -7145,7 +7145,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
disconnect: 'Odłącz',
disconnectTitle: (providerName: string) => `Odłącz ${providerName}`,
disconnectPrompt: (providerName: string) => `Czy na pewno chcesz odłączyć ${providerName}?`,
- alreadyConnectedTitle: 'Nie można połączyć z wieloma platformami HR',
+ alreadyConnectedTitle: 'Nie można połączyć się z wieloma platformami HR',
alreadyConnectedPrompt: 'Musisz odłączyć swoją obecną platformę HR, zanim podłączysz inną.',
lastSync: (relativeDate: string) => `Ostatnia synchronizacja ${relativeDate}`,
syncError: (providerName: string) => `Nie można połączyć z ${providerName}`,
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 2a64c296..76f90cf8 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -6965,8 +6965,8 @@ ${reportName}
disconnect: '断开连接',
disconnectTitle: (providerName: string) => `断开 ${providerName}`,
disconnectPrompt: (providerName: string) => `确定要断开 ${providerName} 吗?`,
- alreadyConnectedTitle: '无法连接到多个 HR 平台',
- alreadyConnectedPrompt: '在连接其他人力资源平台之前,必须先断开当前的人力资源平台。',
+ alreadyConnectedTitle: '无法连接到多个人力资源平台',
+ alreadyConnectedPrompt: '在连接其他人力资源平台之前,您必须先断开当前的人力资源平台。',
lastSync: (relativeDate: string) => `上次同步 ${relativeDate}`,
syncError: (providerName: string) => `无法连接到 ${providerName}`,
connectionDescription: (providerName: string) => `连接 ${providerName},以在您的工作区中同步员工审批。`,
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
🚧 @grgia has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid.mp4Android: mWeb Chromeandroid.mweb.mp4iOS: HybridAppios.mp4iOS: mWeb Safariios.mweb.mp4MacOS: Chrome / Safarib.mp4 |
grgia
left a comment
There was a problem hiding this comment.
approving, but will wait on @bernhardoj's review
|
The modal shows, but looks like the animation is missing 🤔 b.mp4Tested on other centered modals and has the same issue, so unrelated. |
Isn't this the case for all confirm modals ? |
Not sure if it is, but could this be related to this issue? (We're planning on adding back a little animation to the confirm dialogs) |
|
@dannymcclain yes, that must be it |
|
@grgia ready to merge |
|
🚧 @grgia 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! 🧪🧪
|
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/grgia in version: 9.3.80-0 🚀
Bundle Size Analysis (Sentry): |
|
I reviewed the changes in this PR and found that a help site update is needed. What changed: This PR adds a modal preventing users from connecting multiple HR platforms simultaneously. When a workspace already has an HR connection and the user tries to connect another provider, they now see a "Cannot connect to multiple HR platforms" message. Help site impact: The New Expensify TriNet article ( Draft PR: #91477 (labeled Note: There is no New Expensify Gusto help article currently, so only the TriNet article was updated. The Expensify Classic Gusto and TriNet articles were not changed since this code change only affects the New Expensify HR page. |
|
🚀 Deployed to production by https://github.com/luacmartins in version: 9.3.81-2 🚀
|
The TriNet help article now mentions that only one HR platform can be connected per workspace at a time, matching the new modal behavior added in Expensify#91415. Co-authored-by: Jan Musiał <jmusial@users.noreply.github.com>
Explanation of Change
This PR prevents user from entering new connection flow when there is an existing connection, prompting them to disconnect first.
Fixed Issues
$ #91401
PROPOSAL:
Tests
Prerequisites:
Offline tests
Same as tests
QA Steps
n/A
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.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
amdroid.mov
MacOS: Chrome / Safari
Screen.Recording.2026-05-22.at.15.02.11.mov