Getting started: show Issue Expensify cards step when Expensify Card is selected during onboarding#94423
Draft
MelvinBot wants to merge 1 commit into
Draft
Getting started: show Issue Expensify cards step when Expensify Card is selected during onboarding#94423MelvinBot wants to merge 1 commit into
MelvinBot wants to merge 1 commit into
Conversation
…s selected Co-authored-by: Yauheni Horbach <ZhenjaHorbach@users.noreply.github.com>
Contributor
🦜 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 1bc14dba55d..8961249a60c 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1044,8 +1044,8 @@ const translations: TranslationDeepObject<typeof en> = {
connectAccountingDefault: 'Mit Buchhaltung verbinden',
customizeCategories: 'Buchhaltungskategorien anpassen',
linkCompanyCards: 'Firmenkarten verknüpfen',
- issueExpensifyCards: 'Expensify-Karten ausgeben',
- issueExpensifyCardsSubtitle: 'Kontrollen anpassen und Ausgaben optimieren',
+ issueExpensifyCards: 'Expensify Karten ausgeben',
+ issueExpensifyCardsSubtitle: 'Steuerungen anpassen und Ausgaben optimieren',
setupRules: 'Ausgabelimits einrichten',
inviteAccountant: 'Lade deine:n Steuerberater:in ein',
},
@@ -9817,7 +9817,6 @@ Hier ist ein *Testbeleg*, um dir zu zeigen, wie es funktioniert:`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/es.ts b/src/languages/es.ts
index f6c5cf2aa3c..1cc13defbb5 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -1018,7 +1018,7 @@ const translations: TranslationDeepObject<typeof en> = {
inviteAccountant: 'Invita a tu contador',
linkCompanyCards: 'Vincular tarjetas corporativas',
issueExpensifyCards: 'Emitir tarjetas Expensify',
- issueExpensifyCardsSubtitle: 'Personaliza los controles y agiliza el gasto',
+ issueExpensifyCardsSubtitle: 'Personaliza controles y optimiza los gastos',
setupRules: 'Configurar reglas de gasto',
},
upcomingTravel: 'Próximos viajes',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index a6e86ea4132..3bf0b1107f6 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1061,7 +1061,7 @@ const translations: TranslationDeepObject<typeof en> = {
customizeCategories: 'Personnaliser les catégories comptables',
linkCompanyCards: 'Lier des cartes d’entreprise',
issueExpensifyCards: 'Émettre des cartes Expensify',
- issueExpensifyCardsSubtitle: 'Personnalisez les contrôles et simplifiez les dépenses',
+ issueExpensifyCardsSubtitle: 'Personnalisez les contrôles et rationalisez les dépenses',
setupRules: 'Configurer les règles de dépense',
inviteAccountant: 'Inviter votre comptable',
},
@@ -9849,7 +9849,6 @@ Voici un *reçu test* pour vous montrer comment ça fonctionne :`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/it.ts b/src/languages/it.ts
index ab01f52b9b7..31630cc1d59 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1058,7 +1058,7 @@ const translations: TranslationDeepObject<typeof en> = {
connectAccountingDefault: 'Connetti alla contabilità',
customizeCategories: 'Personalizza le categorie contabili',
linkCompanyCards: 'Collega carte aziendali',
- issueExpensifyCards: 'Emetti carte Expensify',
+ issueExpensifyCards: 'Emetti Carte Expensify',
issueExpensifyCardsSubtitle: 'Personalizza i controlli e semplifica le spese',
setupRules: 'Configura le regole di spesa',
inviteAccountant: 'Invita il tuo commercialista',
@@ -9805,7 +9805,6 @@ Ecco una *ricevuta di prova* per mostrarti come funziona:`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 1ad88882fe0..8568ad815e8 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1044,8 +1044,8 @@ const translations: TranslationDeepObject<typeof en> = {
connectAccountingDefault: '会計ソフトに接続',
customizeCategories: '会計カテゴリをカスタマイズする',
linkCompanyCards: '会社カードを連携',
- issueExpensifyCards: 'Expensifyカードを発行',
- issueExpensifyCardsSubtitle: 'コントロールをカスタマイズして支出を効率化',
+ issueExpensifyCards: 'Expensify カードを発行',
+ issueExpensifyCardsSubtitle: 'コントロールをカスタマイズして支出を効率化する',
setupRules: '支出ルールを設定',
inviteAccountant: '会計士を招待',
},
@@ -9680,7 +9680,6 @@ ${reportName}`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 187a3e778df..63ece4b1f3c 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1056,8 +1056,8 @@ const translations: TranslationDeepObject<typeof en> = {
connectAccountingDefault: 'Verbind met boekhouding',
customizeCategories: 'Boekhoudcategorieën aanpassen',
linkCompanyCards: 'Bedrijfspassen koppelen',
- issueExpensifyCards: 'Expensify-kaarten uitgeven',
- issueExpensifyCardsSubtitle: 'Pas controles aan en stroomlijn uitgaven',
+ issueExpensifyCards: 'Expensify Kaarten uitgeven',
+ issueExpensifyCardsSubtitle: 'Pas instellingen aan en stroomlijn uitgaven',
setupRules: 'Uitgavenregels instellen',
inviteAccountant: 'Nodig je accountant uit',
},
@@ -9771,7 +9771,6 @@ Hier is een *proefbon* om je te laten zien hoe het werkt:`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 5358dc417d0..7cde46680a3 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1059,7 +1059,7 @@ const translations: TranslationDeepObject<typeof en> = {
customizeCategories: 'Dostosuj kategorie księgowe',
linkCompanyCards: 'Połącz firmowe karty',
issueExpensifyCards: 'Wydaj karty Expensify',
- issueExpensifyCardsSubtitle: 'Dostosuj kontrole i usprawnij wydatki',
+ issueExpensifyCardsSubtitle: 'Dostosuj kontrolę i usprawnij wydatki',
setupRules: 'Skonfiguruj zasady wydatków',
inviteAccountant: 'Zaproś swojego księgowego',
},
@@ -9756,7 +9756,6 @@ Oto *paragon testowy*, żeby pokazać Ci, jak to działa:`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index b22f9f222e3..c2f85dbfed7 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -1057,7 +1057,7 @@ const translations: TranslationDeepObject<typeof en> = {
customizeCategories: 'Personalizar categorias contábeis',
linkCompanyCards: 'Vincular cartões corporativos',
issueExpensifyCards: 'Emitir cartões Expensify',
- issueExpensifyCardsSubtitle: 'Personalize os controles e simplifique os gastos',
+ issueExpensifyCardsSubtitle: 'Personalize controles e otimize os gastos',
setupRules: 'Configurar regras de gasto',
inviteAccountant: 'Convide seu contador',
},
@@ -9760,7 +9760,6 @@ Aqui está um *comprovante de teste* para mostrar como funciona:`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 82cecaee6bd..74f4c1956e0 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1028,7 +1028,7 @@ const translations: TranslationDeepObject<typeof en> = {
customizeCategories: '自定义会计类别',
linkCompanyCards: '关联公司卡',
issueExpensifyCards: '发放 Expensify 卡',
- issueExpensifyCardsSubtitle: '自定义控制并简化支出',
+ issueExpensifyCardsSubtitle: '自定义管控,优化支出',
setupRules: '设置消费规则',
inviteAccountant: '邀请你的会计',
},
@@ -9497,7 +9497,6 @@ ${reportName}`,
pdfFailedBody: 'Your file could not be generated. Try again, or reach out to Concierge for help.',
readyPartialBody: ({count, total}: {count: number; total: number}) =>
`${count} of ${total} reports exported. If it didn't automatically download, use the button below. See which reports failed in <concierge-link>Concierge</concierge-link>.`,
-
close: 'Close',
},
domain: {
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation of Change
During
manageTeamonboarding, if a user deselects Company cards and selects Expensify Card, the Getting started section still showed the Link company cards task. Pressing it calledenableCompanyCards()and re-enabled a feature the user explicitly opted out of, instead of offering an Expensify Card setup step.The cards row in
useGettingStartedItemswas hard-coded to always pushlinkCompanyCards, with no check on which card feature the workspace actually has enabled. This PR makes that slot reflect the user's onboarding choice:policy.areExpensifyCardsEnabled && !policy.areCompanyCardsEnabled), the section now shows an Issue Expensify cards task instead of Link company cards. It:ROUTES.WORKSPACE_EXPENSIFY_CARD,policy.areExpensifyCardsEnabledand enables the feature viaenableExpensifyCard(activePolicyID, true, false)(so it never re-enables Company cards),hasIssuedExpensifyCard).GettingStartedItemgains an optionalsubtitle, rendered under the label inGettingStartedRow, used to show the required sub-text "Customize controls and streamline spending" on the new row only.issueExpensifyCards/issueExpensifyCardsSubtitlecopy to allsrc/languages/*.tsfiles.Added focused unit tests covering the new branch (shows the Expensify Card row and hides the company-cards row, navigates to the Expensify Card page, wires
enableExpensifyCardand neverenableCompanyCards, completes once a card is provisioned, and keeps the company-cards row when both features are enabled).🤖 This PR was generated by MelvinBot based on the approved proposal.
Fixed Issues
$ #93826
PROPOSAL: #93826 (comment)
Tests
// TODO: The human co-author must fill out the tests you ran before marking this PR as "ready for review".
Offline tests
Same as tests.
QA Steps
// TODO: The human co-author must fill out the QA tests you ran before marking this PR as "ready for review".
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, 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