Repository navigation
[Payment due @shubham1206agra] Correct merge accounts warning to say data moves instead of being lost - #104809
Conversation
Co-authored-by: Nguyen Van Duc <[email protected]>
|
I created this PR from an upstream branch since I don't have push access to your fork. To take ownership of this branch and be able to push updates, run: Then you can close this PR and open a new one from your fork. |
🦜 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 a3ae8e68..debcead2 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -2513,7 +2513,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Sind Sie sicher, dass Sie Konten zusammenführen möchten?',
mergeIsIrreversible: (login: string) =>
- `Das Zusammenführen Ihrer Konten ist endgültig. Alle Ausgaben und Berichte von <strong>${login}</strong>, einschließlich Entwürfen und nicht eingereichter Ausgaben, werden in das Konto verschoben, das Sie behalten.`,
+ `Das Zusammenführen Ihrer Konten ist unumkehrbar. Alle Ausgaben und Berichte von <strong>${login}</strong>, einschließlich Entwürfen und nicht eingereichten Ausgaben, werden auf das Konto verschoben, das Sie behalten.`,
enterSecurityCode: (login: string) => `Um fortzufahren, geben Sie bitte den Sicherheitscode ein, der an <strong>${login}</strong> gesendet wurde.`,
errors: {
incorrectSecurityCode: 'Falscher oder ungültiger Sicherheitscode. Bitte versuchen Sie es erneut oder fordern Sie einen neuen Code an.',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index f80cb0bd..514a4972 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -2565,7 +2565,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Είστε βέβαιοι ότι θέλετε να συγχωνεύσετε λογαριασμούς;',
mergeIsIrreversible: (login: string) =>
- `Η συγχώνευση των λογαριασμών σας είναι μη αναστρέψιμη. Όλα τα έξοδα και οι αναφορές του/της <strong>${login}</strong>, συμπεριλαμβανομένων των πρόχειρων και των μη αναφερθέντων εξόδων, θα μεταφερθούν στον λογαριασμό που διατηρείτε.`,
+ `Η συγχώνευση των λογαριασμών σας είναι μη αναστρέψιμη. Όλες οι δαπάνες και οι αναφορές από τον λογαριασμό <strong>${login}</strong>, συμπεριλαμβανομένων των προσχεδίων και των μη καταχωρισμένων δαπανών, θα μετακινηθούν στον λογαριασμό που διατηρείτε.`,
errors: {
fallback: 'Κάτι πήγε στραβά. Παρακαλούμε δοκιμάστε ξανά αργότερα.',
incorrectSecurityCode: 'Εσφαλμένος ή μη έγκυρος κωδικός ασφαλείας. Δοκιμάστε ξανά ή ζητήστε έναν νέο κωδικό.',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 4e77f880..01d16ca7 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -2417,8 +2417,8 @@ const translations: TranslationDeepObject<typeof en> = {
},
accountValidate: {
confirmMerge: '¿Estás seguro de que deseas fusionar cuentas?',
- mergeIsIrreversible: (login) =>
- `Fusionar tus cuentas es irreversible. Todos los gastos e informes de <strong>${login}</strong>, incluidos los borradores y los gastos no reportados, se moverán a la cuenta que conservas.`,
+ mergeIsIrreversible: (login: string) =>
+ `La fusión de tus cuentas es irreversible. Todos los gastos e informes de <strong>${login}</strong>, incluidos los borradores y los gastos no reportados, se trasladarán a la cuenta que vas a conservar.`,
enterSecurityCode: (login: string) => `Para continuar, introduce el código de seguridad enviado a <strong>${login}</strong>.`,
errors: {
incorrectSecurityCode: 'Código de seguridad incorrecto o no válido. Inténtalo de nuevo o solicita un código nuevo.',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 7547d13c..cb15c5f5 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -2518,7 +2518,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Voulez-vous vraiment fusionner les comptes ?',
mergeIsIrreversible: (login: string) =>
- `La fusion de vos comptes est irréversible. Toutes les dépenses et notes de frais de <strong>${login}</strong>, y compris les brouillons et les dépenses non déclarées, seront transférées vers le compte que vous conservez.`,
+ `La fusion de vos comptes est irréversible. Toutes les dépenses et notes de frais de <strong>${login}</strong>, y compris les brouillons et les dépenses non déclarées, seront déplacées vers le compte que vous conservez.`,
enterSecurityCode: (login: string) => `Pour continuer, veuillez saisir le code de sécurité envoyé à <strong>${login}</strong>.`,
errors: {
incorrectSecurityCode: 'Code de sécurité incorrect ou non valide. Veuillez réessayer ou demander un nouveau code.',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 5a49e749..074892d3 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -2506,7 +2506,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Sei sicuro di voler unire gli account?',
mergeIsIrreversible: (login: string) =>
- `L’unione dei tuoi account è irreversibile. Tutte le spese e i report di <strong>${login}</strong>, incluse le bozze e le spese non rendicontate, verranno spostati nell’account che mantieni.`,
+ `Unire i tuoi account è irreversibile. Tutte le spese e i report di <strong>${login}</strong>, incluse le bozze e le spese non riportate, verranno spostati sull’account che manterrai.`,
enterSecurityCode: (login: string) => `Per continuare, inserisci il codice di sicurezza inviato a <strong>${login}</strong>.`,
errors: {incorrectSecurityCode: 'Codice di sicurezza errato o non valido. Riprova oppure richiedi un nuovo codice.', fallback: 'Si è verificato un errore. Riprova più tardi.'},
},
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 09f5bc86..e756c8f4 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -2486,7 +2486,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: '本当にアカウントを統合してもよろしいですか?',
mergeIsIrreversible: (login: string) =>
- `アカウントの統合は元に戻せません。<strong>${login}</strong> のすべての経費とレポート(下書きや未申請の経費を含む)は、残すアカウントに移動されます。`,
+ `アカウントを統合すると元に戻すことはできません。下書きや未報告の経費を含む<strong>${login}</strong>のすべての経費とレポートは、引き続きご利用になるアカウントに移動します。`,
enterSecurityCode: (login: string) => `続行するには、<strong>${login}</strong> に送信されたセキュリティコードを入力してください。`,
errors: {
incorrectSecurityCode: 'セキュリティコードが正しくないか無効です。もう一度お試しいただくか、新しいコードをリクエストしてください。',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 9e07d6f0..986d32d5 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -2504,7 +2504,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Weet je zeker dat je accounts wilt samenvoegen?',
mergeIsIrreversible: (login: string) =>
- `Het samenvoegen van je accounts is onomkeerbaar. Alle uitgaven en rapporten van <strong>${login}</strong>, inclusief concepten en niet-ingediende uitgaven, worden verplaatst naar het account dat je behoudt.`,
+ `Het samenvoegen van je accounts is onomkeerbaar. Alle uitgaven en rapporten van <strong>${login}</strong>, inclusief concepten en niet-gerapporteerde uitgaven, worden verplaatst naar het account dat je behoudt.`,
enterSecurityCode: (login: string) => `Om door te gaan, voer de beveiligingscode in die is verzonden naar <strong>${login}</strong>.`,
errors: {
incorrectSecurityCode: 'Onjuiste of ongeldige beveiligingscode. Probeer het opnieuw of vraag een nieuwe code aan.',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 34d93f15..06e0fb78 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -2545,7 +2545,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Czy na pewno chcesz scalić konta?',
mergeIsIrreversible: (login: string) =>
- `Połączenie Twoich kont jest nieodwracalne. Wszystkie wydatki i raporty użytkownika <strong>${login}</strong>, w tym wersje robocze i nierozliczone wydatki, zostaną przeniesione na konto, które zachowujesz.`,
+ `Połączenie kont jest nieodwracalne. Wszystkie wydatki i raporty z <strong>${login}</strong>, w tym wersje robocze i nierozliczone wydatki, zostaną przeniesione na konto, które zachowujesz.`,
enterSecurityCode: (login: string) => `Aby kontynuować, wpisz kod bezpieczeństwa wysłany na <strong>${login}</strong>.`,
errors: {
incorrectSecurityCode: 'Nieprawidłowy lub nieważny kod zabezpieczający. Spróbuj ponownie albo poproś o nowy kod.',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index e9eb9ed3..2f2fc8cd 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -2496,7 +2496,7 @@ const translations: TranslationDeepObject<typeof en> = {
accountValidate: {
confirmMerge: 'Tem certeza de que deseja mesclar as contas?',
mergeIsIrreversible: (login: string) =>
- `A fusão das suas contas é irreversível. Todas as despesas e relatórios de <strong>${login}</strong>, incluindo rascunhos e despesas não lançadas, serão transferidos para a conta que você está mantendo.`,
+ `Mesclar suas contas é irreversível. Todas as despesas e relatórios de <strong>${login}</strong>, incluindo rascunhos e despesas não informadas, serão movidos para a conta que você está mantendo.`,
enterSecurityCode: (login: string) => `Para continuar, digite o código de segurança enviado para <strong>${login}</strong>.`,
errors: {
incorrectSecurityCode: 'Código de segurança incorreto ou inválido. Tente novamente ou solicite um novo código.',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 162a4fe4..f22f6af8 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -2424,7 +2424,7 @@ const translations: TranslationDeepObject<typeof en> = {
},
accountValidate: {
confirmMerge: '确定要合并账户吗?',
- mergeIsIrreversible: (login: string) => `合并您的账户后将无法撤销。<strong>${login}</strong> 的所有报销费用和报表(包括草稿和未报告的费用)都将转移到您保留的账户中。`,
+ mergeIsIrreversible: (login: string) => `合并您的账户后将无法恢复。来自<strong>${login}</strong>的所有费用和报表(包括草稿和未提交的费用)都会被转移到您保留的账户中。`,
enterSecurityCode: (login: string) => `若要继续,请输入发送到 <strong>${login}</strong> 的安全码。`,
errors: {incorrectSecurityCode: '安全码不正确或无效。请重试或请求新代码。', fallback: '出现问题。请稍后再试。'},
},
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
🤖 Android test steps verification results: The PR's Tests section is still a TODO, so I tested steps built from the PR description. The Merge accounts entry page works, but I couldn't reach the confirmation page that shows the new warning, because the merge target email must already be an Expensify account and this single-session test environment has no second account to use.
|
|
@MelvinBot, complete the checklist Here are the steps (use for Offline and QA as well)
Here's the evidence on Web macOS
then open the PR |
|
🤖 Web test steps verification results: The confirmation page shows the new warning exactly as written, with the target email in bold, and the old "loss of any unsubmitted expenses" text is gone. I couldn't confirm the PR's one documented check, "no errors in the JS console," because the web test tool can't read the browser console. The PR's Tests section is still a TODO, so the other steps come from the PR description.
|
|
@shubham1206agra 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] |
|
The PR body is complete, and the PR is now ready for review.
The Android and iOS screenshot sections are still empty, but the checklist says you tested all platforms. Please add those screenshots, or uncheck the platforms you didn't test. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@dukenv0307 Do I need to review this or not? |
|
@shubham1206agra yep, pls review it |
|
@MelvinBot Apply translations from here #104809 (comment) |
Co-authored-by: Shubham Agrawal <[email protected]>
|
@aimane-chnaif 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] |
|
I applied the Polyglot Parrot translations in commit The commit updates I couldn't run lint or prettier locally, so CI will confirm formatting. |
Reviewer Checklist
Screenshots/Videos
|
|
@marcaaron 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] |
|
🎯 @shubham1206agra, thanks for reviewing and testing this PR! 🎉 A payment issue will be created for your review once this PR is deployed to production. If payment is not needed (e.g., regression PR review fix etc), react with 👎 to this comment to prevent the payment issue from being created. |
|
No code fix is needed. The code checks all pass on the latest commit, including Jest, TypeScript, ESLint, and the Reassure perf tests. The Two checks still fail, and only a reviewer can clear them:
|
|
No code fix is needed. Every code check passes on the latest commit. The only failing check is |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 marcaaron 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/marcaaron in version: 9.5.21-0 🚀
|
|
No help site update is needed. This PR only corrects an in-app warning message, and the Merge Accounts article already says merging "combines all of your receipts, expenses, reports, invoices, imported cards, Copilots, and workspace access into one account," which matches the new copy. |
|
🚀 Deployed to staging by https://github.com/marcaaron in version: 9.5.23-0 🚀
|
|
No help site update is needed. This PR only rewrites an in-app warning message. The Merge Accounts article already says merging "combines all of your receipts, expenses, reports, invoices, imported cards, Copilots, and workspace access into one account," which matches the new wording. |







Explanation of Change
The Merge accounts confirmation page told users that merging "will result in the loss of any unsubmitted expenses" for the account being merged. That's wrong: a merge moves all of the merged account's reports in every state (including drafts) and its unreported expenses to the account being kept. Nothing is deleted. The same page's success message and both Merge Accounts help articles already say all data is combined.
This PR:
mergeAccountsPage.accountValidate.lossOfUnsubmittedDatatomergeIsIrreversible, since the old name describes the wrong behavior, and updates its only usage inAccountValidatePage.tsx.es,de,el,fr,it,ja,nl,pl,pt-BR,zh-hans) with a matching translation, reusing each file's existing terms for expenses, reports, drafts and unreported expenses.The Expensify Classic version of this warning lives outside this repo and needs a separate fix.
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/693581
PROPOSAL:
Tests
Merging your accounts is irreversible. All expenses and reports from [email protected], including drafts and unreported expenses, will be moved to the account you’re keeping.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)npm run compress-svg)Avataris modified, I verified thatAvataris working as expected)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