diff --git a/Mobile-Expensify b/Mobile-Expensify index 4c61e890ab09..0bd7c8091ae9 160000 --- a/Mobile-Expensify +++ b/Mobile-Expensify @@ -1 +1 @@ -Subproject commit 4c61e890ab090ac28596a5931bd770f7679f9bc4 +Subproject commit 0bd7c8091ae903f46c0bf58cd0269bd994308513 diff --git a/android/app/build.gradle b/android/app/build.gradle index 9183d3d7b991..5d2fd5989a39 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -114,8 +114,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1009026104 - versionName "9.2.61-4" + versionCode 1009026105 + versionName "9.2.61-5" // Supported language variants must be declared here to avoid from being removed during the compilation. // This also helps us to not include unnecessary language variants in the APK. resConfigs "en", "es" diff --git a/assets/images/simple-illustrations/simple-illustration__concierge-bot.svg b/assets/images/simple-illustrations/simple-illustration__concierge-bot.svg deleted file mode 100644 index 980259df6314..000000000000 --- a/assets/images/simple-illustrations/simple-illustration__concierge-bot.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg b/assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg deleted file mode 100644 index 6bbbad695f58..000000000000 --- a/assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 98d999d9856f..30cba9236030 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -44,7 +44,7 @@ CFBundleVersion - 9.2.61.4 + 9.2.61.5 FullStory OrgId diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist index 1c8becc076d2..b6ab61b911bb 100644 --- a/ios/NotificationServiceExtension/Info.plist +++ b/ios/NotificationServiceExtension/Info.plist @@ -13,7 +13,7 @@ CFBundleShortVersionString 9.2.61 CFBundleVersion - 9.2.61.4 + 9.2.61.5 NSExtension NSExtensionPointIdentifier diff --git a/ios/ShareViewController/Info.plist b/ios/ShareViewController/Info.plist index 74cb22c96a7b..4f073289e428 100644 --- a/ios/ShareViewController/Info.plist +++ b/ios/ShareViewController/Info.plist @@ -13,7 +13,7 @@ CFBundleShortVersionString 9.2.61 CFBundleVersion - 9.2.61.4 + 9.2.61.5 NSExtension NSExtensionAttributes diff --git a/package-lock.json b/package-lock.json index 4c683c375c06..76516f45cfa7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "9.2.61-4", + "version": "9.2.61-5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "9.2.61-4", + "version": "9.2.61-5", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 7d42ac8dfefb..c46228e65a70 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "9.2.61-4", + "version": "9.2.61-5", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 3311fd12a6e5..20a156a554ad 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -1035,14 +1035,10 @@ const CONST = { STORYLANE: { ADMIN_TOUR: 'https://app.storylane.io/demo/bbcreg8vccag?embed=inline', ADMIN_TOUR_MOBILE: 'https://app.storylane.io/demo/b6faqcdsxgww?embed=inline', - ADMIN_MIGRATED: 'https://app.storylane.io/share/qlgnexxbsdtp', - ADMIN_MIGRATED_MOBILE: 'https://app.storylane.io/share/fgireksbt2oh', TRACK_WORKSPACE_TOUR: 'https://app.storylane.io/share/mqzy3huvtrhx?embed=inline', TRACK_WORKSPACE_TOUR_MOBILE: 'https://app.storylane.io/share/wq4hiwsqvoho?embed=inline', EMPLOYEE_TOUR: 'https://app.storylane.io/share/izmryscwurdd?embed=inline', EMPLOYEE_TOUR_MOBILE: 'https://app.storylane.io/share/wckqdetaacgy?embed=inline', - EMPLOYEE_MIGRATED: 'https://app.storylane.io/share/v9dr1rjqsd9y', - EMPLOYEE_MIGRATED_MOBILE: 'https://app.storylane.io/share/qbbob6zvapqo', }, OLD_DOT_PUBLIC_URLS: { TERMS_URL: `${EXPENSIFY_URL}/terms`, diff --git a/src/components/Icon/Illustrations.ts b/src/components/Icon/Illustrations.ts index 1e2f38b8c657..456e4ae1a055 100644 --- a/src/components/Icon/Illustrations.ts +++ b/src/components/Icon/Illustrations.ts @@ -83,7 +83,6 @@ import LockClosed from '@assets/images/simple-illustrations/simple-illustration_ import LockClosedOrange from '@assets/images/simple-illustrations/simple-illustration__lockclosed_orange.svg'; import LockOpen from '@assets/images/simple-illustrations/simple-illustration__lockopen.svg'; import Luggage from '@assets/images/simple-illustrations/simple-illustration__luggage.svg'; -import MagnifyingGlassReceipt from '@assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg'; import Mailbox from '@assets/images/simple-illustrations/simple-illustration__mailbox.svg'; import ExpensifyMobileApp from '@assets/images/simple-illustrations/simple-illustration__mobileapp.svg'; import MoneyIntoWallet from '@assets/images/simple-illustrations/simple-illustration__moneyintowallet.svg'; @@ -129,7 +128,6 @@ export { ExpensifyCardImage, PaymentHands, MagicCode, - MagnifyingGlassReceipt, Mailbox, MushroomTopHat, RocketBlue, diff --git a/src/components/MigratedUserWelcomeModal.tsx b/src/components/MigratedUserWelcomeModal.tsx index a5deed023c6b..5943df77e296 100644 --- a/src/components/MigratedUserWelcomeModal.tsx +++ b/src/components/MigratedUserWelcomeModal.tsx @@ -1,6 +1,6 @@ import {useRoute} from '@react-navigation/native'; import {tryNewDotOnyxSelector} from '@selectors/Onboarding'; -import React, {lazy, Suspense, useEffect, useState} from 'react'; +import React, {useEffect, useState} from 'react'; import {View} from 'react-native'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; @@ -8,7 +8,6 @@ import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useSearchTypeMenuSections from '@hooks/useSearchTypeMenuSections'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; -import {openExternalLink} from '@libs/actions/Link'; import {dismissProductTraining} from '@libs/actions/Welcome'; import convertToLTR from '@libs/convertToLTR'; import Log from '@libs/Log'; @@ -25,26 +24,22 @@ import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue'; import type {FeatureListItem} from './FeatureList'; import FeatureTrainingModal from './FeatureTrainingModal'; import Icon from './Icon'; +import * as Illustrations from './Icon/Illustrations'; import LottieAnimations from './LottieAnimations'; import RenderHTML from './RenderHTML'; -// Lazy load illustrations -const MagnifyingGlassReceipt = lazy(() => import('@assets/images/simple-illustrations/simple-illustration__magnifyingglass-receipt.svg')); -const ConciergeBot = lazy(() => import('@assets/images/simple-illustrations/simple-illustration__concierge-bot.svg')); -const ChatBubbles = lazy(() => import('@assets/images/simple-illustrations/simple-illustration__chatbubbles.svg')); - const ExpensifyFeatures: FeatureListItem[] = [ { - icon: MagnifyingGlassReceipt, - translationKey: 'migratedUserWelcomeModal.features.search', + icon: Illustrations.ChatBubbles, + translationKey: 'migratedUserWelcomeModal.features.chat', }, { - icon: ConciergeBot, - translationKey: 'migratedUserWelcomeModal.features.concierge', + icon: Illustrations.Flash, + translationKey: 'migratedUserWelcomeModal.features.scanReceipt', }, { - icon: ChatBubbles, - translationKey: 'migratedUserWelcomeModal.features.chat', + icon: Illustrations.ExpensifyMobileApp, + translationKey: 'migratedUserWelcomeModal.features.crossPlatform', }, ]; @@ -63,7 +58,6 @@ function MigratedUserWelcomeModal() { canBeMissing: true, }); const [dismissedProductTraining, dismissedProductTrainingMetadata] = useOnyx(ONYXKEYS.NVP_DISMISSED_PRODUCT_TRAINING, {canBeMissing: true}); - const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true}); useEffect(() => { if (isLoadingOnyxValue(tryNewDotMetadata, dismissedProductTrainingMetadata)) { @@ -93,16 +87,6 @@ function MigratedUserWelcomeModal() { title={translate('migratedUserWelcomeModal.title')} description={translate('migratedUserWelcomeModal.subtitle')} confirmText={translate('migratedUserWelcomeModal.confirmText')} - helpText={translate('migratedUserWelcomeModal.helpText')} - onHelp={() => { - Log.info('[MigratedUserWelcomeModal] onHelp called, opening help URL based on admin status and device type'); - const isAdmin = !!account?.adminsRoomReportID; - const adminUrl = shouldUseNarrowLayout ? CONST.STORYLANE.ADMIN_MIGRATED_MOBILE : CONST.STORYLANE.ADMIN_MIGRATED; - const employeeUrl = shouldUseNarrowLayout ? CONST.STORYLANE.EMPLOYEE_MIGRATED_MOBILE : CONST.STORYLANE.EMPLOYEE_MIGRATED; - const helpUrl = isAdmin ? adminUrl : employeeUrl; - openExternalLink(helpUrl); - dismissProductTraining(CONST.MIGRATED_USER_WELCOME_MODAL); - }} animation={LottieAnimations.WorkspacePlanet} onClose={() => { Log.hmmm('[MigratedUserWelcomeModal] onClose called, dismissing product training'); @@ -120,23 +104,21 @@ function MigratedUserWelcomeModal() { style={[styles.gap3, styles.pt1, styles.pl1]} fsClass={CONST.FULLSTORY.CLASS.UNMASK} > - - {ExpensifyFeatures.map(({translationKey, icon}) => ( - - - - ${convertToLTR(translate(translationKey))}`} /> - + {ExpensifyFeatures.map(({translationKey, icon}) => ( + + + + ${convertToLTR(translate(translationKey))}`} /> - ))} - + + ))} ); diff --git a/src/languages/de.ts b/src/languages/de.ts index 026c503e9d4c..e903f997ff7e 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -7439,14 +7439,13 @@ ${ }, migratedUserWelcomeModal: { title: 'Willkommen bei New Expensify!', - subtitle: 'Es enthält alles, was du an unserem klassischen Erlebnis liebst, mit einer ganzen Reihe von Verbesserungen, die dein Leben noch einfacher machen:', + subtitle: 'New Expensify hat die gleiche großartige Automatisierung, aber jetzt mit erstaunlicher Zusammenarbeit:', confirmText: "Los geht's!", features: { - chat: 'Chatte zu jeder Ausgabe, um Fragen schnell zu klären', - search: 'Leistungsstärkere Suche auf Mobilgeräten, im Web und auf dem Desktop', - concierge: 'Integrierte Concierge-KI zur Automatisierung Ihrer Ausgaben', + chat: 'Chatten Sie direkt über jede Ausgabe, jeden Bericht oder Arbeitsbereich', + scanReceipt: 'Belege scannen und Rückerstattung erhalten', + crossPlatform: 'Erledigen Sie alles von Ihrem Telefon oder Browser aus', }, - helpText: '2-Minuten-Demo ausprobieren', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/en.ts b/src/languages/en.ts index c96626c4e9e6..076599d84255 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -7487,13 +7487,12 @@ const translations = { }, migratedUserWelcomeModal: { title: 'Welcome to New Expensify!', - subtitle: "It's got everything you love from our classic experience with a whole bunch of upgrades to make your life even easier:", + subtitle: 'New Expensify has the same great automation, but now with amazing collaboration:', confirmText: "Let's go!", - helpText: 'Try 2-min demo', features: { - search: 'More powerful search on mobile, web, and desktop', - concierge: 'Built-in Concierge AI to help automate your expenses', - chat: 'Chat on any expense to resolve questions quickly', + chat: 'Chat directly on any expense, report, or workspace', + scanReceipt: 'Scan receipts and get paid back', + crossPlatform: 'Do everything from your phone or browser', }, }, productTrainingTooltip: { diff --git a/src/languages/es.ts b/src/languages/es.ts index f8bddb8e5e07..2d1832baaa1f 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -7603,13 +7603,12 @@ ${amount} para ${merchant} - ${date}`, }, migratedUserWelcomeModal: { title: '¡Bienvenido a New Expensify!', - 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:', - confirmText: '¡Vamos!', - helpText: 'Prueba la demo de 2 minutos', + subtitle: 'New Expensify tiene la misma excelente automatización, pero ahora con una colaboración increíble:', + confirmText: 'Vamos!', features: { - search: 'Búsqueda más potente en móviles, web y ordenadores', - concierge: 'Concierge AI integrada para ayudarte a automatizar tus gastos', - chat: 'Chatea en tus gastos para resolver cualquier duda rápidamente.', + chat: 'Chatea directamente en cualquier gasto, informe o espacio de trabajo', + scanReceipt: 'Escanea recibos y obtén reembolsos', + crossPlatform: 'Haz todo desde tu teléfono o navegador', }, }, productTrainingTooltip: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 65a90800969e..dd1db695ac61 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -7444,14 +7444,13 @@ ${ }, migratedUserWelcomeModal: { title: 'Bienvenue sur New Expensify !', - subtitle: 'Il inclut tout ce que vous aimez de notre expérience classique, avec une foule d’améliorations pour vous faciliter encore plus la vie :', + subtitle: 'New Expensify a la même excellente automatisation, mais maintenant avec une collaboration incroyable :', confirmText: 'Allons-y !', features: { - chat: 'Discutez de n’importe quelle dépense pour répondre rapidement aux questions', - search: 'Une recherche plus puissante sur mobile, web et ordinateur de bureau', - concierge: 'IA Concierge intégrée pour aider à automatiser vos dépenses', + chat: "Discutez directement sur n'importe quelle dépense, rapport ou espace de travail", + scanReceipt: 'Scannez les reçus et soyez remboursé', + crossPlatform: 'Faites tout depuis votre téléphone ou navigateur', }, - helpText: 'Essayer la démo de 2 min', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/it.ts b/src/languages/it.ts index 7c1b49832e9b..8fd9b7bb6ebd 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -7422,14 +7422,13 @@ ${ }, migratedUserWelcomeModal: { title: 'Benvenuto in New Expensify!', - subtitle: 'Ha tutto ciò che ami della nostra esperienza classica, con un sacco di aggiornamenti per rendere la tua vita ancora più facile:', + subtitle: 'Il nuovo Expensify ha la stessa fantastica automazione, ma ora con una collaborazione straordinaria:', confirmText: 'Andiamo!', features: { - chat: 'Chatta su qualsiasi spesa per rispondere rapidamente alle domande', - search: 'Ricerca più potente su dispositivi mobili, web e desktop', - concierge: 'Intelligenza artificiale Concierge integrata per aiutarti ad automatizzare le tue spese', + chat: 'Chatta direttamente su qualsiasi spesa, report o spazio di lavoro', + scanReceipt: 'Scansiona le ricevute e ricevi il rimborso', + crossPlatform: 'Fai tutto dal tuo telefono o browser', }, - helpText: 'Prova la demo di 2 minuti', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 50cdbcc137ef..cb094ba04e86 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -7354,14 +7354,13 @@ ${ }, migratedUserWelcomeModal: { title: 'New Expensifyへようこそ!', - subtitle: '従来のエクスペリエンスでお好きだった要素はすべてそのままに、毎日をさらに簡単にする数多くのアップグレードを搭載しています:', + subtitle: '新しいExpensifyは、素晴らしい自動化機能に加えて、驚くべきコラボレーション機能を備えています。', confirmText: '行きましょう!', features: { - chat: 'どの経費でもチャットして、疑問を素早く解決しましょう', - search: 'モバイル、Web、デスクトップで、より強力な検索', - concierge: '内蔵の Concierge AI が経費の自動化を支援します', + chat: '任意の経費、レポート、またはワークスペースで直接チャット', + scanReceipt: '領収書をスキャンして払い戻しを受ける', + crossPlatform: 'すべてを携帯電話やブラウザから行う', }, - helpText: '2分のデモを試す', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/nl.ts b/src/languages/nl.ts index ee4ec19ffd77..05017f75bfd7 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -7402,14 +7402,13 @@ ${ }, migratedUserWelcomeModal: { title: 'Welkom bij New Expensify!', - subtitle: 'Het heeft alles wat je leuk vindt aan onze klassieke ervaring, plus een heleboel upgrades om je leven nog makkelijker te maken:', + subtitle: 'Nieuwe Expensify heeft dezelfde geweldige automatisering, maar nu met geweldige samenwerking:', confirmText: 'Laten we gaan!', features: { - chat: 'Chat bij elke uitgave om vragen snel op te lossen', - search: 'Krachtigere zoekfunctie op mobiel, web en desktop', - concierge: 'Ingebouwde Concierge AI om je onkosten te automatiseren', + chat: 'Chat direct op elke uitgave, rapport of werkruimte', + scanReceipt: 'Scan bonnetjes en krijg je geld terugbetaald', + crossPlatform: 'Doe alles vanaf je telefoon of browser', }, - helpText: 'Probeer de 2-minuten-demo', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 799a765c4a3b..35d32f0559c6 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -7390,14 +7390,13 @@ ${ }, migratedUserWelcomeModal: { title: 'Witamy w New Expensify!', - subtitle: 'Ma wszystko, co kochasz w naszej klasycznej wersji, wraz z całą masą ulepszeń, które jeszcze bardziej ułatwią Ci życie:', + subtitle: 'Nowy Expensify ma tę samą świetną automatyzację, ale teraz z niesamowitą współpracą:', confirmText: 'Zaczynajmy!', features: { - chat: 'Czatuj przy każdym wydatku, aby szybko wyjaśnić wątpliwości', - search: 'Bardziej zaawansowane wyszukiwanie na urządzeniach mobilnych, w przeglądarce i na komputerach', - concierge: 'Wbudowana Concierge AI do automatyzacji Twoich wydatków', + chat: 'Czatuj bezpośrednio na dowolnym wydatku, raporcie lub przestrzeni roboczej', + scanReceipt: 'Skanuj paragony i otrzymuj zwrot pieniędzy', + crossPlatform: 'Rób wszystko z telefonu lub przeglądarki', }, - helpText: 'Wypróbuj 2-minutowe demo', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index e098465ba32e..a52498288978 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -7400,14 +7400,13 @@ ${ }, migratedUserWelcomeModal: { title: 'Bem-vindo ao New Expensify!', - subtitle: 'Tem tudo o que você ama da nossa experiência clássica, com várias atualizações para deixar sua vida ainda mais fácil:', + subtitle: 'O novo Expensify tem a mesma ótima automação, mas agora com uma colaboração incrível:', confirmText: 'Vamos lá!', features: { - chat: 'Converse sobre qualquer despesa para resolver dúvidas rapidamente', - search: 'Busca mais poderosa no celular, na web e no desktop', - concierge: 'IA Concierge integrada para ajudar a automatizar suas despesas', + chat: 'Converse diretamente em qualquer despesa, relatório ou espaço de trabalho', + scanReceipt: 'Escaneie recibos e receba o reembolso', + crossPlatform: 'Faça tudo do seu telefone ou navegador', }, - helpText: 'Experimente a demo de 2 min', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index a88da237f169..c9acd844c6d2 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -7241,14 +7241,13 @@ ${ }, migratedUserWelcomeModal: { title: '欢迎使用 New Expensify!', - subtitle: '它集成了你在我们经典体验中喜爱的所有内容,并带来一系列升级,让你的生活更加轻松:', + subtitle: '新Expensify拥有同样出色的自动化功能,但现在增加了令人惊叹的协作功能:', confirmText: '我们走吧!', features: { - chat: '就任何费用发起聊天,快速解决问题', - search: '更强大的搜索,适用于移动端、网页端和桌面端', - concierge: '内置 Concierge AI,帮助自动化处理您的报销', + chat: '直接在任何费用、报告或工作区上聊天', + scanReceipt: '扫描收据并获得报销', + crossPlatform: '通过手机或浏览器完成所有操作', }, - helpText: '试用 2 分钟演示', }, productTrainingTooltip: { // TODO: CONCIERGE_LHN_GBR tooltip will be replaced by a tooltip in the #admins room