From 87d8b012ce8d6b430b74673f7a984e6ba218e298 Mon Sep 17 00:00:00 2001 From: Zuzanna Furtak Date: Mon, 31 Mar 2025 18:11:47 +0200 Subject: [PATCH 01/51] Exclude wallet from autolinking in new dot standalone --- react-native.config.js | 23 ++++++++++++++++++- .../settings/Wallet/ExpensifyCardPage.tsx | 3 +-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/react-native.config.js b/react-native.config.js index 773375378acd4..c6cf21b662578 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -1,10 +1,31 @@ +const {exec} = require('child_process'); + const iosSourceDir = process.env.PROJECT_ROOT_PATH ? process.env.PROJECT_ROOT_PATH + 'ios' : 'ios'; const androidSourceDir = process.env.PROJECT_ROOT_PATH ? process.env.PROJECT_ROOT_PATH + 'android' : 'android'; -module.exports = { +// Define your configuration object +const config = { project: { ios: {sourceDir: iosSourceDir}, android: {sourceDir: androidSourceDir}, }, assets: ['./assets/fonts/native'], + dependencies: {}, }; + +exec(`scripts/is-hybrid-app.sh`, (error, stdout, stderr) => { + if (error || stderr) { + console.error('react-native.config.js', stderr); + return; + } + + if (stdout.trim() === 'false') { + config.dependencies['@expensify/react-native-wallet'] = { + platforms: { + android: null, + }, + }; + } + + module.exports = config; +}); diff --git a/src/pages/settings/Wallet/ExpensifyCardPage.tsx b/src/pages/settings/Wallet/ExpensifyCardPage.tsx index 4460c9c399296..8092e3350e91d 100644 --- a/src/pages/settings/Wallet/ExpensifyCardPage.tsx +++ b/src/pages/settings/Wallet/ExpensifyCardPage.tsx @@ -25,8 +25,7 @@ import Navigation from '@libs/Navigation/Navigation'; import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; import {buildCannedSearchQuery} from '@libs/SearchQueryUtils'; -// powinno byc from '@libs/Wallet -import handleAddCardToWallet from '@libs/Wallet/index.ios'; +import handleAddCardToWallet from '@libs/Wallet'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import {revealVirtualCardDetails} from '@userActions/Card'; import {openOldDotLink} from '@userActions/Link'; From 59709802a8802e899125f95a3417ae823e769f88 Mon Sep 17 00:00:00 2001 From: Zuzanna Furtak Date: Tue, 1 Apr 2025 10:43:22 +0200 Subject: [PATCH 02/51] Adjust react-native-config --- react-native.config.js | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/react-native.config.js b/react-native.config.js index c6cf21b662578..6400301539eee 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -1,9 +1,7 @@ -const {exec} = require('child_process'); - const iosSourceDir = process.env.PROJECT_ROOT_PATH ? process.env.PROJECT_ROOT_PATH + 'ios' : 'ios'; const androidSourceDir = process.env.PROJECT_ROOT_PATH ? process.env.PROJECT_ROOT_PATH + 'android' : 'android'; +const isHybridAppBuild = process.env.PROJECT_ROOT_PATH == 'Mobile-Expensify/'; -// Define your configuration object const config = { project: { ios: {sourceDir: iosSourceDir}, @@ -13,19 +11,12 @@ const config = { dependencies: {}, }; -exec(`scripts/is-hybrid-app.sh`, (error, stdout, stderr) => { - if (error || stderr) { - console.error('react-native.config.js', stderr); - return; - } - - if (stdout.trim() === 'false') { - config.dependencies['@expensify/react-native-wallet'] = { - platforms: { - android: null, - }, - }; - } +if (!isHybridAppBuild) { + config.dependencies['@expensify/react-native-wallet'] = { + platforms: { + android: null, + }, + }; +} - module.exports = config; -}); +module.exports = config; From 42ab9893ecb5dd56147cd16fd5d01a3a971b0ba7 Mon Sep 17 00:00:00 2001 From: Zuzanna Furtak Date: Tue, 1 Apr 2025 12:55:18 +0200 Subject: [PATCH 03/51] Make import conditional for ND --- .../settings/Wallet/ExpensifyCardPage.tsx | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/pages/settings/Wallet/ExpensifyCardPage.tsx b/src/pages/settings/Wallet/ExpensifyCardPage.tsx index 8092e3350e91d..aeba3954d00ec 100644 --- a/src/pages/settings/Wallet/ExpensifyCardPage.tsx +++ b/src/pages/settings/Wallet/ExpensifyCardPage.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import {AddToWalletButton} from '@expensify/react-native-wallet'; +// import {AddToWalletButton} from '@expensify/react-native-wallet'; import React, {useEffect, useMemo, useState} from 'react'; import {View} from 'react-native'; import {useOnyx} from 'react-native-onyx'; @@ -29,12 +29,12 @@ import handleAddCardToWallet from '@libs/Wallet'; import NotFoundPage from '@pages/ErrorPage/NotFoundPage'; import {revealVirtualCardDetails} from '@userActions/Card'; import {openOldDotLink} from '@userActions/Link'; +import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import type {TranslationPaths} from '@src/languages/types'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; -import type {Card} from '@src/types/onyx'; import type {ExpensifyCardDetails} from '@src/types/onyx/Card'; import RedDotCardSection from './RedDotCardSection'; import CardDetails from './WalletPage/CardDetails'; @@ -146,6 +146,21 @@ function ExpensifyCardPage({ const loginData = loginList?.[primaryLogin]; const isSignedInAsdelegate = !!account?.delegatedAccess?.delegate || false; + const loadWallet = () => { + try { + const {AddToWalletButton} = import('@expensify/react-native-wallet'); + return ( + handleAddCardToWallet(cardToAdd, primaryLogin)} + /> + ); + } catch (error) { + console.error('E: ', error); + } + }; + if (isNotFound) { return Navigation.goBack(ROUTES.SETTINGS_WALLET)} />; } @@ -283,13 +298,7 @@ function ExpensifyCardPage({ /> )} - {cardToAdd !== undefined && ( - handleAddCardToWallet(cardToAdd, primaryLogin)} - /> - )} + {cardToAdd !== undefined && CONFIG.IS_HYBRID_APP && loadWallet()} {physicalCards?.some((card) => card?.state === CONST.EXPENSIFY_CARD.STATE.NOT_ACTIVATED) && (