Add confirmation before settling Expensify Card balance - #97401
Add confirmation before settling Expensify Card balance#97401MelvinBot wants to merge 2 commits into
Conversation
Co-authored-by: Situ Chandra Shil <situchan@users.noreply.github.com>
Co-authored-by: Situ Chandra Shil <situchan@users.noreply.github.com>
|
I created this PR from a branch on Then you can close this PR and open a new one from your fork, or push directly here if you'd prefer to keep this PR. |
🦜 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 b74a241fb07..b19e2afdde0 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -5944,7 +5944,7 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
settleBalance: 'Saldo ausgleichen',
settleBalanceConfirmationTitle: 'Saldo ausgleichen?',
settleBalanceConfirmationPrompt:
- 'Dadurch wird dein aktueller Saldo am nächsten Werktag ausgeglichen. Nach erfolgreicher Abwicklung wird der Betrag deinem verbleibenden Limit wieder gutgeschrieben.',
+ 'Dies begleicht Ihren aktuellen Saldo am nächsten Werktag. Nach erfolgreicher Ausführung wird der Betrag wieder zu Ihrem verbleibenden Limit hinzugefügt.',
cardLimit: 'Kartenlimit',
remainingLimit: 'Verbleibendes Limit',
requestLimitIncrease: 'Anhebung des Anfragelimits',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 5e0b971003f..caed2eac571 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -5780,7 +5780,7 @@ ${amount} para ${merchant} - ${date}`,
balanceWillBeSettledOn: (settlementDate) => `El saldo se liquidará el ${settlementDate}.`,
settleBalance: 'Liquidar saldo',
settleBalanceConfirmationTitle: '¿Liquidar saldo?',
- settleBalanceConfirmationPrompt: 'Esto liquidará tu saldo actual el próximo día hábil. Una vez completado, el importe se sumará de nuevo a tu límite restante.',
+ settleBalanceConfirmationPrompt: 'Esto liquidará tu saldo actual el siguiente día hábil. Una vez completado con éxito, el importe se añadirá de nuevo a tu límite restante.',
cardLimit: 'Límite de la tarjeta',
remainingLimit: 'Límite restante',
requestLimitIncrease: 'Solicitar aumento de límite',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 336b330632e..b37d37d33fe 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -5954,9 +5954,8 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
currentBalanceDescription: 'Le solde actuel est la somme de toutes les transactions Carte Expensify comptabilisées depuis la dernière date de règlement.',
balanceWillBeSettledOn: (settlementDate: string) => `Le solde sera réglé le ${settlementDate}`,
settleBalance: 'Régler le solde',
- settleBalanceConfirmationTitle: 'Régler le solde ?',
- settleBalanceConfirmationPrompt:
- 'Cela réglera votre solde actuel le prochain jour ouvrable. Une fois l’opération réussie, le montant sera de nouveau ajouté à votre limite restante.',
+ settleBalanceConfirmationTitle: 'Régler le solde ?',
+ settleBalanceConfirmationPrompt: 'Cela réglera votre solde actuel le jour ouvrable suivant. Une fois l’opération réussie, le montant sera réintégré à votre plafond restant.',
cardLimit: 'Plafond de carte',
remainingLimit: 'Plafond restant',
requestLimitIncrease: 'Demander une augmentation de la limite',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 862b3a19f55..b86033d8236 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -5911,9 +5911,9 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
currentBalanceDescription: 'Il saldo attuale è la somma di tutte le transazioni contabilizzate della Carta Expensify che si sono verificate dalla data dell’ultima liquidazione.',
balanceWillBeSettledOn: (settlementDate: string) => `Il saldo sarà regolato il ${settlementDate}`,
settleBalance: 'Saldo da saldare',
- settleBalanceConfirmationTitle: 'Saldare il saldo?',
+ settleBalanceConfirmationTitle: 'Salda il saldo?',
settleBalanceConfirmationPrompt:
- 'Questa operazione salderà il tuo saldo attuale il giorno lavorativo successivo. Una volta completata, l’importo verrà aggiunto nuovamente al tuo limite rimanente.',
+ 'Questo salderà il tuo saldo attuale nel giorno lavorativo successivo. Una volta completata l’operazione, l’importo verrà aggiunto di nuovo al tuo limite rimanente.',
cardLimit: 'Limite carta',
remainingLimit: 'Limite rimanente',
requestLimitIncrease: 'Richiedi aumento limite',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 4c1cfd067a3..951d48a5b28 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -5851,7 +5851,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
balanceWillBeSettledOn: (settlementDate: string) => `残高は${settlementDate}に精算されます`,
settleBalance: '残高を清算',
settleBalanceConfirmationTitle: '残高を清算しますか?',
- settleBalanceConfirmationPrompt: '現在の残高が翌営業日に清算されます。清算が完了すると、その金額は残りの利用限度額に戻されます。',
+ settleBalanceConfirmationPrompt: 'この操作により、現在の残高は翌営業日に精算されます。正常に完了すると、その金額は残りの利用可能枠に戻されます。',
cardLimit: 'カード上限',
remainingLimit: '残りの上限',
requestLimitIncrease: 'リクエスト上限の引き上げ',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 1cb78630207..ab7eeb17e1e 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -5906,8 +5906,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_
balanceWillBeSettledOn: (settlementDate: string) => `Saldo wordt vereffend op ${settlementDate}`,
settleBalance: 'Saldo vereffenen',
settleBalanceConfirmationTitle: 'Saldo vereffenen?',
- settleBalanceConfirmationPrompt:
- 'Hiermee wordt je huidige saldo op de volgende werkdag vereffend. Zodra dit is gelukt, wordt het bedrag weer aan je resterende limiet toegevoegd.',
+ settleBalanceConfirmationPrompt: 'Dit zal je huidige saldo op de volgende werkdag vereffenen. Zodra dit is gelukt, wordt het bedrag weer toegevoegd aan je resterende limiet.',
cardLimit: 'Kaartlimiet',
remainingLimit: 'Resterende limiet',
requestLimitIncrease: 'Verhoging van limiet aanvragen',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 03bc01d575e..16799739634 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -5886,8 +5886,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
balanceWillBeSettledOn: (settlementDate: string) => `Saldo zostanie rozliczone w dniu ${settlementDate}`,
settleBalance: 'Ureguluj saldo',
settleBalanceConfirmationTitle: 'Uregulować saldo?',
- settleBalanceConfirmationPrompt:
- 'Spowoduje to uregulowanie bieżącego salda w następnym dniu roboczym. Po pomyślnym zakończeniu kwota zostanie ponownie dodana do pozostałego limitu.',
+ settleBalanceConfirmationPrompt: 'To spłaci twoje bieżące saldo w następnym dniu roboczym. Po pomyślnym zakończeniu kwota zostanie ponownie dodana do twojego dostępnego limitu.',
cardLimit: 'Limit karty',
remainingLimit: 'Pozostały limit',
requestLimitIncrease: 'Zwiększ limit żądań',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index a0656426d50..f22fd51772f 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -5900,7 +5900,8 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS
balanceWillBeSettledOn: (settlementDate: string) => `O saldo será liquidado em ${settlementDate}`,
settleBalance: 'Quitar saldo',
settleBalanceConfirmationTitle: 'Quitar saldo?',
- settleBalanceConfirmationPrompt: 'Isso quitará seu saldo atual no próximo dia útil. Após a conclusão, o valor será adicionado novamente ao seu limite restante.',
+ settleBalanceConfirmationPrompt:
+ 'Isso vai quitar seu saldo atual no próximo dia útil. Assim que for concluído com sucesso, o valor será adicionado de volta ao seu limite disponível.',
cardLimit: 'Limite do cartão',
remainingLimit: 'Limite restante',
requestLimitIncrease: 'Solicitar aumento de limite',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index bcbaea1e7f0..b49f78a7333 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -5728,7 +5728,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
balanceWillBeSettledOn: (settlementDate: string) => `余额将于 ${settlementDate} 结清`,
settleBalance: '结清余额',
settleBalanceConfirmationTitle: '结清余额?',
- settleBalanceConfirmationPrompt: '这将在下一个工作日结清您的当前余额。成功后,该金额将重新计入您的剩余额度。',
+ settleBalanceConfirmationPrompt: '这将在下一个工作日结清您的当前余额。成功后,该金额将被重新添加到您的剩余额度中。',
cardLimit: '卡片限额',
remainingLimit: '剩余额度',
requestLimitIncrease: '请求提高限额',
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!
|
|
🤖 I looked into the failing checks and there's nothing to fix in the code — every substantive check is green. The only failing check is All the real CI checks pass:
So no push was needed. Let me know if you'd like me to take another look once the checklist is completed. |
Explanation of Change
Clicking Settle balance on the Expensify Card page used to fire an off-cycle balance settlement immediately, with no confirmation step — so users could (and did) trigger settlement by accident.
This gates the action behind a confirmation modal.
handleSettleBalanceButtonClickinWorkspaceCardsListLabel.tsxnow opens adangerconfirm modal via theuseConfirmModalhook, andqueueExpensifyCardForBillingonly runs when the user confirms (it's a no-op on cancel/dismiss). This mirrors the existing high-consequence confirmation pattern used inWorkspaceMembersPage.tsx.New copy (
settleBalanceConfirmationTitle/settleBalanceConfirmationPrompt) was added underworkspace.expensifyCardinen.ts, and the existingsettleBalancestring is reused for the confirm button. This is New Expensify only — no Classic changes.Implements the approved proposal, using the
useConfirmModalhook per the C+ review (sinceConfirmModalis being deprecated).Fixed Issues
$ #96998
PROPOSAL: #96998 (comment)
Tests
// TODO: The human co-author must fill out the tests they ran before marking this PR as "ready for review". Please describe what tests you performed that validate your changes worked.
Suggested manual test:
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
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