Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions assets/images/treasure-chest-green-with-sparkle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ const USE_EXPENSIFY_URL = 'https://use.expensify.com';
const EXPENSIFY_MOBILE_URL = 'https://expensify.com/mobile';
const EXPENSIFY_URL = 'https://www.expensify.com';
const UBER_CONNECT_URL = 'https://business-integrations.uber.com/connect';
const XERO_PARTNER_LINK = 'https://xero5440.partnerlinks.io/uzfjy4uegog2-v0pj1v';
const UBER_TERMS_LINK = 'https://www.uber.com/us/en/business/sign-up/terms/expense-partners/';
const PLATFORM_OS_MACOS = 'Mac OS';
const PLATFORM_IOS = 'iOS';
const ANDROID_PACKAGE_NAME = 'org.me.mobiexpensifyg';
Expand Down Expand Up @@ -446,6 +448,8 @@ const CONST = {

NEW_EXPENSIFY_URL: ACTIVE_EXPENSIFY_URL,
UBER_CONNECT_URL,
XERO_PARTNER_LINK,
UBER_TERMS_LINK,
APP_DOWNLOAD_LINKS: {
ANDROID: `https://play.google.com/store/apps/details?id=${ANDROID_PACKAGE_NAME}`,
IOS: 'https://apps.apple.com/us/app/expensify-travel-expense/id471713959',
Expand Down
4 changes: 4 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2943,6 +2943,10 @@ const ROUTES = {
return `workspaces/${policyID}/accounting/xero/advanced` as const;
},
},
POLICY_ACCOUNTING_CLAIM_OFFER: {
route: 'workspaces/:policyID/accounting/claim-offer/:integration',
getRoute: (policyID: string, integration: string) => `workspaces/${policyID}/accounting/claim-offer/${integration}` as const,
},
POLICY_ACCOUNTING_XERO_AUTO_SYNC: {
route: 'workspaces/:policyID/accounting/xero/advanced/autosync',
getRoute: (policyID: string | undefined, backTo?: string) => {
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,7 @@ const SCREENS = {
QUICKBOOKS_DESKTOP_CUSTOMERS_DISPLAYED_AS: 'Policy_Accounting_Quickbooks_Desktop_Import_Customers_Displayed_As',
QUICKBOOKS_DESKTOP_ITEMS: 'Policy_Accounting_Quickbooks_Desktop_Import_Items',
XERO_IMPORT: 'Policy_Accounting_Xero_Import',
CLAIM_OFFER: 'Policy_Accounting_Claim_Offer',
XERO_ORGANIZATION: 'Policy_Accounting_Xero_Customers',
XERO_CHART_OF_ACCOUNTS: 'Policy_Accounting_Xero_Import_Chart_Of_Accounts',
XERO_CUSTOMER: 'Policy_Accounting_Xero_Import_Customer',
Expand Down
2 changes: 2 additions & 0 deletions src/components/Icon/chunks/expensify-icons.chunk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ import ThumbsUp from '@assets/images/thumbs-up.svg';
import Train from '@assets/images/train.svg';
import Transfer from '@assets/images/transfer.svg';
import Trashcan from '@assets/images/trashcan.svg';
import TreasureChestGreenWithSparkle from '@assets/images/treasure-chest-green-with-sparkle.svg';
import TreasureChest from '@assets/images/treasure-chest.svg';
import Unlock from '@assets/images/unlock.svg';
import UploadAlt from '@assets/images/upload-alt.svg';
Expand Down Expand Up @@ -467,6 +468,7 @@ const Expensicons = {
XeroExport,
ArrowCircleClockwise,
LuggageWithLines,
TreasureChestGreenWithSparkle,
};

// Create the ExpensifyIcons object from the imported Expensicons
Expand Down
6 changes: 6 additions & 0 deletions src/components/MenuItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import FormHelpMessage from './FormHelpMessage';
import Hoverable from './Hoverable';
import Icon from './Icon';
import * as Expensicons from './Icon/Expensicons';

Check warning on line 38 in src/components/MenuItem.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

'./Icon/Expensicons' import is restricted from being used by a pattern. Direct imports from Icon/Expensicons are deprecated. Please use lazy loading hooks instead. Use `useMemoizedLazyExpensifyIcons` from @hooks/useLazyAsset. See docs/LAZY_ICONS_AND_ILLUSTRATIONS.md for details
import {MenuItemGroupContext} from './MenuItemGroup';
import PlaidCardFeedIcon from './PlaidCardFeedIcon';
import type {PressableRef} from './Pressable/GenericPressable/types';
Expand Down Expand Up @@ -86,6 +86,9 @@
/** Whether the badge should be shown as success */
badgeSuccess?: boolean;

/** Callback to fire when the badge is pressed */
onBadgePress?: (event?: GestureResponderEvent | KeyboardEvent) => void;

/** Used to apply offline styles to child text components */
style?: StyleProp<ViewStyle>;

Expand Down Expand Up @@ -415,6 +418,7 @@
badgeText,
badgeIcon,
badgeSuccess,
onBadgePress,
style,
wrapperStyle,
titleWrapperStyle,
Expand Down Expand Up @@ -924,6 +928,8 @@
icon={badgeIcon}
badgeStyles={badgeStyle}
success={badgeSuccess}
onPress={onBadgePress}
pressable={!!onBadgePress}
/>
)}
{/* Since subtitle can be of type number, we should allow 0 to be shown */}
Expand Down
14 changes: 14 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5588,6 +5588,20 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`Sind Sie sicher, dass Sie ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'diese Buchhaltungsintegration'} verbinden möchten? Dadurch werden alle bestehenden Buchhaltungsverbindungen entfernt.`,
enterCredentials: 'Geben Sie Ihre Anmeldedaten ein',
claimOffer: {
badgeText: 'Angebot verfügbar!',
xero: {
headline: '6 Monate kostenlos mit Xero!',
description: '<muted-text><centered-text>Neu bei Xero? Expensify-Kunden erhalten 6 Monate kostenlos. Fordern Sie Ihr Angebot unten an.</centered-text></muted-text>',
connectButton: 'Mit Xero verbinden',
},
uber: {
headerTitle: 'Uber for Business',
headline: '5% Rabatt auf Uber-Fahrten',
description: `<muted-text><centered-text>Aktivieren Sie Uber for Business über Expensify und sparen Sie 5% bei allen Geschäftsreisen bis Juni. <a href="${CONST.UBER_TERMS_LINK}">Bedingungen gelten.</a></centered-text></muted-text>`,
connectButton: 'Mit Uber for Business verbinden',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
14 changes: 14 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5470,6 +5470,20 @@ const translations = {
CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'this accounting integration'
}? This will remove any existing accounting connections.`,
enterCredentials: 'Enter your credentials',
claimOffer: {
badgeText: 'Offer available!',
xero: {
headline: 'Get Xero free for 6 months!',
description: '<muted-text><centered-text>New to Xero? Expensify customers get 6 months free. Claim your offer below.</centered-text></muted-text>',
connectButton: 'Connect to Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Get 5% off Uber rides',
description: `<muted-text><centered-text>Activate Uber for Business through Expensify and save 5% on all business rides through June. <a href="${CONST.UBER_TERMS_LINK}">Terms apply.</a></centered-text></muted-text>`,
connectButton: 'Connect to Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
15 changes: 15 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5143,6 +5143,21 @@ ${amount} para ${merchant} - ${date}`,
CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integración contable'
}? Esto eliminará cualquier conexión contable existente.`,
enterCredentials: 'Ingresa tus credenciales',
claimOffer: {
badgeText: '¡Oferta disponible!',
xero: {
headline: '¡Obtén Xero gratis por 6 meses!',
description:
'<muted-text><centered-text>¿Nuevo en Xero? Los clientes de Expensify obtienen 6 meses gratis. Reclama tu oferta a continuación.</centered-text></muted-text>',
connectButton: 'Conectar con Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Obtén 5% de descuento en viajes de Uber',
description: `<muted-text><centered-text>Activa Uber for Business a través de Expensify y ahorra 5% en todos los viajes de negocios hasta junio. <a href="${CONST.UBER_TERMS_LINK}">Aplican términos.</a></centered-text></muted-text>`,
connectButton: 'Conectar con Uber for Business',
},
},
connections: {
syncStageName: ({stage}) => {
switch (stage) {
Expand Down
15 changes: 15 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5596,6 +5596,21 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`Voulez-vous vraiment connecter ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'cette intégration comptable'} ? Cela supprimera toutes les connexions comptables existantes.`,
enterCredentials: 'Saisissez vos identifiants',
claimOffer: {
badgeText: 'Offre disponible !',
xero: {
headline: 'Obtenez Xero gratuitement pendant 6 mois !',
description:
'<muted-text><centered-text>Nouveau sur Xero ? Les clients Expensify bénéficient de 6 mois gratuits. Réclamez votre offre ci-dessous.</centered-text></muted-text>',
connectButton: 'Se connecter à Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Obtenez 5% de réduction sur les trajets Uber',
description: `<muted-text><centered-text>Activez Uber for Business via Expensify et économisez 5% sur tous les trajets professionnels jusqu\'en juin. <a href="${CONST.UBER_TERMS_LINK}">Conditions applicables.</a></centered-text></muted-text>`,
connectButton: 'Se connecter à Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
14 changes: 14 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5572,6 +5572,20 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`Sei sicuro di voler collegare ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'questa integrazione contabile'}? Questo rimuoverà tutte le connessioni contabili esistenti.`,
enterCredentials: 'Inserisci le tue credenziali',
claimOffer: {
badgeText: 'Offerta disponibile!',
xero: {
headline: 'Ottieni Xero gratis per 6 mesi!',
description: '<muted-text><centered-text>Nuovo su Xero? I clienti Expensify ottengono 6 mesi gratuiti. Richiedi la tua offerta qui sotto.</centered-text></muted-text>',
connectButton: 'Connetti a Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Ottieni il 5% di sconto sui viaggi Uber',
description: `<muted-text><centered-text>Attiva Uber for Business tramite Expensify e risparmia il 5% su tutti i viaggi di lavoro fino a giugno. <a href="${CONST.UBER_TERMS_LINK}">Si applicano i termini.</a></centered-text></muted-text>`,
connectButton: 'Connetti a Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
15 changes: 15 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5537,6 +5537,21 @@ _より詳しい手順については、[ヘルプサイトをご覧ください
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'この会計統合'} を接続してもよろしいですか?これにより、既存の会計連携はすべて削除されます。`,
enterCredentials: '認証情報を入力してください',
claimOffer: {
badgeText: 'オファー利用可能!',
xero: {
headline: 'Xero を6か月間無料で利用!',
description:
'<muted-text><centered-text>Xero を初めてご利用ですか?Expensify のお客様は6か月間無料でご利用いただけます。以下のオファーを獲得してください。</centered-text></muted-text>',
connectButton: 'Xero に接続',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Uber の乗車で5%割引',
description: `<muted-text><centered-text>Expensify を通じて Uber for Business を有効化すると、6月までのすべてのビジネス乗車で5%割引になります。<a href="${CONST.UBER_TERMS_LINK}">条件が適用されます。</a></centered-text></muted-text>`,
connectButton: 'Uber for Business に接続',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
14 changes: 14 additions & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5563,6 +5563,20 @@ _Voor gedetailleerdere instructies, [bezoek onze helpsite](${CONST.NETSUITE_IMPO
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`Weet je zeker dat je ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'deze boekhoudkundige integratie'} wilt verbinden? Hierdoor worden alle bestaande boekhoudkoppelingen verwijderd.`,
enterCredentials: 'Voer je inloggegevens in',
claimOffer: {
badgeText: 'Aanbieding beschikbaar!',
xero: {
headline: 'Krijg 6 maanden gratis Xero!',
description: '<muted-text><centered-text>Nieuw bij Xero? Expensify-klanten krijgen 6 maanden gratis. Verzilver je aanbieding hieronder.</centered-text></muted-text>',
connectButton: 'Verbinden met Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Krijg 5% korting op Uber-ritten',
description: `<muted-text><centered-text>Activeer Uber for Business via Expensify en bespaar 5% op alle zakelijke ritten tot en met juni. <a href="${CONST.UBER_TERMS_LINK}">Voorwaarden zijn van toepassing.</a></centered-text></muted-text>`,
connectButton: 'Verbinden met Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
14 changes: 14 additions & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5554,6 +5554,20 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`Czy na pewno chcesz połączyć ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'to połączenie z systemem księgowym'}? Spowoduje to usunięcie wszystkich istniejących połączeń księgowych.`,
enterCredentials: 'Wprowadź swoje dane logowania',
claimOffer: {
badgeText: 'Oferta dostępna!',
xero: {
headline: 'Otrzymaj Xero za darmo na 6 miesięcy!',
description: '<muted-text><centered-text>Nowy w Xero? Klienci Expensify otrzymują 6 miesięcy za darmo. Odbierz swoją ofertę poniżej.</centered-text></muted-text>',
connectButton: 'Połącz z Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Otrzymaj 5% zniżki na przejazdy Uber',
description: `<muted-text><centered-text>Aktywuj Uber for Business przez Expensify i zaoszczędź 5% na wszystkich przejazdach służbowych do czerwca. <a href="${CONST.UBER_TERMS_LINK}">Obowiązują warunki.</a></centered-text></muted-text>`,
connectButton: 'Połącz z Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
14 changes: 14 additions & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5555,6 +5555,20 @@ _Para instruções mais detalhadas, [visite nosso site de ajuda](${CONST.NETSUIT
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`Tem certeza de que deseja conectar ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? 'esta integração contábil'}? Isso removerá quaisquer conexões contábeis existentes.`,
enterCredentials: 'Insira suas credenciais',
claimOffer: {
badgeText: 'Oferta disponível!',
xero: {
headline: 'Obtenha Xero grátis por 6 meses!',
description: '<muted-text><centered-text>Novo no Xero? Clientes Expensify ganham 6 meses grátis. Resgate sua oferta abaixo.</centered-text></muted-text>',
connectButton: 'Conectar ao Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Obtenha 5% de desconto em viagens do Uber',
description: `<muted-text><centered-text>Ative o Uber for Business através do Expensify e economize 5% em todas as viagens de negócios até junho. <a href="${CONST.UBER_TERMS_LINK}">Termos se aplicam.</a></centered-text></muted-text>`,
connectButton: 'Conectar ao Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
14 changes: 14 additions & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5456,6 +5456,20 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
connectPrompt: ({connectionName}: ConnectionNameParams) =>
`您确定要连接 ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName] ?? '此会计集成'} 吗?这将移除所有现有的会计连接。`,
enterCredentials: '请输入您的凭证',
claimOffer: {
badgeText: '优惠可用!',
xero: {
headline: '免费使用 Xero 6 个月!',
description: '<muted-text><centered-text>首次使用 Xero?Expensify 客户可免费使用 6 个月。请在下方领取您的优惠。</centered-text></muted-text>',
connectButton: '连接到 Xero',
},
uber: {
headerTitle: 'Uber for Business',
headline: 'Uber 乘车享受 5% 折扣',
description: `<muted-text><centered-text>通过 Expensify 激活 Uber for Business,在 6 月之前的所有商务乘车均可享受 5% 折扣。<a href="${CONST.UBER_TERMS_LINK}">适用条款。</a></centered-text></muted-text>`,
connectButton: '连接到 Uber for Business',
},
},
connections: {
syncStageName: ({stage}: SyncStageNameConnectionsParams) => {
switch (stage) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,7 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
require<ReactComponentModule>('../../../../pages/workspace/accounting/qbo/advanced/QuickbooksInvoiceAccountSelectPage').default,

[SCREENS.WORKSPACE.ACCOUNTING.XERO_IMPORT]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/xero/XeroImportPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.CLAIM_OFFER]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/ClaimOfferPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.XERO_ORGANIZATION]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/xero/XeroOrganizationConfigurationPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.XERO_CHART_OF_ACCOUNTS]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/xero/import/XeroChartOfAccountsPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.XERO_CUSTOMER]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/xero/import/XeroCustomerConfigurationPage').default,
Expand Down
Loading
Loading