Skip to content

Commit 65e9f4f

Browse files
authored
Merge pull request Expensify#75328 from Expensify/valforte/updateMigratedModalMessage
[NoQA] Update the migrated modal message
2 parents fa5a39e + ffeaeb1 commit 65e9f4f

15 files changed

Lines changed: 99 additions & 63 deletions

File tree

Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

src/CONST/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,10 +1035,14 @@ const CONST = {
10351035
STORYLANE: {
10361036
ADMIN_TOUR: 'https://app.storylane.io/demo/bbcreg8vccag?embed=inline',
10371037
ADMIN_TOUR_MOBILE: 'https://app.storylane.io/demo/b6faqcdsxgww?embed=inline',
1038+
ADMIN_MIGRATED: 'https://app.storylane.io/share/qlgnexxbsdtp',
1039+
ADMIN_MIGRATED_MOBILE: 'https://app.storylane.io/share/fgireksbt2oh',
10381040
TRACK_WORKSPACE_TOUR: 'https://app.storylane.io/share/mqzy3huvtrhx?embed=inline',
10391041
TRACK_WORKSPACE_TOUR_MOBILE: 'https://app.storylane.io/share/wq4hiwsqvoho?embed=inline',
10401042
EMPLOYEE_TOUR: 'https://app.storylane.io/share/izmryscwurdd?embed=inline',
10411043
EMPLOYEE_TOUR_MOBILE: 'https://app.storylane.io/share/wckqdetaacgy?embed=inline',
1044+
EMPLOYEE_MIGRATED: 'https://app.storylane.io/share/v9dr1rjqsd9y',
1045+
EMPLOYEE_MIGRATED_MOBILE: 'https://app.storylane.io/share/qbbob6zvapqo',
10421046
},
10431047
OLD_DOT_PUBLIC_URLS: {
10441048
TERMS_URL: `${EXPENSIFY_URL}/terms`,

src/components/Icon/Illustrations.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ import LockClosed from '@assets/images/simple-illustrations/simple-illustration_
8383
import LockClosedOrange from '@assets/images/simple-illustrations/simple-illustration__lockclosed_orange.svg';
8484
import LockOpen from '@assets/images/simple-illustrations/simple-illustration__lockopen.svg';
8585
import Luggage from '@assets/images/simple-illustrations/simple-illustration__luggage.svg';
86+
import MagnifyingGlassReceipt from '@assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg';
8687
import Mailbox from '@assets/images/simple-illustrations/simple-illustration__mailbox.svg';
8788
import ExpensifyMobileApp from '@assets/images/simple-illustrations/simple-illustration__mobileapp.svg';
8889
import MoneyIntoWallet from '@assets/images/simple-illustrations/simple-illustration__moneyintowallet.svg';
@@ -128,6 +129,7 @@ export {
128129
ExpensifyCardImage,
129130
PaymentHands,
130131
MagicCode,
132+
MagnifyingGlassReceipt,
131133
Mailbox,
132134
MushroomTopHat,
133135
RocketBlue,

src/components/MigratedUserWelcomeModal.tsx

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import {useRoute} from '@react-navigation/native';
22
import {tryNewDotOnyxSelector} from '@selectors/Onboarding';
3-
import React, {useEffect, useState} from 'react';
3+
import React, {lazy, Suspense, useEffect, useState} from 'react';
44
import {View} from 'react-native';
55
import useLocalize from '@hooks/useLocalize';
66
import useOnyx from '@hooks/useOnyx';
77
import useResponsiveLayout from '@hooks/useResponsiveLayout';
88
import useSearchTypeMenuSections from '@hooks/useSearchTypeMenuSections';
99
import useStyleUtils from '@hooks/useStyleUtils';
1010
import useThemeStyles from '@hooks/useThemeStyles';
11+
import {openExternalLink} from '@libs/actions/Link';
1112
import {dismissProductTraining} from '@libs/actions/Welcome';
1213
import convertToLTR from '@libs/convertToLTR';
1314
import Log from '@libs/Log';
@@ -24,22 +25,26 @@ import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue';
2425
import type {FeatureListItem} from './FeatureList';
2526
import FeatureTrainingModal from './FeatureTrainingModal';
2627
import Icon from './Icon';
27-
import * as Illustrations from './Icon/Illustrations';
2828
import LottieAnimations from './LottieAnimations';
2929
import RenderHTML from './RenderHTML';
3030

31+
// Lazy load illustrations
32+
const MagnifyingGlassReceipt = lazy(() => import('@assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg'));
33+
const ConciergeBot = lazy(() => import('@assets/images/simple-illustrations/simple-illustration__concierge-bot.svg'));
34+
const ChatBubbles = lazy(() => import('@assets/images/simple-illustrations/simple-illustration__chatbubbles.svg'));
35+
3136
const ExpensifyFeatures: FeatureListItem[] = [
3237
{
33-
icon: Illustrations.ChatBubbles,
34-
translationKey: 'migratedUserWelcomeModal.features.chat',
38+
icon: MagnifyingGlassReceipt,
39+
translationKey: 'migratedUserWelcomeModal.features.search',
3540
},
3641
{
37-
icon: Illustrations.Flash,
38-
translationKey: 'migratedUserWelcomeModal.features.scanReceipt',
42+
icon: ConciergeBot,
43+
translationKey: 'migratedUserWelcomeModal.features.concierge',
3944
},
4045
{
41-
icon: Illustrations.ExpensifyMobileApp,
42-
translationKey: 'migratedUserWelcomeModal.features.crossPlatform',
46+
icon: ChatBubbles,
47+
translationKey: 'migratedUserWelcomeModal.features.chat',
4348
},
4449
];
4550

@@ -58,6 +63,7 @@ function MigratedUserWelcomeModal() {
5863
canBeMissing: true,
5964
});
6065
const [dismissedProductTraining, dismissedProductTrainingMetadata] = useOnyx(ONYXKEYS.NVP_DISMISSED_PRODUCT_TRAINING, {canBeMissing: true});
66+
const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true});
6167

