diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.styles.tsx b/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.styles.tsx
new file mode 100644
index 00000000000..901c2cb636c
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.styles.tsx
@@ -0,0 +1,20 @@
+import { StyleSheet } from 'react-native';
+import { Theme } from '../../../../../util/theme/models';
+
+const upsellBannerStylesheet = (params: { theme: Theme }) => {
+ const { theme } = params;
+ const { colors } = theme;
+
+ return StyleSheet.create({
+ container: {
+ backgroundColor: colors.background.alternative,
+ borderRadius: 8,
+ gap: 8,
+ alignItems: 'center',
+ paddingVertical: 24,
+ paddingHorizontal: 16,
+ },
+ });
+};
+
+export default upsellBannerStylesheet;
diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.test.tsx b/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.test.tsx
new file mode 100644
index 00000000000..294b08b0d8a
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.test.tsx
@@ -0,0 +1,52 @@
+import React from 'react';
+import UpsellBanner from '.';
+import {
+ UPSELL_BANNER_VARIANTS,
+ UpsellBannerProps,
+} from './UpsellBanner.types';
+import renderWithProvider from '../../../../../util/test/renderWithProvider';
+import Button, {
+ ButtonVariants,
+} from '../../../../../component-library/components/Buttons/Button';
+
+describe('UpsellBanner', () => {
+ const baseProps = {
+ primaryText: 'you could earn',
+ secondaryText: '$454',
+ tertiaryText: 'per year on your tokens',
+ endAccessory: (
+
+ ),
+ };
+
+ describe('UpsellBannerHeader variant', () => {
+ it('render matches screenshot', () => {
+ const props: UpsellBannerProps = {
+ variant: UPSELL_BANNER_VARIANTS.HEADER,
+ ...baseProps,
+ };
+
+ const { toJSON } = renderWithProvider();
+
+ expect(toJSON()).toMatchSnapshot();
+ });
+ });
+
+ describe('UpsellBannerBody variant', () => {
+ it('render matches screenshot', () => {
+ const props: UpsellBannerProps = {
+ variant: UPSELL_BANNER_VARIANTS.BODY,
+ onTooltipPress: jest.fn(),
+ ...baseProps,
+ };
+
+ const { toJSON } = renderWithProvider();
+
+ expect(toJSON()).toMatchSnapshot();
+ });
+ });
+});
diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.types.ts b/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.types.ts
new file mode 100644
index 00000000000..be48c0c6049
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBanner.types.ts
@@ -0,0 +1,23 @@
+export enum UPSELL_BANNER_VARIANTS {
+ HEADER = 'HEADER',
+ BODY = 'BODY',
+}
+
+interface UpsellBannerBaseProps {
+ primaryText: string;
+ secondaryText: string;
+ tertiaryText: string;
+ endAccessory?: React.ReactNode;
+}
+
+export type UpsellBannerHeaderProps = UpsellBannerBaseProps;
+
+export type UpsellBannerBodyProps = UpsellBannerBaseProps & {
+ onTooltipPress: () => void;
+};
+
+export type UpsellBannerProps =
+ | (UpsellBannerHeaderProps & { variant: UPSELL_BANNER_VARIANTS.HEADER })
+ | (UpsellBannerBodyProps & {
+ variant: UPSELL_BANNER_VARIANTS.BODY;
+ });
diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBannerBody/UpsellBannerBody.styles.tsx b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerBody/UpsellBannerBody.styles.tsx
new file mode 100644
index 00000000000..2c90249e330
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerBody/UpsellBannerBody.styles.tsx
@@ -0,0 +1,32 @@
+import { StyleSheet } from 'react-native';
+import { Theme } from '../../../../../../util/theme/models';
+
+const styleSheet = (params: { theme: Theme }) => {
+ const { theme } = params;
+ const { colors } = theme;
+
+ return StyleSheet.create({
+ container: {
+ backgroundColor: colors.background.alternative,
+ borderRadius: 8,
+ gap: 8,
+ paddingVertical: 12,
+ paddingHorizontal: 16,
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ },
+ left: {
+ alignItems: 'flex-start',
+ },
+ tooltipContainer: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 4,
+ },
+ right: {
+ justifyContent: 'center',
+ },
+ });
+};
+
+export default styleSheet;
diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBannerBody/index.tsx b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerBody/index.tsx
new file mode 100644
index 00000000000..f9b0013b260
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerBody/index.tsx
@@ -0,0 +1,52 @@
+import React from 'react';
+import { TouchableOpacity, View } from 'react-native';
+import styleSheet from './UpsellBannerBody.styles';
+import { UpsellBannerBodyProps } from '../UpsellBanner.types';
+import { useStyles } from '../../../../../hooks/useStyles';
+import Text, {
+ TextVariant,
+ TextColor,
+} from '../../../../../../component-library/components/Texts/Text';
+import Icon, {
+ IconName,
+ IconColor,
+ IconSize,
+} from '../../../../../../component-library/components/Icons/Icon';
+
+const UpsellBannerBody = ({
+ primaryText,
+ secondaryText,
+ tertiaryText,
+ onTooltipPress,
+ endAccessory,
+}: UpsellBannerBodyProps) => {
+ const { styles } = useStyles(styleSheet, {});
+
+ return (
+
+
+ {primaryText}
+
+ {secondaryText}
+
+
+
+ {tertiaryText}
+
+
+
+
+
+
+
+ {React.isValidElement(endAccessory) && endAccessory}
+
+
+ );
+};
+
+export default UpsellBannerBody;
diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBannerHeader/UpsellBannerHeader.styles.tsx b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerHeader/UpsellBannerHeader.styles.tsx
new file mode 100644
index 00000000000..4b7befc72a2
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerHeader/UpsellBannerHeader.styles.tsx
@@ -0,0 +1,20 @@
+import { StyleSheet } from 'react-native';
+import { Theme } from '../../../../../../util/theme/models';
+
+const styleSheet = (params: { theme: Theme }) => {
+ const { theme } = params;
+ const { colors } = theme;
+
+ return StyleSheet.create({
+ container: {
+ backgroundColor: colors.background.alternative,
+ borderRadius: 8,
+ gap: 8,
+ paddingVertical: 24,
+ paddingHorizontal: 16,
+ alignItems: 'center',
+ },
+ });
+};
+
+export default styleSheet;
diff --git a/app/components/UI/Stake/components/UpsellBanner/UpsellBannerHeader/index.tsx b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerHeader/index.tsx
new file mode 100644
index 00000000000..14bb08bcbcb
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/UpsellBannerHeader/index.tsx
@@ -0,0 +1,31 @@
+import React from 'react';
+import { View } from 'react-native';
+import { UpsellBannerHeaderProps } from '../UpsellBanner.types';
+import styleSheet from './UpsellBannerHeader.styles';
+import { useStyles } from '../../../../../hooks/useStyles';
+import Text, {
+ TextVariant,
+ TextColor,
+} from '../../../../../../component-library/components/Texts/Text';
+
+const UpsellBannerHeader = ({
+ primaryText,
+ secondaryText,
+ tertiaryText,
+ endAccessory,
+}: UpsellBannerHeaderProps) => {
+ const { styles } = useStyles(styleSheet, {});
+
+ return (
+
+ {primaryText}
+
+ {secondaryText}
+
+ {tertiaryText}
+ {React.isValidElement(endAccessory) && endAccessory}
+
+ );
+};
+
+export default UpsellBannerHeader;
diff --git a/app/components/UI/Stake/components/UpsellBanner/__snapshots__/UpsellBanner.test.tsx.snap b/app/components/UI/Stake/components/UpsellBanner/__snapshots__/UpsellBanner.test.tsx.snap
new file mode 100644
index 00000000000..86c2f9abd5e
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/__snapshots__/UpsellBanner.test.tsx.snap
@@ -0,0 +1,242 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`UpsellBanner UpsellBannerBody variant render matches screenshot 1`] = `
+
+
+
+ you could earn
+
+
+ $454
+
+
+
+ per year on your tokens
+
+
+
+
+
+
+
+
+
+ Earn 4.5%
+
+
+
+
+`;
+
+exports[`UpsellBanner UpsellBannerHeader variant render matches screenshot 1`] = `
+
+
+ you could earn
+
+
+ $454
+
+
+ per year on your tokens
+
+
+
+ Earn 4.5%
+
+
+
+`;
diff --git a/app/components/UI/Stake/components/UpsellBanner/index.tsx b/app/components/UI/Stake/components/UpsellBanner/index.tsx
new file mode 100644
index 00000000000..89c13720e27
--- /dev/null
+++ b/app/components/UI/Stake/components/UpsellBanner/index.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+import {
+ UPSELL_BANNER_VARIANTS,
+ UpsellBannerBodyProps,
+ UpsellBannerProps,
+ UpsellBannerHeaderProps,
+} from './UpsellBanner.types';
+import UpsellBannerBody from './UpsellBannerBody';
+import UpsellBannerHeader from './UpsellBannerHeader';
+
+const UpsellBanner = ({
+ variant = UPSELL_BANNER_VARIANTS.HEADER,
+ ...props
+}: UpsellBannerProps) => {
+ switch (variant) {
+ case UPSELL_BANNER_VARIANTS.BODY:
+ return ;
+ case UPSELL_BANNER_VARIANTS.HEADER:
+ default:
+ return ;
+ }
+};
+
+export default UpsellBanner;
diff --git a/app/components/UI/Tokens/TokenList/index.tsx b/app/components/UI/Tokens/TokenList/index.tsx
index af16dce0af4..516cf9ca821 100644
--- a/app/components/UI/Tokens/TokenList/index.tsx
+++ b/app/components/UI/Tokens/TokenList/index.tsx
@@ -4,12 +4,16 @@ import { useSelector } from 'react-redux';
import { useTheme } from '../../../../util/theme';
import { selectPrivacyMode } from '../../../../selectors/preferencesController';
import createStyles from '../styles';
-import Text from '../../../../component-library/components/Texts/Text';
+import Text, {
+ TextColor,
+} from '../../../../component-library/components/Texts/Text';
import { TokenI } from '../types';
import { strings } from '../../../../../locales/i18n';
import { TokenListFooter } from './TokenListFooter';
import { TokenListItem } from './TokenListItem';
import { WalletViewSelectorsIDs } from '../../../../../e2e/selectors/wallet/WalletView.selectors';
+import { useNavigation } from '@react-navigation/native';
+import Routes from '../../../../constants/navigation/Routes';
interface TokenListProps {
tokens: TokenI[];
@@ -34,6 +38,13 @@ export const TokenList = ({
const [showScamWarningModal, setShowScamWarningModal] = useState(false);
const styles = createStyles(colors);
+ const navigation = useNavigation();
+
+ const handleLink = () => {
+ navigation.navigate(Routes.SETTINGS_VIEW, {
+ screen: Routes.ONBOARDING.GENERAL_SETTINGS,
+ });
+ };
return tokens?.length ? (
) : (
- {strings('wallet.no_tokens')}
-
+
+
+ {strings('wallet.no_tokens')}
+
+
+ {strings('wallet.show_tokens_without_balance')}
+
+
+ // TO see tokens without balance, Click here.
);
};
diff --git a/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap b/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap
index 7e4fa06d851..f76cf9bebb8 100644
--- a/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap
+++ b/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap
@@ -478,21 +478,46 @@ exports[`Tokens Portfolio View should match the snapshot when portfolio view is
}
}
>
-
- You don't have any tokens!
-
+
+ You don't have any tokens!
+
+
+ Show tokens without balance
+
+
diff --git a/app/components/UI/Tokens/styles.ts b/app/components/UI/Tokens/styles.ts
index fcb3c758960..8839d5806ba 100644
--- a/app/components/UI/Tokens/styles.ts
+++ b/app/components/UI/Tokens/styles.ts
@@ -26,6 +26,13 @@ const createStyles = (colors: Colors) =>
alignItems: 'center',
marginTop: 50,
},
+ emptyTokensView: {
+ alignItems: 'center',
+ marginTop: 130,
+ },
+ emptyTokensViewText: {
+ fontFamily: 'EuclidCircularB-Medium',
+ },
text: {
fontSize: 20,
color: colors.text.default,
diff --git a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx
index c399918bf83..c8c250570ea 100644
--- a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx
+++ b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx
@@ -6,7 +6,16 @@ import renderWithProvider from '../../../../util/test/renderWithProvider';
// Internal dependencies.
import RpcSelectionModal from './RpcSelectionModal';
import { CHAIN_IDS } from '@metamask/transaction-controller';
-import { NetworkConfiguration } from '@metamask/network-controller';
+import {
+ NetworkConfiguration,
+ RpcEndpointType,
+} from '@metamask/network-controller';
+import Engine from '../../../../core/Engine/Engine';
+import { useSelector } from 'react-redux';
+import { selectNetworkConfigurations } from '../../../../selectors/networkController';
+import { NETWORK_CHAIN_ID } from '../../../../util/networks/customNetworks';
+import { Hex } from '@metamask/utils';
+const { PreferencesController } = Engine.context;
const MOCK_STORE_STATE = {
engine: {
@@ -55,7 +64,7 @@ const MOCK_STORE_STATE = {
jest.mock('react-redux', () => ({
...jest.requireActual('react-redux'),
- useSelector: (fn: (state: unknown) => unknown) => fn(MOCK_STORE_STATE),
+ useSelector: jest.fn(),
}));
jest.mock('react-native-safe-area-context', () => {
@@ -84,6 +93,49 @@ jest.mock('@react-navigation/native', () => {
};
});
+jest.mock('../../../../core/Engine/Engine', () => ({
+ context: {
+ PreferencesController: {
+ setTokenNetworkFilter: jest.fn(),
+ },
+ },
+}));
+
+const mockNetworks: Record = {
+ [NETWORK_CHAIN_ID.MAINNET]: {
+ blockExplorerUrls: ['https://etherscan.io'],
+ chainId: NETWORK_CHAIN_ID.MAINNET,
+ defaultBlockExplorerUrlIndex: 0,
+ defaultRpcEndpointIndex: 0,
+ name: 'Ethereum Mainnet',
+ nativeCurrency: 'ETH',
+ rpcEndpoints: [
+ {
+ url: 'https://mainnet.infura.io/v3',
+ networkClientId: NETWORK_CHAIN_ID.MAINNET,
+ type: RpcEndpointType.Custom,
+ name: 'Ethereum',
+ },
+ ],
+ },
+ [NETWORK_CHAIN_ID.POLYGON]: {
+ blockExplorerUrls: ['https://polygonscan.com'],
+ chainId: NETWORK_CHAIN_ID.POLYGON,
+ defaultBlockExplorerUrlIndex: 0,
+ defaultRpcEndpointIndex: 0,
+ name: 'Polygon Mainnet',
+ nativeCurrency: 'MATIC',
+ rpcEndpoints: [
+ {
+ url: 'https://polygon-rpc.com',
+ name: 'Polygon',
+ networkClientId: NETWORK_CHAIN_ID.POLYGON,
+ type: RpcEndpointType.Custom,
+ },
+ ],
+ },
+};
+
describe('RpcSelectionModal', () => {
const mockRpcMenuSheetRef = {
current: {
@@ -117,6 +169,18 @@ describe('RpcSelectionModal', () => {
},
};
+ beforeEach(() => {
+ (useSelector as jest.Mock).mockImplementation((selector) => {
+ if (selector === selectNetworkConfigurations) {
+ return mockNetworks; // to show all networks
+ }
+ return null;
+ });
+ });
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
it('should render correctly when visible', () => {
const { toJSON } = renderWithProvider(
,
@@ -186,4 +250,15 @@ describe('RpcSelectionModal', () => {
expect(queryByText('mainnet.infura.io')).toBeNull(); // Should not render any RPC URLs
});
+
+ it('should call preferences controller setTokenNetworkFilter', () => {
+ const { getByText } = renderWithProvider(
+ ,
+ );
+ const rpcUrlElement = getByText('mainnet.infura.io/v3');
+ fireEvent.press(rpcUrlElement);
+ expect(PreferencesController.setTokenNetworkFilter).toHaveBeenCalledTimes(
+ 1,
+ );
+ });
});
diff --git a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx
index 34aaf8df0de..ff5f31998af 100644
--- a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx
+++ b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx
@@ -1,4 +1,4 @@
-import React, { FC, useMemo } from 'react';
+import React, { FC, useCallback, useMemo } from 'react';
import { StyleSheet, View } from 'react-native';
import BottomSheet, {
BottomSheetRef,
@@ -21,6 +21,10 @@ import images from 'images/image-icons';
import hideProtocolFromUrl from '../../../../util/hideProtocolFromUrl';
import hideKeyFromUrl from '../../../../util/hideKeyFromUrl';
import { NetworkConfiguration } from '@metamask/network-controller';
+import { useSelector } from 'react-redux';
+import { selectIsAllNetworks } from '../../../../selectors/networkController';
+import { PopularList } from '../../../../util/networks/customNetworks';
+import Engine from '../../../../core/Engine/Engine';
interface RpcSelectionModalProps {
showMultiRpcSelectModal: {
@@ -50,6 +54,24 @@ const RpcSelectionModal: FC = ({
networkConfigurations,
styles,
}) => {
+ const isAllNetwork = useSelector(selectIsAllNetworks);
+
+ const setTokenNetworkFilter = useCallback(
+ (chainId: string) => {
+ const isPopularNetwork =
+ chainId === CHAIN_IDS.MAINNET ||
+ chainId === CHAIN_IDS.LINEA_MAINNET ||
+ PopularList.some((network) => network.chainId === chainId);
+
+ const { PreferencesController } = Engine.context;
+ if (!isAllNetwork && isPopularNetwork) {
+ PreferencesController.setTokenNetworkFilter({
+ [chainId]: true,
+ });
+ }
+ },
+ [isAllNetwork],
+ );
const imageSource = useMemo(() => {
switch (showMultiRpcSelectModal.chainId) {
case CHAIN_IDS.MAINNET:
@@ -119,6 +141,7 @@ const RpcSelectionModal: FC = ({
gap={8}
onPress={() => {
onRpcSelect(networkClientId, chainId as `0x${string}`);
+ setTokenNetworkFilter(chainId as `0x${string}`);
closeRpcModal();
}}
>
diff --git a/e2e/specs/confirmations/advanced-gas-fees.mock.spec.js b/e2e/specs/confirmations/advanced-gas-fees.mock.spec.js
index 2d2d0c76321..37db2f64a0c 100644
--- a/e2e/specs/confirmations/advanced-gas-fees.mock.spec.js
+++ b/e2e/specs/confirmations/advanced-gas-fees.mock.spec.js
@@ -2,6 +2,7 @@
import { SmokeConfirmations } from '../../tags';
import WalletView from '../../pages/wallet/WalletView';
import AmountView from '../../pages/Send/AmountView';
+import ActivitiesView from '../../pages/Transactions/ActivitiesView';
import SendView from '../../pages/Send/SendView';
import TransactionConfirmationView from '../../pages/Send/TransactionConfirmView';
import { loginToApp } from '../../viewHelper';
@@ -19,7 +20,6 @@ import { mockEvents } from '../../api-mocking/mock-config/mock-events';
const VALID_ADDRESS = '0xebe6CcB6B55e1d094d9c58980Bc10Fed69932cAb';
describe(SmokeConfirmations('Advanced Gas Fees and Priority Tests'), () => {
- let mockServer;
beforeAll(async () => {
jest.setTimeout(170000);
await TestHelpers.reverseServerPort();
@@ -85,8 +85,8 @@ describe(SmokeConfirmations('Advanced Gas Fees and Priority Tests'), () => {
// Tap on the send button
await TransactionConfirmationView.tapConfirmButton();
- // Check that we are on the wallet screen
- await Assertions.checkIfVisible(WalletView.container);
+ // Check that we are on the Activities View
+ await Assertions.checkIfVisible(ActivitiesView.container);
},
);
});
diff --git a/e2e/specs/wallet/edit-recipient-address.spec.js b/e2e/specs/wallet/edit-recipient-address.spec.js
index a3cedf61eeb..6693192e3e1 100644
--- a/e2e/specs/wallet/edit-recipient-address.spec.js
+++ b/e2e/specs/wallet/edit-recipient-address.spec.js
@@ -17,7 +17,10 @@ import {
import FixtureServer from '../../fixtures/fixture-server';
import FixtureBuilder from '../../fixtures/fixture-builder';
import Gestures from '../../utils/Gestures';
-import { ActivitiesViewSelectorsText, sentMessageTokenIDs } from '../../selectors/Transactions/ActivitiesView.selectors';
+import {
+ ActivitiesViewSelectorsText,
+ sentMessageTokenIDs,
+} from '../../selectors/Transactions/ActivitiesView.selectors';
import { contractConfiguration } from '../../../app/util/test/smart-contracts';
const INCORRECT_SEND_ADDRESS = '0xebe6CcB6B55e1d094d9c58980Bc10Fed69932cAb';
@@ -28,8 +31,9 @@ const fixtureServer = new FixtureServer();
describe(
SmokeCore('Send ETH to the correct address after editing the recipient'),
() => {
- beforeEach(() => {
- jest.setTimeout(200000);
+ beforeAll(async () => {
+ jest.setTimeout(2500000);
+ await TestHelpers.reverseServerPort();
});
afterAll(async () => {
@@ -57,7 +61,10 @@ describe(
//Assert Address
const address = await SendView.splitAddressText();
- await Assertions.checkIfTextMatches(address[0], INCORRECT_SEND_ADDRESS);
+ await Assertions.checkIfTextMatches(
+ address[0],
+ INCORRECT_SEND_ADDRESS,
+ );
await SendView.tapBackButton();
await AmountView.tapBackButton();
@@ -70,18 +77,23 @@ describe(
// Assert correct address
const correctAddress = await SendView.splitAddressText();
- await Assertions.checkIfTextMatches(correctAddress[0], CORRECT_SEND_ADDRESS);
+ await Assertions.checkIfTextMatches(
+ correctAddress[0],
+ CORRECT_SEND_ADDRESS,
+ );
//Assert transactions send screen on IOS only due to android limitations
if (device.getPlatform() === 'ios') {
- // Tap Send
- await TransactionConfirmationView.tapConfirmButton();
+ // Tap Send
+ await TransactionConfirmationView.tapConfirmButton();
- // Transactions view to assert address remains consistent
- await TabBarComponent.tapActivity();
- await TestHelpers.delay(3000);
- await TestHelpers.tapByText(ActivitiesViewSelectorsText.CONFIRM_TEXT);
- await Assertions.checkIfTextIsDisplayed(`${SHORTHAND_ADDRESS}`);
+ // Transactions view to assert address remains consistent
+ await TabBarComponent.tapActivity();
+ await TestHelpers.delay(3000);
+ await TestHelpers.tapByText(
+ ActivitiesViewSelectorsText.CONFIRM_TEXT,
+ );
+ await Assertions.checkIfTextIsDisplayed(`${SHORTHAND_ADDRESS}`);
}
},
);
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index d013add4c0c..9a7f974f282 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -15,20 +15,20 @@ PODS:
- ExpoModulesCore
- EXFont (11.4.0):
- ExpoModulesCore
- - EXJSONUtils (0.7.1)
- - EXManifests (0.7.2):
+ - EXJSONUtils (0.9.0)
+ - EXManifests (0.9.0):
- ExpoModulesCore
- Expo (49.0.23):
- ExpoModulesCore
- - expo-dev-client (2.4.13):
+ - expo-dev-client (3.1.0):
- EXManifests
- expo-dev-launcher
- expo-dev-menu
- expo-dev-menu-interface
- EXUpdatesInterface
- - expo-dev-launcher (2.4.15):
+ - expo-dev-launcher (3.1.0):
- EXManifests
- - expo-dev-launcher/Main (= 2.4.15)
+ - expo-dev-launcher/Main (= 3.1.0)
- expo-dev-menu
- expo-dev-menu-interface
- ExpoModulesCore
@@ -36,7 +36,7 @@ PODS:
- RCT-Folly (= 2021.07.22.00)
- React-Core
- React-RCTAppDelegate
- - expo-dev-launcher/Main (2.4.15):
+ - expo-dev-launcher/Main (3.1.0):
- EXManifests
- expo-dev-launcher/Unsafe
- expo-dev-menu
@@ -46,7 +46,7 @@ PODS:
- RCT-Folly (= 2021.07.22.00)
- React-Core
- React-RCTAppDelegate
- - expo-dev-launcher/Unsafe (2.4.15):
+ - expo-dev-launcher/Unsafe (3.1.0):
- EXManifests
- expo-dev-menu
- expo-dev-menu-interface
@@ -55,23 +55,27 @@ PODS:
- RCT-Folly (= 2021.07.22.00)
- React-Core
- React-RCTAppDelegate
- - expo-dev-menu (3.2.4):
- - expo-dev-menu/Main (= 3.2.4)
+ - expo-dev-menu (4.1.0):
+ - expo-dev-menu/Main (= 4.1.0)
+ - expo-dev-menu/ReactNativeCompatibles (= 4.1.0)
- RCT-Folly (= 2021.07.22.00)
- React-Core
- - expo-dev-menu-interface (1.3.0)
- - expo-dev-menu/Main (3.2.4):
+ - expo-dev-menu-interface (1.4.0)
+ - expo-dev-menu/Main (4.1.0):
- EXManifests
- expo-dev-menu-interface
- expo-dev-menu/Vendored
- ExpoModulesCore
- RCT-Folly (= 2021.07.22.00)
- React-Core
- - expo-dev-menu/SafeAreaView (3.2.4):
+ - expo-dev-menu/ReactNativeCompatibles (4.1.0):
+ - RCT-Folly (= 2021.07.22.00)
+ - React-Core
+ - expo-dev-menu/SafeAreaView (4.1.0):
- ExpoModulesCore
- RCT-Folly (= 2021.07.22.00)
- React-Core
- - expo-dev-menu/Vendored (3.2.4):
+ - expo-dev-menu/Vendored (4.1.0):
- expo-dev-menu/SafeAreaView
- RCT-Folly (= 2021.07.22.00)
- React-Core
@@ -83,7 +87,7 @@ PODS:
- React-NativeModulesApple
- React-RCTAppDelegate
- ReactCommon/turbomodule/core
- - EXUpdatesInterface (0.10.1)
+ - EXUpdatesInterface (0.12.0)
- FBLazyVector (0.72.15)
- FBReactNativeSpec (0.72.15):
- RCT-Folly (= 2021.07.22.00)
@@ -810,7 +814,7 @@ PODS:
- React
- RNPermissions (3.10.1):
- React-Core
- - RNReanimated (3.3.0):
+ - RNReanimated (3.4.2):
- DoubleConversion
- FBLazyVector
- glog
@@ -1291,16 +1295,16 @@ SPEC CHECKSUMS:
EXConstants: e7d8d1bec9a20242b4f92a9d66967c3904e0dcd0
EXFileSystem: 1aeed803248e2b62c5cde8b8d8c6cb1525fc40c1
EXFont: aa39b3f790e2b3188986ac5e8684cf6003c00a18
- EXJSONUtils: 6802be4282d42b97c51682468ddc1026a06f8276
- EXManifests: bb8592a34f5339c860b6c4bc71ad583d490374fb
+ EXJSONUtils: 7fd9cb366856cc187a567dc2938ada28f9170291
+ EXManifests: 40e734c97b726f7801bec9709aa3ead6d17151c3
Expo: 7bde63b84d4f6502de1e7963182333f39bedbf94
- expo-dev-client: 3902515adf9d7a59e63600f16095649bef48378b
- expo-dev-launcher: 4c4a7faf58820e798971bd3edbb79173c63e8615
- expo-dev-menu: cc50dfc09a654cb5d74ac3482f0c49ca1268117d
- expo-dev-menu-interface: 22ea9639725e26dfebcb16ea631ddec660827374
+ expo-dev-client: 12d9dd88efbd056eb85f1a706c891905a2f2eaba
+ expo-dev-launcher: ada23ef0663a5a64be9af560507408add783844f
+ expo-dev-menu: 6eb7fcd6d21151f4c2c2d679628d72879e3a5d2d
+ expo-dev-menu-interface: 9eb98037fb7d9c500ad5734261b43911f06afe0d
ExpoKeepAwake: 8ab1087501f5ccb91146447756b787575b13f13e
ExpoModulesCore: 3312621274fbba06fe382a37d8218a43cd522823
- EXUpdatesInterface: 82ed48d417cdcd376c12ca1c2ce390d35500bed6
+ EXUpdatesInterface: 1f9cdd9e1e1026de7488ac537e9c40bc6b6fb872
FBLazyVector: 25cbffbaec517695d376ab4bc428948cd0f08088
FBReactNativeSpec: e03b22fbf7017a6f76641ea4472e73c915dcdda7
Firebase: cec914dab6fd7b1bd8ab56ea07ce4e03dd251c2d
@@ -1415,7 +1419,7 @@ SPEC CHECKSUMS:
RNNotifee: 5165d37aaf980031837be3caece2eae5a6d73ae8
RNOS: d07e5090b5060c6f2b83116d740a32cfdb33afe3
RNPermissions: bd0d9ca7969ff7b999aa605ee2e5919c12522bfe
- RNReanimated: 775b3442640cbee726c53ef3acf372683fed97a3
+ RNReanimated: 7a85cf61cf3849efb530a9de2204a119f426636a
RNScreens: f112bc5442a9a0e468809c107a43f55882d6cd98
RNSensors: 4690be00931bc60be7c7bd457701edefaff965e3
RNSentry: 984bb0495abef6c419697bef208c581f127891d1
diff --git a/locales/languages/en.json b/locales/languages/en.json
index b993d227b59..ad363cefa5a 100644
--- a/locales/languages/en.json
+++ b/locales/languages/en.json
@@ -449,6 +449,7 @@
"next": "Next",
"buy_asset": "Buy {{asset}}",
"no_tokens": "You don't have any tokens!",
+ "show_tokens_without_balance": "Show tokens without balance",
"no_nfts_yet": "No NFTs yet",
"nfts_autodetection_title": "NFT detection",
"nfts_autodetection_desc": "Let MetaMask automatically detect and display NFTs in your wallet.",
diff --git a/package.json b/package.json
index 5230866d3d8..d583bb7db58 100644
--- a/package.json
+++ b/package.json
@@ -208,7 +208,7 @@
"@metamask/stake-sdk": "^0.3.0",
"@metamask/swappable-obj-proxy": "^2.1.0",
"@metamask/swaps-controller": "^12.0.0",
- "@metamask/transaction-controller": "^42.0.0",
+ "@metamask/transaction-controller": "^43.0.0",
"@metamask/utils": "^11.0.1",
"@ngraveio/bc-ur": "^1.1.6",
"@notifee/react-native": "^9.0.0",
@@ -267,7 +267,7 @@
"events": "3.0.0",
"expo": "^49.0.0",
"expo-build-properties": "~0.8.3",
- "expo-dev-client": "~2.4.13",
+ "expo-dev-client": "3.1.0",
"fuse.js": "3.4.4",
"https-browserify": "0.0.1",
"human-standard-token-abi": "^2.0.0",
@@ -332,7 +332,7 @@
"react-native-quick-base64": "^2.0.8",
"react-native-quick-crypto": "^0.6.1",
"react-native-randombytes": "^3.5.3",
- "react-native-reanimated": "~3.3.0",
+ "react-native-reanimated": "3.4.2",
"react-native-render-html": "^6.3.4",
"react-native-safe-area-context": "^3.1.9",
"react-native-screens": "3.22.0",
diff --git a/yarn.lock b/yarn.lock
index 61868ccf2e6..4e3761ea315 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2454,7 +2454,7 @@
node-forge "^1.2.1"
nullthrows "^1.1.1"
-"@expo/config-plugins@7.2.5", "@expo/config-plugins@^7.2.5", "@expo/config-plugins@~7.2.0":
+"@expo/config-plugins@7.2.5", "@expo/config-plugins@~7.2.0":
version "7.2.5"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.2.5.tgz#b15f22878975fdc4ddcfa8cdc971937ddc4c0249"
integrity sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==
@@ -2475,11 +2475,38 @@
xcode "^3.0.1"
xml2js "0.6.0"
+"@expo/config-plugins@^7.2.5", "@expo/config-plugins@~7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.5.0.tgz#323d70d50ce46fc45d10f5e4fbc8b5e1fc55c091"
+ integrity sha512-qOKjmgbddLh1vj9ytUT6AduhEans2cHgS42nopVgh5Wz8X+QUvPcCr1Yc8MvLM3OlbswBMCJceeosZa463i0uA==
+ dependencies:
+ "@expo/config-types" "^50.0.0-alpha.1"
+ "@expo/fingerprint" "^0.2.0"
+ "@expo/json-file" "~8.2.37"
+ "@expo/plist" "^0.0.20"
+ "@expo/sdk-runtime-versions" "^1.0.0"
+ "@react-native/normalize-color" "^2.0.0"
+ chalk "^4.1.2"
+ debug "^4.3.1"
+ find-up "~5.0.0"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ resolve-from "^5.0.0"
+ semver "^7.5.3"
+ slash "^3.0.0"
+ xcode "^3.0.1"
+ xml2js "0.6.0"
+
"@expo/config-types@^49.0.0-alpha.1":
version "49.0.0"
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-49.0.0.tgz#15ffef715285c06703f6fb7ec0cda853f645cc09"
integrity sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==
+"@expo/config-types@^50.0.0-alpha.1":
+ version "50.0.1"
+ resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-50.0.1.tgz#12d889214dedf64fbf2322c9d9e75c9d5ca7f695"
+ integrity sha512-EZHMgzkWRB9SMHO1e9m8s+OMahf92XYTnsCFjxhSfcDrcEoSdFPyJWDJVloHZPMGhxns7Fi2+A+bEVN/hD4NKA==
+
"@expo/config@8.1.2", "@expo/config@~8.1.0":
version "8.1.2"
resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.1.2.tgz#7fff28b3acefe39702e9f3ce1c9fd896a52caa80"
@@ -2497,6 +2524,23 @@
slugify "^1.3.4"
sucrase "^3.20.0"
+"@expo/config@~8.3.0":
+ version "8.3.1"
+ resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.3.1.tgz#2b417ddb81891d4b65be91469e7f4b830b430645"
+ integrity sha512-5fNGAw5h/MDOc8Ulv9nonafPtOT042B7dF6vrVxSP3CY5qiVu0tCsmbL412wEcrAZ8MY7UMv9e6IzpGTgleYgg==
+ dependencies:
+ "@babel/code-frame" "~7.10.4"
+ "@expo/config-plugins" "~7.5.0"
+ "@expo/config-types" "^50.0.0-alpha.1"
+ "@expo/json-file" "^8.2.37"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ require-from-string "^2.0.2"
+ resolve-from "^5.0.0"
+ semver "7.5.3"
+ slugify "^1.3.4"
+ sucrase "^3.20.0"
+
"@expo/dev-server@0.5.5":
version "0.5.5"
resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.5.5.tgz#33f9065e0cf5f36ac61944a92d11390cc71b7035"
@@ -2547,6 +2591,19 @@
dotenv-expand "~10.0.0"
getenv "^1.0.0"
+"@expo/fingerprint@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.2.0.tgz#ea8b41ba2bfa94cc8815d758b60d57764e47aef4"
+ integrity sha512-k6MhJTrX4CYEwsyGemiLT8rnBwjRBYe0eKYAM3kqw0WbSHzkOJm739sgdswGLmA53iiX6FbB1TsiLnqt+h2U2w==
+ dependencies:
+ "@expo/spawn-async" "^1.5.0"
+ chalk "^4.1.2"
+ debug "^4.3.4"
+ find-up "^5.0.0"
+ minimatch "^3.0.4"
+ p-limit "^3.1.0"
+ resolve-from "^5.0.0"
+
"@expo/image-utils@0.3.22":
version "0.3.22"
resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.22.tgz#3a45fb2e268d20fcc761c87bca3aca7fd8e24260"
@@ -5514,10 +5571,10 @@
resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-8.9.0.tgz#bac680e8f0007b3a11440f7e311674d6457d37ed"
integrity sha512-N/WfmdrzJm+xbpuqJsfMrlrAhiNDsllIpwt9gDDeEKDlQAfJnMtT9xvOvBJbXY7zgMdtGZuD+KY64jNKabbuVQ==
-"@metamask/transaction-controller@^42.0.0":
- version "42.0.0"
- resolved "https://registry.yarnpkg.com/@metamask/transaction-controller/-/transaction-controller-42.0.0.tgz#f5c035d018b7f72e4b21757bd075c6863a6301ca"
- integrity sha512-lITyvFsrjUhJox5CypaT7B80Bs5VxOziul2dcSBJFrD56vOX46ijq7FelTGbuSegJ+hlc+BUIsSSmhMiSDgHhw==
+"@metamask/transaction-controller@^43.0.0":
+ version "43.0.0"
+ resolved "https://registry.yarnpkg.com/@metamask/transaction-controller/-/transaction-controller-43.0.0.tgz#d4206cf671c4b9938dcf5fc0a190c7b8bf062967"
+ integrity sha512-QdAQRhuaL5a2vdX0yIsyeBhg+Tu9S7k0jY1xGrKJTdttdko8/KEEnkfOXZPf3VEATY7qw81WgSok4OLY3DXocA==
dependencies:
"@ethereumjs/common" "^3.2.0"
"@ethereumjs/tx" "^4.2.0"
@@ -5525,13 +5582,13 @@
"@ethersproject/abi" "^5.7.0"
"@ethersproject/contracts" "^5.7.0"
"@ethersproject/providers" "^5.7.0"
- "@metamask/base-controller" "^7.0.2"
- "@metamask/controller-utils" "^11.4.4"
+ "@metamask/base-controller" "^7.1.1"
+ "@metamask/controller-utils" "^11.4.5"
"@metamask/eth-query" "^4.0.0"
"@metamask/metamask-eth-abis" "^3.1.1"
"@metamask/nonce-tracker" "^6.0.0"
- "@metamask/rpc-errors" "^7.0.1"
- "@metamask/utils" "^10.0.0"
+ "@metamask/rpc-errors" "^7.0.2"
+ "@metamask/utils" "^11.0.1"
async-mutex "^0.5.0"
bn.js "^5.2.1"
eth-method-registry "^4.0.0"
@@ -16913,45 +16970,38 @@ expo-constants@~14.4.2:
"@expo/config" "~8.1.0"
uuid "^3.3.2"
-expo-dev-client@~2.4.13:
- version "2.4.13"
- resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.4.13.tgz#cf8c829e2f815b273db44c17e513d5410af5b7fa"
- integrity sha512-EBNJlPntw+DZy7mKxYvpdrmE2GU4YjcEpxSLpwNn2GDwy7e2xXAC2k/25E13BGy3yKPLo1iBXNgB01uleIDdVg==
+expo-dev-client@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-3.1.0.tgz#23359d2f765fa5e47dec2cd8be57e0428d0177fb"
+ integrity sha512-de3lM/G7hho749faXJN3lZjYNHspvNU5lA0E2cSHPqJ1JFYgbQ74/eaQJymjaU4KaIk8yALvc96UG5FTz+52vw==
dependencies:
- expo-dev-launcher "2.4.15"
- expo-dev-menu "3.2.4"
- expo-dev-menu-interface "1.3.0"
- expo-manifests "~0.7.0"
- expo-updates-interface "~0.10.0"
+ expo-dev-launcher "3.1.0"
+ expo-dev-menu "4.1.0"
+ expo-dev-menu-interface "1.4.0"
+ expo-manifests "~0.9.0"
+ expo-updates-interface "~0.12.0"
-expo-dev-launcher@2.4.15:
- version "2.4.15"
- resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.4.15.tgz#298ac56b523f77c40523453224f75dcc894198bc"
- integrity sha512-6oF4NsxlKwuafnyIZvVtMp4OTxRu4Arsw6qJ9s4jDjZuGJtGwgEj9ux3R0YLkDPs8xhsK9Awp0q17RqbQzs1qg==
+expo-dev-launcher@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-3.1.0.tgz#ab430426f7072dced67b64414f90fa357cbb725a"
+ integrity sha512-tzXAyf2eyPVFJmvnhhsUE9hvq6FCXPPOebvRSCXn52EFnXz8LpLX6lcOwprVLsYAOBuJ97tli/k7JbN8VX2wPQ==
dependencies:
- expo-dev-menu "3.2.3"
+ expo-dev-menu "4.1.0"
+ expo-manifests "~0.9.0"
resolve-from "^5.0.0"
semver "^7.5.3"
-expo-dev-menu-interface@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.3.0.tgz#51b6be8c6e0ce73e414ac7a545998dfad0dfdb80"
- integrity sha512-WtRP7trQ2lizJJTTFXUSGGn1deIeHaYej0sUynvu/uC69VrSP4EeSnYOxbmEO29kuT/MsQBMGu0P/AkMQOqCOg==
-
-expo-dev-menu@3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-3.2.3.tgz#31c102251d94e9a35fac667cefdbaeae7b1e1375"
- integrity sha512-DneF3okTC4AAfAZgaOIylQ/UngSO8SnUT6bRV6nHhJU/jQS1OIP1cZoNW23I100+2yj6x6mobL21PxyiI5VA8g==
- dependencies:
- expo-dev-menu-interface "1.3.0"
- semver "^7.5.3"
+expo-dev-menu-interface@1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.4.0.tgz#599797cc8a81fb68c86a12e8bb31a00505a1d796"
+ integrity sha512-uNoYthxkriKeFed9/YLvqXWIgP6Eyj1QX5+xpnhnmoe7Ewwos/Wk61CkPHo/dJESX34jj3tVjCcfV9itSLSptg==
-expo-dev-menu@3.2.4:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-3.2.4.tgz#25ba1efe70bf74ab2d7804eab54212785cd2a01a"
- integrity sha512-jPvEY4xGTsiVL6A8M6xThNG+tgCHKlDaWqmWHT+wy2EXgFf/7zE0daVYoFms0KJ1XtZc+/DmDRgIPTR86qIGTg==
+expo-dev-menu@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-4.1.0.tgz#76b029076f06e0857fd82dd50922a0072a953120"
+ integrity sha512-jYcSQeGam2QQMbxiyp+BW+c/br965O9ih+FUlLgO8oBByG6KAL6Ff929aUbD/mnAxVBm4vLlN7K5iKLyaL8xKg==
dependencies:
- expo-dev-menu-interface "1.3.0"
+ expo-dev-menu-interface "1.4.0"
semver "^7.5.3"
expo-file-system@~15.4.0, expo-file-system@~15.4.5:
@@ -16968,22 +17018,23 @@ expo-font@~11.4.0:
dependencies:
fontfaceobserver "^2.1.0"
-expo-json-utils@~0.7.0:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.7.1.tgz#efe315c982113204be46419cbc26d4d9a2af145f"
- integrity sha512-L0lyH8diXQtV0q5BLbFlcoxTqPF5im79xDHPhybB0j36xYdm65hjwRJ4yMrPIN5lR18hj48FUZeONiDHRyEvIg==
+expo-json-utils@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.9.0.tgz#d44cfc35b7b6c375c485f722b7969024669383f7"
+ integrity sha512-qr29nwg9l9W3Taww8qFuiUVKdICQqATP5WK/aNx762D039SzpAKqcD8Hvqmf7ICJQEaXv7xUromRImhkgELBHA==
expo-keep-awake@~12.3.0:
version "12.3.0"
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz#c42449ae19c993274ddc43aafa618792b6aec408"
integrity sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw==
-expo-manifests@~0.7.0:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.7.2.tgz#77c2d9476e8130fc9ca6d4274fa1a5495d34358e"
- integrity sha512-xlhL0XI2zw3foJ0q2Ra4ieBhU0V2yz+Rv6GpVEaaIHFlIC/Dbx+mKrX5dgenZEMERr/MG7sRJaRbAVB2PaAYhA==
+expo-manifests@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.9.0.tgz#69cfa3fb574129eb23df80e89fec3f9e90857313"
+ integrity sha512-aHo3AlDnPT53RqiJbv4OAhivDORkMhxKXk+uAIgestOR1SwkdYmzf44d2k+rEiloX7TQzlh5i6GKKZVVkqGNTw==
dependencies:
- expo-json-utils "~0.7.0"
+ "@expo/config" "~8.3.0"
+ expo-json-utils "~0.9.0"
expo-modules-autolinking@1.5.1:
version "1.5.1"
@@ -17005,10 +17056,10 @@ expo-modules-core@1.5.13:
compare-versions "^3.4.0"
invariant "^2.2.4"
-expo-updates-interface@~0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.10.1.tgz#cab075641cd381718ccd9264bf133dc393430a44"
- integrity sha512-I6JMR7EgjXwckrydDmrkBEX/iw750dcqpzQVsjznYWfi0HTEOxajLHB90fBFqQkUV5i5s4Fd3hYQ1Cn0oMzUbA==
+expo-updates-interface@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.12.0.tgz#76827311bca274b179cabead3e27ca594b3bf4c4"
+ integrity sha512-0vg/8RrmuQH9yA+FLV8XfeDj9sJai/10v65yzgHF6rPLGuAoT6vH/5hOSvHwtaEFnLLRycViyh4EuIU5Res++g==
expo@^49.0.0:
version "49.0.23"
@@ -25029,10 +25080,10 @@ react-native-randombytes@^3.5.3:
buffer "^4.9.1"
sjcl "^1.0.3"
-react-native-reanimated@~3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.3.0.tgz#80f9d58e28fddf62fe4c1bc792337b8ab57936ab"
- integrity sha512-LzfpPZ1qXBGy5BcUHqw3pBC0qSd22qXS3t8hWSbozXNrBkzMhhOrcILE/nEg/PHpNNp1xvGOW8NwpAMF006roQ==
+react-native-reanimated@3.4.2:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.4.2.tgz#744154fead6d8d31d5bd9ac617d8c84d74a6f697"
+ integrity sha512-FbtG+f1PB005vDTJSv4zAnTK7nNXi+FjFgbAM5gOzIZDajfph2BFMSUstzIsN8T77+OKuugUBmcTqLnQ24EBVg==
dependencies:
"@babel/plugin-transform-object-assign" "^7.16.7"
"@babel/preset-typescript" "^7.16.7"