6268
useEffect(() => {
6369
if (isLoadingOnyxValue(tryNewDotMetadata, dismissedProductTrainingMetadata)) {
@@ -87,6 +93,16 @@ function MigratedUserWelcomeModal() {
8793
title={translate('migratedUserWelcomeModal.title')}
8894
description={translate('migratedUserWelcomeModal.subtitle')}
8995
confirmText={translate('migratedUserWelcomeModal.confirmText')}
96+
helpText={translate('migratedUserWelcomeModal.helpText')}
97+
onHelp={() => {
98+
Log.info('[MigratedUserWelcomeModal] onHelp called, opening help URL based on admin status and device type');
99+
const isAdmin = !!account?.adminsRoomReportID;
100+
const adminUrl = shouldUseNarrowLayout ? CONST.STORYLANE.ADMIN_MIGRATED_MOBILE : CONST.STORYLANE.ADMIN_MIGRATED;
101+
const employeeUrl = shouldUseNarrowLayout ? CONST.STORYLANE.EMPLOYEE_MIGRATED_MOBILE : CONST.STORYLANE.EMPLOYEE_MIGRATED;
102+
const helpUrl = isAdmin ? adminUrl : employeeUrl;
103+
openExternalLink(helpUrl);
104+
dismissProductTraining(CONST.MIGRATED_USER_WELCOME_MODAL);
105+
}}
90106
animation={LottieAnimations.WorkspacePlanet}
91107
onClose={() => {
92108
Log.hmmm('[MigratedUserWelcomeModal] onClose called, dismissing product training');
@@ -104,21 +120,23 @@ function MigratedUserWelcomeModal() {
104120
style={[styles.gap3, styles.pt1, styles.pl1]}
105121
fsClass={CONST.FULLSTORY.CLASS.UNMASK}
106122
>
107-
{ExpensifyFeatures.map(({translationKey, icon}) => (
108-
<View
109-
key={translationKey}
110-
style={[styles.flexRow, styles.alignItemsCenter, styles.wAuto]}
111-
>
112-
<Icon
113-
src={icon}
114-
height={variables.menuIconSize}
115-
width={variables.menuIconSize}
116-
/>
117-
<View style={[styles.flexRow, styles.alignItemsCenter, styles.wAuto, styles.flex1, styles.ml6]}>
118-
<RenderHTML html={`<comment>${convertToLTR(translate(translationKey))}</comment>`} />
123+
<Suspense fallback={null}>
124+
{ExpensifyFeatures.map(({translationKey, icon}) => (
125+
<View
126+
key={translationKey}
127+
style={[styles.flexRow, styles.alignItemsCenter, styles.wAuto]}
128+
>
129+
<Icon
130+
src={icon}
131+
height={variables.menuIconSize}
132+
width={variables.menuIconSize}
133+
/>
134+
<View style={[styles.flexRow, styles.alignItemsCenter, styles.wAuto, styles.flex1, styles.ml6]}>
135+
<RenderHTML html={`<comment>${convertToLTR(translate(translationKey))}</comment>`} />
136+
</View>
119137
</View>
120-
</View>
121-
))}
138+
))}
139+
</Suspense>
122140
</View>
123141
</FeatureTrainingModal>
124142
);

src/languages/de.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7439,13 +7439,14 @@ ${
74397439
},
74407440
migratedUserWelcomeModal: {
74417441
title: 'Willkommen bei New Expensify!',
7442-
subtitle: 'New Expensify hat die gleiche großartige Automatisierung, aber jetzt mit erstaunlicher Zusammenarbeit:',
7442+
subtitle: 'Es enthält alles, was du an unserem klassischen Erlebnis liebst, mit einer ganzen Reihe von Verbesserungen, die dein Leben noch einfacher machen:',
74437443
confirmText: "Los geht's!",
74447444
features: {
7445-
chat: '<strong>Chatten Sie direkt über jede Ausgabe</strong>, jeden Bericht oder Arbeitsbereich',
7446-
scanReceipt: '<strong>Belege scannen</strong> und Rückerstattung erhalten',
7447-
crossPlatform: 'Erledigen Sie <strong>alles</strong> von Ihrem Telefon oder Browser aus',
7445+
chat: 'Chatte zu jeder Ausgabe, um Fragen schnell zu klären',
7446+
search: 'Leistungsstärkere Suche auf Mobilgeräten, im Web und auf dem Desktop',
7447+
concierge: 'Integrierte Concierge-KI zur Automatisierung Ihrer Ausgaben',
74487448
},
7449+
helpText: '2-Minuten-Demo ausprobieren',
74497450
},
74507451
productTrainingTooltip: {
74517452
// TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room

src/languages/en.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7487,12 +7487,13 @@ const translations = {
74877487
},
74887488
migratedUserWelcomeModal: {
74897489
title: 'Welcome to New Expensify!',
7490-
subtitle: 'New Expensify has the same great automation, but now with amazing collaboration:',
7490+
subtitle: "It's got everything you love from our classic experience with a whole bunch of upgrades to make your life even easier:",
74917491
confirmText: "Let's go!",
7492+
helpText: 'Try 2-min demo',
74927493
features: {
7493-
chat: '<strong>Chat directly on any expense</strong>, report, or workspace',
7494-
scanReceipt: '<strong>Scan receipts</strong> and get paid back',
7495-
crossPlatform: 'Do <strong>everything</strong> from your phone or browser',
7494+
search: 'More powerful search on mobile, web, and desktop',
7495+
concierge: 'Built-in Concierge AI to help automate your expenses',
7496+
chat: 'Chat on any expense to resolve questions quickly',
74967497
},
74977498
},
74987499
productTrainingTooltip: {

src/languages/es.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7603,12 +7603,13 @@ ${amount} para ${merchant} - ${date}`,
76037603
},
76047604
migratedUserWelcomeModal: {
76057605
title: '¡Bienvenido a New Expensify!',
7606-
subtitle: 'New Expensify tiene la misma excelente automatización, pero ahora con una colaboración increíble:',
7607-
confirmText: 'Vamos!',
7606+
subtitle: 'Tiene todo lo que te encanta de nuestra experiencia clásica con un montón de mejoras para hacerte la vida aún más fácil:',
7607+
confirmText: '¡Vamos!',
7608+
helpText: 'Prueba la demo de 2 minutos',
76087609
features: {
7609-
chat: '<strong>Chatea directamente en cualquier gasto</strong>, informe o espacio de trabajo',
7610-
scanReceipt: '<strong>Escanea recibos</strong> y obtén reembolsos',
7611-
crossPlatform: 'Haz <strong>todo</strong> desde tu teléfono o navegador',
7610+
search: 'Búsqueda más potente en móviles, web y ordenadores',
7611+
concierge: 'Concierge AI integrada para ayudarte a automatizar tus gastos',
7612+
chat: 'Chatea en tus gastos para resolver cualquier duda rápidamente.',
76127613
},
76137614
},
76147615
productTrainingTooltip: {

0 commit comments

Comments
 (0)