From 5ab53568c0d4caf3ed0846172417e41f3b66f78c Mon Sep 17 00:00:00 2001 From: Uniswap Labs Service Account Date: Tue, 16 Jul 2024 13:40:05 +0000 Subject: [PATCH] ci(release): publish latest release --- .prettierignore | 1 + .../detox-npm-20.18.1-b532b310b4.patch | 14 + .../detox-npm-20.23.0-6d61110e63.patch | Bin 2202 -> 0 bytes CODEOWNERS | 1 - README.md | 5 +- RELEASE | 29 +- VERSION | 2 +- apps/extension/.depcheckrc | 17 + apps/extension/.eslintignore | 1 + apps/extension/.eslintrc.js | 28 + apps/extension/.gitignore | 30 + apps/extension/README.md | 53 + apps/extension/jest-setup.js | 71 + apps/extension/jest.config.js | 58 + apps/extension/package.json | 99 + apps/extension/src/app/Global.css | 31 + apps/extension/src/app/OnboardingApp.test.tsx | 10 + apps/extension/src/app/OnboardingApp.tsx | 216 + apps/extension/src/app/SidebarApp.tsx | 263 + apps/extension/src/app/StatsigProvider.tsx | 53 + apps/extension/src/app/apollo.tsx | 20 + .../src/app/components/ComingSoon.tsx | 33 + .../src/app/components/ErrorElement.tsx | 13 + apps/extension/src/app/components/Input.tsx | 38 + .../src/app/components/MnemonicViewer.tsx | 91 + .../src/app/components/OptionalStrictMode.tsx | 8 + .../src/app/components/PasswordInput.tsx | 66 + .../components/Trace/TraceUserProperties.tsx | 72 + .../src/app/components/buttons/CopyButton.tsx | 75 + .../app/components/layout/ScreenHeader.tsx | 34 + .../app/components/loading/LoadingSpinner.tsx | 28 + .../loading/SelectWalletSkeleton.tsx | 43 + .../app/components/loading/SkeletonBox.css | 40 + .../app/components/loading/SkeletonBox.tsx | 16 + .../components/modal/FeedbackRequestModal.tsx | 62 + .../src/app/components/modal/InfoModal.tsx | 82 + .../src/app/components/tabs/ActivityTab.tsx | 23 + .../src/app/components/tabs/NftsTab.tsx | 100 + apps/extension/src/app/constants.ts | 3 + apps/extension/src/app/events/constants.ts | 3 + apps/extension/src/app/events/global.ts | 5 + .../src/app/features/accounts/AccountItem.tsx | 192 + .../accounts/AccountSwitcherScreen.test.tsx | 26 + .../accounts/AccountSwitcherScreen.tsx | 275 + .../features/accounts/CreateWalletModal.tsx | 91 + .../app/features/accounts/EditLabelModal.tsx | 74 + .../AccountSwitcherScreen.test.tsx.snap | 463 + .../src/app/features/dapp/DappContext.tsx | 67 + .../src/app/features/dapp/actions.ts | 71 + .../src/app/features/dapp/changeChain.test.ts | 115 + .../src/app/features/dapp/changeChain.ts | 69 + .../src/app/features/dapp/hooks.test.ts | 104 + apps/extension/src/app/features/dapp/hooks.ts | 34 + apps/extension/src/app/features/dapp/saga.ts | 9 + apps/extension/src/app/features/dapp/store.ts | 199 + .../src/app/features/dapp/utils.test.ts | 66 + apps/extension/src/app/features/dapp/utils.ts | 21 + .../dappRequests/DappRequestContent.tsx | 425 + .../dappRequests/DappRequestQueueContext.tsx | 144 + .../src/app/features/dappRequests/accounts.ts | 154 + .../dappRequestApprovalWatcherSaga.ts | 252 + .../app/features/dappRequests/getChainId.ts | 34 + .../app/features/dappRequests/permissions.ts | 126 + .../Connection/ConnectionRequestContent.tsx | 27 + .../EthSend/Approve/ApproveRequestContent.tsx | 104 + .../requestContent/EthSend/EthSend.tsx | 121 + .../FallbackEthSend/FallbackEthSend.tsx | 118 + .../EthSend/LP/LPRequestContent.tsx | 49 + .../EthSend/Swap/SwapRequestContent.tsx | 291 + .../requestContent/EthSend/Swap/constants.ts | 13 + .../EthSend/Swap/universalRouter.ts | 110 + .../requestContent/EthSend/Swap/utils.ts | 70 + .../requestContent/NetworkFooter.test.tsx | 11 + .../requestContent/NetworksFooter.tsx | 20 + .../PersonalSignRequestContent.tsx | 124 + .../SignTypeData/DomainContent.tsx | 69 + .../MaybeExplorerLinkedAddress.tsx | 35 + .../Permit2/Permit2RequestContent.tsx | 104 + .../SignTypedDataRequestContent.tsx | 115 + .../requestContent/WrapContent.tsx | 89 + .../__snapshots__/NetworkFooter.test.tsx.snap | 607 + .../src/app/features/dappRequests/saga.ts | 398 + .../src/app/features/dappRequests/slice.ts | 44 + .../dappRequests/types/DappRequestTypes.ts | 419 + .../dappRequests/types/EIP712Types.ts | 46 + .../features/dappRequests/types/ErrorTypes.ts | 8 + .../dappRequests/types/EthersTypes.ts | 90 + .../types/NonfungiblePositionManager.ts | 28 + .../types/NonfungiblePositionManagerTypes.ts | 76 + .../dappRequests/types/Permit2Types.ts | 41 + .../types/UniversalRouterTypes.ts | 404 + .../dappRequests/types/utilityTypes.tsx | 15 + .../src/app/features/dappRequests/utils.ts | 26 + apps/extension/src/app/features/for/utils.ts | 33 + .../src/app/features/home/HomeScreen.tsx | 248 + .../features/home/PortfolioActionButtons.tsx | 133 + .../src/app/features/home/PortfolioHeader.tsx | 200 + .../app/features/home/SwitchNetworksModal.tsx | 109 + .../app/features/home/TokenBalanceList.tsx | 189 + .../src/app/features/lockScreen/Locked.tsx | 256 + .../NotificationToastWrapper.tsx | 36 + .../src/app/features/onboarding/Complete.tsx | 88 + .../features/onboarding/KeyboardKey.test.tsx | 33 + .../app/features/onboarding/KeyboardKey.tsx | 40 + .../OnboardingPaneAnimatedContents.tsx | 34 + .../features/onboarding/OnboardingScreen.tsx | 20 + .../onboarding/OnboardingScreenFrame.tsx | 84 + .../onboarding/OnboardingScreenProps.tsx | 17 + .../features/onboarding/OnboardingSteps.tsx | 304 + .../onboarding/OnboardingStepsContext.tsx | 58 + .../features/onboarding/OnboardingWrapper.tsx | 54 + .../src/app/features/onboarding/Password.tsx | 110 + .../features/onboarding/PasswordImport.tsx | 43 + .../app/features/onboarding/PinReminder.tsx | 64 + .../onboarding/SyncFromPhoneButton.tsx | 32 + .../src/app/features/onboarding/Terms.tsx | 30 + .../onboarding/UniconWithLockIcon.tsx | 21 + .../__snapshots__/KeyboardKey.test.tsx.snap | 70 + .../features/onboarding/alerts/selectors.ts | 6 + .../app/features/onboarding/alerts/slice.ts | 33 + .../features/onboarding/create/NameWallet.tsx | 72 + .../onboarding/create/PasswordCreate.tsx | 23 + .../onboarding/create/TestMnemonic.tsx | 261 + .../onboarding/create/ViewMnemonic.tsx | 148 + .../onboarding/import/ImportMnemonic.tsx | 336 + .../onboarding/import/SelectWallets.tsx | 208 + .../intro/GetOnTheBetaWaitlistBanner.tsx | 43 + .../features/onboarding/intro/IntroScreen.tsx | 72 + .../intro/IntroScreenBetaWaitlist.tsx | 246 + .../onboarding/intro/MainContentWrapper.tsx | 23 + .../onboarding/intro/MainIntroWrapper.tsx | 42 + .../intro/UnsupportedBrowserScreen.tsx | 41 + .../onboarding/reset/ResetComplete.tsx | 34 + .../app/features/onboarding/scan/OTPInput.tsx | 232 + .../onboarding/scan/ScanToOnboard.tsx | 311 + .../scan/ScantasticContextProvider.tsx | 142 + .../src/app/features/onboarding/scan/utils.ts | 52 + .../src/app/features/onboarding/utils.ts | 2 + .../src/app/features/popups/ConnectPopup.tsx | 87 + .../src/app/features/popups/selectors.ts | 6 + .../src/app/features/popups/slice.ts | 33 + .../features/receive/ReceiveScreen.test.tsx | 24 + .../app/features/receive/ReceiveScreen.tsx | 29 + .../__snapshots__/ReceiveScreen.test.tsx.snap | 12505 ++++++++++++++++ .../app/features/settings/DevMenuScreen.tsx | 44 + .../features/settings/SettingsDropdown.tsx | 92 + .../settings/SettingsItemWithDropdown.tsx | 33 + .../settings/SettingsPrivacyScreen.tsx | 15 + .../RemoveRecoveryPhraseVerify.tsx | 141 + .../RemoveRecoveryPhraseWallets.tsx | 111 + .../SettingsRecoveryPhrase.tsx | 52 + .../ViewRecoveryPhraseScreen.tsx | 246 + .../app/features/settings/SettingsScreen.tsx | 284 + .../settings/SettingsScreenWrapper.tsx | 13 + .../settings/password/ChangePasswordForm.tsx | 75 + .../settings/password/EnterPasswordForm.tsx | 80 + .../settings/password/EnterPasswordModal.tsx | 69 + .../password/SettingsChangePasswordScreen.tsx | 34 + .../src/app/features/swap/SwapFlowScreen.tsx | 16 + .../SendFormScreen/AmountSelector.tsx | 3 + .../transfer/SendFormScreen/GasFeeRow.tsx | 55 + .../SendFormScreen/RecipientPanel.tsx | 106 + .../transfer/SendFormScreen/ReviewButton.tsx | 52 + .../SendFormScreen/SendFormScreen.tsx | 186 + .../transfer/SendReviewScreen/SendDetails.tsx | 198 + .../SendReviewScreen/SendReviewScreen.tsx | 107 + .../app/features/transfer/TransferContext.tsx | 114 + .../features/transfer/TransferFlowScreen.tsx | 26 + .../features/warnings/StorageWarningModal.tsx | 42 + .../features/warnings/useCheckLowStorage.ts | 48 + .../src/app/hooks/useIsWalletUnlocked.ts | 59 + .../src/app/hooks/useOnCopyToClipboard.tsx | 39 + .../hooks/useOpeningKeyboardShortCut.test.ts | 154 + .../app/hooks/useOpeningKeyboardShortCut.ts | 77 + .../app/hooks/useOptimizedSearchParams.tsx | 30 + apps/extension/src/app/hooks/useSagaStatus.ts | 39 + ...HideContentsWhenSidebarBecomesInactive.tsx | 31 + .../navigation/SideBarNavigationProvider.tsx | 186 + .../extension/src/app/navigation/constants.ts | 42 + apps/extension/src/app/navigation/index.tsx | 247 + apps/extension/src/app/navigation/state.ts | 86 + apps/extension/src/app/navigation/utils.ts | 141 + apps/extension/src/app/saga.ts | 99 + apps/extension/src/app/sentry.ts | 88 + apps/extension/src/app/utils/analytics.ts | 23 + apps/extension/src/app/utils/chrome.ts | 17 + apps/extension/src/app/utils/devtools.ts | 3 + .../src/app/utils/isAppleDevice.test.ts | 56 + apps/extension/src/app/utils/isAppleDevice.ts | 7 + .../src/app/utils/isOnboardedSelector.ts | 5 + apps/extension/src/app/utils/storage.ts | 18 + .../src/app/utils/whyDidYouRender.ts | 13 + apps/extension/src/app/version.ts | 31 + apps/extension/src/assets/beta-logo.png | Bin 0 -> 38133 bytes .../src/assets/fonts/Basel-Book.woff | Bin 0 -> 47616 bytes .../src/assets/fonts/Basel-Medium.woff | Bin 0 -> 47144 bytes .../src/assets/fonts/Inter-normal.var.ttf | Bin 0 -> 98296 bytes .../graphics/extension-preview-dark.png | Bin 0 -> 48888 bytes .../graphics/extension-preview-light.png | Bin 0 -> 53993 bytes apps/extension/src/assets/icon128.png | Bin 0 -> 10783 bytes apps/extension/src/assets/icon16.png | Bin 0 -> 711 bytes apps/extension/src/assets/icon32.png | Bin 0 -> 1789 bytes apps/extension/src/assets/icon48.png | Bin 0 -> 3063 bytes apps/extension/src/assets/icon64.png | Bin 0 -> 4377 bytes apps/extension/src/assets/index.ts | 6 + .../src/assets/lock-screen-background.png | Bin 0 -> 93464 bytes .../src/assets/onboarding-background-dark.png | Bin 0 -> 514011 bytes .../assets/onboarding-background-light.png | Bin 0 -> 501465 bytes apps/extension/src/background/background.ts | 91 + .../src/background/backgroundDappRequests.ts | 267 + .../src/background/backgroundStore.ts | 71 + .../messagePassing/messageChannels.ts | 339 + .../background/messagePassing/messageTypes.ts | 7 + .../background/messagePassing/messageUtils.ts | 28 + .../src/background/messagePassing/platform.ts | 300 + .../messagePassing/types/ExtensionMessages.ts | 17 + .../messagePassing/types/requests.ts | 94 + .../background/utils/chromeSidePanelUtils.ts | 44 + .../utils/getCalldataInfoFromTransaction.ts | 63 + .../src/background/utils/loggerMiddleware.ts | 6 + .../background/utils/persistedStateUtils.ts | 39 + .../src/contentScript/WindowEthereumProxy.ts | 160 + .../WindowEthereumRequestTypes.ts | 323 + apps/extension/src/contentScript/ethereum.ts | 84 + apps/extension/src/contentScript/index.tsx | 9 + .../src/contentScript/injected.test.ts | 11 + apps/extension/src/contentScript/injected.ts | 267 + .../methodHandlers/BaseMethodHandler.ts | 16 + .../ExtensionEthMethodHandler.ts | 483 + .../ProviderDirectMethodHandler.ts | 115 + .../methodHandlers/UniswapMethodHandler.ts | 81 + .../contentScript/methodHandlers/emitUtils.ts | 12 + .../methodHandlers/requestMethods.ts | 89 + .../src/contentScript/methodHandlers/types.ts | 6 + .../src/contentScript/methodHandlers/utils.ts | 89 + apps/extension/src/contentScript/types.ts | 37 + apps/extension/src/declarations.d.ts | 6 + apps/extension/src/env.d.ts | 8 + apps/extension/src/logo.svg | 7 + apps/extension/src/manifest.json | 75 + apps/extension/src/onboarding.html | 75 + apps/extension/src/onboarding/onboarding.tsx | 55 + apps/extension/src/sidebar.html | 98 + apps/extension/src/sidebar/loadSidebar.ts | 18 + apps/extension/src/sidebar/sidebar.tsx | 55 + .../src/store/PrimaryAppInstanceDebugger.tsx | 24 + .../store/PrimaryAppInstanceDebuggerLazy.tsx | 7 + apps/extension/src/store/constants.ts | 2 + .../src/store/enhancePersistReducer.ts | 46 + apps/extension/src/store/migrations.test.ts | 182 + apps/extension/src/store/migrations.ts | 21 + ...xedChromeStorageToReduxPersistMigration.ts | 29 + apps/extension/src/store/schema.ts | 88 + apps/extension/src/store/store.ts | 107 + .../src/store/storeSynchronization.ts | 156 + apps/extension/src/store/webReducer.ts | 20 + .../@react-native-masked-view/masked-view.ts | 13 + .../__mocks__/@shopify/react-native-skia.ts | 19 + apps/extension/src/test/babel.config.js | 25 + apps/extension/src/test/fixtures/redux.ts | 13 + apps/extension/src/test/jest-resolver.js | 33 + apps/extension/src/test/render.tsx | 132 + apps/extension/src/test/test-utils.ts | 6 + apps/extension/tsconfig.json | 32 + apps/extension/webpack.config.js | 361 + .../__mocks__/@react-navigation/native.js | 30 - .../onboarding/import/SeedPhraseInput.kt | 30 +- .../import/SeedPhraseInputViewModel.kt | 30 +- apps/mobile/android/settings.gradle | 2 +- apps/mobile/e2e/Home.e2e.ts | 11 - apps/mobile/e2e/Onboarding.e2e.ts | 6 +- apps/mobile/e2e/README.md | 12 +- .../usecases/home/HomeBasicInteractions.ts | 75 - .../e2e/usecases/onboarding/ImportWallet.ts | 1 + .../usecases/swap/SwapBasicInteractions.ts | 40 +- .../Import/SeedPhraseInputManager.m | 1 - .../Import/SeedPhraseInputView.swift | 15 +- .../Import/SeedPhraseInputViewModel.swift | 29 +- apps/mobile/jest-setup.js | 5 + apps/mobile/package.json | 6 +- apps/mobile/scripts/podinstall.sh | 26 +- apps/mobile/src/app/App.tsx | 5 +- .../app/MobileWalletNavigationProvider.tsx | 19 +- apps/mobile/src/app/hooks.ts | 7 +- apps/mobile/src/app/migrations.test.ts | 118 +- .../src/app/modals/AccountSwitcherModal.tsx | 7 +- apps/mobile/src/app/modals/AppModals.tsx | 11 +- .../src/app/modals/ExperimentsModal.tsx | 5 +- apps/mobile/src/app/modals/ExploreModal.tsx | 4 +- apps/mobile/src/app/modals/SwapModal.tsx | 5 +- .../src/app/modals/TransferTokenModal.tsx | 5 +- .../src/app/modals/ViewOnlyExplainerModal.tsx | 4 +- apps/mobile/src/app/navigation/NavBar.tsx | 8 +- .../app/navigation/NavigationContainer.tsx | 4 +- apps/mobile/src/app/navigation/components.tsx | 9 - apps/mobile/src/app/navigation/navigation.tsx | 10 +- apps/mobile/src/app/store.ts | 12 +- apps/mobile/src/components/NFT/NftView.tsx | 13 +- .../PriceExplorer/useChartDimensions.test.ts | 8 +- .../components/PriceExplorer/usePrice.test.ts | 25 +- .../PriceExplorer/usePriceHistory.test.ts | 48 +- .../PriceExplorer/usePriceHistory.ts | 2 +- .../QRCodeScanner/QRCodeScanner.tsx | 2 +- .../RecipientSelect/RecipientScanModal.tsx | 2 +- .../RecipientSelect/RecipientSelect.tsx | 1 - .../components/RecipientSelect/hooks.test.ts | 100 +- .../RemoveWallet/RemoveWalletModal.tsx | 5 +- .../RestoreWalletModal/RestoreWalletModal.tsx | 4 +- .../src/components/Settings/SettingsRow.tsx | 6 +- .../TokenBalanceItemContextMenu.tsx | 2 - .../TokenBalanceList/TokenBalanceList.tsx | 15 +- .../components/TokenDetails/LinkButton.tsx | 8 +- .../components/TokenDetails/TokenBalances.tsx | 2 +- .../TokenDetailsActionButtons.tsx | 2 +- .../src/components/TokenDetails/hooks.test.ts | 30 +- .../src/components/TokenDetails/hooks.ts | 2 +- .../TokenSelector/TokenFiatOnRampList.tsx | 17 +- .../ConnectedDapps/ConnectedDappsList.tsx | 8 +- .../DappConnectedNetworksModal.tsx | 6 +- .../ConnectedDapps/DappConnectionItem.tsx | 9 +- .../DappHeaderIcon.tsx | 0 .../ModalWithOverlay/ModalWithOverlay.tsx | 2 +- .../ModalWithOverlay/ScrollDownOverlay.tsx | 0 .../RequestModal/ClientDetails.tsx | 4 +- .../RequestModal/HeaderText.tsx | 0 .../RequestModal/KidSuperCheckinModal.tsx | 6 +- .../RequestModal/RequestDetails.tsx | 14 +- .../RequestModal/UwULinkErc20SendModal.tsx | 4 +- .../WalletConnectRequestModal.tsx | 20 +- .../WalletConnectRequestModalContent.tsx | 6 +- .../RequestModal/hooks.ts | 2 +- .../ScanSheet/PendingConnectionModal.tsx | 15 +- .../PendingConnectionSwitchAccountModal.tsx | 2 +- .../PendingConnectionSwitchNetworkModal.tsx | 0 .../ScanSheet/SwitchAccountOption.tsx | 0 .../ScanSheet/WalletConnectModal.tsx | 8 +- .../ScanSheet/util.test.ts | 6 +- .../ScanSheet/util.ts | 28 +- .../WalletConnectModals.tsx | 12 +- .../components/accounts/AccountCardItem.tsx | 6 +- .../accounts/AccountHeader.test.tsx | 5 +- .../src/components/accounts/AccountHeader.tsx | 11 +- .../__snapshots__/AccountHeader.test.tsx.snap | 3 +- .../banners/ExtensionPromoBanner.tsx | 4 +- .../buttons/CopyTextButton.test.tsx | 4 +- .../src/components/buttons/CopyTextButton.tsx | 2 +- .../components/buttons/LinkButton.test.tsx | 4 +- .../src/components/buttons/LinkButton.tsx | 2 +- .../components/explore/ExploreSections.tsx | 3 +- .../components/explore/FavoriteTokenCard.tsx | 6 +- .../components/explore/FavoriteTokensGrid.tsx | 4 +- .../components/explore/FavoriteWalletCard.tsx | 4 +- .../explore/FavoriteWalletsGrid.tsx | 4 +- .../src/components/explore/RemoveButton.tsx | 1 - .../src/components/explore/SortButton.tsx | 4 +- .../FavoriteWalletCard.test.tsx.snap | 21 +- .../__snapshots__/TokenItem.test.tsx.snap | 1 - .../src/components/explore/hooks.test.ts | 56 +- apps/mobile/src/components/explore/hooks.ts | 8 +- .../explore/search/SearchEmptySection.tsx | 8 +- .../search/SearchPopularNFTCollections.tsx | 9 +- .../explore/search/SearchPopularTokens.tsx | 9 +- .../explore/search/SearchResultsLoader.tsx | 6 +- .../explore/search/SearchResultsSection.tsx | 5 +- .../explore/search/SearchSectionHeader.tsx | 2 +- .../src/components/explore/search/hooks.ts | 3 +- .../search/items/SearchENSAddressItem.tsx | 4 +- .../search/items/SearchEtherscanItem.tsx | 9 +- .../search/items/SearchNFTCollectionItem.tsx | 11 +- .../explore/search/items/SearchTokenItem.tsx | 11 +- .../explore/search/items/SearchUnitagItem.tsx | 4 +- .../items/SearchWalletByAddressItem.tsx | 4 +- .../search/items/SearchWalletItemBase.tsx | 10 +- .../components/explore/search/utils.test.ts | 16 +- .../src/components/explore/search/utils.ts | 3 +- .../forceUpgrade/ForceUpgradeModal.tsx | 20 +- .../src/components/home/ActivityTab.tsx | 4 +- apps/mobile/src/components/home/FeedTab.tsx | 5 +- apps/mobile/src/components/home/NftsTab.tsx | 7 +- apps/mobile/src/components/home/TokensTab.tsx | 41 +- .../components/layout/SafeKeyboardScreen.tsx | 75 - apps/mobile/src/components/layout/Screen.tsx | 2 +- .../src/components/layout/TabHelpers.tsx | 3 +- .../mnemonic/HiddenMnemonicWordView.tsx | 13 +- .../components/mnemonic/SeedPhraseDisplay.tsx | 4 +- .../src/components/text/LongMarkdownText.tsx | 2 +- .../components/unitags/ChangeUnitagModal.tsx | 4 +- .../components/unitags/DeleteUnitagModal.tsx | 4 +- .../src/components/unitags/UnitagBanner.tsx | 4 +- .../components/unitags/UnitagsIntroModal.tsx | 5 +- .../CloudBackupPasswordFormContext.tsx | 120 - .../CloudBackupForm/ContinueButton.tsx | 16 - .../CloudBackupForm/PasswordInput.tsx | 93 - .../CloudBackup/CloudBackupForm/index.ts | 9 - .../CloudBackup/CloudBackupPasswordForm.tsx | 155 + .../CloudBackupProcessingAnimation.tsx | 4 +- apps/mobile/src/features/appRating/saga.ts | 2 +- .../src/features/appRating/selectors.test.ts | 6 +- .../src/features/dataApi/balances.test.ts | 8 +- .../deepLinking/handleDeepLinkSaga.ts | 9 +- ...ts => handleMoonpayReturnLinkSaga.test.ts} | 8 +- ...Saga.ts => handleMoonpayReturnLinkSaga.ts} | 2 +- .../deepLinking/handleSwapLinkSaga.test.ts | 33 +- .../deepLinking/handleSwapLinkSaga.ts | 4 +- .../externalProfile/ProfileContextMenu.tsx | 9 +- .../externalProfile/ProfileHeader.tsx | 9 +- apps/mobile/src/features/favorites/hooks.ts | 7 +- .../fiatOnRamp/ExchangeTransferModal.tsx | 5 +- ...xchangeTransferServiceProviderSelector.tsx | 4 +- .../fiatOnRamp/FiatOnRampAggregatorModal.tsx | 4 +- .../features/fiatOnRamp/FiatOnRampContext.tsx | 13 +- .../fiatOnRamp/FiatOnRampCountryListModal.tsx | 7 +- .../features/fiatOnRamp/FiatOnRampModal.tsx | 320 + .../features/fiatOnRamp/aggregatorHooks.ts | 145 + apps/mobile/src/features/fiatOnRamp/hooks.ts | 424 +- .../src/features/import/GenericImportForm.tsx | 2 +- .../mobile/src/features/modals/ModalsState.ts | 3 +- .../src/features/modals/modalSlice.test.ts | 7 +- apps/mobile/src/features/modals/modalSlice.ts | 9 +- .../collection/NFTCollectionContextMenu.tsx | 3 +- .../features/notifications/WCNotification.tsx | 4 +- .../features/onboarding/OnboardingScreen.tsx | 24 +- .../SafeKeyboardOnboardingScreen.tsx | 128 +- apps/mobile/src/features/onboarding/hooks.ts | 4 +- .../features/scantastic/ScantasticModal.tsx | 5 +- .../ReceiveSummaryItem.stories.tsx | 2 +- .../SummaryItems/SendSummaryItem.stories.tsx | 2 +- .../swap/hooks/useOnCloseSendModal.tsx | 4 +- .../transactions/transfer/TransferFlow.tsx | 43 +- .../transactions/transfer/TransferStatus.tsx | 2 +- .../transfer/transferRewrite/TransferFlow.tsx | 2 +- .../features/unitags/ClaimUnitagScreen.tsx | 2 +- .../unitags/EditUnitagProfileScreen.tsx | 4 +- apps/mobile/src/features/wallet/hooks.ts | 4 +- .../walletConnect/signWcRequestSaga.ts | 2 +- .../src/features/walletConnect/utils.test.ts | 23 +- apps/mobile/src/features/widgets/widgets.ts | 2 +- apps/mobile/src/screens/AppLoadingScreen.tsx | 25 +- apps/mobile/src/screens/DevScreen.tsx | 4 +- .../screens/ExchangeTransferConnecting.tsx | 13 +- apps/mobile/src/screens/ExploreScreen.tsx | 7 +- .../src/screens/FiatOnRampConnecting.tsx | 34 +- apps/mobile/src/screens/FiatOnRampScreen.tsx | 83 +- .../screens/FiatOnRampServiceProviders.tsx | 13 +- apps/mobile/src/screens/HomeScreen.tsx | 25 +- .../screens/Import/OnDeviceRecoveryScreen.tsx | 11 +- .../RestoreCloudBackupLoadingScreen.tsx | 4 +- .../RestoreCloudBackupPasswordScreen.tsx | 5 +- .../src/screens/Import/SeedPhraseInput.tsx | 1 - .../screens/Import/SeedPhraseInputScreen.tsx | 2 +- .../SeedPhraseInputScreenV2.android.mock.tsx | 167 - .../Import/SeedPhraseInputScreenV2.tsx | 10 +- .../src/screens/Import/WatchWalletScreen.tsx | 4 +- apps/mobile/src/screens/NFTItemScreen.tsx | 9 +- .../CloudBackupPasswordConfirmScreen.tsx | 34 +- .../CloudBackupPasswordCreateScreen.tsx | 47 +- .../src/screens/Onboarding/LandingScreen.tsx | 10 +- .../Onboarding/NotificationsSetupScreen.tsx | 34 +- .../Onboarding/SecuritySetupScreen.tsx | 6 +- .../src/screens/Onboarding/TermsOfService.tsx | 2 +- .../mobile/src/screens/ReceiveCryptoModal.tsx | 8 +- .../src/screens/SettingsAppearanceScreen.tsx | 4 +- .../screens/SettingsBiometricAuthScreen.tsx | 4 +- ...ttingsCloudBackupPasswordConfirmScreen.tsx | 39 +- ...ettingsCloudBackupPasswordCreateScreen.tsx | 52 +- .../src/screens/SettingsCloudBackupStatus.tsx | 4 +- .../src/screens/SettingsFiatCurrencyModal.tsx | 6 +- apps/mobile/src/screens/SettingsScreen.tsx | 3 +- apps/mobile/src/screens/SettingsWallet.tsx | 4 +- .../mobile/src/screens/SettingsWalletEdit.tsx | 4 +- .../SettingsWalletManageConnection.tsx | 2 +- .../mobile/src/screens/TokenDetailsScreen.tsx | 10 +- apps/mobile/src/test/fixtures/explore.ts | 2 +- apps/mobile/src/test/fixtures/redux.ts | 2 +- apps/mobile/src/test/render.tsx | 5 +- apps/mobile/src/utils/reanimated.test.ts | 18 +- .../mobile/src/utils/useAddBackButton.test.ts | 4 +- apps/mobile/src/utils/useSagaStatus.ts | 5 +- apps/web/.eslintrc.js | 4 - .../components/metaTagInjector.test.ts | 8 +- apps/web/functions/default.test.ts | 4 +- .../functions/explore/tokens/token.test.ts | 6 +- apps/web/functions/nfts/asset/nft.test.ts | 6 +- .../nfts/collection/collection.test.ts | 8 +- apps/web/package.json | 8 +- apps/web/public/csp.json | 2 +- .../announcement_modal_desktop.png | Bin 274777 -> 0 bytes .../announcement_modal_mobile.png | Bin 829291 -> 0 bytes .../extension_promo/background_connector.png | Bin 17859 -> 0 bytes apps/web/public/index.html | 4 +- apps/web/public/nfts-sitemap.xml | 293 +- apps/web/public/pools-sitemap.xml | 3037 ++-- apps/web/public/tokens-sitemap.xml | 3277 +--- .../assets/images/extensionIllustration.jpg | Bin 0 -> 244079 bytes .../assets/images/extensionIllustration.png | Bin 145206 -> 0 bytes .../src/assets/images/walletIllustration.jpg | Bin 0 -> 398165 bytes .../src/assets/images/walletIllustration.png | Bin 199070 -> 0 bytes .../AccountDetails/AddressDisplay.tsx | 42 - .../components/AccountDrawer/ActionTile.tsx | 2 +- .../AccountDrawer/AuthenticatedHeader.tsx | 96 +- .../components/AccountDrawer/DefaultMenu.tsx | 6 +- .../AccountDrawer/DownloadButton.tsx | 2 +- .../AccountDrawer/GitVersionRow.tsx | 2 +- .../components/AccountDrawer/IconButton.tsx | 11 +- .../AccountDrawer/LocalCurrencyMenu.tsx | 6 +- .../MiniPortfolio/Activity/ActivityRow.tsx | 17 +- .../Activity/CancelOrdersDialog.tsx | 14 +- .../MiniPortfolio/Activity/Logos.tsx | 2 +- .../Activity/OffchainActivityModal.tsx | 2 +- .../CancelOrdersDialog.test.tsx.snap | 804 +- .../OffchainActivityModal.test.tsx.snap | 354 +- .../MiniPortfolio/Activity/index.tsx | 2 +- .../MiniPortfolio/Activity/parseLocal.test.ts | 46 +- .../MiniPortfolio/Activity/parseRemote.tsx | 88 +- .../MiniPortfolio/Activity/types.ts | 1 - .../MiniPortfolio/Activity/utils.test.ts | 6 +- .../MiniPortfolio/EmptyWallet.tsx | 6 +- .../MiniPortfolio/ExpandoRow.tsx | 2 +- .../MiniPortfolio/ExtensionDeeplinks.tsx | 113 - .../Limits/LimitDetailActivityRow.tsx | 2 +- .../MiniPortfolio/Limits/LimitsMenu.tsx | 2 +- .../Limits/OpenLimitOrdersButton.tsx | 2 +- .../LimitDetailActivityRow.test.tsx.snap | 46 +- .../__snapshots__/LimitsMenu.test.tsx.snap | 152 +- .../MiniPortfolio/NFTs/NFTItem.tsx | 2 +- .../MiniPortfolio/NFTs/index.tsx | 2 +- .../Pools/UniExtensionPoolsMenu.tsx | 20 - .../MiniPortfolio/Pools/hooks.ts | 2 +- .../MiniPortfolio/Pools/index.tsx | 4 +- .../Pools/useMultiChainPositions.tsx | 11 +- .../MiniPortfolio/PortfolioLogo.tsx | 2 +- .../MiniPortfolio/PortfolioRow.tsx | 2 +- .../MiniPortfolio/Tokens/index.tsx | 2 +- .../AccountDrawer/MiniPortfolio/index.tsx | 2 +- .../AccountDrawer/MiniPortfolio/shared.tsx | 2 +- .../components/AccountDrawer/SettingsMenu.tsx | 2 +- .../AccountDrawer/SettingsToggle.tsx | 2 +- .../components/AccountDrawer/SlideOutMenu.tsx | 2 +- .../src/components/AccountDrawer/Status.tsx | 28 +- .../AccountDrawer/UniwalletModal.tsx | 4 +- .../__snapshots__/index.test.tsx.snap | 1657 -- .../components/AccountDrawer/index.test.tsx | 33 - .../src/components/AccountDrawer/index.tsx | 67 +- .../src/components/AccountDrawer/shared.tsx | 2 +- .../components/AddressInputPanel/index.tsx | 2 +- .../src/components/AddressQRModal/index.tsx | 91 - .../AddressQRModal/useAvatarColorProps.tsx | 82 - apps/web/src/components/Badge/RangeBadge.tsx | 2 +- apps/web/src/components/Badge/index.tsx | 2 +- .../components/Banner/Outage/OutageBanner.tsx | 2 +- .../src/components/Banner/shared/styled.tsx | 2 +- .../src/components/BreadcrumbNav/index.tsx | 2 +- apps/web/src/components/Button/GetHelp.tsx | 2 +- apps/web/src/components/Button/index.tsx | 2 +- apps/web/src/components/Card/index.tsx | 2 +- .../web/src/components/Charts/ChartHeader.tsx | 2 +- apps/web/src/components/Charts/ChartModel.tsx | 2 +- .../src/components/Charts/LoadingState.tsx | 2 +- .../components/Charts/PriceChart/index.tsx | 2 +- .../Charts/SparklineChart/LineChart.tsx | 2 +- .../Charts/SparklineChart/index.tsx | 2 +- .../Charts/StackedLineChart/index.tsx | 2 +- .../src/components/Charts/TimeSelector.tsx | 2 +- .../components/Charts/VolumeChart/index.tsx | 2 +- apps/web/src/components/Column/index.tsx | 5 +- apps/web/src/components/Common/index.tsx | 2 +- .../src/components/ConfirmSwapModal/Head.tsx | 33 +- .../src/components/ConfirmSwapModal/Modal.tsx | 2 +- .../components/ConfirmSwapModal/Pending.tsx | 2 +- .../ConfirmSwapModal/ProgressIndicator.tsx | 2 +- .../src/components/ConfirmSwapModal/Step.tsx | 2 +- .../ConfirmSwapModal/TradeSummary.tsx | 2 +- .../__snapshots__/Head.test.tsx.snap | 284 +- .../__snapshots__/Pending.test.tsx.snap | 456 +- .../components/ConfirmSwapModal/animations.ts | 2 +- .../src/components/ConfirmSwapModal/index.tsx | 2 +- .../ConnectedAccountBlocked/index.tsx | 2 +- .../CurrencyInputPanel/FiatValue.tsx | 2 +- .../LimitPriceInputPanel/LimitPriceButton.tsx | 2 +- .../LimitPriceInputLabel.tsx | 2 +- .../LimitPriceInputPanel.tsx | 2 +- .../SwapCurrencyInputPanel.tsx | 2 +- .../components/CurrencyInputPanel/index.tsx | 2 +- apps/web/src/components/Dialog/Dialog.tsx | 15 +- .../Dialog/__snapshots__/Dialog.test.tsx.snap | 516 +- apps/web/src/components/DoubleLogo/index.tsx | 2 +- .../DropdownSelector/FilterButton.tsx | 2 +- .../src/components/DropdownSelector/index.tsx | 2 +- .../src/components/ErrorBoundary/index.tsx | 2 +- apps/web/src/components/Expand/index.tsx | 2 +- .../FeatureFlagModal/FeatureFlagModal.tsx | 30 +- .../src/components/FeeSelector/FeeOption.tsx | 2 +- apps/web/src/components/FeeSelector/index.tsx | 2 +- .../src/components/FiatOnrampModal/index.tsx | 8 +- .../src/components/HoverInlineText/index.tsx | 2 +- .../components/Icons/AlertTriangleFilled.tsx | 2 +- .../src/components/Icons/BraveBrowserLogo.tsx | 52 + apps/web/src/components/Icons/Collapse.tsx | 14 - apps/web/src/components/Icons/Error.tsx | 2 +- apps/web/src/components/Icons/Expand.tsx | 18 - .../src/components/Icons/LoadingSpinner.tsx | 2 +- apps/web/src/components/Icons/shared.tsx | 2 +- .../components/Identicon/ENSAvatarIcon.tsx | 2 +- .../src/components/Identicon/StatusIcon.tsx | 2 +- apps/web/src/components/Identicon/index.tsx | 2 +- .../InputStepCounter/InputStepCounter.tsx | 2 +- .../LiquidityChartRangeInput/Area.tsx | 2 +- .../LiquidityChartRangeInput/AxisBottom.tsx | 2 +- .../LiquidityChartRangeInput/Brush.tsx | 2 +- .../LiquidityChartRangeInput/Line.tsx | 2 +- .../LiquidityChartRangeInput/Zoom.tsx | 2 +- .../LiquidityChartRangeInput/index.tsx | 2 +- apps/web/src/components/Loader/styled.tsx | 2 +- apps/web/src/components/Logo/AssetLogo.tsx | 2 +- apps/web/src/components/Logo/NavIcon.tsx | 2 +- apps/web/src/components/Menu/index.tsx | 2 +- .../src/components/Modal/GetHelpHeader.tsx | 39 - apps/web/src/components/Modal/index.tsx | 2 +- apps/web/src/components/ModalViews/index.tsx | 2 +- apps/web/src/components/NavBar/Bag.tsx | 2 +- .../NavBar/ChainSelector/ChainSelectorRow.tsx | 2 +- .../components/NavBar/ChainSelector/index.tsx | 13 +- .../NavBar/CompanyMenu/DownloadAppCTA.tsx | 2 +- .../NavBar/CompanyMenu/MenuDropdown.tsx | 2 +- .../NavBar/CompanyMenu/MobileMenuDrawer.tsx | 2 +- .../components/NavBar/CompanyMenu/index.tsx | 2 +- .../NavBar/DownloadApp/GetTheAppButton.tsx | 2 +- .../NavBar/DownloadApp/Modal/Content.tsx | 6 +- .../NavBar/DownloadApp/Modal/GetStarted.tsx | 40 +- .../NavBar/DownloadApp/Modal/GetTheApp.tsx | 2 +- .../NavBar/DownloadApp/Modal/index.tsx | 87 +- .../web/src/components/NavBar/LEGACY/Blur.tsx | 2 +- .../web/src/components/NavBar/LEGACY/Menu.tsx | 2 +- .../components/NavBar/LEGACY/MenuContent.tsx | 2 +- .../NavBar/LEGACY/SearchBar/SearchBar.tsx | 2 +- .../LEGACY/SearchBar/SearchBarDropdown.tsx | 2 +- .../NavBar/LEGACY/SearchBar/SuggestionRow.tsx | 2 +- .../src/components/NavBar/LEGACY/index.tsx | 2 +- .../MobileBottomBar/MobileBottomBar.tsx | 4 +- .../NavBar/MobileBottomBar/TDPActionTabs.tsx | 19 +- apps/web/src/components/NavBar/NavBar.tsx | 3 +- .../NavBar/NavDropdown/NavDropdown.tsx | 2 +- .../components/NavBar/NavDropdown/shared.tsx | 2 +- apps/web/src/components/NavBar/NavIcon.tsx | 2 +- .../NavBar/PreferencesMenu/Header.tsx | 2 +- .../NavBar/PreferencesMenu/Preferences.tsx | 2 +- .../NavBar/PreferencesMenu/shared.tsx | 2 +- .../web/src/components/NavBar/ScreenSizes.tsx | 2 +- .../NavBar/SearchBar/SearchBarDropdown.tsx | 2 +- .../NavBar/SearchBar/SuggestionRow.tsx | 2 +- .../src/components/NavBar/SearchBar/index.tsx | 2 +- .../components/NavBar/Tabs/QuickKey.test.tsx | 19 - apps/web/src/components/NavBar/Tabs/Tabs.tsx | 2 +- .../components/NavBar/Tabs/TabsContent.tsx | 34 +- .../src/components/NavigationTabs/index.tsx | 2 +- .../components/NetworkAlert/NetworkAlert.tsx | 2 +- .../src/components/NumericalInput/index.tsx | 2 +- .../Polling/ChainConnectivityWarning.tsx | 2 +- apps/web/src/components/Polling/index.tsx | 2 +- .../Pools/PoolDetails/ChartSection/hooks.ts | 2 +- .../Pools/PoolDetails/ChartSection/index.tsx | 4 +- .../Pools/PoolDetails/PoolDetailsHeader.tsx | 2 +- .../Pools/PoolDetails/PoolDetailsLink.tsx | 2 +- .../PoolDetails/PoolDetailsPositionsTable.tsx | 2 +- .../Pools/PoolDetails/PoolDetailsStats.tsx | 2 +- .../PoolDetails/PoolDetailsStatsButtons.tsx | 2 +- .../Pools/PoolDetails/PoolDetailsTable.tsx | 2 +- .../PoolDetailsTransactionsTable.tsx | 2 +- .../components/Pools/PoolDetails/shared.ts | 2 +- .../components/Pools/PoolTable/PoolTable.tsx | 2 +- apps/web/src/components/Popover/index.tsx | 2 +- apps/web/src/components/Popups/ClaimPopup.tsx | 2 +- .../src/components/Popups/PopupContent.tsx | 2 +- apps/web/src/components/Popups/index.tsx | 2 +- .../web/src/components/PositionCard/Sushi.tsx | 2 +- apps/web/src/components/PositionCard/V2.tsx | 2 +- .../web/src/components/PositionCard/index.tsx | 2 +- .../web/src/components/PositionList/index.tsx | 2 +- .../src/components/PositionListItem/index.tsx | 2 +- .../src/components/PrivacyPolicy/index.tsx | 2 +- .../src/components/QuestionHelper/index.tsx | 2 +- .../RangeSelector/PresetsButtons.tsx | 2 +- .../ReceiveCryptoModal/ChooseProvider.tsx | 132 - .../ReceiveCryptoModal/ProviderOption.tsx | 66 - .../components/ReceiveCryptoModal/index.tsx | 53 - .../RouterLabel/UniswapXRouterLabel.tsx | 2 +- apps/web/src/components/RouterLabel/index.tsx | 2 +- .../RoutingDiagram/RoutingDiagram.tsx | 2 +- apps/web/src/components/Row/index.tsx | 7 +- .../components/SearchModal/CommonBases.tsx | 2 +- .../SearchModal/CurrencyList/index.tsx | 12 +- .../components/SearchModal/CurrencySearch.tsx | 2 +- .../web/src/components/SearchModal/styled.tsx | 2 +- .../src/components/Settings/Input/index.tsx | 2 +- .../Settings/MaxSlippageSettings/index.tsx | 2 +- .../components/Settings/MenuButton/index.tsx | 2 +- .../Settings/MultipleRoutingOptions.tsx | 2 +- .../RouterPreferenceSettings/index.tsx | 2 +- apps/web/src/components/Settings/index.tsx | 7 +- apps/web/src/components/Slider/index.tsx | 2 +- apps/web/src/components/Table/Cell.tsx | 2 +- apps/web/src/components/Table/ErrorBox.tsx | 2 +- apps/web/src/components/Table/Filter.tsx | 2 +- apps/web/src/components/Table/index.tsx | 2 +- apps/web/src/components/Table/styled.tsx | 2 +- apps/web/src/components/TextInput/index.tsx | 2 +- .../web/src/components/Toggle/MultiToggle.tsx | 2 +- .../src/components/Toggle/PillMultiToggle.tsx | 2 +- apps/web/src/components/Toggle/index.tsx | 2 +- .../TokenSafety/TokenSafetyIcon.tsx | 2 +- .../TokenSafety/TokenSafetyLabel.tsx | 2 +- .../TokenSafety/TokenSafetyMessage.tsx | 2 +- apps/web/src/components/TokenSafety/index.tsx | 2 +- .../components/Tokens/TokenDetails/About.tsx | 2 +- .../Tokens/TokenDetails/ActivitySection.tsx | 2 +- .../Tokens/TokenDetails/BalanceSummary.tsx | 2 +- .../ChartSection/AdvancedPriceChartToggle.tsx | 2 +- .../ChartSection/ChartTypeSelector.tsx | 2 +- .../TokenDetails/ChartSection/index.tsx | 2 +- .../components/Tokens/TokenDetails/Delta.tsx | 2 +- .../TokenDetails/InvalidTokenDetails.tsx | 2 +- .../MobileBalanceSummaryFooter.tsx | 2 +- .../Tokens/TokenDetails/Resource.tsx | 2 +- .../Tokens/TokenDetails/ShareButton.tsx | 2 +- .../Tokens/TokenDetails/Skeleton.tsx | 2 +- .../Tokens/TokenDetails/StatsSection.tsx | 2 +- .../Tokens/TokenDetails/TokenDescription.tsx | 2 +- .../TokenDetails/TokenDetailsHeader.tsx | 2 +- .../components/Tokens/TokenDetails/index.tsx | 2 +- .../components/Tokens/TokenDetails/shared.ts | 2 +- .../TokenDetails/tables/TransactionsTable.tsx | 2 +- .../Tokens/TokenTable/NetworkFilter.tsx | 2 +- .../Tokens/TokenTable/SearchBar.tsx | 2 +- .../Tokens/TokenTable/TimeSelector.tsx | 2 +- .../components/Tokens/TokenTable/index.tsx | 2 +- apps/web/src/components/Tokens/loading.tsx | 2 +- apps/web/src/components/Tooltip/index.tsx | 2 +- .../TopLevelBanners/MobileAppPromoBanner.tsx | 2 +- .../components/TopLevelBanners/UkBanner.tsx | 2 +- .../TopLevelModals/ExtensionLaunchModal.tsx | 175 - .../TopLevelModals/UkDisclaimerModal.tsx | 2 +- .../src/components/TopLevelModals/index.tsx | 9 - .../AnimatedConfirmation.tsx | 2 +- .../TransactionConfirmationModal/index.tsx | 8 +- .../UniTag/UniTagProfilePicture.tsx | 2 +- .../src/components/V2Unsupported/index.tsx | 2 +- .../WalletModal/ConnectionErrorView.tsx | 2 +- .../WalletModal/DownloadWalletOption.tsx | 69 - .../web/src/components/WalletModal/Option.tsx | 2 +- .../WalletModal/PrivacyPolicyNotice.tsx | 4 +- .../WalletModal/UniswapWalletOptions.test.tsx | 53 - .../WalletModal/UniswapWalletOptions.tsx | 42 +- .../UniswapWalletOptions.test.tsx.snap | 646 - apps/web/src/components/WalletModal/index.tsx | 61 +- .../WalletModal/useOrderedConnections.tsx | 38 - .../src/components/WalletOneLinkQR/index.tsx | 2 +- apps/web/src/components/Web3Status/index.tsx | 18 +- .../addLiquidity/OwnershipWarning.tsx | 2 +- .../components/addLiquidity/PoolWarning.tsx | 2 +- .../components/claim/AddressClaimModal.tsx | 2 +- apps/web/src/components/earn/styled.tsx | 2 +- .../src/components/swap/DetailLineItem.tsx | 2 +- .../components/swap/GasBreakdownTooltip.tsx | 2 +- .../components/swap/GasEstimateTooltip.tsx | 2 +- .../src/components/swap/LimitDisclaimer.tsx | 2 +- .../src/components/swap/PriceImpactModal.tsx | 2 +- .../components/swap/PriceImpactWarning.tsx | 2 +- apps/web/src/components/swap/SwapDetails.tsx | 2 +- .../components/swap/SwapDetailsDropdown.tsx | 2 +- apps/web/src/components/swap/SwapHeader.tsx | 6 +- apps/web/src/components/swap/SwapLineItem.tsx | 2 +- .../components/swap/SwapModalHeaderAmount.tsx | 2 +- apps/web/src/components/swap/SwapPreview.tsx | 2 +- apps/web/src/components/swap/SwapSkeleton.tsx | 2 +- apps/web/src/components/swap/TradePrice.tsx | 2 +- .../swap/UnsupportedCurrencyFooter.tsx | 2 +- apps/web/src/components/swap/styled.tsx | 2 +- .../web/src/components/vote/DelegateModal.tsx | 2 +- apps/web/src/components/vote/ExecuteModal.tsx | 2 +- .../components/vote/ProposalEmptyState.tsx | 2 +- apps/web/src/components/vote/QueueModal.tsx | 2 +- apps/web/src/components/vote/VoteModal.tsx | 2 +- apps/web/src/constants/chains.test.ts | 59 +- apps/web/src/constants/chains.ts | 29 +- apps/web/src/dev/DevFlagsBox.tsx | 2 +- .../dynamicConfig/quickRouteChains.ts | 14 +- .../data/apollo/AssetActivityProvider.tsx | 30 +- apps/web/src/graphql/data/types.test.ts | 2 +- apps/web/src/graphql/data/types.ts | 5 +- apps/web/src/graphql/data/util.tsx | 2 +- .../web/src/hooks/useAutoSlippageTolerance.ts | 5 +- apps/web/src/hooks/useColor.ts | 2 +- ...seFilterPossiblyMaliciousPositions.test.ts | 2 +- apps/web/src/hooks/useStablecoinPrice.ts | 13 +- apps/web/src/hooks/useTokenBalances.test.ts | 5 +- apps/web/src/hooks/useTokenWarningColor.ts | 2 +- apps/web/src/hooks/useTransactionDeadline.ts | 4 +- apps/web/src/hooks/useUSDPrice.ts | 2 +- apps/web/src/hooks/useUSDTokenUpdater.ts | 19 +- apps/web/src/hooks/useUniswapWalletOptions.ts | 18 - apps/web/src/i18n/locales/source/en-US.json | 38 +- apps/web/src/index.tsx | 3 - .../hooks/routing/useRoutingAPIArguments.ts | 20 +- .../hooks/useTokenList/fetchTokenList.test.ts | 10 +- .../lib/hooks/useTokenList/sorting.test.ts | 2 +- apps/web/src/lib/styled-components.ts | 18 - apps/web/src/nft/components/Box.ts | 1 - apps/web/src/nft/components/bag/Bag.tsx | 2 +- apps/web/src/nft/components/bag/BagFooter.tsx | 2 +- apps/web/src/nft/components/bag/BagHeader.tsx | 2 +- apps/web/src/nft/components/bag/BagRow.tsx | 2 +- .../src/nft/components/bag/ButtonStates.tsx | 2 +- .../src/nft/components/bag/EmptyContent.tsx | 2 +- .../src/nft/components/bag/TimedLoader.tsx | 2 +- .../src/nft/components/card/containers.tsx | 2 +- apps/web/src/nft/components/card/icons.tsx | 2 +- apps/web/src/nft/components/card/media.tsx | 2 +- .../nft/components/collection/Activity.tsx | 2 +- .../components/collection/ActivityCells.tsx | 2 +- .../collection/ActivitySwitcher.tsx | 2 +- .../components/collection/CollectionNfts.tsx | 2 +- .../collection/CollectionPageSkeleton.tsx | 2 +- .../components/collection/CollectionStats.tsx | 2 +- .../collection/MarketplaceSelect.tsx | 2 +- .../nft/components/collection/PriceRange.tsx | 2 +- .../src/nft/components/collection/Sweep.tsx | 2 +- .../nft/components/collection/TraitChip.tsx | 2 +- .../components/collection/TraitsHeader.tsx | 2 +- .../collection/TransactionCompleteModal.tsx | 2 +- .../collection/UnavailableCollectionPage.tsx | 2 +- .../src/nft/components/collection/shared.tsx | 2 +- .../SortDropdown/FilterSortDropdown.tsx | 2 +- .../nft/components/details/AssetActivity.tsx | 2 +- .../nft/components/details/AssetDetails.tsx | 2 +- .../details/AssetDetailsLoading.tsx | 2 +- .../components/details/AssetPriceDetails.tsx | 2 +- .../components/details/DetailsContainer.tsx | 2 +- .../nft/components/details/InfoContainer.tsx | 2 +- .../components/details/TraitsContainer.tsx | 2 +- .../web/src/nft/components/explore/Banner.tsx | 2 +- .../src/nft/components/explore/Carousel.tsx | 2 +- .../nft/components/explore/CarouselCard.tsx | 2 +- .../nft/components/explore/Cells/Cells.tsx | 2 +- apps/web/src/nft/components/explore/Table.tsx | 2 +- .../explore/TrendingCollections.tsx | 2 +- apps/web/src/nft/components/icons.tsx | 24 +- .../src/nft/components/layout/Checkbox.tsx | 2 +- .../nft/components/profile/list/Dropdown.tsx | 2 +- .../nft/components/profile/list/ListPage.tsx | 2 +- .../components/profile/list/ListingButton.tsx | 2 +- .../profile/list/MarketplaceRow.tsx | 7 +- .../list/Modal/BelowFloorWarningModal.tsx | 2 +- .../profile/list/Modal/ContentRow.tsx | 2 +- .../profile/list/Modal/ListModal.tsx | 2 +- .../profile/list/Modal/ListModalSection.tsx | 2 +- .../profile/list/Modal/SuccessScreen.tsx | 2 +- .../components/profile/list/NFTListRow.tsx | 2 +- .../profile/list/NFTListingsGrid.tsx | 2 +- .../profile/list/PriceTextInput.tsx | 2 +- .../profile/list/RoyaltyTooltip.tsx | 2 +- .../list/SelectMarketplacesDropdown.tsx | 2 +- .../profile/list/SetDurationModal.tsx | 2 +- .../nft/components/profile/list/shared.tsx | 2 +- .../profile/view/EmptyWalletContent.tsx | 2 +- .../components/profile/view/FilterSidebar.tsx | 2 +- .../components/profile/view/ProfilePage.tsx | 2 +- .../view/ProfilePageLoadingSkeleton.tsx | 2 +- .../src/nft/components/profile/view/icons.tsx | 2 +- apps/web/src/nft/hooks/usePriceImpact.ts | 2 +- apps/web/src/nft/pages/asset/Asset.tsx | 7 +- .../web/src/nft/pages/collection/index.css.ts | 2 +- apps/web/src/nft/pages/collection/index.tsx | 2 +- apps/web/src/nft/pages/explore/index.tsx | 2 +- apps/web/src/nft/pages/profile/index.tsx | 2 +- apps/web/src/pages/AddLiquidity/Review.tsx | 2 +- .../src/pages/AddLiquidity/blastAlerts.tsx | 2 +- apps/web/src/pages/AddLiquidity/index.tsx | 2 +- apps/web/src/pages/AddLiquidity/styled.tsx | 2 +- .../src/pages/AddLiquidityV2/PoolPriceBar.tsx | 2 +- apps/web/src/pages/AddLiquidityV2/index.tsx | 2 +- apps/web/src/pages/App/AppBody.tsx | 2 +- apps/web/src/pages/App/Header.tsx | 2 +- apps/web/src/pages/App/Layout.tsx | 2 +- .../CreateProposal/ProposalActionDetail.tsx | 2 +- .../CreateProposal/ProposalActionSelector.tsx | 2 +- .../pages/CreateProposal/ProposalEditor.tsx | 2 +- .../ProposalSubmissionModal.tsx | 2 +- apps/web/src/pages/CreateProposal/index.tsx | 2 +- .../Explore/charts/ExploreChartsSection.tsx | 2 +- apps/web/src/pages/Explore/index.tsx | 2 +- apps/web/src/pages/Landing/Fold.tsx | 2 +- apps/web/src/pages/Landing/LandingV2.tsx | 2 +- .../src/pages/Landing/components/Generics.tsx | 2 +- .../src/pages/Landing/components/StatCard.tsx | 2 +- .../Landing/components/TokenCloud/Ticker.tsx | 2 +- .../Landing/components/TokenCloud/Token.tsx | 2 +- .../Landing/components/TokenCloud/index.tsx | 2 +- .../pages/Landing/components/animations.tsx | 2 +- .../components/cards/DocumentationCard.tsx | 2 +- .../components/cards/DownloadWalletCard.tsx | 2 +- .../components/cards/LiquidityCard.tsx | 2 +- .../Landing/components/cards/PillButton.tsx | 2 +- .../components/cards/ValuePropCard.tsx | 2 +- .../Landing/components/cards/WebappCard.tsx | 2 +- .../pages/Landing/sections/DirectToDefi.tsx | 2 +- .../web/src/pages/Landing/sections/Footer.tsx | 2 +- apps/web/src/pages/Landing/sections/Hero.tsx | 2 +- .../pages/Landing/sections/NewsletterEtc.tsx | 2 +- apps/web/src/pages/Landing/sections/Stats.tsx | 2 +- .../web/src/pages/MigrateV2/MigrateV2Pair.tsx | 2 +- apps/web/src/pages/MigrateV2/index.tsx | 2 +- apps/web/src/pages/NotFound/index.tsx | 2 +- apps/web/src/pages/Pool/CTACards.tsx | 2 +- apps/web/src/pages/Pool/PositionPage.tsx | 6 +- apps/web/src/pages/Pool/index.tsx | 2 +- apps/web/src/pages/Pool/shared.tsx | 2 +- apps/web/src/pages/Pool/styled.tsx | 2 +- apps/web/src/pages/Pool/v2.tsx | 2 +- apps/web/src/pages/PoolDetails/index.tsx | 2 +- apps/web/src/pages/RemoveLiquidity/index.tsx | 2 +- apps/web/src/pages/RemoveLiquidity/styled.tsx | 2 +- apps/web/src/pages/Swap/Buy/BuyForm.tsx | 56 +- apps/web/src/pages/Swap/Buy/BuyFormButton.tsx | 14 +- .../web/src/pages/Swap/Buy/BuyFormContext.tsx | 28 +- .../pages/Swap/Buy/ChooseProviderModal.tsx | 221 +- .../web/src/pages/Swap/Buy/CountryListRow.tsx | 2 +- .../Swap/Buy/FiatOnRampCurrencyModal.tsx | 2 +- .../src/pages/Swap/Buy/PredefinedAmount.tsx | 41 +- .../pages/Swap/Buy/ProviderConnectedView.tsx | 59 +- .../pages/Swap/Buy/ProviderConnectingView.tsx | 40 + .../Swap/Buy/ProviderConnectionError.tsx | 56 +- .../web/src/pages/Swap/Buy/ProviderOption.tsx | 93 - .../PredefinedAmount.test.tsx.snap | 46 +- .../ProviderConnectedView.test.tsx.snap | 159 +- .../ProviderConnectionError.test.tsx.snap | 165 +- apps/web/src/pages/Swap/Buy/hooks.ts | 2 +- apps/web/src/pages/Swap/Buy/shared.tsx | 54 +- .../pages/Swap/Limit/LimitExpirySection.tsx | 2 +- apps/web/src/pages/Swap/Limit/LimitForm.tsx | 2 +- .../src/pages/Swap/Limit/LimitPriceError.tsx | 2 +- .../pages/Swap/Send/NewAddressSpeedBump.tsx | 2 +- .../pages/Swap/Send/SendCurrencyInputForm.tsx | 2 +- .../src/pages/Swap/Send/SendRecipientForm.tsx | 2 +- .../src/pages/Swap/Send/SendReviewModal.tsx | 22 +- .../Swap/Send/SmartContractSpeedBump.tsx | 2 +- .../NewAddressSpeedBump.test.tsx.snap | 262 +- .../SendReviewModal.test.tsx.snap | 538 +- .../SmartContractSpeedbump.test.tsx.snap | 258 +- apps/web/src/pages/Swap/SwapForm.tsx | 2 +- apps/web/src/pages/Swap/TaxTooltipBody.tsx | 2 +- apps/web/src/pages/Swap/common/shared.tsx | 2 +- apps/web/src/pages/Swap/index.tsx | 5 +- apps/web/src/pages/TokenDetails/index.tsx | 2 +- apps/web/src/pages/Vote/Landing.tsx | 2 +- apps/web/src/pages/Vote/VotePage.tsx | 2 +- apps/web/src/pages/Vote/styled.tsx | 2 +- apps/web/src/pages/paths.test.ts | 2 +- .../src/state/activity/polling/retry.test.ts | 2 +- .../activity/polling/transactions.test.ts | 8 +- apps/web/src/state/activity/updater.tsx | 2 +- apps/web/src/state/application/reducer.ts | 2 - .../src/state/fiatOnRampTransactions/hooks.ts | 16 +- .../fiatOnRampTransactions/reducer.test.ts | 12 +- .../state/fiatOnRampTransactions/reducer.ts | 4 +- .../src/state/fiatOnRampTransactions/types.ts | 14 - .../fiatOnRampTransactions/updater.test.tsx | 61 - .../state/fiatOnRampTransactions/updater.ts | 99 - apps/web/src/state/lists/reducer.test.ts | 24 +- apps/web/src/state/migrations.test.ts | 6 +- apps/web/src/state/migrations/1.test.ts | 10 +- apps/web/src/state/migrations/11.test.ts | 4 +- apps/web/src/state/migrations/12.test.ts | 2 +- apps/web/src/state/migrations/2.test.ts | 6 +- apps/web/src/state/migrations/3.test.ts | 14 +- apps/web/src/state/migrations/4.test.ts | 2 +- apps/web/src/state/migrations/5.test.ts | 10 +- apps/web/src/state/migrations/6.test.ts | 4 +- apps/web/src/state/migrations/7.test.ts | 10 +- apps/web/src/state/migrations/8.test.ts | 6 +- apps/web/src/state/migrations/9.test.ts | 2 +- apps/web/src/state/mint/v3/utils.test.ts | 12 +- .../state/routing/useRoutingAPITrade.test.ts | 8 +- apps/web/src/state/send/hooks.tsx | 6 +- apps/web/src/state/swap/hooks.test.ts | 28 +- .../src/state/transactions/reducer.test.ts | 30 +- apps/web/src/state/user/hooks.tsx | 5 +- apps/web/src/state/user/reducer.test.ts | 16 +- apps/web/src/theme/colors.ts | 8 - .../web/src/theme/components/FadePresence.tsx | 2 +- apps/web/src/theme/components/ThemeToggle.tsx | 2 +- apps/web/src/theme/components/index.tsx | 4 +- apps/web/src/theme/components/text.tsx | 2 +- apps/web/src/theme/index.tsx | 2 +- apps/web/src/theme/styles.ts | 2 +- .../tracing/SwapEventTimestampTracker.test.ts | 2 +- apps/web/src/tracing/errors.test.ts | 12 +- apps/web/src/tracing/trace.test.ts | 6 +- .../src/utils/addressesAreEquivalent.test.ts | 9 +- apps/web/src/utils/anonymizeLink.test.ts | 6 +- apps/web/src/utils/chains.tsx | 9 +- .../src/utils/computeUniCirculation.test.ts | 6 +- apps/web/src/utils/formatNumbers.test.ts | 4 +- apps/web/src/utils/formatNumbers.ts | 2 +- apps/web/src/utils/getExplorerLink.test.ts | 8 +- apps/web/src/utils/prices.test.ts | 20 +- apps/web/src/utils/prices.ts | 2 +- apps/web/src/utils/signing.test.ts | 2 +- config/jest-presets/jest/globals.js | 9 +- package.json | 4 +- .../__snapshots__/preset.test.ts.snap | 1 - packages/eslint-config/restrictedImports.js | 1 - packages/ui/package.json | 1 - .../assets/backgrounds/for-connecting-v2.svg | 1857 --- .../src/assets/icons/arrow-right-to-line.svg | 3 - .../src/components/icons/ArrowRightToLine.tsx | 16 - packages/ui/src/components/icons/exported.ts | 1 - .../ui/src/components/menu/MenuContent.tsx | 1 - .../modal/AdaptiveWebModalSheet.tsx | 83 - packages/ui/src/index.ts | 3 - packages/ui/src/theme/animations.ts | 24 - packages/ui/src/theme/color/colors.ts | 4 - packages/uniswap/package.json | 10 +- .../TokenSelectorEmptySearchList.tsx | 52 - .../TokenSelectorSearchResultsList.tsx | 102 - .../TokenSelector/TokenSelectorSendList.tsx | 128 - .../src/components/TokenSelector/types.ts | 70 - .../ViewGestureHandler/index.native.tsx | 8 - .../components/ViewGestureHandler/index.tsx | 8 - .../ViewGestureHandler/index.web.tsx | 7 - .../uniswap/src/components/modals/hooks.ts | 5 - .../src/components/modals/hooks.web.ts | 3 - packages/uniswap/src/config.ts | 9 + packages/uniswap/src/constants/addresses.ts | 7 +- packages/uniswap/src/constants/chains.ts | 77 +- packages/uniswap/src/constants/misc.ts | 2 + packages/uniswap/src/constants/tokens.ts | 65 +- packages/uniswap/src/constants/urls.ts | 2 +- .../graphql/uniswap-data-api/schema.graphql | 37 +- .../uniswap-data-api/web/activity.graphql | 57 +- .../uniswap/src/features/chains/utils.test.ts | 4 +- packages/uniswap/src/features/chains/utils.ts | 15 +- .../src/features/fiatOnRamp/FORQuoteItem.tsx | 88 +- .../fiatOnRamp/FiatOnRampCountryPicker.tsx | 3 - .../features/fiatOnRamp/SelectTokenButton.tsx | 7 +- .../uniswap/src/features/fiatOnRamp/api.ts | 17 +- .../uniswap/src/features/fiatOnRamp/types.ts | 9 +- .../fiatOnRamp/useCexTransferProviders.ts | 14 - .../uniswap/src/features/fiatOnRamp/utils.ts | 15 +- .../uniswap/src/features/gating/configs.ts | 85 +- .../src/features/gating/experiments.ts | 8 +- packages/uniswap/src/features/gating/hooks.ts | 36 +- .../src/features/language/formatter.ts | 8 - .../src/features/search/SearchResult.ts | 9 - .../src/features/telemetry/constants/trace.ts | 1 + .../features/transactions/transfer/types.ts | 4 - .../src/i18n/locales/source/en-US.json | 2 + .../src/i18n/locales/translations/es-ES.json | 77 +- .../src/i18n/locales/translations/fr-FR.json | 73 +- .../src/i18n/locales/translations/hi-IN.json | 77 +- .../src/i18n/locales/translations/id-ID.json | 75 +- .../src/i18n/locales/translations/ja-JP.json | 77 +- .../src/i18n/locales/translations/ms-MY.json | 77 +- .../src/i18n/locales/translations/nl-NL.json | 77 +- .../src/i18n/locales/translations/pt-PT.json | 77 +- .../src/i18n/locales/translations/ru-RU.json | 75 +- .../src/i18n/locales/translations/th-TH.json | 75 +- .../src/i18n/locales/translations/tr-TR.json | 77 +- .../src/i18n/locales/translations/uk-UA.json | 77 +- .../src/i18n/locales/translations/ur-PK.json | 77 +- .../src/i18n/locales/translations/vi-VN.json | 75 +- .../src/i18n/locales/translations/zh-CN.json | 77 +- .../src/i18n/locales/translations/zh-TW.json | 75 +- packages/uniswap/src/react-native-dotenv.d.ts | 3 + packages/uniswap/src/test/fixtures/index.ts | 1 - packages/uniswap/src/test/fixtures/testIDs.ts | 10 +- .../uniswap/src/test/fixtures/wallet/index.ts | 1 - packages/uniswap/src/test/render.tsx | 2 + packages/uniswap/src/test/test-utils.ts | 2 + packages/uniswap/src/test/utils/index.ts | 1 - packages/uniswap/src/utils/currency.ts | 15 - packages/uniswap/src/utils/link.native.ts | 9 - packages/uniswap/src/utils/link.ts | 9 - packages/uniswap/src/utils/link.web.ts | 8 - packages/uniswap/src/utils/linking.ts | 60 - packages/utilities/package.json | 2 +- .../utilities/src/addresses/addresses.test.ts | 24 +- .../src/device/locales.native.test.ts | 4 +- .../utilities/src/device/locales.web.test.ts | 8 +- .../utilities/src/format/localeBased.test.ts | 302 +- .../src/format/truncateToMaxDecimals.test.ts | 23 +- packages/utilities/src/format/urls.test.ts | 4 +- .../utilities/src/primitives/objects.test.ts | 10 +- .../utilities/src/primitives/string.test.ts | 7 +- packages/utilities/src/time/timing.test.ts | 2 +- packages/wallet/package.json | 5 +- .../CurrencyLogo/CurrencyLogo.test.tsx | 2 +- .../CurrencyLogo/LogoWithTxStatus.test.tsx | 7 +- .../CurrencyLogo/LogoWithTxStatus.tsx | 2 +- .../CurrencyLogo/SplitLogo.test.tsx | 6 +- .../src/components/CurrencyLogo/SplitLogo.tsx | 0 .../__snapshots__/SplitLogo.test.tsx.snap | 14 +- .../components/CurrencyLogo/index.test.tsx | 2 +- .../ErrorBoundary/ErrorBoundary.tsx | 4 +- .../src/components/QRCodeScanner/QRCode.tsx} | 101 +- .../components/QRCodeScanner/WalletQRCode.tsx | 30 +- .../custom-qr-code-generator/index.d.ts | 3 + .../custom-qr-code-generator/index.js | 0 .../custom-qr-code-generator/src/genMatrix.js | 0 .../custom-qr-code-generator/src/index.jsx | 40 +- .../src/transformMatrixIntoCirclePath.js | 0 .../QRCodeScanner/useQRColorProps.ts | 53 - .../RecipientSearch/RecipientList.tsx | 3 +- .../components/RecipientSearch/filter.test.ts | 16 +- .../components/RecipientSearch/utils.test.ts | 6 +- .../TokenSelector/TokenOptionItem.tsx | 36 +- .../TokenSelector/TokenSelector.tsx | 154 +- .../TokenSelectorEmptySearchList.tsx | 130 + .../TokenSelector/TokenSelectorList.tsx | 52 +- .../TokenSelectorSearchResultsList.tsx | 164 + .../TokenSelector/TokenSelectorSendList.tsx | 109 + .../TokenSelectorSwapInputList.tsx | 56 +- .../TokenSelectorSwapOutputList.tsx | 65 +- .../components/TokenSelector/filter.test.ts | 25 +- .../TokenSelector/flowToModalName.tsx | 2 +- .../components/TokenSelector/hooks.test.ts | 66 +- .../TokenSelector/{hooks.tsx => hooks.ts} | 216 +- .../components/accounts/AddressDisplay.tsx | 6 +- .../accounts/AnimatedUnitagDisplayName.tsx | 15 +- .../components/buttons/PasteButton.test.tsx | 6 +- .../src/components/buttons/PasteButton.tsx | 2 +- .../__snapshots__/PasteButton.test.tsx.snap | 8 +- .../src/components/input/MaxAmountButton.tsx | 2 +- .../legacy/CurrencyInputPanelLegacy.tsx | 2 +- .../src/components/modals/hooks.ts} | 0 .../src/components/network/NetworkLogos.tsx | 8 +- .../components/network/NetworkPill.test.tsx | 4 +- .../src/components/network/NetworkPill.tsx | 2 +- .../__snapshots__/NetworkPill.test.tsx.snap | 0 .../wallet/src/components/nfts/NftsList.tsx | 6 +- .../settings/AnalyticsToggleLineSwitch.tsx | 5 +- .../language/SettingsLanguageModal.native.tsx | 2 +- .../language/SettingsLanguageModal.web.tsx | 2 +- .../components/text/LearnMoreLink.test.tsx | 8 +- .../src/components/text/LearnMoreLink.tsx | 2 +- .../src/components/text/RelativeChange.tsx | 2 - .../__snapshots__/LearnMoreLink.test.tsx.snap | 0 .../RelativeChange.test.tsx.snap | 3 - packages/wallet/src/constants/tokens.ts | 32 +- .../src/contexts/WalletNavigationContext.tsx | 2 +- .../src/entities/assets.ts | 0 .../wallet/src/features/activity/hooks.ts | 2 +- .../src/features/activity/useActivityData.tsx | 6 +- .../src/features/dataApi/balances.test.ts | 133 +- .../wallet/src/features/dataApi/balances.ts | 2 +- .../src/features/dataApi/searchTokens.test.ts | 7 +- .../src/features/dataApi/searchTokens.ts | 2 +- .../features/dataApi/tokenProject.test.tsx | 5 +- .../src/features/dataApi/tokenProjects.ts | 2 +- .../src/features/dataApi/topTokens.test.ts | 5 +- .../src/features/dataApi/topTokens.ts | 2 +- .../wallet/src/features/dataApi/utils.test.ts | 24 +- .../src/features/dataApi/utils.ts | 4 +- .../wallet/src/features/favorites/slice.ts | 2 +- .../wallet/src/features/fiatOnRamp/api.ts | 321 +- .../wallet/src/features/fiatOnRamp/hooks.ts | 64 + .../wallet/src/features/fiatOnRamp/types.ts | 143 + packages/wallet/src/features/gas/hooks.ts | 2 +- .../wallet/src/features/language/formatter.ts | 7 +- .../src/features/nfts/useNftContextMenu.tsx | 5 +- .../notifications/buildReceiveNotification.ts | 2 +- .../builtReceiveNotification.test.ts | 12 +- .../components/ApproveNotification.tsx | 2 +- .../components/NotificationToast.tsx | 22 +- .../SharedNotificationToastRouter.tsx | 2 +- .../components/SwapNotification.tsx | 2 +- .../components/UnknownNotification.tsx | 2 +- .../components/WrapNotification.tsx | 2 +- ...SupportedNetworkNotification.test.tsx.snap | 1 - .../notificationWatcherSaga.test.ts | 20 +- .../notifications/notificationWatcherSaga.ts | 2 +- .../features/notifications/testingUtils.ts | 4 +- .../src/features/notifications/types.ts | 2 +- .../src/features/notifications/utils.test.ts | 18 +- .../features/onboarding/OnboardingContext.tsx | 5 +- .../src/features/portfolio/AnimatedNumber.tsx | 4 +- .../features/portfolio/HiddenTokensRow.tsx | 8 +- .../portfolio/PortfolioEmptyState.tsx | 2 +- .../features/portfolio/TokenBalanceItem.tsx | 3 - packages/wallet/src/features/portfolio/api.ts | 2 +- .../portfolio/useTokenContextMenu.tsx | 16 +- .../wallet/src/features/search/SearchBar.tsx | 2 +- .../src/features/search/SearchContext.tsx | 0 .../src/features/search/SearchResult.ts | 11 +- .../src/features/search/SearchTextInput.tsx | 22 +- .../src/features/search/searchHistorySlice.ts | 3 +- .../wallet/src/features/telemetry/hooks.ts | 7 +- .../src/features/tokens/NativeCurrency.ts | 2 +- .../src/features/tokens/TokenWarningModal.tsx | 4 +- .../wallet/src/features/tokens/safetyHooks.ts | 5 +- .../src/features/tokens/useCurrencyInfo.ts | 4 +- .../src/features/tokens/utils.ts | 0 .../InsufficientNativeTokenWarning.native.tsx | 2 +- .../InsufficientNativeTokenWarning.web.tsx | 2 +- .../useInsufficientNativeTokenWarning.tsx | 4 +- .../SummaryCards/DetailsModal/HeaderLogo.tsx | 4 +- .../NftTransactionDetails.test.tsx | 56 - .../SwapTransactionDetails.test.tsx | 71 - .../TransactionDetailsInfoRows.tsx | 9 +- .../TransactionDetailsModal.test.tsx | 52 +- .../DetailsModal/TransactionDetailsModal.tsx | 2 +- .../TransferTransactionDetails.test.tsx | 94 - .../TransferTransactionDetails.tsx | 2 +- .../NftTransactionDetails.test.tsx.snap | 128 - .../SwapTransactionDetails.test.tsx.snap | 191 - .../TransferTransactionDetails.test.tsx.snap | 86 - .../DetailsModal/useTransactionActions.tsx | 6 +- .../SummaryItems/ApproveSummaryItem.tsx | 4 +- .../SummaryItems/FiatPurchaseSummaryItem.tsx | 4 +- .../SummaryItems/NFTApproveSummaryItem.tsx | 2 - .../SummaryItems/NFTMintSummaryItem.tsx | 8 +- .../SummaryItems/NFTSummaryItem.tsx | 4 +- .../SummaryItems/NFTTradeSummaryItem.tsx | 2 - .../OnRampTransferSummaryItem.tsx | 2 +- .../SummaryItems/ReceiveSummaryItem.tsx | 2 - .../SummaryItems/SendSummaryItem.tsx | 2 - .../SummaryItems/SwapSummaryItem.tsx | 8 +- .../SummaryItems/TransactionActionsModal.tsx | 24 +- .../SummaryItems/TransactionSummaryLayout.tsx | 3 +- .../SummaryItems/TransferTokenSummaryItem.tsx | 4 +- .../SummaryItems/UnknownSummaryItem.tsx | 2 - .../SummaryItems/WCSummaryItem.tsx | 2 - .../SummaryItems/WrapSummaryItem.tsx | 4 +- .../transactions/SummaryCards/types.ts | 4 +- .../transactions/SummaryCards/utils.ts | 9 +- .../TransactionHistoryUpdater.test.tsx | 7 +- .../TransactionHistoryUpdater.tsx | 19 +- .../TransactionRequest/NetworkFeeFooter.tsx | 20 +- .../transactions/contexts/SwapFormContext.tsx | 4 +- .../transactions/contexts/SwapTxContext.tsx | 6 +- .../history/conversion/conversion.test.ts | 8 +- .../extractMoonpayTransactionDetails.ts | 130 + .../conversion/parseReceiveTransaction.ts | 2 +- .../conversion/parseSendTransaction.ts | 2 +- .../features/transactions/history/utils.ts | 2 +- .../wallet/src/features/transactions/hooks.ts | 7 +- .../hooks/useSwapWarnings.test.ts | 38 +- .../transactions/hooks/useSwapWarnings.tsx | 4 +- .../hooks/useTokenFormActionHandlers.ts | 2 +- .../hooks/useTokenSelectorActionHandlers.ts | 8 +- .../hooks/useTransactionGasWarning.tsx | 8 +- .../features/transactions/orderWatcherSaga.ts | 4 +- .../transactions/refetchGQLQueriesSaga.ts | 20 +- .../replaceTransactionSaga.test.ts | 22 +- .../transactions/sendTransactionSaga.test.ts | 25 +- .../src/features/transactions/slice.test.ts | 36 +- .../transactions/swap/CurrencyInputPanel.tsx | 3 +- .../swap/GasAndWarningRows.native.tsx | 2 +- .../swap/GasAndWarningRows.web.tsx | 2 +- .../transactions/swap/SwapDetails.tsx | 2 +- .../features/transactions/swap/SwapFlow.tsx | 2 +- .../transactions/swap/SwapFormHeader.tsx | 2 +- .../transactions/swap/SwapFormScreen.tsx | 2 +- .../transactions/swap/SwapReviewScreen.tsx | 7 +- .../transactions/swap/SwapTokenSelector.tsx | 51 +- .../swap/TransactionAmountsReview.tsx | 68 +- .../features/transactions/swap/analytics.ts | 4 +- .../swap/createSwapFormFromTxDetails.ts | 4 +- .../swap/hooks/useExactOutputWillFail.test.ts | 16 +- .../swap/hooks/useExactOutputWillFail.ts | 2 +- .../swap/hooks/useSwapPrefilledState.ts | 10 +- .../swap/modals/FeeOnTransferWarning.tsx | 2 +- .../swap/modals/NetworkFeeWarning.tsx | 2 +- .../swap/modals/QueuedOrderModal.tsx | 6 +- .../swap/modals/SlippageInfoModal.tsx | 2 +- .../swap/modals/SwapFeeWarning.tsx | 2 +- .../swap/modals/SwapProtectionModal.tsx | 2 +- .../transactions/swap/modals/UniswapXInfo.tsx | 2 +- .../swap/modals/UniswapXInfoModal.tsx | 26 - .../settings/ProtocolPreferenceScreen.tsx | 2 +- .../settings/SlippageSettingsScreen.tsx | 2 +- .../modals/settings/SwapSettingsModal.tsx | 6 +- .../transactions/swap/submitOrderSaga.ts | 2 +- .../transactions/swap/swapSaga.test.ts | 4 +- .../swap/trade/hooks/useDerivedSwapInfo.ts | 8 +- .../swap/trade/hooks/useSetTradeSlippage.ts | 30 +- .../hooks/useShowSwapNetworkNotification.ts | 4 +- .../swap/trade/hooks/useSwapCallback.ts | 7 +- .../swap/trade/hooks/useUSDCPrice.ts | 4 +- .../swap/trade/hooks/useWrapCallback.ts | 4 +- .../trade/hooks/useWrapTransactionRequest.ts | 2 +- .../swap/trade/{api => tradingApi}/client.ts | 0 .../hooks/useSwapTxAndGasInfoTradingApi.ts} | 12 +- .../hooks/useTokenApprovalInfo.ts | 4 +- .../hooks/useTradingApiTrade.ts} | 42 +- .../hooks/useTransactionRequestInfo.ts | 25 +- .../swap/trade/{api => tradingApi}/utils.ts | 8 +- .../features/transactions/swap/trade/types.ts | 4 +- .../src/features/transactions/swap/types.ts | 6 +- .../features/transactions/swap/utils.test.ts | 17 +- .../src/features/transactions/swap/utils.ts | 6 +- .../transactions/swap/wrapSaga.test.ts | 2 +- .../transactionState/transactionState.test.ts | 42 +- .../transactionState/transactionState.ts | 4 +- .../transactions/transactionState/types.ts | 2 +- .../transactionWatcherSaga.test.ts | 27 +- .../transactions/transactionWatcherSaga.ts | 44 +- .../transfer/TokenSelectorPanel.tsx | 43 +- .../transfer/TransferAmountInput.tsx | 2 +- .../transactions/transfer/TransferReview.tsx | 2 +- .../transfer/TransferTokenForm.tsx | 9 +- .../transfer/getSendPrefilledState.ts | 4 +- .../transfer/hooks/useDerivedTransferInfo.ts | 4 +- .../transfer/hooks/useTransferCallback.ts | 6 +- .../hooks/useTransferTransactionRequest.ts | 4 +- .../hooks/useTransferWarnings.test.ts | 15 +- .../transfer/hooks/useTransferWarnings.ts | 2 +- .../transfer/transferTokenSaga.test.ts | 9 +- .../transfer/transferTokenSaga.ts | 2 +- .../features/transactions/transfer/types.ts | 9 +- .../wallet/src/features/transactions/types.ts | 2 +- .../src/features/transactions/utils.test.ts | 3 +- packages/wallet/src/features/unitags/hooks.ts | 7 +- .../features/wallet/Keyring/Keyring.test.ts | 8 +- .../features/wallet/Keyring/Keyring.web.ts | 548 + .../wallet/create/createAccountsSaga.test.ts | 21 +- .../wallet/src/features/wallet/slice.test.ts | 6 +- packages/wallet/src/state/index.ts | 4 +- packages/wallet/src/state/reducer.ts | 5 +- .../fixtures/{gql/assets => }/constants.ts | 0 .../src/test/fixtures/gql/activities/index.ts | 5 +- .../src/test/fixtures/gql/activities/nfts.ts | 5 +- .../src/test/fixtures/gql/activities/swap.ts | 5 +- .../test/fixtures/gql/activities/tokens.ts | 5 +- .../wallet/src/test/fixtures/gql/amounts.ts | 5 +- .../src/test/fixtures/gql/assets/index.ts | 1 - .../src/test/fixtures/gql/assets/nfts.ts | 5 +- .../src/test/fixtures/gql/assets/tokens.ts | 5 +- .../wallet/src/test/fixtures/gql/history.ts | 5 +- packages/wallet/src/test/fixtures/gql/misc.ts | 4 +- .../wallet/src/test/fixtures/gql/portfolio.ts | 5 +- .../src/test/fixtures/gql/transactions.ts | 5 +- packages/wallet/src/test/fixtures/index.ts | 2 +- .../wallet/src/test/fixtures/lib/ethers.ts | 4 +- .../wallet/src/test/fixtures/lib/netinfo.ts | 2 +- .../src/test/fixtures/wallet/accounts.ts | 7 +- .../src/test/fixtures/wallet/balances.ts | 8 +- .../src/test/fixtures/wallet/currencies.ts | 6 +- .../wallet/src/test/fixtures/wallet/index.ts | 1 + .../src/test/fixtures/wallet/notifications.ts | 9 +- .../src/test/fixtures/wallet/recipients.ts | 4 +- .../wallet/src/test/fixtures/wallet/redux.ts | 2 +- .../fixtures/wallet/transactions/fixtures.ts | 7 +- .../fixtures/wallet/transactions/helpers.ts | 2 +- .../src/test/fixtures/wallet/walletConnect.ts | 4 +- packages/wallet/src/test/mocks/gql/mocks.ts | 2 +- packages/wallet/src/test/mocks/providers.ts | 2 +- packages/wallet/src/test/mocks/sdk.ts | 2 +- .../{uniswap => wallet}/src/test/shared.ts | 0 packages/wallet/src/test/test-utils.ts | 2 +- .../src/test/utils/factory.ts | 0 packages/wallet/src/test/utils/index.ts | 1 + packages/wallet/src/utils/balance.test.ts | 25 +- .../src/utils/clipboard.native.ts | 2 +- .../src/utils/clipboard.ts | 0 .../src/utils/clipboard.web.ts | 2 +- .../src/utils/colors.test.ts | 2 +- .../{uniswap => wallet}/src/utils/colors.tsx | 0 packages/wallet/src/utils/currency.test.ts | 6 +- packages/wallet/src/utils/currencyId.test.ts | 55 +- .../src/utils/getCurrencyAmount.test.ts | 44 +- packages/wallet/src/utils/linking.test.ts | 16 +- packages/wallet/src/utils/linking.ts | 58 +- packages/wallet/src/utils/mnemonics.test.ts | 24 +- packages/wallet/src/utils/password.test.ts | 12 +- .../src/utils/useDynamicFontSizing.test.ts | 8 +- yarn.lock | 83 +- 1376 files changed, 45856 insertions(+), 19738 deletions(-) create mode 100644 .yarn/patches/detox-npm-20.18.1-b532b310b4.patch delete mode 100644 .yarn/patches/detox-npm-20.23.0-6d61110e63.patch delete mode 100644 CODEOWNERS create mode 100644 apps/extension/.depcheckrc create mode 100644 apps/extension/.eslintignore create mode 100644 apps/extension/.eslintrc.js create mode 100644 apps/extension/.gitignore create mode 100644 apps/extension/README.md create mode 100644 apps/extension/jest-setup.js create mode 100644 apps/extension/jest.config.js create mode 100644 apps/extension/package.json create mode 100644 apps/extension/src/app/Global.css create mode 100644 apps/extension/src/app/OnboardingApp.test.tsx create mode 100644 apps/extension/src/app/OnboardingApp.tsx create mode 100644 apps/extension/src/app/SidebarApp.tsx create mode 100644 apps/extension/src/app/StatsigProvider.tsx create mode 100644 apps/extension/src/app/apollo.tsx create mode 100644 apps/extension/src/app/components/ComingSoon.tsx create mode 100644 apps/extension/src/app/components/ErrorElement.tsx create mode 100644 apps/extension/src/app/components/Input.tsx create mode 100644 apps/extension/src/app/components/MnemonicViewer.tsx create mode 100644 apps/extension/src/app/components/OptionalStrictMode.tsx create mode 100644 apps/extension/src/app/components/PasswordInput.tsx create mode 100644 apps/extension/src/app/components/Trace/TraceUserProperties.tsx create mode 100644 apps/extension/src/app/components/buttons/CopyButton.tsx create mode 100644 apps/extension/src/app/components/layout/ScreenHeader.tsx create mode 100644 apps/extension/src/app/components/loading/LoadingSpinner.tsx create mode 100644 apps/extension/src/app/components/loading/SelectWalletSkeleton.tsx create mode 100644 apps/extension/src/app/components/loading/SkeletonBox.css create mode 100644 apps/extension/src/app/components/loading/SkeletonBox.tsx create mode 100644 apps/extension/src/app/components/modal/FeedbackRequestModal.tsx create mode 100644 apps/extension/src/app/components/modal/InfoModal.tsx create mode 100644 apps/extension/src/app/components/tabs/ActivityTab.tsx create mode 100644 apps/extension/src/app/components/tabs/NftsTab.tsx create mode 100644 apps/extension/src/app/constants.ts create mode 100644 apps/extension/src/app/events/constants.ts create mode 100644 apps/extension/src/app/events/global.ts create mode 100644 apps/extension/src/app/features/accounts/AccountItem.tsx create mode 100644 apps/extension/src/app/features/accounts/AccountSwitcherScreen.test.tsx create mode 100644 apps/extension/src/app/features/accounts/AccountSwitcherScreen.tsx create mode 100644 apps/extension/src/app/features/accounts/CreateWalletModal.tsx create mode 100644 apps/extension/src/app/features/accounts/EditLabelModal.tsx create mode 100644 apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap create mode 100644 apps/extension/src/app/features/dapp/DappContext.tsx create mode 100644 apps/extension/src/app/features/dapp/actions.ts create mode 100644 apps/extension/src/app/features/dapp/changeChain.test.ts create mode 100644 apps/extension/src/app/features/dapp/changeChain.ts create mode 100644 apps/extension/src/app/features/dapp/hooks.test.ts create mode 100644 apps/extension/src/app/features/dapp/hooks.ts create mode 100644 apps/extension/src/app/features/dapp/saga.ts create mode 100644 apps/extension/src/app/features/dapp/store.ts create mode 100644 apps/extension/src/app/features/dapp/utils.test.ts create mode 100644 apps/extension/src/app/features/dapp/utils.ts create mode 100644 apps/extension/src/app/features/dappRequests/DappRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/DappRequestQueueContext.tsx create mode 100644 apps/extension/src/app/features/dappRequests/accounts.ts create mode 100644 apps/extension/src/app/features/dappRequests/dappRequestApprovalWatcherSaga.ts create mode 100644 apps/extension/src/app/features/dappRequests/getChainId.ts create mode 100644 apps/extension/src/app/features/dappRequests/permissions.ts create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/Connection/ConnectionRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/Approve/ApproveRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/EthSend.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/FallbackEthSend/FallbackEthSend.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/LP/LPRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/SwapRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/constants.ts create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/universalRouter.ts create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/utils.ts create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/NetworkFooter.test.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/NetworksFooter.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/PersonalSign/PersonalSignRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/SignTypeData/DomainContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/SignTypeData/MaybeExplorerLinkedAddress.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/SignTypeData/Permit2/Permit2RequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/SignTypeData/SignTypedDataRequestContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/WrapContent.tsx create mode 100644 apps/extension/src/app/features/dappRequests/requestContent/__snapshots__/NetworkFooter.test.tsx.snap create mode 100644 apps/extension/src/app/features/dappRequests/saga.ts create mode 100644 apps/extension/src/app/features/dappRequests/slice.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/DappRequestTypes.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/EIP712Types.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/ErrorTypes.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/EthersTypes.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/NonfungiblePositionManager.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/NonfungiblePositionManagerTypes.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/Permit2Types.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/UniversalRouterTypes.ts create mode 100644 apps/extension/src/app/features/dappRequests/types/utilityTypes.tsx create mode 100644 apps/extension/src/app/features/dappRequests/utils.ts create mode 100644 apps/extension/src/app/features/for/utils.ts create mode 100644 apps/extension/src/app/features/home/HomeScreen.tsx create mode 100644 apps/extension/src/app/features/home/PortfolioActionButtons.tsx create mode 100644 apps/extension/src/app/features/home/PortfolioHeader.tsx create mode 100644 apps/extension/src/app/features/home/SwitchNetworksModal.tsx create mode 100644 apps/extension/src/app/features/home/TokenBalanceList.tsx create mode 100644 apps/extension/src/app/features/lockScreen/Locked.tsx create mode 100644 apps/extension/src/app/features/notifications/NotificationToastWrapper.tsx create mode 100644 apps/extension/src/app/features/onboarding/Complete.tsx create mode 100644 apps/extension/src/app/features/onboarding/KeyboardKey.test.tsx create mode 100644 apps/extension/src/app/features/onboarding/KeyboardKey.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingPaneAnimatedContents.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingScreen.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingScreenFrame.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingScreenProps.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingSteps.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingStepsContext.tsx create mode 100644 apps/extension/src/app/features/onboarding/OnboardingWrapper.tsx create mode 100644 apps/extension/src/app/features/onboarding/Password.tsx create mode 100644 apps/extension/src/app/features/onboarding/PasswordImport.tsx create mode 100644 apps/extension/src/app/features/onboarding/PinReminder.tsx create mode 100644 apps/extension/src/app/features/onboarding/SyncFromPhoneButton.tsx create mode 100644 apps/extension/src/app/features/onboarding/Terms.tsx create mode 100644 apps/extension/src/app/features/onboarding/UniconWithLockIcon.tsx create mode 100644 apps/extension/src/app/features/onboarding/__snapshots__/KeyboardKey.test.tsx.snap create mode 100644 apps/extension/src/app/features/onboarding/alerts/selectors.ts create mode 100644 apps/extension/src/app/features/onboarding/alerts/slice.ts create mode 100644 apps/extension/src/app/features/onboarding/create/NameWallet.tsx create mode 100644 apps/extension/src/app/features/onboarding/create/PasswordCreate.tsx create mode 100644 apps/extension/src/app/features/onboarding/create/TestMnemonic.tsx create mode 100644 apps/extension/src/app/features/onboarding/create/ViewMnemonic.tsx create mode 100644 apps/extension/src/app/features/onboarding/import/ImportMnemonic.tsx create mode 100644 apps/extension/src/app/features/onboarding/import/SelectWallets.tsx create mode 100644 apps/extension/src/app/features/onboarding/intro/GetOnTheBetaWaitlistBanner.tsx create mode 100644 apps/extension/src/app/features/onboarding/intro/IntroScreen.tsx create mode 100644 apps/extension/src/app/features/onboarding/intro/IntroScreenBetaWaitlist.tsx create mode 100644 apps/extension/src/app/features/onboarding/intro/MainContentWrapper.tsx create mode 100644 apps/extension/src/app/features/onboarding/intro/MainIntroWrapper.tsx create mode 100644 apps/extension/src/app/features/onboarding/intro/UnsupportedBrowserScreen.tsx create mode 100644 apps/extension/src/app/features/onboarding/reset/ResetComplete.tsx create mode 100644 apps/extension/src/app/features/onboarding/scan/OTPInput.tsx create mode 100644 apps/extension/src/app/features/onboarding/scan/ScanToOnboard.tsx create mode 100644 apps/extension/src/app/features/onboarding/scan/ScantasticContextProvider.tsx create mode 100644 apps/extension/src/app/features/onboarding/scan/utils.ts create mode 100644 apps/extension/src/app/features/onboarding/utils.ts create mode 100644 apps/extension/src/app/features/popups/ConnectPopup.tsx create mode 100644 apps/extension/src/app/features/popups/selectors.ts create mode 100644 apps/extension/src/app/features/popups/slice.ts create mode 100644 apps/extension/src/app/features/receive/ReceiveScreen.test.tsx create mode 100644 apps/extension/src/app/features/receive/ReceiveScreen.tsx create mode 100644 apps/extension/src/app/features/receive/__snapshots__/ReceiveScreen.test.tsx.snap create mode 100644 apps/extension/src/app/features/settings/DevMenuScreen.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsDropdown.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsItemWithDropdown.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsPrivacyScreen.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseVerify.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseWallets.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/ViewRecoveryPhraseScreen.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsScreen.tsx create mode 100644 apps/extension/src/app/features/settings/SettingsScreenWrapper.tsx create mode 100644 apps/extension/src/app/features/settings/password/ChangePasswordForm.tsx create mode 100644 apps/extension/src/app/features/settings/password/EnterPasswordForm.tsx create mode 100644 apps/extension/src/app/features/settings/password/EnterPasswordModal.tsx create mode 100644 apps/extension/src/app/features/settings/password/SettingsChangePasswordScreen.tsx create mode 100644 apps/extension/src/app/features/swap/SwapFlowScreen.tsx create mode 100644 apps/extension/src/app/features/transfer/SendFormScreen/AmountSelector.tsx create mode 100644 apps/extension/src/app/features/transfer/SendFormScreen/GasFeeRow.tsx create mode 100644 apps/extension/src/app/features/transfer/SendFormScreen/RecipientPanel.tsx create mode 100644 apps/extension/src/app/features/transfer/SendFormScreen/ReviewButton.tsx create mode 100644 apps/extension/src/app/features/transfer/SendFormScreen/SendFormScreen.tsx create mode 100644 apps/extension/src/app/features/transfer/SendReviewScreen/SendDetails.tsx create mode 100644 apps/extension/src/app/features/transfer/SendReviewScreen/SendReviewScreen.tsx create mode 100644 apps/extension/src/app/features/transfer/TransferContext.tsx create mode 100644 apps/extension/src/app/features/transfer/TransferFlowScreen.tsx create mode 100644 apps/extension/src/app/features/warnings/StorageWarningModal.tsx create mode 100644 apps/extension/src/app/features/warnings/useCheckLowStorage.ts create mode 100644 apps/extension/src/app/hooks/useIsWalletUnlocked.ts create mode 100644 apps/extension/src/app/hooks/useOnCopyToClipboard.tsx create mode 100644 apps/extension/src/app/hooks/useOpeningKeyboardShortCut.test.ts create mode 100644 apps/extension/src/app/hooks/useOpeningKeyboardShortCut.ts create mode 100644 apps/extension/src/app/hooks/useOptimizedSearchParams.tsx create mode 100644 apps/extension/src/app/hooks/useSagaStatus.ts create mode 100644 apps/extension/src/app/navigation/HideContentsWhenSidebarBecomesInactive.tsx create mode 100644 apps/extension/src/app/navigation/SideBarNavigationProvider.tsx create mode 100644 apps/extension/src/app/navigation/constants.ts create mode 100644 apps/extension/src/app/navigation/index.tsx create mode 100644 apps/extension/src/app/navigation/state.ts create mode 100644 apps/extension/src/app/navigation/utils.ts create mode 100644 apps/extension/src/app/saga.ts create mode 100644 apps/extension/src/app/sentry.ts create mode 100644 apps/extension/src/app/utils/analytics.ts create mode 100644 apps/extension/src/app/utils/chrome.ts create mode 100644 apps/extension/src/app/utils/devtools.ts create mode 100644 apps/extension/src/app/utils/isAppleDevice.test.ts create mode 100644 apps/extension/src/app/utils/isAppleDevice.ts create mode 100644 apps/extension/src/app/utils/isOnboardedSelector.ts create mode 100644 apps/extension/src/app/utils/storage.ts create mode 100644 apps/extension/src/app/utils/whyDidYouRender.ts create mode 100644 apps/extension/src/app/version.ts create mode 100644 apps/extension/src/assets/beta-logo.png create mode 100644 apps/extension/src/assets/fonts/Basel-Book.woff create mode 100644 apps/extension/src/assets/fonts/Basel-Medium.woff create mode 100644 apps/extension/src/assets/fonts/Inter-normal.var.ttf create mode 100644 apps/extension/src/assets/graphics/extension-preview-dark.png create mode 100644 apps/extension/src/assets/graphics/extension-preview-light.png create mode 100644 apps/extension/src/assets/icon128.png create mode 100644 apps/extension/src/assets/icon16.png create mode 100644 apps/extension/src/assets/icon32.png create mode 100644 apps/extension/src/assets/icon48.png create mode 100644 apps/extension/src/assets/icon64.png create mode 100644 apps/extension/src/assets/index.ts create mode 100644 apps/extension/src/assets/lock-screen-background.png create mode 100644 apps/extension/src/assets/onboarding-background-dark.png create mode 100644 apps/extension/src/assets/onboarding-background-light.png create mode 100644 apps/extension/src/background/background.ts create mode 100644 apps/extension/src/background/backgroundDappRequests.ts create mode 100644 apps/extension/src/background/backgroundStore.ts create mode 100644 apps/extension/src/background/messagePassing/messageChannels.ts create mode 100644 apps/extension/src/background/messagePassing/messageTypes.ts create mode 100644 apps/extension/src/background/messagePassing/messageUtils.ts create mode 100644 apps/extension/src/background/messagePassing/platform.ts create mode 100644 apps/extension/src/background/messagePassing/types/ExtensionMessages.ts create mode 100644 apps/extension/src/background/messagePassing/types/requests.ts create mode 100644 apps/extension/src/background/utils/chromeSidePanelUtils.ts create mode 100644 apps/extension/src/background/utils/getCalldataInfoFromTransaction.ts create mode 100644 apps/extension/src/background/utils/loggerMiddleware.ts create mode 100644 apps/extension/src/background/utils/persistedStateUtils.ts create mode 100644 apps/extension/src/contentScript/WindowEthereumProxy.ts create mode 100644 apps/extension/src/contentScript/WindowEthereumRequestTypes.ts create mode 100644 apps/extension/src/contentScript/ethereum.ts create mode 100644 apps/extension/src/contentScript/index.tsx create mode 100644 apps/extension/src/contentScript/injected.test.ts create mode 100644 apps/extension/src/contentScript/injected.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/BaseMethodHandler.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/ExtensionEthMethodHandler.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/ProviderDirectMethodHandler.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/UniswapMethodHandler.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/emitUtils.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/requestMethods.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/types.ts create mode 100644 apps/extension/src/contentScript/methodHandlers/utils.ts create mode 100644 apps/extension/src/contentScript/types.ts create mode 100644 apps/extension/src/declarations.d.ts create mode 100644 apps/extension/src/env.d.ts create mode 100644 apps/extension/src/logo.svg create mode 100644 apps/extension/src/manifest.json create mode 100644 apps/extension/src/onboarding.html create mode 100644 apps/extension/src/onboarding/onboarding.tsx create mode 100644 apps/extension/src/sidebar.html create mode 100644 apps/extension/src/sidebar/loadSidebar.ts create mode 100644 apps/extension/src/sidebar/sidebar.tsx create mode 100644 apps/extension/src/store/PrimaryAppInstanceDebugger.tsx create mode 100644 apps/extension/src/store/PrimaryAppInstanceDebuggerLazy.tsx create mode 100644 apps/extension/src/store/constants.ts create mode 100644 apps/extension/src/store/enhancePersistReducer.ts create mode 100644 apps/extension/src/store/migrations.test.ts create mode 100644 apps/extension/src/store/migrations.ts create mode 100644 apps/extension/src/store/reduxedChromeStorageToReduxPersistMigration.ts create mode 100644 apps/extension/src/store/schema.ts create mode 100644 apps/extension/src/store/store.ts create mode 100644 apps/extension/src/store/storeSynchronization.ts create mode 100644 apps/extension/src/store/webReducer.ts create mode 100644 apps/extension/src/test/__mocks__/@react-native-masked-view/masked-view.ts create mode 100644 apps/extension/src/test/__mocks__/@shopify/react-native-skia.ts create mode 100644 apps/extension/src/test/babel.config.js create mode 100644 apps/extension/src/test/fixtures/redux.ts create mode 100644 apps/extension/src/test/jest-resolver.js create mode 100644 apps/extension/src/test/render.tsx create mode 100644 apps/extension/src/test/test-utils.ts create mode 100644 apps/extension/tsconfig.json create mode 100644 apps/extension/webpack.config.js delete mode 100644 apps/mobile/__mocks__/@react-navigation/native.js delete mode 100644 apps/mobile/e2e/Home.e2e.ts delete mode 100644 apps/mobile/e2e/usecases/home/HomeBasicInteractions.ts delete mode 100644 apps/mobile/src/app/navigation/components.tsx rename apps/mobile/src/components/{Requests => WalletConnect}/ConnectedDapps/ConnectedDappsList.tsx (93%) rename apps/mobile/src/components/{Requests => WalletConnect}/ConnectedDapps/DappConnectedNetworksModal.tsx (96%) rename apps/mobile/src/components/{Requests => WalletConnect}/ConnectedDapps/DappConnectionItem.tsx (95%) rename apps/mobile/src/components/{Requests => WalletConnect}/DappHeaderIcon.tsx (100%) rename apps/mobile/src/components/{Requests => WalletConnect}/ModalWithOverlay/ModalWithOverlay.tsx (98%) rename apps/mobile/src/components/{Requests => WalletConnect}/ModalWithOverlay/ScrollDownOverlay.tsx (100%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/ClientDetails.tsx (89%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/HeaderText.tsx (100%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/KidSuperCheckinModal.tsx (89%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/RequestDetails.tsx (94%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/UwULinkErc20SendModal.tsx (97%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/WalletConnectRequestModal.tsx (92%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/WalletConnectRequestModalContent.tsx (95%) rename apps/mobile/src/components/{Requests => WalletConnect}/RequestModal/hooks.ts (94%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/PendingConnectionModal.tsx (95%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/PendingConnectionSwitchAccountModal.tsx (93%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/PendingConnectionSwitchNetworkModal.tsx (100%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/SwitchAccountOption.tsx (100%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/WalletConnectModal.tsx (98%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/util.test.ts (97%) rename apps/mobile/src/components/{Requests => WalletConnect}/ScanSheet/util.ts (92%) rename apps/mobile/src/components/{Requests => WalletConnect}/WalletConnectModals.tsx (91%) delete mode 100644 apps/mobile/src/components/layout/SafeKeyboardScreen.tsx delete mode 100644 apps/mobile/src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext.tsx delete mode 100644 apps/mobile/src/features/CloudBackup/CloudBackupForm/ContinueButton.tsx delete mode 100644 apps/mobile/src/features/CloudBackup/CloudBackupForm/PasswordInput.tsx delete mode 100644 apps/mobile/src/features/CloudBackup/CloudBackupForm/index.ts create mode 100644 apps/mobile/src/features/CloudBackup/CloudBackupPasswordForm.tsx rename apps/mobile/src/features/deepLinking/{handleOnRampReturnLinkSaga.test.ts => handleMoonpayReturnLinkSaga.test.ts} (78%) rename apps/mobile/src/features/deepLinking/{handleOnRampReturnLinkSaga.ts => handleMoonpayReturnLinkSaga.ts} (92%) create mode 100644 apps/mobile/src/features/fiatOnRamp/FiatOnRampModal.tsx create mode 100644 apps/mobile/src/features/fiatOnRamp/aggregatorHooks.ts delete mode 100644 apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.android.mock.tsx delete mode 100644 apps/web/public/images/extension_promo/announcement_modal_desktop.png delete mode 100644 apps/web/public/images/extension_promo/announcement_modal_mobile.png delete mode 100644 apps/web/public/images/extension_promo/background_connector.png create mode 100644 apps/web/src/assets/images/extensionIllustration.jpg delete mode 100644 apps/web/src/assets/images/extensionIllustration.png create mode 100644 apps/web/src/assets/images/walletIllustration.jpg delete mode 100644 apps/web/src/assets/images/walletIllustration.png delete mode 100644 apps/web/src/components/AccountDetails/AddressDisplay.tsx delete mode 100644 apps/web/src/components/AccountDrawer/MiniPortfolio/ExtensionDeeplinks.tsx delete mode 100644 apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/UniExtensionPoolsMenu.tsx delete mode 100644 apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap delete mode 100644 apps/web/src/components/AccountDrawer/index.test.tsx delete mode 100644 apps/web/src/components/AddressQRModal/index.tsx delete mode 100644 apps/web/src/components/AddressQRModal/useAvatarColorProps.tsx create mode 100644 apps/web/src/components/Icons/BraveBrowserLogo.tsx delete mode 100644 apps/web/src/components/Icons/Collapse.tsx delete mode 100644 apps/web/src/components/Icons/Expand.tsx delete mode 100644 apps/web/src/components/Modal/GetHelpHeader.tsx delete mode 100644 apps/web/src/components/NavBar/Tabs/QuickKey.test.tsx delete mode 100644 apps/web/src/components/ReceiveCryptoModal/ChooseProvider.tsx delete mode 100644 apps/web/src/components/ReceiveCryptoModal/ProviderOption.tsx delete mode 100644 apps/web/src/components/ReceiveCryptoModal/index.tsx delete mode 100644 apps/web/src/components/TopLevelModals/ExtensionLaunchModal.tsx delete mode 100644 apps/web/src/components/WalletModal/DownloadWalletOption.tsx delete mode 100644 apps/web/src/components/WalletModal/UniswapWalletOptions.test.tsx delete mode 100644 apps/web/src/components/WalletModal/__snapshots__/UniswapWalletOptions.test.tsx.snap delete mode 100644 apps/web/src/lib/styled-components.ts create mode 100644 apps/web/src/pages/Swap/Buy/ProviderConnectingView.tsx delete mode 100644 apps/web/src/pages/Swap/Buy/ProviderOption.tsx delete mode 100644 apps/web/src/state/fiatOnRampTransactions/updater.test.tsx delete mode 100644 apps/web/src/state/fiatOnRampTransactions/updater.ts delete mode 100644 packages/ui/src/assets/backgrounds/for-connecting-v2.svg delete mode 100644 packages/ui/src/assets/icons/arrow-right-to-line.svg delete mode 100644 packages/ui/src/components/icons/ArrowRightToLine.tsx delete mode 100644 packages/ui/src/components/modal/AdaptiveWebModalSheet.tsx delete mode 100644 packages/uniswap/src/components/TokenSelector/TokenSelectorEmptySearchList.tsx delete mode 100644 packages/uniswap/src/components/TokenSelector/TokenSelectorSearchResultsList.tsx delete mode 100644 packages/uniswap/src/components/TokenSelector/TokenSelectorSendList.tsx delete mode 100644 packages/uniswap/src/components/ViewGestureHandler/index.native.tsx delete mode 100644 packages/uniswap/src/components/ViewGestureHandler/index.tsx delete mode 100644 packages/uniswap/src/components/ViewGestureHandler/index.web.tsx delete mode 100644 packages/uniswap/src/components/modals/hooks.ts delete mode 100644 packages/uniswap/src/components/modals/hooks.web.ts delete mode 100644 packages/uniswap/src/features/fiatOnRamp/useCexTransferProviders.ts delete mode 100644 packages/uniswap/src/features/language/formatter.ts delete mode 100644 packages/uniswap/src/features/search/SearchResult.ts delete mode 100644 packages/uniswap/src/features/transactions/transfer/types.ts delete mode 100644 packages/uniswap/src/test/fixtures/wallet/index.ts delete mode 100644 packages/uniswap/src/test/utils/index.ts delete mode 100644 packages/uniswap/src/utils/link.native.ts delete mode 100644 packages/uniswap/src/utils/link.ts delete mode 100644 packages/uniswap/src/utils/link.web.ts delete mode 100644 packages/uniswap/src/utils/linking.ts rename packages/{uniswap => wallet}/src/components/CurrencyLogo/SplitLogo.test.tsx (94%) rename packages/{uniswap => wallet}/src/components/CurrencyLogo/SplitLogo.tsx (100%) rename packages/{uniswap => wallet}/src/components/CurrencyLogo/__snapshots__/SplitLogo.test.tsx.snap (92%) rename packages/{ui/src/components/QRCode/index.tsx => wallet/src/components/QRCodeScanner/QRCode.tsx} (54%) rename packages/{ui/src/components/QRCode => wallet/src/components/QRCodeScanner}/custom-qr-code-generator/index.d.ts (88%) rename packages/{ui/src/components/QRCode => wallet/src/components/QRCodeScanner}/custom-qr-code-generator/index.js (100%) rename packages/{ui/src/components/QRCode => wallet/src/components/QRCodeScanner}/custom-qr-code-generator/src/genMatrix.js (100%) rename packages/{ui/src/components/QRCode => wallet/src/components/QRCodeScanner}/custom-qr-code-generator/src/index.jsx (74%) rename packages/{ui/src/components/QRCode => wallet/src/components/QRCodeScanner}/custom-qr-code-generator/src/transformMatrixIntoCirclePath.js (100%) delete mode 100644 packages/wallet/src/components/QRCodeScanner/useQRColorProps.ts rename packages/{uniswap => wallet}/src/components/TokenSelector/TokenOptionItem.tsx (80%) rename packages/{uniswap => wallet}/src/components/TokenSelector/TokenSelector.tsx (53%) create mode 100644 packages/wallet/src/components/TokenSelector/TokenSelectorEmptySearchList.tsx rename packages/{uniswap => wallet}/src/components/TokenSelector/TokenSelectorList.tsx (73%) create mode 100644 packages/wallet/src/components/TokenSelector/TokenSelectorSearchResultsList.tsx create mode 100644 packages/wallet/src/components/TokenSelector/TokenSelectorSendList.tsx rename packages/{uniswap => wallet}/src/components/TokenSelector/TokenSelectorSwapInputList.tsx (57%) rename packages/{uniswap => wallet}/src/components/TokenSelector/TokenSelectorSwapOutputList.tsx (60%) rename packages/wallet/src/components/TokenSelector/{hooks.tsx => hooks.ts} (60%) rename packages/{uniswap => wallet}/src/components/buttons/PasteButton.test.tsx (65%) rename packages/{uniswap => wallet}/src/components/buttons/PasteButton.tsx (96%) rename packages/{uniswap => wallet}/src/components/buttons/__snapshots__/PasteButton.test.tsx.snap (97%) rename packages/{uniswap/src/components/modals/hooks.native.ts => wallet/src/components/modals/hooks.ts} (100%) rename packages/{uniswap => wallet}/src/components/network/NetworkLogos.tsx (82%) rename packages/{uniswap => wallet}/src/components/network/NetworkPill.test.tsx (80%) rename packages/{uniswap => wallet}/src/components/network/NetworkPill.tsx (95%) rename packages/{uniswap => wallet}/src/components/network/__snapshots__/NetworkPill.test.tsx.snap (100%) rename packages/{uniswap => wallet}/src/components/text/LearnMoreLink.test.tsx (79%) rename packages/{uniswap => wallet}/src/components/text/LearnMoreLink.tsx (92%) rename packages/{uniswap => wallet}/src/components/text/__snapshots__/LearnMoreLink.test.tsx.snap (100%) rename packages/{uniswap => wallet}/src/entities/assets.ts (100%) rename packages/{uniswap => wallet}/src/features/dataApi/searchTokens.ts (94%) rename packages/{uniswap => wallet}/src/features/dataApi/tokenProjects.ts (96%) rename packages/{uniswap => wallet}/src/features/dataApi/topTokens.ts (93%) rename packages/{uniswap => wallet}/src/features/dataApi/utils.ts (97%) create mode 100644 packages/wallet/src/features/fiatOnRamp/hooks.ts rename packages/{uniswap => wallet}/src/features/search/SearchContext.tsx (100%) rename packages/{uniswap => wallet}/src/features/search/SearchTextInput.tsx (95%) rename packages/{uniswap => wallet}/src/features/tokens/NativeCurrency.ts (96%) rename packages/{uniswap => wallet}/src/features/tokens/TokenWarningModal.tsx (96%) rename packages/{uniswap => wallet}/src/features/tokens/utils.ts (100%) delete mode 100644 packages/wallet/src/features/transactions/SummaryCards/DetailsModal/NftTransactionDetails.test.tsx delete mode 100644 packages/wallet/src/features/transactions/SummaryCards/DetailsModal/SwapTransactionDetails.test.tsx delete mode 100644 packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransferTransactionDetails.test.tsx delete mode 100644 packages/wallet/src/features/transactions/SummaryCards/DetailsModal/__snapshots__/NftTransactionDetails.test.tsx.snap delete mode 100644 packages/wallet/src/features/transactions/SummaryCards/DetailsModal/__snapshots__/SwapTransactionDetails.test.tsx.snap delete mode 100644 packages/wallet/src/features/transactions/SummaryCards/DetailsModal/__snapshots__/TransferTransactionDetails.test.tsx.snap create mode 100644 packages/wallet/src/features/transactions/history/conversion/extractMoonpayTransactionDetails.ts delete mode 100644 packages/wallet/src/features/transactions/swap/modals/UniswapXInfoModal.tsx rename packages/wallet/src/features/transactions/swap/trade/{api => tradingApi}/client.ts (100%) rename packages/wallet/src/features/transactions/swap/trade/{api/hooks/useSwapTxAndGasInfo.ts => tradingApi/hooks/useSwapTxAndGasInfoTradingApi.ts} (92%) rename packages/wallet/src/features/transactions/swap/trade/{api => tradingApi}/hooks/useTokenApprovalInfo.ts (96%) rename packages/wallet/src/features/transactions/swap/trade/{api/hooks/useTrade.ts => tradingApi/hooks/useTradingApiTrade.ts} (84%) rename packages/wallet/src/features/transactions/swap/trade/{api => tradingApi}/hooks/useTransactionRequestInfo.ts (87%) rename packages/wallet/src/features/transactions/swap/trade/{api => tradingApi}/utils.ts (97%) rename packages/{uniswap => wallet}/src/features/transactions/transactionState/types.ts (91%) create mode 100644 packages/wallet/src/features/wallet/Keyring/Keyring.web.ts rename packages/wallet/src/test/fixtures/{gql/assets => }/constants.ts (100%) rename packages/{uniswap => wallet}/src/test/fixtures/wallet/currencies.ts (94%) rename packages/{uniswap => wallet}/src/test/shared.ts (100%) rename packages/{uniswap => wallet}/src/test/utils/factory.ts (100%) rename packages/{uniswap => wallet}/src/utils/clipboard.native.ts (97%) rename packages/{uniswap => wallet}/src/utils/clipboard.ts (100%) rename packages/{uniswap => wallet}/src/utils/clipboard.web.ts (94%) rename packages/{uniswap => wallet}/src/utils/colors.test.ts (98%) rename packages/{uniswap => wallet}/src/utils/colors.tsx (100%) diff --git a/.prettierignore b/.prettierignore index fe5f5f88cd3..84141d7a1cb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -14,6 +14,7 @@ __mocks__ *.inc *.json *.md +*.test.ts *.yml babel.config.js build diff --git a/.yarn/patches/detox-npm-20.18.1-b532b310b4.patch b/.yarn/patches/detox-npm-20.18.1-b532b310b4.patch new file mode 100644 index 00000000000..540b89a9292 --- /dev/null +++ b/.yarn/patches/detox-npm-20.18.1-b532b310b4.patch @@ -0,0 +1,14 @@ +diff --git a/android/rninfo.gradle b/android/rninfo.gradle +index c09d2af1d219a4134dc0301e9270aef568730d2b..f1b887cf5dcf56c2f66fff3e6f1b674d48704dac 100644 +--- a/android/rninfo.gradle ++++ b/android/rninfo.gradle +@@ -3,7 +3,8 @@ import groovy.json.JsonSlurper + def getRNVersion = { workingDir -> + println("RNInfo: workingDir=$workingDir") + def jsonSlurper = new JsonSlurper() +- def packageFile = "$workingDir/../node_modules/react-native/package.json" ++ // Fixes patch to node_modules in monorepo project ++ def packageFile = "$workingDir/../../../node_modules/react-native/package.json" + println("RNInfo: reading $packageFile") + Map packageJSON = jsonSlurper.parse(new File(packageFile)) + String rnVersion = packageJSON.get('version') diff --git a/.yarn/patches/detox-npm-20.23.0-6d61110e63.patch b/.yarn/patches/detox-npm-20.23.0-6d61110e63.patch deleted file mode 100644 index 509f663b9d1533d6c70a556131848e6b68cc571f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2202 zcmd6oQES{d5XTFB^Jln+Ar!h{*R~|fmVI1G;6k}8G%X3-)4?H2Bgc&+8QZ(%x;K7Xj(<70@)g20@@@o_YN`p@T2AOH6A?TKH;Cz}!d z4yO)$XkBX&7^Cr2>NiH(|-FWX2d;{>4|Bmt(IbL{@;mq~peR;aIy1C(TQ1ZGK zhEU>(Ww}ya z)Z%zYg6`Qo4oEC2jjXC`rl~G?#_O_Xl|&(OsY}I>mnzRHdjIFPQe#ZhJ$bi;aEsOd zA&9}Y*0@bk-jTic|E88IQfVd))r?k>(~N6HGD5Lpf=D!ZQHqRcRws#}by*5!a_wiK zm?;WlOooMjQ3$SiDG1k6UDxVRQnxK)|Lpw&yZ;P2%{fbJ9Tz;aCZ8u z$MfTk&C#>1{lVedJh%;qZO-vtLr2;S{?6vHFI-fk{W&v;NpzOspm{;d-PQjDe0h;u3 m7;zS$25hq(hliUhSUZEkZf|yD75pXs(r3?C>q~!r82t { + const key = method + const originalMethod = console[key] + console[key] = ((...args) => { + if (messages.some((message) => args.some((arg) => typeof arg === 'string' && arg.startsWith(message)))) { + return + } + originalMethod(...args) + }) +}) + +globalThis.matchMedia = + globalThis.matchMedia || + ((query) => { + const reducedMotion = query.match(/prefers-reduced-motion: ([a-zA-Z0-9-]+)/) + + return { + // Needed for reanimated to disable reduced motion warning in tests + matches: reducedMotion ? reducedMotion[1] === 'no-preference' : false, + addListener: jest.fn(), + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + } + }) + +require('react-native-reanimated').setUpTests() + +global.chrome = chrome + +jest.mock('src/app/navigation/utils', () => ({ + useExtensionNavigation: () => ({ + navigateTo: jest.fn(), + navigateBack: jest.fn(), + }) +})) + +jest.mock('wallet/src/features/focus/useIsFocused', () => { + return jest.fn().mockReturnValue(true) +}) + +const mockAppearanceSetting = AppearanceSettingType.System +jest.mock('wallet/src/features/appearance/hooks', () => { + return { + useCurrentAppearanceSetting: () => mockAppearanceSetting, + } +}) +jest.mock('wallet/src/features/appearance/hooks', () => { + return { + useSelectedColorScheme: () => 'light', + } +}) diff --git a/apps/extension/jest.config.js b/apps/extension/jest.config.js new file mode 100644 index 00000000000..a571f8b3f3f --- /dev/null +++ b/apps/extension/jest.config.js @@ -0,0 +1,58 @@ +const preset = require('../../config/jest-presets/jest/jest-preset') + +const fileExtensions = [ + 'eot', + 'gif', + 'jpeg', + 'jpg', + 'otf', + 'png', + 'ttf', + 'woff', + 'woff2', + 'mp4', +] + +module.exports = { + ...preset, + preset: 'jest-expo', + transform: { + '^.+\\.(t|j)sx?$': [ + 'babel-jest', + { + configFile: './src/test/babel.config.js', + } + ], + }, + moduleNameMapper: { + ...preset.moduleNameMapper, + '^react-native$': 'react-native-web', + }, + moduleFileExtensions: [ + 'web.js', + 'web.jsx', + 'web.ts', + 'web.tsx', + ...fileExtensions, + ...preset.moduleFileExtensions, + ], + resolver: "/src/test/jest-resolver.js", + displayName: 'Extension Wallet', + collectCoverageFrom: [ + 'src/app/**/*.{js,ts,tsx}', + 'src/background/**/*.{js,ts,tsx}', + 'src/contentScript/**/*.{js,ts,tsx}', + '!src/**/*.stories.**', + '!**/node_modules/**', + ], + coverageThreshold: { + global: { + lines: 0, + }, + }, + setupFiles: [ + '../../config/jest-presets/jest/setup.js', + './jest-setup.js', + '../../node_modules/react-native-gesture-handler/jestSetup.js', + ], +} diff --git a/apps/extension/package.json b/apps/extension/package.json new file mode 100644 index 00000000000..c4dccfd68f8 --- /dev/null +++ b/apps/extension/package.json @@ -0,0 +1,99 @@ +{ + "name": "@uniswap/extension", + "version": "0.0.0", + "browserslist": "last 2 chrome versions", + "dependencies": { + "@apollo/client": "3.10.4", + "@ethersproject/providers": "5.7.2", + "@metamask/rpc-errors": "6.2.1", + "@reduxjs/toolkit": "1.9.3", + "@sentry/browser": "7.80.0", + "@sentry/react": "7.80.0", + "@sentry/webpack-plugin": "2.10.3", + "@svgr/webpack": "8.0.1", + "@tamagui/core": "1.95.1", + "@types/uuid": "9.0.1", + "@uniswap/analytics-events": "2.32.0", + "@uniswap/universal-router-sdk": "2.2.0", + "@uniswap/v3-sdk": "3.13.0", + "dotenv-webpack": "8.0.1", + "ethers": "5.7.2", + "eventemitter3": "5.0.1", + "i18next": "23.10.0", + "node-polyfill-webpack-plugin": "2.0.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-i18next": "14.1.0", + "react-native": "0.73.6", + "react-native-gesture-handler": "2.15.0", + "react-native-reanimated": "npm:react-native-reanimated@3.8.1", + "react-native-svg": "15.1.0", + "react-native-web": "0.19.10", + "react-qr-code": "2.0.12", + "react-redux": "8.0.5", + "react-router-dom": "6.10.0", + "redux": "4.2.1", + "redux-logger": "3.0.6", + "redux-persist": "6.0.0", + "redux-persist-webextension-storage": "1.0.2", + "redux-saga": "1.2.2", + "symbol-observable": "4.0.0", + "typed-redux-saga": "1.5.0", + "ua-parser-js": "1.0.37", + "ui": "workspace:^", + "uniswap": "workspace:^", + "utilities": "workspace:^", + "uuid": "9.0.0", + "wallet": "workspace:^", + "zod": "3.22.4" + }, + "devDependencies": { + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", + "@testing-library/dom": "^7.11.0", + "@testing-library/react": "13.4.0", + "@types/chrome": "0.0.254", + "@types/jest": "29.5.0", + "@types/react": "^18.0.15", + "@types/react-dom": "^18.0.6", + "@types/redux-logger": "3.0.9", + "@types/redux-persist-webextension-storage": "1.0.3", + "@types/ua-parser-js": "0.7.31", + "@uniswap/eslint-config": "workspace:^", + "@welldone-software/why-did-you-render": "8.0.1", + "clean-webpack-plugin": "^4.0.0", + "copy-webpack-plugin": "^11.0.0", + "esbuild-loader": "^3.0.1", + "eslint": "8.44.0", + "jest": "29.7.0", + "jest-chrome": "0.8.0", + "jest-environment-jsdom": "29.5.0", + "jest-extended": "4.0.1", + "mini-css-extract-plugin": "^2.7.6", + "react-refresh": "^0.14.0", + "serve": "^14.2.0", + "statsig-js": "4.41.0", + "swc-loader": "^0.2.3", + "tamagui-loader": "1.95.1", + "typescript": "5.3.3", + "webpack": "5.90.0", + "webpack-cli": "^5.0.1", + "webpack-dev-server": "^4.13.1" + }, + "private": true, + "scripts": { + "build:production": "webpack --node-env=production --env BUILD_ENV=prod BUILD_NUM=${BUILD_NUM:-0}", + "check:deps:usage": "depcheck", + "env:local:download": "bash ../../scripts/downloadEnvLocal.sh web-local-envs ../../.env", + "env:local:upload": "bash ../../scripts/uploadEnvLocal.sh web-local-envs ../../.env", + "format": "../../scripts/prettier.sh", + "lint": "eslint . --ext ts,tsx --max-warnings=0", + "lint:fix": "eslint . --ext ts,tsx --fix", + "start": "webpack serve --config webpack.config.js", + "start:absolute": "yarn start:absolute:mac", + "start:absolute:mac": "yarn start --output-path /Users/Shared/stretch", + "start:absolute:windows": "yarn start --output-path C:/ProgramData/stretch", + "test": "jest", + "snapshots": "jest -u", + "typecheck": "tsc -b" + } +} diff --git a/apps/extension/src/app/Global.css b/apps/extension/src/app/Global.css new file mode 100644 index 00000000000..85648681006 --- /dev/null +++ b/apps/extension/src/app/Global.css @@ -0,0 +1,31 @@ +body, +html { + height: 100%; + max-width: 100vw; +} + +#root { + height: 100vh; + display: flex; + + scrollbar-width: 'thin'; +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + +@keyframes shine { + from { + -webkit-mask-position: 150%; + } + to { + -webkit-mask-position: -50%; + } +} diff --git a/apps/extension/src/app/OnboardingApp.test.tsx b/apps/extension/src/app/OnboardingApp.test.tsx new file mode 100644 index 00000000000..c016ae7b8f8 --- /dev/null +++ b/apps/extension/src/app/OnboardingApp.test.tsx @@ -0,0 +1,10 @@ +import { render } from '@testing-library/react' +import OnboardingApp from 'src/app/OnboardingApp' +import { initializeReduxStore } from 'src/store/store' + +describe('OnboardingApp', () => { + it('renders without error', async () => { + await initializeReduxStore() + render() + }) +}) diff --git a/apps/extension/src/app/OnboardingApp.tsx b/apps/extension/src/app/OnboardingApp.tsx new file mode 100644 index 00000000000..7656388958d --- /dev/null +++ b/apps/extension/src/app/OnboardingApp.tsx @@ -0,0 +1,216 @@ +import '@tamagui/core/reset.css' +import 'src/app/Global.css' +import 'symbol-observable' // Needed by `reduxed-chrome-storage` as polyfill, order matters + +import { useEffect } from 'react' +import { I18nextProvider } from 'react-i18next' +import { RouteObject, RouterProvider } from 'react-router-dom' +import { PersistGate } from 'redux-persist/integration/react' +import { ExtensionStatsigProvider } from 'src/app/StatsigProvider' +import { GraphqlProvider } from 'src/app/apollo' +import { ErrorElement } from 'src/app/components/ErrorElement' +import { Complete } from 'src/app/features/onboarding/Complete' +import { + CreateOnboardingSteps, + ImportOnboardingSteps, + OnboardingStepsProvider, + ResetSteps, + ScanOnboardingSteps, +} from 'src/app/features/onboarding/OnboardingSteps' +import { OnboardingWrapper } from 'src/app/features/onboarding/OnboardingWrapper' +import { PasswordImport } from 'src/app/features/onboarding/PasswordImport' +import { NameWallet } from 'src/app/features/onboarding/create/NameWallet' +import { PasswordCreate } from 'src/app/features/onboarding/create/PasswordCreate' +import { TestMnemonic } from 'src/app/features/onboarding/create/TestMnemonic' +import { ViewMnemonic } from 'src/app/features/onboarding/create/ViewMnemonic' +import { ImportMnemonic } from 'src/app/features/onboarding/import/ImportMnemonic' +import { SelectWallets } from 'src/app/features/onboarding/import/SelectWallets' +import { IntroScreen } from 'src/app/features/onboarding/intro/IntroScreen' +import { IntroScreenBetaWaitlist } from 'src/app/features/onboarding/intro/IntroScreenBetaWaitlist' +import { UnsupportedBrowserScreen } from 'src/app/features/onboarding/intro/UnsupportedBrowserScreen' +import { ResetComplete } from 'src/app/features/onboarding/reset/ResetComplete' +import { OTPInput } from 'src/app/features/onboarding/scan/OTPInput' +import { ScanToOnboard } from 'src/app/features/onboarding/scan/ScanToOnboard' +import { ScantasticContextProvider } from 'src/app/features/onboarding/scan/ScantasticContextProvider' +import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate, setRouter, setRouterState } from 'src/app/navigation/state' +import { sentryCreateHashRouter } from 'src/app/sentry' +import { initExtensionAnalytics } from 'src/app/utils/analytics' +import { checksIfSupportsSidePanel } from 'src/app/utils/chrome' +import { PrimaryAppInstanceDebuggerLazy } from 'src/store/PrimaryAppInstanceDebuggerLazy' +import { getReduxPersistor, getReduxStore } from 'src/store/store' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context' +import i18n from 'uniswap/src/i18n/i18n' +import { ExtensionOnboardingFlow } from 'uniswap/src/types/screens/extension' +import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary' +import { LocalizationContextProvider } from 'wallet/src/features/language/LocalizationContext' +import { SharedProvider } from 'wallet/src/provider' + +const supportsSidePanel = checksIfSupportsSidePanel() + +const unsupportedRoute: RouteObject = { + path: '', + element: , +} + +const allRoutes = [ + { + path: '', + element: , + }, + { + path: OnboardingRoutes.UnsupportedBrowser, + element: , + }, + { + path: OnboardingRoutes.Create, + element: ( + + , + [CreateOnboardingSteps.ViewMnemonic]: , + [CreateOnboardingSteps.TestMnemonic]: , + [CreateOnboardingSteps.Naming]: , + [CreateOnboardingSteps.Complete]: , + }} + /> + + ), + }, + { + path: OnboardingRoutes.Import, + element: ( + + , + [ImportOnboardingSteps.Password]: , + [ImportOnboardingSteps.Select]: , + [ImportOnboardingSteps.Complete]: , + }} + /> + + ), + }, + { + path: OnboardingRoutes.Scan, + element: , + }, + { + path: OnboardingRoutes.ResetScan, + element: , + }, + { + path: OnboardingRoutes.Reset, + element: ( + + , + [ResetSteps.Password]: , + [ResetSteps.Select]: , + [ResetSteps.Complete]: , + }} + /> + + ), + }, +] + +const router = sentryCreateHashRouter([ + { + path: `/${TopLevelRoutes.Onboarding}`, + element: , + errorElement: , + children: !supportsSidePanel ? [unsupportedRoute] : allRoutes, + }, +]) + +function ScantasticFlow({ isResetting = false }: { isResetting?: boolean }): JSX.Element { + return ( + , + [ScanOnboardingSteps.OTP]: , + [ScanOnboardingSteps.Password]: , + [ScanOnboardingSteps.Select]: , + [ScanOnboardingSteps.Complete]: isResetting ? ( + + ) : ( + + ), + }} + /> + ) +} + +function IntroScreenBehindFeatureFlag(): JSX.Element { + const scantasticOnboardingOnly = useFeatureFlag(FeatureFlags.ScantasticOnboardingOnly) + return scantasticOnboardingOnly ? : +} + +function MaybeRedirectToScantastic({ children }: { children: JSX.Element }): JSX.Element | null { + const scantasticOnboardingOnly = useFeatureFlag(FeatureFlags.ScantasticOnboardingOnly) + if (scantasticOnboardingOnly) { + navigate(`/${TopLevelRoutes.Onboarding}`, { replace: true }) + return null + } + return children +} + +/** + * Note: we are using a pattern here to avoid circular dependencies, because + * this is the root of the app and it imports all sub-pages, we need to push the + * router/router state to a different file so it can be imported by those pages + */ +router.subscribe((state) => { + setRouterState(state) +}) + +setRouter(router) + +export default function OnboardingApp(): JSX.Element { + // initialize analytics on load + useEffect(() => { + async function initAndLogLoad(): Promise { + await initExtensionAnalytics() + sendAnalyticsEvent(ExtensionEventName.OnboardingLoad) + } + initAndLogLoad().catch(() => undefined) + }, []) + + return ( + + + + + + + + + + + + + + + + + + + + + ) +} diff --git a/apps/extension/src/app/SidebarApp.tsx b/apps/extension/src/app/SidebarApp.tsx new file mode 100644 index 00000000000..18891423472 --- /dev/null +++ b/apps/extension/src/app/SidebarApp.tsx @@ -0,0 +1,263 @@ +import '@tamagui/core/reset.css' +import 'src/app/Global.css' + +import { useEffect, useRef, useState } from 'react' +import { I18nextProvider } from 'react-i18next' +import { RouterProvider, ScrollRestoration } from 'react-router-dom' +import { PersistGate } from 'redux-persist/integration/react' +import { ExtensionStatsigProvider } from 'src/app/StatsigProvider' +import { GraphqlProvider } from 'src/app/apollo' +import { ErrorElement } from 'src/app/components/ErrorElement' +import { TraceUserProperties } from 'src/app/components/Trace/TraceUserProperties' +import { AccountSwitcherScreen } from 'src/app/features/accounts/AccountSwitcherScreen' +import { DappContextProvider } from 'src/app/features/dapp/DappContext' +import { addRequest } from 'src/app/features/dappRequests/saga' +import { ReceiveScreen } from 'src/app/features/receive/ReceiveScreen' +import { DevMenuScreen } from 'src/app/features/settings/DevMenuScreen' +import { SettingsPrivacyScreen } from 'src/app/features/settings/SettingsPrivacyScreen' +import { RemoveRecoveryPhraseVerify } from 'src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseVerify' +import { RemoveRecoveryPhraseWallets } from 'src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseWallets' +import { SettingsViewRecoveryPhraseScreen } from 'src/app/features/settings/SettingsRecoveryPhraseScreen/ViewRecoveryPhraseScreen' +import { SettingsScreen } from 'src/app/features/settings/SettingsScreen' +import { SettingsScreenWrapper } from 'src/app/features/settings/SettingsScreenWrapper' +import { SettingsChangePasswordScreen } from 'src/app/features/settings/password/SettingsChangePasswordScreen' +import { SwapFlowScreen } from 'src/app/features/swap/SwapFlowScreen' +import { TransferFlowScreen } from 'src/app/features/transfer/TransferFlowScreen' +import { useIsWalletUnlocked } from 'src/app/hooks/useIsWalletUnlocked' +import { MainContent, WebNavigation } from 'src/app/navigation' +import { AppRoutes, RemoveRecoveryPhraseRoutes, SettingsRoutes } from 'src/app/navigation/constants' +import { setRouter, setRouterState } from 'src/app/navigation/state' +import { SentryAppNameTag, initializeSentry, sentryCreateHashRouter } from 'src/app/sentry' +import { initExtensionAnalytics } from 'src/app/utils/analytics' +import { getLocalUserId } from 'src/app/utils/storage' +import { + DappBackgroundPortChannel, + createBackgroundToSidePanelMessagePort, +} from 'src/background/messagePassing/messageChannels' +import { BackgroundToSidePanelRequestType } from 'src/background/messagePassing/types/requests' +import { PrimaryAppInstanceDebuggerLazy } from 'src/store/PrimaryAppInstanceDebuggerLazy' +import { getReduxPersistor, getReduxStore, useAppDispatch } from 'src/store/store' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context' +import i18n from 'uniswap/src/i18n/i18n' +import { isDevEnv } from 'utilities/src/environment' +import { logger } from 'utilities/src/logger/logger' +import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { useInterval } from 'utilities/src/time/timing' +import { ErrorBoundary } from 'wallet/src/components/ErrorBoundary/ErrorBoundary' +import { LocalizationContextProvider } from 'wallet/src/features/language/LocalizationContext' +import { syncAppWithDeviceLanguage } from 'wallet/src/features/language/slice' +import { SharedProvider } from 'wallet/src/provider' + +getLocalUserId() + .then((userId) => { + initializeSentry(SentryAppNameTag.Sidebar, userId) + }) + .catch((error) => { + logger.error(error, { + tags: { file: 'SidebarApp.tsx', function: 'getLocalUserId' }, + }) + }) + +const router = sentryCreateHashRouter([ + { + path: '', + element: , + errorElement: , + children: [ + { + path: '', + element: , + }, + { + path: AppRoutes.AccountSwitcher, + element: , + }, + { + path: AppRoutes.Settings, + element: , + children: [ + { + path: '', + element: , + }, + { + path: SettingsRoutes.ChangePassword, + element: , + }, + isDevEnv() + ? { + path: SettingsRoutes.DevMenu, + element: , + } + : {}, + { + path: SettingsRoutes.ViewRecoveryPhrase, + element: , + }, + { + path: SettingsRoutes.RemoveRecoveryPhrase, + children: [ + { + path: RemoveRecoveryPhraseRoutes.Wallets, + element: , + }, + { + path: RemoveRecoveryPhraseRoutes.Verify, + element: , + }, + ], + }, + { + path: SettingsRoutes.Privacy, + element: , + }, + ], + }, + { + path: AppRoutes.Transfer, + element: , + }, + { + path: AppRoutes.Swap, + element: , + }, + { + path: AppRoutes.Receive, + element: , + }, + ], + }, +]) + +const PORT_PING_INTERVAL = 5 * ONE_SECOND_MS +function useDappRequestPortListener(): void { + const dispatch = useAppDispatch() + const [currentPortChannel, setCurrentPortChannel] = useState() + const [windowId, setWindowId] = useState() + + useEffect(() => { + chrome.windows.getCurrent((window) => { + setWindowId(window.id?.toString()) + }) + + return () => currentPortChannel?.port.disconnect() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + useEffect(() => { + if (windowId === undefined || currentPortChannel) { + return + } + + try { + const port = chrome.runtime.connect({ name: windowId.toString() }) + const portChannel = createBackgroundToSidePanelMessagePort(port) + portChannel.addMessageListener(BackgroundToSidePanelRequestType.DappRequestReceived, (message) => { + const { dappRequest, senderTabInfo, isSidebarClosed } = message + dispatch( + addRequest({ + dappRequest, + senderTabInfo, + isSidebarClosed, + }), + ) + }) + + port.onDisconnect.addListener(() => { + sendAnalyticsEvent(ExtensionEventName.SidebarClosed) + setCurrentPortChannel(undefined) + }) + setCurrentPortChannel(portChannel) + } catch (error) { + logger.error(error, { + tags: { file: 'SidebarApp.tsx', function: 'useDappRequestPortListener' }, + }) + } + }, [dispatch, windowId, currentPortChannel]) + + useInterval(() => { + try { + // Need to send general ping message, no type-safety needed + currentPortChannel?.port.postMessage('statusPing') + } catch (error) { + currentPortChannel?.port.disconnect() + setCurrentPortChannel(undefined) + + logger.error(error, { + tags: { file: 'SidebarApp.tsx', function: 'useDappRequestPortListener' }, + }) + } + }, PORT_PING_INTERVAL) +} + +function SidebarWrapper(): JSX.Element { + const dispatch = useAppDispatch() + useDappRequestPortListener() + + useEffect(() => { + dispatch(syncAppWithDeviceLanguage()) + }, [dispatch]) + + return ( + <> + + + + ) +} + +/** + * Note: we are using a pattern here to avoid circular dependencies, because + * this is the root of the app and it imports all sub-pages, we need to push the + * router/router state to a different file so it can be imported by those pages + */ +router.subscribe((state) => { + setRouterState(state) +}) + +setRouter(router) + +export default function SidebarApp(): JSX.Element { + // initialize analytics on load + useEffect(() => { + initExtensionAnalytics().catch(() => undefined) + }, []) + + const isLoggedIn = useIsWalletUnlocked() + const hasSentLoginEvent = useRef(false) + useEffect(() => { + if (isLoggedIn !== null && !hasSentLoginEvent.current) { + hasSentLoginEvent.current = true + sendAnalyticsEvent(ExtensionEventName.SidebarLoad, { locked: !isLoggedIn }) + } + }, [isLoggedIn]) + + return ( + + + + + + + + + + + + + + + + + + + + + + + + ) +} diff --git a/apps/extension/src/app/StatsigProvider.tsx b/apps/extension/src/app/StatsigProvider.tsx new file mode 100644 index 00000000000..c0102bdb782 --- /dev/null +++ b/apps/extension/src/app/StatsigProvider.tsx @@ -0,0 +1,53 @@ +import { getLocalUserId } from 'src/app/utils/storage' +import { getStatsigEnvironmentTier } from 'src/app/version' +import Statsig from 'statsig-js' // Use JS package for browser +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { DUMMY_STATSIG_SDK_KEY, StatsigCustomAppValue } from 'uniswap/src/features/gating/constants' +import { StatsigOptions, StatsigProvider, StatsigUser } from 'uniswap/src/features/gating/sdk/statsig' +import { useAsyncData } from 'utilities/src/react/hooks' + +async function getStatsigUser(): Promise { + return { + userID: await getLocalUserId(), + appVersion: process.env.VERSION, + custom: { + app: StatsigCustomAppValue.Extension, + }, + } +} + +export function ExtensionStatsigProvider({ children }: { children: React.ReactNode }): JSX.Element { + const { data: user } = useAsyncData(getStatsigUser) + + const nonNullUser: StatsigUser = user ?? { + userID: undefined, + custom: { + app: StatsigCustomAppValue.Extension, + }, + appVersion: process.env.VERSION, + } + + const options: StatsigOptions = { + environment: { + tier: getStatsigEnvironmentTier(), + }, + api: uniswapUrls.statsigProxyUrl, + disableAutoMetricsLogging: true, + disableErrorLogging: true, + } + + return ( + + {children} + + ) +} + +export async function initStatSigForBrowserScripts(): Promise { + await Statsig.initialize(DUMMY_STATSIG_SDK_KEY, await getStatsigUser(), { + api: uniswapUrls.statsigProxyUrl, + environment: { + tier: getStatsigEnvironmentTier(), + }, + }) +} diff --git a/apps/extension/src/app/apollo.tsx b/apps/extension/src/app/apollo.tsx new file mode 100644 index 00000000000..450dbf02cb3 --- /dev/null +++ b/apps/extension/src/app/apollo.tsx @@ -0,0 +1,20 @@ +import { ApolloProvider } from '@apollo/client' +import { PropsWithChildren } from 'react' +import { localStorage } from 'redux-persist-webextension-storage' +// eslint-disable-next-line no-restricted-imports +import { usePersistedApolloClient } from 'wallet/src/data/apollo/usePersistedApolloClient' + +// Extension local storage has 10 MB limit, so we want to be very careful to leave enough space for the redux store + any other data that we might want to store in local storage +const MAX_CACHE_SIZE_IN_BYTES = 1024 * 1024 * 5 // 5 MB + +export function GraphqlProvider({ children }: PropsWithChildren): JSX.Element { + const apolloClient = usePersistedApolloClient({ + storageWrapper: localStorage, + maxCacheSizeInBytes: MAX_CACHE_SIZE_IN_BYTES, + }) + + if (!apolloClient) { + return <> + } + return {children} +} diff --git a/apps/extension/src/app/components/ComingSoon.tsx b/apps/extension/src/app/components/ComingSoon.tsx new file mode 100644 index 00000000000..682ce848e62 --- /dev/null +++ b/apps/extension/src/app/components/ComingSoon.tsx @@ -0,0 +1,33 @@ +import { PropsWithChildren } from 'react' +import { useTranslation } from 'react-i18next' +import { Flex, Text, Tooltip } from 'ui/src' + +type Side = 'top' | 'right' | 'bottom' | 'left' +type Alignment = 'start' | 'end' +type AlignedPlacement = `${Side}-${Alignment}` + +export function ComingSoon({ + children, + placement = 'bottom-end', +}: PropsWithChildren & { + placement?: Side | AlignedPlacement +}): JSX.Element { + const { t } = useTranslation() + + return ( + + + + {children} + + + + + + {t('settings.setting.beta.tooltip')} + + + + + ) +} diff --git a/apps/extension/src/app/components/ErrorElement.tsx b/apps/extension/src/app/components/ErrorElement.tsx new file mode 100644 index 00000000000..6875a070794 --- /dev/null +++ b/apps/extension/src/app/components/ErrorElement.tsx @@ -0,0 +1,13 @@ +import { PropsWithChildren } from 'react' +import { useRouteError } from 'react-router-dom' + +export function ErrorElement({ children }: PropsWithChildren): JSX.Element { + const error = useRouteError() + + if (!error) { + return <>{children} + } + + // Need to throw here to propagate to the ErrorBoundary + throw error +} diff --git a/apps/extension/src/app/components/Input.tsx b/apps/extension/src/app/components/Input.tsx new file mode 100644 index 00000000000..d7953e88d59 --- /dev/null +++ b/apps/extension/src/app/components/Input.tsx @@ -0,0 +1,38 @@ +import { forwardRef } from 'react' +import { Input as TamaguiInput, InputProps as TamaguiInputProps } from 'ui/src' +import { inputStyles } from 'ui/src/components/input/utils' +import { fonts } from 'ui/src/theme/fonts' + +export type InputProps = { + large?: boolean + hideInput?: boolean + centered?: boolean +} & TamaguiInputProps + +export type Input = TamaguiInput + +export const Input = forwardRef(function _Input( + { large = false, hideInput = false, centered = false, ...rest }: InputProps, + ref, +): JSX.Element { + return ( + + ) +}) diff --git a/apps/extension/src/app/components/MnemonicViewer.tsx b/apps/extension/src/app/components/MnemonicViewer.tsx new file mode 100644 index 00000000000..73ef4ddf95d --- /dev/null +++ b/apps/extension/src/app/components/MnemonicViewer.tsx @@ -0,0 +1,91 @@ +import { useCallback, useEffect, useMemo } from 'react' +import { CopyButton } from 'src/app/components/buttons/CopyButton' +import { Flex, Text, useMedia } from 'ui/src' +import { logger } from 'utilities/src/logger/logger' + +const ROW_SIZE = 3 + +export const MnemonicViewer = ({ mnemonic }: { mnemonic?: string[] }): JSX.Element => { + const media = useMedia() + const px = media.xxs ? '$spacing12' : '$spacing32' + + const onCopyPress = useCallback(async () => { + if (!mnemonic) { + return + } + const mnemonicString = mnemonic.join(' ') + try { + if (mnemonicString) { + await navigator.clipboard.writeText(mnemonicString) + } + } catch (error) { + logger.error(error, { + tags: { file: 'MnemonicViewer.tsx', function: 'onCopyPress' }, + }) + } + }, [mnemonic]) + + useEffect(() => { + return () => { + navigator.clipboard.writeText('').catch((error) => { + logger.error(error, { + tags: { file: 'MnemonicViewer.tsx', function: 'MnemonicViewer#useEffect' }, + }) + }) + } + }, []) + + const rows = useMemo(() => { + if (!mnemonic) { + return null + } + const elements = [] + for (let i = 0; i < mnemonic.length; i += ROW_SIZE) { + elements.push() + } + return elements + }, [mnemonic]) + + return ( + + {rows} + + + + + ) +} + +function SeedPhraseRow({ words, startIndex }: { words: string[]; startIndex: number }): JSX.Element { + return ( + + {words.map((word, index) => ( + + ))} + + ) +} + +function SeedPhraseWord({ index, word }: { index: number; word: string }): JSX.Element { + const media = useMedia() + const fontVariant = 'body3' + const gap = media.xxs ? '$spacing4' : '$spacing8' + return ( + + + {index} + + {word} + + ) +} diff --git a/apps/extension/src/app/components/OptionalStrictMode.tsx b/apps/extension/src/app/components/OptionalStrictMode.tsx new file mode 100644 index 00000000000..75de22e68ca --- /dev/null +++ b/apps/extension/src/app/components/OptionalStrictMode.tsx @@ -0,0 +1,8 @@ +import { StrictMode } from 'react' + +// TODO(EXT-1229): We had to remove `React.StrictMode` because it's not +// currently supported by Reanimated Web. We should consider re-enabling +// once Reanimated fixes this. +export function OptionalStrictMode(props: { children: React.ReactNode }): JSX.Element { + return process.env.ENABLE_STRICT_MODE ? {props.children} : <>{props.children} +} diff --git a/apps/extension/src/app/components/PasswordInput.tsx b/apps/extension/src/app/components/PasswordInput.tsx new file mode 100644 index 00000000000..7ba406b366a --- /dev/null +++ b/apps/extension/src/app/components/PasswordInput.tsx @@ -0,0 +1,66 @@ +import { forwardRef } from 'react' +import { TextInput } from 'react-native' +import { Input, InputProps } from 'src/app/components/Input' +import { Button, Flex, FlexProps, IconProps, Text } from 'ui/src' +import { Eye, EyeOff } from 'ui/src/components/icons' +import { PasswordStrength, getPasswordStrengthTextAndColor } from 'wallet/src/utils/password' + +export const PADDING_STRENGTH_INDICATOR = 76 + +const iconProps: IconProps = { + color: '$neutral3', + size: '$icon.20', +} +const hoverStyle: FlexProps = { + backgroundColor: 'transparent', +} + +interface PasswordInputProps extends InputProps { + passwordStrength?: PasswordStrength + hideInput: boolean + onToggleHideInput?: (hideInput: boolean) => void +} + +export const PasswordInput = forwardRef(function PasswordInput( + { passwordStrength, hideInput, onToggleHideInput, value, ...inputProps }, + ref, +): JSX.Element { + return ( + + + + {passwordStrength !== undefined ? ( + + ) : ( + onToggleHideInput && ( + + ) + )} + + ) +}) + +function StrengthIndicator({ strength }: { strength: PasswordStrength }): JSX.Element | null { + if (strength === PasswordStrength.NONE) { + return null + } + + const { text, color } = getPasswordStrengthTextAndColor(strength) + + return ( + + + {text} + + + ) +} diff --git a/apps/extension/src/app/components/Trace/TraceUserProperties.tsx b/apps/extension/src/app/components/Trace/TraceUserProperties.tsx new file mode 100644 index 00000000000..0d66f9f6f7f --- /dev/null +++ b/apps/extension/src/app/components/Trace/TraceUserProperties.tsx @@ -0,0 +1,72 @@ +import { useEffect } from 'react' +import { useColorScheme } from 'react-native' +import { ExtensionUserPropertyName, setUserProperty } from 'uniswap/src/features/telemetry/user' +// eslint-disable-next-line no-restricted-imports +import { analytics } from 'utilities/src/telemetry/analytics/analytics' +import { useAppFiatCurrencyInfo } from 'wallet/src/features/fiatCurrency/hooks' +import { useGatingUserPropertyUsernames } from 'wallet/src/features/gating/userPropertyHooks' +import { useCurrentLanguage } from 'wallet/src/features/language/hooks' +import { + useActiveAccount, + useHideSmallBalancesSetting, + useHideSpamTokensSetting, + useSignerAccounts, + useViewOnlyAccounts, +} from 'wallet/src/features/wallet/hooks' + +/** Component that tracks UserProperties during the lifetime of the app */ +export function TraceUserProperties(): null { + const colorScheme = useColorScheme() + const viewOnlyAccounts = useViewOnlyAccounts() + const activeAccount = useActiveAccount() + const signerAccounts = useSignerAccounts() + const hideSmallBalances = useHideSmallBalancesSetting() + const hideSpamTokens = useHideSpamTokensSetting() + const currentLanguage = useCurrentLanguage() + const appFiatCurrencyInfo = useAppFiatCurrencyInfo() + + useGatingUserPropertyUsernames() + + useEffect(() => { + setUserProperty(ExtensionUserPropertyName.AppVersion, chrome.runtime.getManifest().version) + return () => { + analytics.flushEvents() + } + }, []) + + useEffect(() => { + setUserProperty(ExtensionUserPropertyName.DarkMode, colorScheme === 'dark') + }, [colorScheme]) + + useEffect(() => { + setUserProperty(ExtensionUserPropertyName.WalletSignerCount, signerAccounts.length) + setUserProperty( + ExtensionUserPropertyName.WalletSignerAccounts, + signerAccounts.map((account) => account.address), + ) + }, [signerAccounts]) + + useEffect(() => { + setUserProperty(ExtensionUserPropertyName.WalletViewOnlyCount, viewOnlyAccounts.length) + }, [viewOnlyAccounts]) + + useEffect(() => { + if (!activeAccount) { + return + } + setUserProperty(ExtensionUserPropertyName.ActiveWalletAddress, activeAccount.address) + setUserProperty(ExtensionUserPropertyName.ActiveWalletType, activeAccount.type) + setUserProperty(ExtensionUserPropertyName.IsHideSmallBalancesEnabled, hideSmallBalances) + setUserProperty(ExtensionUserPropertyName.IsHideSpamTokensEnabled, hideSpamTokens) + }, [activeAccount, hideSmallBalances, hideSpamTokens]) + + useEffect(() => { + setUserProperty(ExtensionUserPropertyName.Language, currentLanguage) + }, [currentLanguage]) + + useEffect(() => { + setUserProperty(ExtensionUserPropertyName.Currency, appFiatCurrencyInfo.code) + }, [appFiatCurrencyInfo]) + + return null +} diff --git a/apps/extension/src/app/components/buttons/CopyButton.tsx b/apps/extension/src/app/components/buttons/CopyButton.tsx new file mode 100644 index 00000000000..ac94f03c820 --- /dev/null +++ b/apps/extension/src/app/components/buttons/CopyButton.tsx @@ -0,0 +1,75 @@ +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { AnimatePresence, Flex, Text, TouchableArea } from 'ui/src' +import { Check, CopySheets } from 'ui/src/components/icons' +import { iconSizes, zIndices } from 'ui/src/theme' + +export function CopyButton({ onCopyPress }: { onCopyPress: () => Promise }): JSX.Element { + const { t } = useTranslation() + + const [valueCopied, setValueCopied] = useState(false) + + const onPress = async (): Promise => { + await onCopyPress() + setValueCopied(true) + } + + return ( + + + + + {/* note there's various x/y adjustments here due to visual imbalance of icons/text */} + + {valueCopied ? ( + // check icon is a bit smaller and to the right + + ) : ( + + )} + + {valueCopied ? t('common.button.copied') : t('common.button.copy')} + + + + + + + ) +} diff --git a/apps/extension/src/app/components/layout/ScreenHeader.tsx b/apps/extension/src/app/components/layout/ScreenHeader.tsx new file mode 100644 index 00000000000..980a327454e --- /dev/null +++ b/apps/extension/src/app/components/layout/ScreenHeader.tsx @@ -0,0 +1,34 @@ +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { Flex, GeneratedIcon, IconProps, Text, TouchableArea } from 'ui/src' +import { BackArrow } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' + +export function ScreenHeader({ + onBackClick, + title, + rightColumn, + Icon = BackArrow, +}: { + title?: JSX.Element | string + onBackClick?: () => void + rightColumn?: JSX.Element + Icon?: GeneratedIcon | ((props: IconProps) => JSX.Element) +}): JSX.Element { + const { navigateBack } = useExtensionNavigation() + + return ( + + + + + + {/* When there's no right column, we adjust the margin to match the icon width. This is so that the title is centered on the screen. */} + + {/* // Render empty string if no title to account for Text element added padding for consistent size*/} + {title ?? ' '} + + + {rightColumn && {rightColumn}} + + ) +} diff --git a/apps/extension/src/app/components/loading/LoadingSpinner.tsx b/apps/extension/src/app/components/loading/LoadingSpinner.tsx new file mode 100644 index 00000000000..ebf93d8c501 --- /dev/null +++ b/apps/extension/src/app/components/loading/LoadingSpinner.tsx @@ -0,0 +1,28 @@ +import { Flex } from 'ui/src' +import { LoadingSpinnerInner, LoadingSpinnerOuter } from 'ui/src/components/icons' + +const SPINNER_HEIGHT = 80 + +export function LoadingSpinner(): JSX.Element { + return ( + <> + + + + + + + + + + ) +} + +const SPIN_SPEED_MS = 1000 diff --git a/apps/extension/src/app/components/loading/SelectWalletSkeleton.tsx b/apps/extension/src/app/components/loading/SelectWalletSkeleton.tsx new file mode 100644 index 00000000000..1a4cbcb8e55 --- /dev/null +++ b/apps/extension/src/app/components/loading/SelectWalletSkeleton.tsx @@ -0,0 +1,43 @@ +import { SkeletonBox } from 'src/app/components/loading/SkeletonBox' +import { Flex } from 'ui/src' +import { WALLET_PREVIEW_CARD_HEIGHT } from 'wallet/src/components/WalletPreviewCard/WalletPreviewCard' + +export function SelectWalletsSkeleton({ repeat = 3 }: { repeat?: number }): JSX.Element { + return ( + + {new Array(repeat).fill(null).map((_, i, { length }) => ( + + ))} + + ) +} + +function WalletSkeleton({ opacity }: { opacity: number }): JSX.Element { + return ( + + + + + + + + + + + ) +} diff --git a/apps/extension/src/app/components/loading/SkeletonBox.css b/apps/extension/src/app/components/loading/SkeletonBox.css new file mode 100644 index 00000000000..aebf9b3e3e0 --- /dev/null +++ b/apps/extension/src/app/components/loading/SkeletonBox.css @@ -0,0 +1,40 @@ +.skeleton-box { + display: inline-block; + height: 1em; + position: relative; + overflow: hidden; +} + +.skeleton-box::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + transform: translateX(-100%); + background-image: linear-gradient( + -75deg, + rgba(240, 240, 240, 0) 0, + rgba(240, 240, 240, 0.2) 20%, + rgba(240, 240, 240, 0.5) 60%, + rgba(240, 240, 240, 0) + ); + animation: skeleton-box-shimmer 1s linear infinite; + content: ''; +} + +.t_dark .skeleton-box::after { + background-image: linear-gradient( + -75deg, + rgba(30, 30, 30, 0) 0, + rgba(30, 30, 30, 0.2) 20%, + rgba(30, 30, 30, 0.5) 60%, + rgba(30, 30, 30, 0) + ); +} + +@keyframes skeleton-box-shimmer { + 100% { + transform: translateX(100%); + } +} diff --git a/apps/extension/src/app/components/loading/SkeletonBox.tsx b/apps/extension/src/app/components/loading/SkeletonBox.tsx new file mode 100644 index 00000000000..07291bb34ef --- /dev/null +++ b/apps/extension/src/app/components/loading/SkeletonBox.tsx @@ -0,0 +1,16 @@ +import 'src/app/components/loading/SkeletonBox.css' + +/** + * Unlike the `ui/src/Skeleton`, this `SkeletonBox` animation does not run in the main thread, so it won't be choppy if the main thread is busy. + */ +export function SkeletonBox({ + width = '100%', + height, + borderRadius = '5px', +}: { + width?: number | string + height: number | string + borderRadius?: string +}): JSX.Element { + return
+} diff --git a/apps/extension/src/app/components/modal/FeedbackRequestModal.tsx b/apps/extension/src/app/components/modal/FeedbackRequestModal.tsx new file mode 100644 index 00000000000..967b34fceb0 --- /dev/null +++ b/apps/extension/src/app/components/modal/FeedbackRequestModal.tsx @@ -0,0 +1,62 @@ +import { t } from 'i18next' +import { Button, Flex, Text, useSporeColors } from 'ui/src' +import { MessageStar } from 'ui/src/components/icons' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { selectExtensionBetaFeedbackState } from 'wallet/src/features/behaviorHistory/selectors' +import { ExtensionBetaFeedbackState, setExtensionBetaFeedbackState } from 'wallet/src/features/behaviorHistory/slice' +import { useAppDispatch, useAppSelector } from 'wallet/src/state' + +export function FeedbackRequestModal(): JSX.Element { + const dispatch = useAppDispatch() + const colors = useSporeColors() + + const onDismiss = (): void => { + dispatch(setExtensionBetaFeedbackState(ExtensionBetaFeedbackState.Shown)) + } + + const openFeedbackUrl = (): void => { + // eslint-disable-next-line security/detect-non-literal-fs-filename + window.open(uniswapUrls.extensionFeedbackFormUrl, '_blank') + onDismiss() + } + + const isOpen = useAppSelector(selectExtensionBetaFeedbackState) === ExtensionBetaFeedbackState.ReadyToShow + + return ( + + + + + + + + {t('extension.feedback.title')} + + + {t('extension.feedback.description')} + + + + + + + + + ) +} diff --git a/apps/extension/src/app/components/modal/InfoModal.tsx b/apps/extension/src/app/components/modal/InfoModal.tsx new file mode 100644 index 00000000000..e254a9e8a53 --- /dev/null +++ b/apps/extension/src/app/components/modal/InfoModal.tsx @@ -0,0 +1,82 @@ +import { ReactNode } from 'react' +import { Anchor, Button, Flex, Text, TouchableArea, useSporeColors } from 'ui/src' +import { X } from 'ui/src/components/icons' +import { zIndices } from 'ui/src/theme' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { ModalNameType } from 'uniswap/src/features/telemetry/constants' + +export interface BottomModalProps { + name: ModalNameType + isOpen: boolean + showCloseButton?: boolean + onDismiss?: () => void + icon: ReactNode + title: string + description: string + buttonText: string + buttonTheme?: 'primary' | 'secondary' | 'tertiary' + onButtonPress?: () => void + linkText?: string + linkUrl?: string +} + +export function InfoModal({ + name, + isOpen, + showCloseButton, + onDismiss, + icon, + title, + description, + buttonText, + buttonTheme, + onButtonPress, + linkText, + linkUrl, +}: React.PropsWithChildren): JSX.Element { + const colors = useSporeColors() + + return ( + + {showCloseButton && ( + + + + )} + + {icon} + + + {title} + + + {description} + + + + {linkText && linkUrl && ( + + + {linkText} + + + )} + + + ) +} diff --git a/apps/extension/src/app/components/tabs/ActivityTab.tsx b/apps/extension/src/app/components/tabs/ActivityTab.tsx new file mode 100644 index 00000000000..e79552959a3 --- /dev/null +++ b/apps/extension/src/app/components/tabs/ActivityTab.tsx @@ -0,0 +1,23 @@ +import { memo } from 'react' +import { ScrollView } from 'ui/src' +import { useActivityData } from 'wallet/src/features/activity/useActivityData' + +export const ActivityTab = memo(function _ActivityTab({ address }: { address: Address }): JSX.Element { + const { maybeLoaderComponent, maybeEmptyComponent, renderActivityItem, sectionData } = useActivityData({ + owner: address, + }) + + if (maybeLoaderComponent) { + return maybeLoaderComponent + } + + if (maybeEmptyComponent) { + return maybeEmptyComponent + } + + return ( + + {(sectionData ?? []).map((item) => renderActivityItem({ item }))} + + ) +}) diff --git a/apps/extension/src/app/components/tabs/NftsTab.tsx b/apps/extension/src/app/components/tabs/NftsTab.tsx new file mode 100644 index 00000000000..4ef7b375af4 --- /dev/null +++ b/apps/extension/src/app/components/tabs/NftsTab.tsx @@ -0,0 +1,100 @@ +import { SharedEventName } from '@uniswap/analytics-events' +import { memo, useCallback } from 'react' +import { ContextMenu, Flex } from 'ui/src' +import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' +import { ElementName, SectionName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { UniverseChainId } from 'uniswap/src/types/chains' +import { NftsList } from 'wallet/src/components/nfts/NftsList' +import { selectNftsVisibility } from 'wallet/src/features/favorites/selectors' +import { NFTViewer } from 'wallet/src/features/images/NFTViewer' +import { ESTIMATED_NFT_LIST_ITEM_SIZE } from 'wallet/src/features/nfts/constants' +import { NFTItem } from 'wallet/src/features/nfts/types' +import { useNFTContextMenu } from 'wallet/src/features/nfts/useNftContextMenu' +import { getIsNftHidden } from 'wallet/src/features/nfts/utils' +import { useAppSelector } from 'wallet/src/state' + +export const NftsTab = memo(function _NftsTab({ owner }: { owner: Address }): JSX.Element { + const renderNFTItem = useCallback( + (item: NFTItem) => { + const onPress = (): void => { + sendAnalyticsEvent(SharedEventName.ELEMENT_CLICKED, { + element: ElementName.NftItem, + section: SectionName.HomeNFTsTab, + }) + } + + return + }, + [owner], + ) + + return ( + + ) +}) + +function NftView({ owner, item, onPress }: { owner: Address; item: NFTItem; onPress: () => void }): JSX.Element { + const { menuActions } = useNFTContextMenu({ + contractAddress: item.contractAddress, + tokenId: item.tokenId, + owner, + isSpam: item.isSpam, + chainId: fromGraphQLChain(item.chain) ?? UniverseChainId.Mainnet, + }) + + const menuOptions = menuActions.map((action) => ({ + label: action.title, + onPress: action.onPress, + Icon: action.Icon, + destructive: action.destructive, + })) + + const nftVisibility = useAppSelector(selectNftsVisibility) + const hidden = getIsNftHidden({ + contractAddress: item.contractAddress, + tokenId: item.tokenId, + isSpam: item.isSpam, + nftVisibility, + }) + + const itemId = `${item.chain}-${item.contractAddress}-${item.tokenId}-${hidden}` + + return ( + + + + + + + + ) +} + +const defaultEmptyStyle = { + minHeight: 100, + paddingVertical: '$spacing12', + width: '100%', +} diff --git a/apps/extension/src/app/constants.ts b/apps/extension/src/app/constants.ts new file mode 100644 index 00000000000..a27c12025f6 --- /dev/null +++ b/apps/extension/src/app/constants.ts @@ -0,0 +1,3 @@ +import { SpaceTokens } from 'ui/src' + +export const SCREEN_ITEM_HORIZONTAL_PAD = '$spacing12' satisfies SpaceTokens diff --git a/apps/extension/src/app/events/constants.ts b/apps/extension/src/app/events/constants.ts new file mode 100644 index 00000000000..7a81e3140fd --- /dev/null +++ b/apps/extension/src/app/events/constants.ts @@ -0,0 +1,3 @@ +export enum GlobalErrorEvent { + ReduxStorageExceeded = 'ReduxStorageExceeded', +} diff --git a/apps/extension/src/app/events/global.ts b/apps/extension/src/app/events/global.ts new file mode 100644 index 00000000000..d631a731e36 --- /dev/null +++ b/apps/extension/src/app/events/global.ts @@ -0,0 +1,5 @@ +import EventEmitter from 'eventemitter3' +import { GlobalErrorEvent } from 'src/app/events/constants' + +class GlobalEventEmitter extends EventEmitter {} +export const globalEventEmitter = new GlobalEventEmitter() diff --git a/apps/extension/src/app/features/accounts/AccountItem.tsx b/apps/extension/src/app/features/accounts/AccountItem.tsx new file mode 100644 index 00000000000..f7a5372367f --- /dev/null +++ b/apps/extension/src/app/features/accounts/AccountItem.tsx @@ -0,0 +1,192 @@ +import { SharedEventName } from '@uniswap/analytics-events' +import { BaseSyntheticEvent, useCallback, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { EditLabelModal } from 'src/app/features/accounts/EditLabelModal' +import { removeAllDappConnectionsForAccount } from 'src/app/features/dapp/actions' +import { ContextMenu, Flex, MenuContentItem, Text, TouchableArea } from 'ui/src' +import { CopySheets, Edit, TrashFilled, TripleDots } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { ElementName, ModalName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { NumberType } from 'utilities/src/format/types' +import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' +import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' +import { usePortfolioTotalValue } from 'wallet/src/features/dataApi/balances' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { pushNotification } from 'wallet/src/features/notifications/slice' +import { AppNotificationType, CopyNotificationType } from 'wallet/src/features/notifications/types' +import { WarningSeverity } from 'wallet/src/features/transactions/WarningModal/types' +import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' +import { useActiveAccountWithThrow, useDisplayName, useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { DisplayNameType } from 'wallet/src/features/wallet/types' +import { useAppDispatch } from 'wallet/src/state' +import { setClipboard } from 'wallet/src/utils/clipboard' + +type AccountItemProps = { + address: Address + onAccountSelect?: () => void +} + +export function AccountItem({ address, onAccountSelect }: AccountItemProps): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + const { data, loading, error } = usePortfolioTotalValue({ address }) + const { balanceUSD } = data || {} + + const { convertFiatAmountFormatted } = useLocalizationContext() + const formattedBalance = convertFiatAmountFormatted(balanceUSD, NumberType.PortfolioBalance) + + const [showEditLabelModal, setShowEditLabelModal] = useState(false) + + const displayName = useDisplayName(address) + const hasDisplayName = displayName?.type === DisplayNameType.Unitag || displayName?.type === DisplayNameType.ENS + + const accounts = useSignerAccounts() + const activeAccount = useActiveAccountWithThrow() + const activeAccountDisplayName = useDisplayName(activeAccount.address) + + const [showRemoveWalletModal, setShowRemoveWalletModal] = useState(false) + const onRemoveWallet = useCallback(async () => { + const accountForDeletion = accounts.find((account) => account.address === address) + if (!accountForDeletion) { + return + } + + await removeAllDappConnectionsForAccount(accountForDeletion) + dispatch( + editAccountActions.trigger({ + type: EditAccountAction.Remove, + accounts: [accountForDeletion], + }), + ) + }, [accounts, address, dispatch]) + + const onPressCopyAddress = useCallback( + async (e: BaseSyntheticEvent) => { + // We have to manually prevent click-through because the way the context menu is inside of a TouchableArea in this component it + // means that without it the TouchableArea handler will get called + // TODO(EXT-1325): Use a different ContextMenu component that works inside a TouchableArea + e.preventDefault() + e.stopPropagation() + + await setClipboard(address) + dispatch( + pushNotification({ + type: AppNotificationType.Copied, + copyType: CopyNotificationType.Address, + }), + ) + sendAnalyticsEvent(SharedEventName.ELEMENT_CLICKED, { + element: ElementName.CopyAddress, + modal: ModalName.AccountSwitcher, + }) + }, + [address, dispatch], + ) + + const menuOptions = useMemo((): MenuContentItem[] => { + return [ + // hide edit label if account has unitag or ENS + ...(!hasDisplayName + ? [ + { + label: t('account.wallet.menu.edit.title'), + onPress: (e: BaseSyntheticEvent): void => { + // We have to manually prevent click-through because the way the context menu is inside of a TouchableArea in this component it + // means that without it the TouchableArea handler will get called + e.preventDefault() + e.stopPropagation() + + setShowEditLabelModal(true) + }, + Icon: Edit, + }, + ] + : []), + + { + label: t('account.wallet.menu.copy.title'), + onPress: onPressCopyAddress, + Icon: CopySheets, + }, + { + label: t('account.wallet.menu.remove.title'), + onPress: (e: BaseSyntheticEvent): void => { + // We have to manually prevent click-through because the way the context menu is inside of a TouchableArea in this component it + // means that without it the TouchableArea handler will get called + e.preventDefault() + e.stopPropagation() + + setShowRemoveWalletModal(true) + }, + textProps: { color: '$statusCritical' }, + Icon: TrashFilled, + iconProps: { color: '$statusCritical' }, + }, + ] + }, [hasDisplayName, onPressCopyAddress, t]) + + return ( + <> + {showRemoveWalletModal && ( + } + modalName={ModalName.RemoveWallet} + severity={WarningSeverity.High} + title={t('account.wallet.remove.title', { name: displayName?.name ?? '' })} + onClose={() => setShowRemoveWalletModal(false)} + onConfirm={onRemoveWallet} + /> + )} + {showEditLabelModal && setShowEditLabelModal(false)} />} + + + + + + {loading || error ? '' : formattedBalance} + + + + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/accounts/AccountSwitcherScreen.test.tsx b/apps/extension/src/app/features/accounts/AccountSwitcherScreen.test.tsx new file mode 100644 index 00000000000..8d6c2a71e55 --- /dev/null +++ b/apps/extension/src/app/features/accounts/AccountSwitcherScreen.test.tsx @@ -0,0 +1,26 @@ +import { AccountSwitcherScreen } from 'src/app/features/accounts/AccountSwitcherScreen' +import { preloadedExtensionState } from 'src/test/fixtures/redux' +import { cleanup, render } from 'src/test/test-utils' + +const preloadedState = preloadedExtensionState() + +const SAMPLE_DAPP = 'http://example.com' + +jest.mock('src/app/features/dapp/DappContext', () => { + const real = jest.requireActual('src/app/features/dapp/DappContext') + return { ...real, useDappContext: jest.fn(() => ({ dappUrl: SAMPLE_DAPP })) } +}) + +jest.mock('src/app/features/dapp/hooks', () => { + const { ACCOUNT, ACCOUNT3 } = require('wallet/src/test/fixtures') + return { useDappConnectedAccounts: jest.fn(() => [ACCOUNT, ACCOUNT3]) } +}) + +describe(AccountSwitcherScreen, () => { + it('renders correctly', async () => { + const tree = render(, { preloadedState }) + + expect(tree).toMatchSnapshot() + cleanup() + }) +}) diff --git a/apps/extension/src/app/features/accounts/AccountSwitcherScreen.tsx b/apps/extension/src/app/features/accounts/AccountSwitcherScreen.tsx new file mode 100644 index 00000000000..df1927578c0 --- /dev/null +++ b/apps/extension/src/app/features/accounts/AccountSwitcherScreen.tsx @@ -0,0 +1,275 @@ +import { useCallback, useEffect, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { useSelector } from 'react-redux' +import { ComingSoon } from 'src/app/components/ComingSoon' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { AccountItem } from 'src/app/features/accounts/AccountItem' +import { CreateWalletModal } from 'src/app/features/accounts/CreateWalletModal' +import { EditLabelModal } from 'src/app/features/accounts/EditLabelModal' +import { useDappContext } from 'src/app/features/dapp/DappContext' +import { updateDappConnectedAddressFromExtension } from 'src/app/features/dapp/actions' +import { useDappConnectedAccounts } from 'src/app/features/dapp/hooks' +import { isConnectedAccount } from 'src/app/features/dapp/utils' +import { PopupName, openPopup } from 'src/app/features/popups/slice' +import { AppRoutes, RemoveRecoveryPhraseRoutes, SettingsRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { useAppDispatch } from 'src/store/store' +import { Button, Flex, MenuContent, MenuContentItem, Popover, ScrollView, Text, useSporeColors } from 'ui/src' +import { WalletFilled, X } from 'ui/src/components/icons' +import { spacing } from 'ui/src/theme' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ModalName, WalletEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { TestID } from 'uniswap/src/test/fixtures/testIDs' +import { ImportType } from 'uniswap/src/types/onboarding' +import { logger } from 'utilities/src/logger/logger' +import { sleep } from 'utilities/src/time/timing' +import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' +import { PlusCircle } from 'wallet/src/components/icons/PlusCircle' +import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' +import { createOnboardingAccount } from 'wallet/src/features/onboarding/createOnboardingAccount' +import { WarningSeverity } from 'wallet/src/features/transactions/WarningModal/types' +import { AccountType, BackupType, SignerMnemonicAccount } from 'wallet/src/features/wallet/accounts/types' +import { createAccountsActions } from 'wallet/src/features/wallet/create/createAccountsSaga' +import { useActiveAccountWithThrow, useDisplayName, useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { selectSortedSignerMnemonicAccounts } from 'wallet/src/features/wallet/selectors' +import { setAccountAsActive } from 'wallet/src/features/wallet/slice' +import { DisplayNameType } from 'wallet/src/features/wallet/types' + +const MIN_MENU_WIDTH = 200 + +export function AccountSwitcherScreen(): JSX.Element { + const colors = useSporeColors() + const dispatch = useAppDispatch() + const { t } = useTranslation() + + const activeAccount = useActiveAccountWithThrow() + const activeAddress = activeAccount.address + const isViewOnly = activeAccount.type === AccountType.Readonly + + const accounts = useSignerAccounts() + const accountAddresses = useMemo( + () => accounts.map((account) => account.address).filter((address) => address !== activeAddress), + [accounts, activeAddress], + ) + const { dappUrl } = useDappContext() + + const connectedAccounts = useDappConnectedAccounts(dappUrl) + + // TODO: EXT-899 https://linear.app/uniswap/issue/EXT-899/enable-unitag-edit-button-is-account-header + const activeAccountDisplayName = useDisplayName(activeAddress) + const activeAccountHasUnitag = activeAccountDisplayName?.type === DisplayNameType.Unitag + + const [showEditLabelModal, setShowEditLabelModal] = useState(false) + + const [showRemoveWalletModal, setShowRemoveWalletModal] = useState(false) + const [showCreateWalletModal, setShowCreateWalletModal] = useState(false) + + const [pendingWallet, setPendingWallet] = useState() + + const sortedMnemonicAccounts = useSelector(selectSortedSignerMnemonicAccounts) + + useEffect(() => { + const createOnboardingAccountAfterTransitionAnimation = async (): Promise => { + // TODO: EXT-1164 - Move Keyring methods to workers to not block main thread during onboarding + // Delays computation heavy function invocation to avoid disrupting transition animation + await sleep(400) + setPendingWallet(await createOnboardingAccount(sortedMnemonicAccounts)) + } + createOnboardingAccountAfterTransitionAnimation().catch((e) => { + logger.error(e, { + tags: { file: 'AccountSwitcherScreen', function: 'createOnboardingAccount' }, + }) + }) + }, [sortedMnemonicAccounts]) + + const onNavigateToRemoveWallet = (): void => { + setShowRemoveWalletModal(false) + navigate(`/${AppRoutes.Settings}/${SettingsRoutes.RemoveRecoveryPhrase}/${RemoveRecoveryPhraseRoutes.Wallets}`) + } + + const onCancelCreateWallet = (): void => { + setShowCreateWalletModal(false) + } + + const onConfirmCreateWallet = useCallback( + async (walletLabel: string): Promise => { + setShowCreateWalletModal(false) + if (!pendingWallet) { + return + } + + if (walletLabel) { + pendingWallet.name = walletLabel + } + + dispatch( + createAccountsActions.trigger({ + accounts: [pendingWallet], + }), + ) + + sendAnalyticsEvent(WalletEventName.WalletAdded, { + wallet_type: ImportType.CreateAdditional, + accounts_imported_count: 1, + wallets_imported: [pendingWallet.address], + cloud_backup_used: pendingWallet.backups?.includes(BackupType.Cloud) ?? false, + modal: ModalName.AccountSwitcher, + }) + + navigate(-1) + + // Only show connect popup if some account is connected to current dapp + if (connectedAccounts.length > 0) { + dispatch(openPopup(PopupName.Connect)) + } + }, + [connectedAccounts.length, dispatch, pendingWallet], + ) + + const addWalletMenuOptions: MenuContentItem[] = [ + { + label: t('account.wallet.button.create'), + onPress: (): void => setShowCreateWalletModal(true), + }, + { + label: t('account.wallet.button.import'), + onPress: (): void => setShowRemoveWalletModal(true), + }, + ] + + const contentShadowProps = { + shadowColor: colors.shadowColor.val, + shadowRadius: 12, + shadowOpacity: 0.1, + zIndex: 1, + } + + return ( + + {showEditLabelModal && setShowEditLabelModal(false)} />} + {showRemoveWalletModal && ( + } + modalName={ModalName.RemoveWallet} + severity={WarningSeverity.High} + title={t('account.wallet.button.import')} + onClose={() => setShowRemoveWalletModal(false)} + onConfirm={onNavigateToRemoveWallet} + /> + )} + {showCreateWalletModal && ( + + )} + + + + + {activeAccountHasUnitag ? ( + + ) : ( + + )} + + + {accountAddresses.length > 0 && ( + + {t('account.wallet.header.other')} + + )} + + {accountAddresses.map((address: string) => { + return ( + => { + dispatch(setAccountAsActive(address)) + await updateDappConnectedAddressFromExtension(address) + if (connectedAccounts.length > 0 && !isConnectedAccount(connectedAccounts, address)) { + dispatch(openPopup(PopupName.Connect)) + } + navigate(-1) + }} + /> + ) + })} + + + + + + + {t('account.wallet.button.add')} + + + + + + + + + + + ) +} + +const UnitagActionButton = (): JSX.Element => { + const { t } = useTranslation() + return ( + + + + ) +} diff --git a/apps/extension/src/app/features/accounts/CreateWalletModal.tsx b/apps/extension/src/app/features/accounts/CreateWalletModal.tsx new file mode 100644 index 00000000000..2ce86ea5e32 --- /dev/null +++ b/apps/extension/src/app/features/accounts/CreateWalletModal.tsx @@ -0,0 +1,91 @@ +import { useCallback, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { OpaqueColorValue } from 'react-native' +import { Button, Flex, Text, getUniconColors, useIsDarkMode } from 'ui/src' +import { iconSizes, opacify } from 'ui/src/theme' +import { TextInput } from 'uniswap/src/components/input/TextInput' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { shortenAddress } from 'uniswap/src/utils/addresses' +import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' +import { SignerMnemonicAccount } from 'wallet/src/features/wallet/accounts/types' + +type CreateWalletModalProps = { + pendingWallet?: SignerMnemonicAccount + onCancel: () => void + onConfirm: (walletLabel: string) => void +} + +// Expects a pending account to be created before opening this modal +export function CreateWalletModal({ pendingWallet, onCancel, onConfirm }: CreateWalletModalProps): JSX.Element | null { + const { t } = useTranslation() + const isDark = useIsDarkMode() + + const [inputText, setInputText] = useState('') + + const nextDerivationIndex = pendingWallet?.derivationIndex + const onboardingAccountAddress = pendingWallet?.address + + const onPressConfirm = useCallback(() => { + onConfirm(inputText) + }, [inputText, onConfirm]) + + const placeholderText = nextDerivationIndex + ? t('account.wallet.create.placeholder', { index: nextDerivationIndex + 1 }) + : '' + + const { color: uniconColor } = onboardingAccountAddress + ? getUniconColors(onboardingAccountAddress, isDark) + : { color: '' } + + // Cast because Button component doesnt acccept sytling outside of theme color values for hover and press states + const hoverAndPressButtonStyle = useMemo(() => { + return { + backgroundColor: opacify(15, uniconColor) as unknown as OpaqueColorValue, + } + }, [uniconColor]) + + return ( + + + + {onboardingAccountAddress && } + + + + {onboardingAccountAddress && ( + + {shortenAddress(onboardingAccountAddress)} + + )} + + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/accounts/EditLabelModal.tsx b/apps/extension/src/app/features/accounts/EditLabelModal.tsx new file mode 100644 index 00000000000..d7f29cb9915 --- /dev/null +++ b/apps/extension/src/app/features/accounts/EditLabelModal.tsx @@ -0,0 +1,74 @@ +import { useCallback, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Button, Flex, Text } from 'ui/src' +import { iconSizes } from 'ui/src/theme' +import { TextInput } from 'uniswap/src/components/input/TextInput' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { shortenAddress } from 'utilities/src/addresses' +import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' +import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' +import { useDisplayName } from 'wallet/src/features/wallet/hooks' +import { DisplayNameType } from 'wallet/src/features/wallet/types' +import { useAppDispatch } from 'wallet/src/state' + +type EditLabelModalProps = { + address: Address + onClose: () => void +} + +export function EditLabelModal({ address, onClose }: EditLabelModalProps): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + + const displayName = useDisplayName(address) + const defaultText = displayName?.type === DisplayNameType.Local ? displayName.name : '' + + const [inputText, setInputText] = useState(defaultText) + const [isfocused, setIsFocused] = useState(false) + + const onConfirm = useCallback(async () => { + await dispatch( + editAccountActions.trigger({ + type: EditAccountAction.Rename, + address, + newName: inputText, + }), + ) + onClose() + }, [address, dispatch, inputText, onClose]) + + return ( + + + + + + setIsFocused(false)} + onChangeText={setInputText} + onFocus={() => setIsFocused(true)} + /> + + + {shortenAddress(address)} + + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap b/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap new file mode 100644 index 00000000000..6f10c474ac9 --- /dev/null +++ b/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap @@ -0,0 +1,463 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AccountSwitcherScreen renders correctly 1`] = ` +{ + "asFragment": [Function], + "baseElement": +
+ + +
+
+
+ + + +
+
+ + + +
+
+
+
+
+ + + + + + + + +
+
+
+
+ + Jacob Haley + +
+
+
+
+ + 0x​0fc6...be59 + + + + +
+
+
+
+ + + +
+ +
+
+
+ +
+
+ +
+
+ +
+ , + "container":
+ + +
+
+
+ + + +
+
+ + + +
+
+
+
+
+ + + + + + + + +
+
+
+
+ + Jacob Haley + +
+
+
+
+ + 0x​0fc6...be59 + + + + +
+
+
+
+ + + +
+ +
+
+
+ +
+
+ +
+
+ +
, + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "store": { + "@@observable": [Function], + "dispatch": [Function], + "getState": [Function], + "replaceReducer": [Function], + "subscribe": [Function], + }, + "unmount": [Function], +} +`; diff --git a/apps/extension/src/app/features/dapp/DappContext.tsx b/apps/extension/src/app/features/dapp/DappContext.tsx new file mode 100644 index 00000000000..25969714c8b --- /dev/null +++ b/apps/extension/src/app/features/dapp/DappContext.tsx @@ -0,0 +1,67 @@ +import { createContext, ReactNode, useContext, useEffect, useState } from 'react' +import { useDappConnectedAccounts, useDappLastChainId } from 'src/app/features/dapp/hooks' +import { isConnectedAccount } from 'src/app/features/dapp/utils' +import { extractBaseUrl } from 'src/app/features/dappRequests/utils' +import { closePopup, PopupName } from 'src/app/features/popups/slice' +import { backgroundToSidePanelMessageChannel } from 'src/background/messagePassing/messageChannels' +import { BackgroundToSidePanelRequestType } from 'src/background/messagePassing/types/requests' +import { useAppDispatch } from 'src/store/store' +import { WalletChainId } from 'uniswap/src/types/chains' +import { useActiveAccountAddress } from 'wallet/src/features/wallet/hooks' + +type DappContextState = { + dappUrl: string + dappIconUrl?: string + isConnected: boolean + lastChainId?: WalletChainId +} + +const DappContext = createContext(undefined) + +export function DappContextProvider({ children }: { children: ReactNode }): JSX.Element { + const [dappUrl, setDappUrl] = useState('') + const [dappIconUrl, setDappIconUrl] = useState(undefined) + + const activeAddress = useActiveAccountAddress() + const connectedAccounts = useDappConnectedAccounts(dappUrl) + const lastChainId = useDappLastChainId(dappUrl) + const dispatch = useAppDispatch() + + const isConnected = !!activeAddress && isConnectedAccount(connectedAccounts, activeAddress) + + useEffect(() => { + const updateDappInfo = (): void => { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { + const tab = tabs[0] + if (tab) { + setDappUrl(extractBaseUrl(tab?.url) || '') + setDappIconUrl(tab.favIconUrl) + } + }) + } + + updateDappInfo() + + return backgroundToSidePanelMessageChannel.addMessageListener( + BackgroundToSidePanelRequestType.TabActivated, + async (_message) => { + updateDappInfo() + dispatch(closePopup(PopupName.Connect)) + }, + ) + }, [setDappIconUrl, setDappUrl, dispatch]) + + const value = { dappUrl, dappIconUrl, isConnected, lastChainId } + + return {children} +} + +export function useDappContext(): DappContextState { + const context = useContext(DappContext) + + if (context === undefined) { + throw new Error('useDappContext must be used within a DappContextProvider') + } + + return context +} diff --git a/apps/extension/src/app/features/dapp/actions.ts b/apps/extension/src/app/features/dapp/actions.ts new file mode 100644 index 00000000000..a7852020b95 --- /dev/null +++ b/apps/extension/src/app/features/dapp/actions.ts @@ -0,0 +1,71 @@ +import { dappStore } from 'src/app/features/dapp/store' +import { externalDappMessageChannel } from 'src/background/messagePassing/messageChannels' +import { + ExtensionChainChange, + ExtensionToDappRequestType, + UpdateConnectionRequest, +} from 'src/background/messagePassing/types/requests' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { WalletChainId } from 'uniswap/src/types/chains' +import { Account } from 'wallet/src/features/wallet/accounts/types' +import { getProviderSync } from 'wallet/src/features/wallet/context' + +export async function saveDappChain(dappUrl: string, chainId: WalletChainId): Promise { + dappStore.updateDappLatestChainId(dappUrl, chainId) + const provider = getProviderSync(chainId) + + const response: ExtensionChainChange = { + type: ExtensionToDappRequestType.SwitchChain, + providerUrl: provider.connection.url, + chainId: chainIdToHexadecimalString(chainId), + } + + await externalDappMessageChannel.sendMessageToTabUrl(dappUrl, response) +} + +export async function saveDappConnection(dappUrl: string, account: Account): Promise { + dappStore.saveDappActiveAccount(dappUrl, account) + await updateConnectionFromExtension(dappUrl) +} + +export async function removeDappConnection(dappUrl: string, account?: Account): Promise { + dappStore.removeDappConnection(dappUrl, account) + await updateConnectionFromExtension(dappUrl) +} + +async function updateConnectionFromExtension(dappUrl: string): Promise { + const connectedWallets = dappStore.getDappOrderedConnectedAddresses(dappUrl) ?? [] + const response: UpdateConnectionRequest = { + type: ExtensionToDappRequestType.UpdateConnections, + addresses: connectedWallets, + } + + await externalDappMessageChannel.sendMessageToTabUrl(dappUrl, response) +} + +export async function updateDappConnectedAddressFromExtension(address: Address): Promise { + dappStore.updateDappConnectedAddress(address) + const connectedDapps = dappStore.getConnectedDapps(address) + for (const dappUrl of connectedDapps) { + await updateConnectionFromExtension(dappUrl) + } +} + +export async function removeAllDappConnectionsForAccount(account: Account): Promise { + const connectedDapps = dappStore.getConnectedDapps(account.address) + for (const dappUrl of connectedDapps) { + await removeDappConnection(dappUrl, account) + } +} + +export async function removeAllDappConnectionsFromExtension(): Promise { + const dappUrls = dappStore.getDappUrls() + for (const dappUrl of dappUrls) { + const response: UpdateConnectionRequest = { + type: ExtensionToDappRequestType.UpdateConnections, + addresses: [], + } + await externalDappMessageChannel.sendMessageToTabUrl(dappUrl, response) + } + dappStore.removeAllDappConnections() +} diff --git a/apps/extension/src/app/features/dapp/changeChain.test.ts b/apps/extension/src/app/features/dapp/changeChain.test.ts new file mode 100644 index 00000000000..6d2d2b4a36b --- /dev/null +++ b/apps/extension/src/app/features/dapp/changeChain.test.ts @@ -0,0 +1,115 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { changeChain } from 'src/app/features/dapp/changeChain' +import { dappStore } from 'src/app/features/dapp/store' +import { DappResponseType } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { WalletChainId } from 'uniswap/src/types/chains' + +// Mock dependencies +jest.mock('@ethersproject/providers') +jest.mock('@metamask/rpc-errors') +jest.mock('src/app/features/dapp/store') +jest.mock('uniswap/src/features/telemetry/send') +jest.mock('uniswap/src/features/chains/utils') + +describe('changeChain', () => { + const mockRequestId = 'test-request-id' + const mockProviderUrl = 'http://localhost:8545' + const mockChainId = 1 as WalletChainId + + let mockProvider: JsonRpcProvider + + beforeEach(() => { + jest.clearAllMocks() + + mockProvider = { + connection: { + url: mockProviderUrl, + }, + } as JsonRpcProvider + }) + + it('should return an error response if updatedChainId is null', () => { + const response = changeChain({ + activeConnectedAddress: undefined, + dappUrl: undefined, + provider: mockProvider, + requestId: mockRequestId, + updatedChainId: null, + }) + + expect(response).toEqual({ + type: DappResponseType.ErrorResponse, + error: serializeError( + providerErrors.custom({ + code: 4902, + message: 'Uniswap Wallet does not support switching to this chain.', + }) + ), + requestId: mockRequestId, + }) + }) + + it('should return an error response if provider is null', () => { + const response = changeChain({ + activeConnectedAddress: undefined, + dappUrl: undefined, + provider: null, + requestId: mockRequestId, + updatedChainId: mockChainId, + }) + + expect(response).toEqual({ + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.unauthorized()), + requestId: mockRequestId, + }) + }) + + it('should update dappStore and send analytics event if dappUrl is provided', () => { + const mockDappUrl = 'http://example.com' + + const response = changeChain({ + activeConnectedAddress: '0xAddress', + dappUrl: mockDappUrl, + provider: mockProvider, + requestId: mockRequestId, + updatedChainId: mockChainId, + }) + + expect(dappStore.updateDappLatestChainId).toHaveBeenCalledWith(mockDappUrl, mockChainId) + expect(sendAnalyticsEvent).toHaveBeenCalledWith(ExtensionEventName.DappChangeChain, { + dappUrl: mockDappUrl, + chainId: mockChainId, + activeConnectedAddress: '0xAddress', + }) + + expect(response).toEqual({ + type: DappResponseType.ChainChangeResponse, + requestId: mockRequestId, + providerUrl: mockProviderUrl, + chainId: chainIdToHexadecimalString(mockChainId), + }) + }) + + it('should not update dappStore if dappUrl is not provided', () => { + const response = changeChain({ + activeConnectedAddress: '0xAddress', + dappUrl: undefined, + provider: mockProvider, + requestId: mockRequestId, + updatedChainId: mockChainId, + }) + + expect(dappStore.updateDappLatestChainId).not.toHaveBeenCalled() + + expect(response).toEqual({ + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.unauthorized()), + requestId: mockRequestId, + }) + }) +}) diff --git a/apps/extension/src/app/features/dapp/changeChain.ts b/apps/extension/src/app/features/dapp/changeChain.ts new file mode 100644 index 00000000000..a7a14a0408a --- /dev/null +++ b/apps/extension/src/app/features/dapp/changeChain.ts @@ -0,0 +1,69 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { dappStore } from 'src/app/features/dapp/store' +import { + ChangeChainResponse, + DappResponseType, + ErrorResponse, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { WalletChainId } from 'uniswap/src/types/chains' + +export function changeChain({ + activeConnectedAddress, + dappUrl, + provider, + requestId, + updatedChainId, +}: { + activeConnectedAddress: Address | undefined + dappUrl: string | undefined + provider: JsonRpcProvider | undefined | null + requestId: string + updatedChainId: WalletChainId | null +}): ChangeChainResponse | ErrorResponse { + if (!updatedChainId) { + return { + type: DappResponseType.ErrorResponse, + error: serializeError( + providerErrors.custom({ + code: 4902, + message: 'Uniswap Wallet does not support switching to this chain.', + }), + ), + requestId, + } + } + + if (!provider) { + return { + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.unauthorized()), + requestId, + } + } + + if (dappUrl) { + dappStore.updateDappLatestChainId(dappUrl, updatedChainId) + sendAnalyticsEvent(ExtensionEventName.DappChangeChain, { + dappUrl: dappUrl ?? '', + chainId: updatedChainId, + activeConnectedAddress: activeConnectedAddress ?? '', + }) + + return { + type: DappResponseType.ChainChangeResponse, + requestId, + providerUrl: provider.connection.url, + chainId: chainIdToHexadecimalString(updatedChainId), + } + } + + return { + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.unauthorized()), + requestId, + } +} diff --git a/apps/extension/src/app/features/dapp/hooks.test.ts b/apps/extension/src/app/features/dapp/hooks.test.ts new file mode 100644 index 00000000000..1b5f1f72a6e --- /dev/null +++ b/apps/extension/src/app/features/dapp/hooks.test.ts @@ -0,0 +1,104 @@ +import { + useDappConnectedAccounts, + useDappInfo, + useDappLastChainId, + useDappStateUpdated, +} from 'src/app/features/dapp/hooks' +import { DappState, dappStore } from 'src/app/features/dapp/store' +import { act, renderHook, waitFor } from 'src/test/test-utils' +import { UniverseChainId } from 'uniswap/src/types/chains' +import { + ACCOUNT, + ACCOUNT2, + ACCOUNT3, + SAMPLE_SEED_ADDRESS_1, + SAMPLE_SEED_ADDRESS_3, +} from 'wallet/src/test/fixtures' + +const SAMPLE_DAPP = 'http://example.com' +const SAMPLE_DAPP_2 = 'http://uniswap.org' + +const dappState: DappState = { + [SAMPLE_DAPP]: { + lastChainId: UniverseChainId.ArbitrumOne, + connectedAccounts: [ACCOUNT, ACCOUNT2], + activeConnectedAddress: SAMPLE_SEED_ADDRESS_1, + }, + [SAMPLE_DAPP_2]: { + lastChainId: UniverseChainId.Base, + connectedAccounts: [ACCOUNT, ACCOUNT3], + activeConnectedAddress: SAMPLE_SEED_ADDRESS_3, + }, +} + +const mockAddListener = jest.fn() +const mockGet = jest.fn(() => { + return Promise.resolve({ dappState }) +}) +Object.defineProperty(global, 'chrome', { + value: { + runtime: { lastError: undefined }, + storage: { + local: { + get: mockGet, + set: jest.fn(), + onChanged: { + addListener: mockAddListener, + }, + }, + }, + }, +}) + +describe('Dapp hooks', () => { + let onChangeListener: (changes: { dappState: chrome.storage.StorageChange }) => void + beforeAll(async () => { + await dappStore.init() + onChangeListener = mockAddListener.mock.calls[0][0] + }) + + it('useDappStateUpdated should update state when chrome storage changes', () => { + const { result } = renderHook(() => useDappStateUpdated()) + expect(result.current).toBe(false) + act(() => { + onChangeListener({ dappState: { newValue: dappState } }) + }) + expect(result.current).toBe(true) + }) + + it('useDappInfo should return undefined when dappUrl is undefined', async () => { + const { result } = renderHook(() => useDappInfo(undefined)) + await waitFor(() => expect(result.current).toBeUndefined()) + }) + + it('useDappInfo should return DappInfo when dappUrl is defined', async () => { + const { result } = renderHook(() => useDappInfo(SAMPLE_DAPP)) + await waitFor(() => + expect(result.current).toEqual({ + lastChainId: UniverseChainId.ArbitrumOne, + connectedAccounts: [ACCOUNT, ACCOUNT2], + activeConnectedAddress: SAMPLE_SEED_ADDRESS_1, + }) + ) + }) + + it('useDappLastChainId should return undefined when dappUrl is undefined', async () => { + const { result } = renderHook(() => useDappLastChainId(undefined)) + await waitFor(() => expect(result.current).toBeUndefined()) + }) + + it('useDappLastChainId should return lastChainId when dappUrl is defined', async () => { + const { result } = renderHook(() => useDappLastChainId(SAMPLE_DAPP_2)) + await waitFor(() => expect(result.current).toBe(UniverseChainId.Base)) + }) + + it('useDappConnectedAccounts should return empty array when dappUrl is undefined', async () => { + const { result } = renderHook(() => useDappConnectedAccounts(undefined)) + await waitFor(() => expect(result.current).toEqual([])) + }) + + it('useDappConnectedAccounts should return connected accounts when dappUrl is defined', async () => { + const { result } = renderHook(() => useDappConnectedAccounts(SAMPLE_DAPP)) + await waitFor(() => expect(result.current).toEqual([ACCOUNT, ACCOUNT2])) + }) +}) diff --git a/apps/extension/src/app/features/dapp/hooks.ts b/apps/extension/src/app/features/dapp/hooks.ts new file mode 100644 index 00000000000..ae5b5a9530d --- /dev/null +++ b/apps/extension/src/app/features/dapp/hooks.ts @@ -0,0 +1,34 @@ +import { useEffect, useReducer, useState } from 'react' +import { DappInfo, DappStoreEvent, dappStore } from 'src/app/features/dapp/store' +import { WalletChainId } from 'uniswap/src/types/chains' +import { Account } from 'wallet/src/features/wallet/accounts/types' + +// exported to be used in tests +export function useDappStateUpdated(): boolean { + const [state, dispatch] = useReducer((v) => !v, false) + useEffect(() => { + const onUpdate = (): void => dispatch() + dappStore.addListener(DappStoreEvent.DappStateUpdated, onUpdate) + return () => { + dappStore.removeListener(DappStoreEvent.DappStateUpdated, onUpdate) + } + }, [dispatch]) + return state +} + +export function useDappInfo(dappUrl: string | undefined): DappInfo | undefined { + const [info, setInfo] = useState() + const dappStateUpdated = useDappStateUpdated() + useEffect(() => { + setInfo(dappStore.getDappInfo(dappUrl)) + }, [dappUrl, dappStateUpdated]) + return info +} + +export function useDappLastChainId(dappUrl: string | undefined): WalletChainId | undefined { + return useDappInfo(dappUrl)?.lastChainId +} + +export function useDappConnectedAccounts(dappUrl: string | undefined): Account[] { + return useDappInfo(dappUrl)?.connectedAccounts || [] +} diff --git a/apps/extension/src/app/features/dapp/saga.ts b/apps/extension/src/app/features/dapp/saga.ts new file mode 100644 index 00000000000..b2494f85492 --- /dev/null +++ b/apps/extension/src/app/features/dapp/saga.ts @@ -0,0 +1,9 @@ +import { dappStore } from 'src/app/features/dapp/store' +import { call } from 'typed-redux-saga' +import { logger } from 'utilities/src/logger/logger' + +// Initialize Dapp Store +export function* initDappStore() { + logger.debug('dappStoreSaga', 'initDappStore', 'Initializing Dapp Store') + yield* call(dappStore.init) +} diff --git a/apps/extension/src/app/features/dapp/store.ts b/apps/extension/src/app/features/dapp/store.ts new file mode 100644 index 00000000000..2fafa6a3173 --- /dev/null +++ b/apps/extension/src/app/features/dapp/store.ts @@ -0,0 +1,199 @@ +import EventEmitter from 'eventemitter3' +import { getOrderedConnectedAddresses, isConnectedAccount } from 'src/app/features/dapp/utils' +import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' +import { Account } from 'wallet/src/features/wallet/accounts/types' + +const STATE_STORAGE_KEY = 'dappState' + +export interface DappInfo { + lastChainId: WalletChainId + connectedAccounts: Account[] + activeConnectedAddress: Address +} + +export interface DappState { + [dappUrl: string]: DappInfo +} + +const initialDappState: DappState = {} +let state: DappState + +// Event Emitter +export enum DappStoreEvent { + DappStateUpdated = 'DappStateUpdated', +} + +class DappStoreEventEmitter extends EventEmitter {} +const dappStoreEventEmitter = new DappStoreEventEmitter() + +// Init +let initPromise: Promise | undefined + +async function init(): Promise { + if (!initPromise) { + initPromise = initInternal() + } + + return initPromise +} + +async function initInternal(): Promise { + state = (await chrome.storage.local.get([STATE_STORAGE_KEY]))?.[STATE_STORAGE_KEY] || initialDappState + + chrome.storage.local.onChanged.addListener((changes) => { + if (changes.dappState) { + state = changes.dappState.newValue + dappStoreEventEmitter.emit(DappStoreEvent.DappStateUpdated, state) + } + }) +} + +// Sequential syncing of state to local storage +let dappStateSyncPromise = Promise.resolve() +let dappStateChangesNeedSync = false +function queueDappStateSync(): void { + if (!dappStateChangesNeedSync) { + dappStateChangesNeedSync = true + dappStateSyncPromise = dappStateSyncPromise.then((): Promise => { + dappStateChangesNeedSync = false + return chrome.storage.local.set({ [STATE_STORAGE_KEY]: state }) + }) + } +} + +/** Returns all dapp URLs that are connected to a particular address. */ +function getConnectedDapps(address: Address): string[] { + return Object.entries(state) + .filter(([_, dappInfo]) => isConnectedAccount(dappInfo.connectedAccounts, address)) + .map(([dappUrl]) => dappUrl) +} + +/** Returns connected addresses with the currently connected address listed first. */ +function getDappOrderedConnectedAddresses(dappUrl: string): string[] | undefined { + const dappInfo = state[dappUrl] + if (!dappInfo) { + return undefined + } + const { connectedAccounts, activeConnectedAddress } = dappInfo + return getOrderedConnectedAddresses(connectedAccounts, activeConnectedAddress) +} + +function getDappInfo(dappUrl: string | undefined): DappInfo | undefined { + return dappUrl ? state[dappUrl] : undefined +} + +function getDappInfoIfConnected(dappUrl: string | undefined): DappInfo | undefined { + const dappInfo = getDappInfo(dappUrl) + return dappInfo && dappInfo.connectedAccounts.length > 0 ? dappInfo : undefined +} + +function getDappUrls(): string[] { + return Object.keys(state) +} + +// Update the connected address for all dapps +function updateDappConnectedAddress(address: Address): void { + // Never directly mutate state, as some of its fields could have `writable: false` + state = Object.fromEntries( + Object.entries(state).map(([key, dappUrlState]) => { + if (isConnectedAccount(dappUrlState.connectedAccounts, address)) { + return [key, { ...dappUrlState, activeConnectedAddress: address }] + } + return [key, dappUrlState] + }), + ) + queueDappStateSync() +} + +function updateDappLatestChainId(dappUrl: string, chainId: WalletChainId): void { + // Never directly mutate state, as some of its fields could have `writable: false` + state = Object.fromEntries( + Object.entries(state).map(([key, dappUrlState]) => { + if (key === dappUrl) { + return [key, { ...dappUrlState, lastChainId: chainId }] + } + return [key, dappUrlState] + }), + ) + queueDappStateSync() +} + +function saveDappActiveAccount(dappUrl: string, account: Account): void { + // Never directly mutate state, as some of its fields could have `writable: false` + state = { + ...state, + [dappUrl]: { + lastChainId: state[dappUrl]?.lastChainId ?? UniverseChainId.Mainnet, + activeConnectedAddress: account.address, + connectedAccounts: ((): Account[] => { + const currConnectedAccounts = state[dappUrl]?.connectedAccounts || [] + const isConnectionNew = !isConnectedAccount(currConnectedAccounts, account.address) + + if (isConnectionNew) { + return [...currConnectedAccounts, account] + } + return currConnectedAccounts + })(), + }, + } + queueDappStateSync() +} + +/** + * Remove a dapp connection + * @param dappUrl extracted url for dapp + * @param account target account to remove connection. If undefined, will remove all accounts + * @returns + */ +function removeDappConnection(dappUrl: string, account?: Account): void { + // Never directly mutate state, as some of its fields could have `writable: false` + state = ((): DappState => { + const dappUrlState = state[dappUrl] + + if (!dappUrlState) { + return state + } + + const updatedAccounts = account + ? dappUrlState.connectedAccounts?.filter((existingAccount) => existingAccount.address !== account.address) + : [] + + const activeConnected = updatedAccounts[0] + if (activeConnected) { + return { + ...state, + [dappUrl]: { + ...dappUrlState, + connectedAccounts: updatedAccounts, + activeConnectedAddress: activeConnected.address, + }, + } + } else { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { [dappUrl]: _, ...restState } = state + return restState + } + })() + queueDappStateSync() +} + +function removeAllDappConnections(): void { + state = {} + queueDappStateSync() +} + +export const dappStore = { + getConnectedDapps, + getDappInfo, + getDappInfoIfConnected, + getDappOrderedConnectedAddresses, + getDappUrls, + init, + removeAllDappConnections, + removeDappConnection, + saveDappActiveAccount, + addListener: dappStoreEventEmitter.addListener.bind(dappStoreEventEmitter), + removeListener: dappStoreEventEmitter.removeListener.bind(dappStoreEventEmitter), + updateDappConnectedAddress, + updateDappLatestChainId, +} diff --git a/apps/extension/src/app/features/dapp/utils.test.ts b/apps/extension/src/app/features/dapp/utils.test.ts new file mode 100644 index 00000000000..35d4e569039 --- /dev/null +++ b/apps/extension/src/app/features/dapp/utils.test.ts @@ -0,0 +1,66 @@ +import { + getActiveConnectedAccount, + getOrderedConnectedAddresses, + isConnectedAccount, +} from 'src/app/features/dapp/utils' +import { Account } from 'wallet/src/features/wallet/accounts/types' +import { + ACCOUNT, + ACCOUNT2, + ACCOUNT3, + SAMPLE_SEED_ADDRESS_1, + SAMPLE_SEED_ADDRESS_2, + SAMPLE_SEED_ADDRESS_3, +} from 'wallet/src/test/fixtures' + +describe('isConnectedAccount', () => { + it('returns true if the account is connected', () => { + const accounts: Account[] = [ACCOUNT, ACCOUNT2] + expect(isConnectedAccount(accounts, SAMPLE_SEED_ADDRESS_1)).toBe(true) + }) + + it('returns false if the account is not connected', () => { + const accounts: Account[] = [ACCOUNT] + expect(isConnectedAccount(accounts, SAMPLE_SEED_ADDRESS_2)).toBe(false) + }) +}) + +describe('getActiveConnectedAccount', () => { + const accounts: Account[] = [ACCOUNT, ACCOUNT2] + + it('returns the account for the given address', () => { + const result = getActiveConnectedAccount(accounts, SAMPLE_SEED_ADDRESS_2) + expect(result).toEqual(ACCOUNT2) + }) + + it('throws an error if the address is not in the list', () => { + expect(() => { + getActiveConnectedAccount(accounts, SAMPLE_SEED_ADDRESS_3) + }).toThrow('The activeConnectedAddress must be in the list of connectedAccounts.') + }) +}) + +describe('getOrderedConnectedAddresses', () => { + const accounts: Account[] = [ACCOUNT, ACCOUNT2, ACCOUNT3] + + it('places the active address first', () => { + const activeAddress = SAMPLE_SEED_ADDRESS_2 + const expectedOrder = [SAMPLE_SEED_ADDRESS_2, SAMPLE_SEED_ADDRESS_1, SAMPLE_SEED_ADDRESS_3] + const result = getOrderedConnectedAddresses(accounts, activeAddress) + expect(result).toEqual(expectedOrder) + }) + + it('returns the same order if the active address is already first', () => { + const activeAddress = SAMPLE_SEED_ADDRESS_1 + const expectedOrder = [SAMPLE_SEED_ADDRESS_1, SAMPLE_SEED_ADDRESS_2, SAMPLE_SEED_ADDRESS_3] + const result = getOrderedConnectedAddresses(accounts, activeAddress) + expect(result).toEqual(expectedOrder) + }) + + it('handles cases where the active address is not in the list', () => { + const activeAddress = '0xabc' // Not in the accounts list + const expectedOrder = [SAMPLE_SEED_ADDRESS_1, SAMPLE_SEED_ADDRESS_2, SAMPLE_SEED_ADDRESS_3] // Original order since active address is not found + const result = getOrderedConnectedAddresses(accounts, activeAddress) + expect(result).toEqual(expectedOrder) + }) +}) diff --git a/apps/extension/src/app/features/dapp/utils.ts b/apps/extension/src/app/features/dapp/utils.ts new file mode 100644 index 00000000000..094d617a214 --- /dev/null +++ b/apps/extension/src/app/features/dapp/utils.ts @@ -0,0 +1,21 @@ +import { bubbleToTop } from 'utilities/src/primitives/array' +import { Account } from 'wallet/src/features/wallet/accounts/types' + +export function isConnectedAccount(connectedAccounts: Account[], address: Address): boolean { + return connectedAccounts.some((account) => account.address === address) +} + +/** Gets the Account for a specific address. The address param must be in the list of connectedAccounts. */ +export function getActiveConnectedAccount(connectedAccounts: Account[], activeConnectedAddress: Address): Account { + const activeConnectedAccount = connectedAccounts.find((account) => account.address === activeConnectedAddress) + if (!activeConnectedAccount) { + throw new Error('The activeConnectedAddress must be in the list of connectedAccounts.') + } + return activeConnectedAccount +} + +/** Returns all connected addresses with the currently connected address listed first. */ +export function getOrderedConnectedAddresses(connectedAccounts: Account[], activeConnectedAddress: Address): Address[] { + const connectedAddresses = connectedAccounts.map((account) => account.address) + return bubbleToTop(connectedAddresses, (address) => address === activeConnectedAddress) +} diff --git a/apps/extension/src/app/features/dappRequests/DappRequestContent.tsx b/apps/extension/src/app/features/dappRequests/DappRequestContent.tsx new file mode 100644 index 00000000000..5cf80a45725 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/DappRequestContent.tsx @@ -0,0 +1,425 @@ +import { PropsWithChildren, memo, useCallback } from 'react' +import { Trans, useTranslation } from 'react-i18next' +import { useDappLastChainId } from 'src/app/features/dapp/hooks' +import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext' +import { ConnectionRequestContent } from 'src/app/features/dappRequests/requestContent/Connection/ConnectionRequestContent' +import { EthSendRequestContent } from 'src/app/features/dappRequests/requestContent/EthSend/EthSend' +import { NetworksFooter } from 'src/app/features/dappRequests/requestContent/NetworksFooter' +import { PersonalSignRequestContent } from 'src/app/features/dappRequests/requestContent/PersonalSign/PersonalSignRequestContent' +import { SignTypedDataRequestContent } from 'src/app/features/dappRequests/requestContent/SignTypeData/SignTypedDataRequestContent' +import { rejectAllRequests } from 'src/app/features/dappRequests/saga' +import { DappRequestStoreItem } from 'src/app/features/dappRequests/slice' +import { + isDappRequestStoreItemForEthSendTxn, + isGetAccountRequest, + isRequestAccountRequest, + isRequestPermissionsRequest, + isSignMessageRequest, + isSignTypedDataRequest, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { useAppDispatch } from 'src/store/store' +import { + Anchor, + AnimatePresence, + Button, + Flex, + Text, + TouchableArea, + UniversalImage, + UniversalImageResizeMode, + styled, + useSporeColors, +} from 'ui/src' +import { ReceiptText, RotatableChevron } from 'ui/src/components/icons' +import { iconSizes, zIndices } from 'ui/src/theme' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' +import { formatDappURL } from 'utilities/src/format/urls' +import { logger } from 'utilities/src/logger/logger' +import { DappIconPlaceholder } from 'wallet/src/components/WalletConnect/DappIconPlaceholder' +import { useUSDValue } from 'wallet/src/features/gas/hooks' +import { GasFeeResult } from 'wallet/src/features/gas/types' +import { AddressFooter } from 'wallet/src/features/transactions/TransactionRequest/AddressFooter' +import { NetworkFeeFooter } from 'wallet/src/features/transactions/TransactionRequest/NetworkFeeFooter' +import { TransactionTypeInfo } from 'wallet/src/features/transactions/types' +import { useActiveAccountWithThrow } from 'wallet/src/features/wallet/hooks' + +interface DappRequestHeaderProps { + title: string + headerIcon?: JSX.Element +} + +interface DappRequestFooterProps { + chainId?: WalletChainId + connectedAccountAddress?: string + confirmText: string + maybeCloseOnConfirm?: boolean + onCancel?: (requestToConfirm?: DappRequestStoreItem, transactionTypeInfo?: TransactionTypeInfo) => void + onConfirm?: (requestToCancel?: DappRequestStoreItem) => void + showAllNetworks?: boolean + showNetworkCost?: boolean + transactionGasFeeResult?: GasFeeResult +} + +type DappRequestContentProps = DappRequestHeaderProps & DappRequestFooterProps + +const REJECT_MESSAGE_HEIGHT = 48 + +const AnimatedPane = styled(Flex, { + variants: { + forwards: (dir: boolean) => ({ + enterStyle: { + x: dir ? 10 : -10, + opacity: 0, + }, + }), + increasing: (dir: boolean) => ({ + enterStyle: dir + ? { + y: 10, + opacity: 0, + } + : undefined, + exitStyle: !dir + ? { + y: 10, + opacity: 0, + } + : undefined, + }), + } as const, +}) + +export function DappRequestWrapper(): JSX.Element { + const { t } = useTranslation() + const colors = useSporeColors() + const dispatch = useAppDispatch() + + const { totalRequestCount, onPressPrevious, onPressNext, currentIndex, increasing } = useDappRequestQueueContext() + + const disabledPrevious = currentIndex <= 0 + const disabledNext = currentIndex >= totalRequestCount - 1 + + const onRejectAll = async (): Promise => { + dispatch(rejectAllRequests()) + } + + return ( + + + + {totalRequestCount > 1 && ( + + + + + + ), + }} + i18nKey="dapp.request.reject.info" + values={{ totalRequestCount }} + /> + + + + + {t('dapp.request.reject.action')} + + + + )} + + 1 ? REJECT_MESSAGE_HEIGHT + 12 : 0} + > + {totalRequestCount > 1 && ( + + + + + + {currentIndex + 1} + + + / + + + + + {totalRequestCount} + + + + + + + + )} + + + + + ) +} + +const DappRequest = memo(function _DappRequest(): JSX.Element { + const { t } = useTranslation() + const { request } = useDappRequestQueueContext() + + if (request) { + if (isSignMessageRequest(request.dappRequest)) { + return + } + if (isSignTypedDataRequest(request.dappRequest)) { + return + } + if (isDappRequestStoreItemForEthSendTxn(request)) { + return + } + if ( + isGetAccountRequest(request.dappRequest) || + isRequestAccountRequest(request.dappRequest) || + isRequestPermissionsRequest(request.dappRequest) + ) { + return + } + } + + return +}) + +export function DappRequestContent({ + chainId, + title, + headerIcon, + confirmText, + connectedAccountAddress, + maybeCloseOnConfirm, + onCancel, + onConfirm, + showAllNetworks, + showNetworkCost, + transactionGasFeeResult, + children, +}: PropsWithChildren): JSX.Element { + const { forwards, currentIndex } = useDappRequestQueueContext() + + return ( + <> + + + + {children} + + + + + ) +} + +function DappRequestHeader({ headerIcon, title }: DappRequestHeaderProps): JSX.Element { + const { dappIconUrl, dappUrl } = useDappRequestQueueContext() + const hostname = new URL(dappUrl).hostname.toUpperCase() + const fallbackIcon = + + return ( + + + + {headerIcon || ( + + )} + + + + {title} + + + + {formatDappURL(dappUrl)} + + + + ) +} + +const WINDOW_CLOSE_DELAY = 10 + +export function DappRequestFooter({ + chainId, + connectedAccountAddress, + confirmText, + maybeCloseOnConfirm, + onCancel, + onConfirm, + showAllNetworks, + showNetworkCost, + transactionGasFeeResult, +}: DappRequestFooterProps): JSX.Element { + const { t } = useTranslation() + const activeAccount = useActiveAccountWithThrow() + const { + dappUrl, + currentAccount, + request, + totalRequestCount, + onConfirm: defaultOnConfirm, + onCancel: defaultOnCancel, + } = useDappRequestQueueContext() + + const activeChain = useDappLastChainId(dappUrl) + + if (!request) { + const error = new Error('no request present') + logger.error(error, { tags: { file: 'DappRequestContent', function: 'DappRequestFooter' } }) + throw error + } + + const currentChainId = chainId || activeChain || UniverseChainId.Mainnet + const gasFeeUSD = useUSDValue(currentChainId, transactionGasFeeResult?.value) + + const shouldCloseSidebar = request.isSidebarClosed && totalRequestCount <= 1 + + const handleOnConfirm = useCallback(async () => { + if (onConfirm) { + onConfirm() + } else { + await defaultOnConfirm(request) + } + + if (maybeCloseOnConfirm && shouldCloseSidebar) { + setTimeout(window.close, WINDOW_CLOSE_DELAY) + } + }, [request, maybeCloseOnConfirm, onConfirm, defaultOnConfirm, shouldCloseSidebar]) + + const handleOnCancel = useCallback(async () => { + if (onCancel) { + onCancel() + } else { + await defaultOnCancel(request) + } + + if (shouldCloseSidebar) { + setTimeout(window.close, WINDOW_CLOSE_DELAY) + } + }, [request, onCancel, defaultOnCancel, shouldCloseSidebar]) + + return ( + <> + + {showNetworkCost && ( + + )} + {showAllNetworks && } + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/DappRequestQueueContext.tsx b/apps/extension/src/app/features/dappRequests/DappRequestQueueContext.tsx new file mode 100644 index 00000000000..781cf2311f7 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/DappRequestQueueContext.tsx @@ -0,0 +1,144 @@ +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { PropsWithChildren, createContext, useContext, useEffect, useRef, useState } from 'react' +import { + confirmRequest, + confirmRequestNoDappInfo, + isDappRequestWithDappInfo, + rejectRequest, +} from 'src/app/features/dappRequests/saga' +import { DappRequestStoreItem } from 'src/app/features/dappRequests/slice' +import { DappResponseType } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { extractBaseUrl } from 'src/app/features/dappRequests/utils' +import { useAppDispatch, useAppSelector } from 'src/store/store' +import { TransactionTypeInfo } from 'wallet/src/features/transactions/types' +import { Account } from 'wallet/src/features/wallet/accounts/types' +import { useActiveAccountWithThrow } from 'wallet/src/features/wallet/hooks' + +interface DappRequestQueueContextValue { + forwards: boolean // direction of sliding animation + increasing: boolean // direction of number increasing animation + request: DappRequestStoreItem | undefined + currentAccount: Account // Account the request is going to (not necessarily the active account) + dappUrl: string + dappIconUrl: string + currentIndex: number + totalRequestCount: number + onPressNext: () => void + onPressPrevious: () => void + onConfirm: (request: DappRequestStoreItem, transactionTypeInfo?: TransactionTypeInfo) => Promise + onCancel: (request: DappRequestStoreItem) => Promise +} + +const DappRequestQueueContext = createContext(undefined) + +export function DappRequestQueueProvider({ children }: PropsWithChildren): JSX.Element { + const dispatch = useAppDispatch() + const [currentIndex, setCurrentIndex] = useState(0) + + // Show the top most pending request + const pendingRequests = useAppSelector((state) => state.dappRequests.pending) + + const request = pendingRequests[currentIndex] + const totalRequestCount = pendingRequests.length + + const activeAccount = useActiveAccountWithThrow() + + // values to help with animations + const [forwards, setForwards] = useState(true) + const [increasing, setIncreasing] = useState(true) + const prevTotalRequestCountRef = useRef(totalRequestCount) + + useEffect(() => { + if (totalRequestCount > prevTotalRequestCountRef.current) { + setIncreasing(true) + } + + if (totalRequestCount < prevTotalRequestCountRef.current) { + setIncreasing(false) + } + + prevTotalRequestCountRef.current = totalRequestCount + }, [totalRequestCount]) + + const dappUrl = extractBaseUrl(request?.senderTabInfo.url) || '' + const dappIconUrl = request?.senderTabInfo?.favIconUrl || '' + + let currentAccount = activeAccount + if (request?.dappInfo) { + const { activeConnectedAddress, connectedAccounts } = request.dappInfo + const connectedAccount = connectedAccounts.find((account) => account.address === activeConnectedAddress) + + if (connectedAccount) { + currentAccount = connectedAccount + } + } + + const onConfirm = async ( + requestToConfirm: DappRequestStoreItem, + transactionTypeInfo?: TransactionTypeInfo, + ): Promise => { + const requestWithTxInfo = { + ...requestToConfirm, + transactionTypeInfo, + } + if (isDappRequestWithDappInfo(requestWithTxInfo)) { + await dispatch(confirmRequest(requestWithTxInfo)) + } else { + await dispatch(confirmRequestNoDappInfo(requestWithTxInfo)) + } + + setCurrentIndex((prev) => Math.max(0, prev - 1)) + } + + const onCancel = async (requestToCancel: DappRequestStoreItem): Promise => { + await dispatch( + rejectRequest({ + senderTabInfo: requestToCancel.senderTabInfo, + errorResponse: { + requestId: requestToCancel.dappRequest.requestId, + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.userRejectedRequest()), + }, + }), + ) + + setCurrentIndex((prev) => Math.max(0, prev - 1)) + } + + const onPressNext = (): void => { + setForwards(true) + setCurrentIndex((prev) => Math.min(prev + 1, totalRequestCount - 1)) + } + + const onPressPrevious = (): void => { + setForwards(false) + setCurrentIndex((prev) => Math.max(0, prev - 1)) + } + + const value = { + forwards, + increasing, + currentIndex, + totalRequestCount, + request, + dappUrl, + dappIconUrl, + currentAccount, + onConfirm, + onCancel, + onPressNext, + onPressPrevious, + } + + return {children} +} + +export function useDappRequestQueueContext(): DappRequestQueueContextValue { + const context = useContext(DappRequestQueueContext) + + if (context === undefined) { + throw new Error('useDappRequestQueueContext must be used within a DappRequestQueueProvider') + } + + return context +} diff --git a/apps/extension/src/app/features/dappRequests/accounts.ts b/apps/extension/src/app/features/dappRequests/accounts.ts new file mode 100644 index 00000000000..6970e63f864 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/accounts.ts @@ -0,0 +1,154 @@ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +import { JsonRpcProvider } from '@ethersproject/providers' +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { saveDappConnection } from 'src/app/features/dapp/actions' +import { DappInfo, dappStore } from 'src/app/features/dapp/store' +import { getOrderedConnectedAddresses } from 'src/app/features/dapp/utils' +import { SenderTabInfo } from 'src/app/features/dappRequests/slice' +import { + AccountResponse, + DappRequest, + DappResponseType, + ErrorResponse, + GetAccountRequest, + RequestAccountRequest, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { extractBaseUrl } from 'src/app/features/dappRequests/utils' +import { dappResponseMessageChannel } from 'src/background/messagePassing/messageChannels' +import { call, put } from 'typed-redux-saga' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' +import { pushNotification } from 'wallet/src/features/notifications/slice' +import { AppNotificationType } from 'wallet/src/features/notifications/types' +import { getProvider } from 'wallet/src/features/wallet/context' +import { selectActiveAccount } from 'wallet/src/features/wallet/selectors' +import { appSelect } from 'wallet/src/state' + +function getAccountResponse( + chainId: WalletChainId, + dappRequest: DappRequest, + provider: JsonRpcProvider, + dappInfo: DappInfo, +): AccountResponse { + const orderedConnectedAddresses = getOrderedConnectedAddresses( + dappInfo.connectedAccounts, + dappInfo.activeConnectedAddress, + ) + + return { + type: DappResponseType.AccountResponse, + requestId: dappRequest.requestId, + connectedAddresses: orderedConnectedAddresses, + chainId: chainIdToHexadecimalString(chainId), + providerUrl: provider.connection.url, + } +} + +function sendAccountResponseAnalyticsEvent( + senderUrl: string, + chainId: WalletChainId, + dappInfo: DappInfo, + accountResponse: AccountResponse, +): void { + const dappUrl = extractBaseUrl(senderUrl) + + sendAnalyticsEvent(ExtensionEventName.DappConnect, { + dappUrl: dappUrl ?? '', + chainId, + activeConnectedAddress: dappInfo.activeConnectedAddress, + connectedAddresses: accountResponse.connectedAddresses, + }) +} +/** + * Gets the active account, and returns the account address, chainId, and providerUrl. + * Chain id + provider url are from the last connected chain for the dApp and wallet. If this has not been set, it will be the default chain and provider. + */ +export function* getAccount( + dappRequest: GetAccountRequest | RequestAccountRequest, + { id, url }: SenderTabInfo, + dappInfo: DappInfo, +) { + const chainId = dappInfo.lastChainId + const provider = yield* call(getProvider, chainId) + + const response = getAccountResponse(chainId, dappRequest, provider, dappInfo) + sendAccountResponseAnalyticsEvent(url, chainId, dappInfo, response) + + yield* call(dappResponseMessageChannel.sendMessageToTab, id, response) +} + +/** + * Saves the active account as connected to the dapp and parses out necessary data + * Triggers a notification for new connections + */ +export function* saveAccount({ url, favIconUrl }: SenderTabInfo) { + const activeAccount = yield* appSelect(selectActiveAccount) + const dappUrl = extractBaseUrl(url) + const dappInfo = yield* call(dappStore.getDappInfo, dappUrl) + + if (!dappUrl || !activeAccount) { + return + } + + yield* call(saveDappConnection, dappUrl, activeAccount) + // No dapp info means that this is a first time connection request + if (!dappInfo) { + yield* put( + pushNotification({ + type: AppNotificationType.DappConnected, + dappIconUrl: favIconUrl, + }), + ) + } + + const chainId = dappInfo?.lastChainId ?? UniverseChainId.Mainnet + const provider = yield* call(getProvider, chainId) + const connectedAddresses = (dappUrl && (yield* call(dappStore.getDappOrderedConnectedAddresses, dappUrl))) || [] + + return { + dappUrl, + activeAccount, + connectedAddresses, + chainId, + providerUrl: provider.connection.url, + } +} + +/** + * Gets the active account, and returns the account address, chainId, and providerUrl. + * Chain id + provider url are from the last connected chain for the dApp and wallet. If this has not been set, it will be the default chain and provider. + */ +export function* getAccountRequest(request: RequestAccountRequest, senderTabInfo: SenderTabInfo) { + const accountInfo = yield* call(saveAccount, senderTabInfo) + + if (!accountInfo) { + const errorReponse: ErrorResponse = { + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.unauthorized()), + requestId: request.requestId, + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabInfo.id, errorReponse) + } else { + const { dappUrl, activeAccount, connectedAddresses, chainId, providerUrl } = accountInfo + + const accountResponse: AccountResponse = { + type: DappResponseType.AccountResponse, + requestId: request.requestId, + connectedAddresses, + chainId: chainIdToHexadecimalString(chainId), + providerUrl, + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabInfo.id, accountResponse) + + sendAnalyticsEvent(ExtensionEventName.DappConnectRequest, { + dappUrl, + chainId, + activeConnectedAddress: activeAccount.address, + connectedAddresses, + }) + } +} diff --git a/apps/extension/src/app/features/dappRequests/dappRequestApprovalWatcherSaga.ts b/apps/extension/src/app/features/dappRequests/dappRequestApprovalWatcherSaga.ts new file mode 100644 index 00000000000..b2edf654423 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/dappRequestApprovalWatcherSaga.ts @@ -0,0 +1,252 @@ +/* eslint-disable complexity */ +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { PayloadAction } from '@reduxjs/toolkit' +import { getAccount, getAccountRequest } from 'src/app/features/dappRequests/accounts' +import { getChainId, getChainIdNoDappInfo } from 'src/app/features/dappRequests/getChainId' +import { + handleGetPermissionsRequest, + handleRequestPermissions, + handleRevokePermissions, +} from 'src/app/features/dappRequests/permissions' +import { + DappRequestNoDappInfo, + DappRequestRejectParams, + DappRequestWithDappInfo, + changeChainSaga, + confirmRequest, + confirmRequestNoDappInfo, + handleSendTransaction, + handleSignMessage, + handleSignTypedData, + handleUniswapOpenSidebarRequest, + rejectAllRequests, + rejectRequest, +} from 'src/app/features/dappRequests/saga' +import { dappRequestActions } from 'src/app/features/dappRequests/slice' +import { + BaseSendTransactionRequest, + BaseSendTransactionRequestSchema, + ChangeChainRequest, + ChangeChainRequestSchema, + DappRequestType, + DappResponseType, + ErrorResponse, + GetAccountRequest, + GetAccountRequestSchema, + GetChainIdRequest, + GetChainIdRequestSchema, + GetPermissionsRequest, + GetPermissionsRequestSchema, + RequestAccountRequest, + RequestAccountRequestSchema, + RequestPermissionsRequest, + RequestPermissionsRequestSchema, + RevokePermissionsRequest, + RevokePermissionsRequestSchema, + SignMessageRequest, + SignMessageRequestSchema, + SignTypedDataRequest, + SignTypedDataRequestSchema, + UniswapOpenSidebarRequest, + UniswapOpenSidebarRequestSchema, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { dappResponseMessageChannel } from 'src/background/messagePassing/messageChannels' +import { appSelect } from 'src/store/store' +import { WebState } from 'src/store/webReducer' +import { call, put, takeEvery } from 'typed-redux-saga' +import { logger } from 'utilities/src/logger/logger' + +function* dappRequestApproval({ + type, + payload: request, +}: PayloadAction) { + if (type === rejectAllRequests.type) { + const pendingRequests = yield* appSelect((state: WebState) => state.dappRequests.pending) + + for (const pendingRequest of pendingRequests) { + const errorResponse: ErrorResponse = { + type: DappResponseType.ErrorResponse, + error: serializeError(providerErrors.userRejectedRequest()), + requestId: pendingRequest.dappRequest.requestId, + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, pendingRequest.senderTabInfo.id, errorResponse) + } + + yield* put(dappRequestActions.removeAll()) + return + } + + const requestId = + ('dappRequest' in request && request?.dappRequest?.requestId) || + ('errorResponse' in request && request?.errorResponse?.requestId) + const { id: senderTabId } = request.senderTabInfo + + if (!senderTabId) { + throw new Error('senderTabId is required') + } + if (!requestId) { + throw new Error('requestId is required') + } + + try { + if (type === confirmRequest.type) { + const confirmedRequest = request as DappRequestWithDappInfo + logger.info('dappRequestApprovalWatcher', 'confirmRequest', 'confirm request', request) + + switch (confirmedRequest.dappRequest.type) { + case DappRequestType.RequestPermissions: { + const validatedRequest: RequestPermissionsRequest = RequestPermissionsRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call( + handleRequestPermissions, + validatedRequest, + confirmedRequest.senderTabInfo, + confirmedRequest.dappInfo, + ) + break + } + case DappRequestType.RevokePermissions: { + const validatedRequest: RevokePermissionsRequest = RevokePermissionsRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call(handleRevokePermissions, validatedRequest, confirmedRequest.senderTabInfo) + break + } + case DappRequestType.GetPermissions: { + const validatedRequest: GetPermissionsRequest = GetPermissionsRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call( + handleGetPermissionsRequest, + validatedRequest, + confirmedRequest.senderTabInfo, + confirmedRequest.dappInfo, + ) + break + } + case DappRequestType.SendTransaction: { + const validatedRequest: BaseSendTransactionRequest = BaseSendTransactionRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call( + handleSendTransaction, + validatedRequest, + confirmedRequest.senderTabInfo, + confirmedRequest.dappInfo, + confirmedRequest.transactionTypeInfo, + ) + break + } + case DappRequestType.GetAccount: { + const validatedRequest: GetAccountRequest = GetAccountRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(getAccount, validatedRequest, confirmedRequest.senderTabInfo, confirmedRequest.dappInfo) + break + } + case DappRequestType.RequestAccount: { + const validatedRequest: RequestAccountRequest = RequestAccountRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call(getAccountRequest, validatedRequest, confirmedRequest.senderTabInfo, confirmedRequest.dappInfo) + break + } + case DappRequestType.GetChainId: { + const validatedRequest: GetChainIdRequest = GetChainIdRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(getChainId, validatedRequest, confirmedRequest.senderTabInfo, confirmedRequest.dappInfo) + break + } + case DappRequestType.ChangeChain: { + const validatedRequest: ChangeChainRequest = ChangeChainRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(changeChainSaga, validatedRequest, confirmedRequest.senderTabInfo, confirmedRequest.dappInfo) + break + } + case DappRequestType.SignMessage: { + const validatedRequest: SignMessageRequest = SignMessageRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(handleSignMessage, validatedRequest, confirmedRequest.senderTabInfo, confirmedRequest.dappInfo) + break + } + case DappRequestType.SignTypedData: { + const validatedRequest: SignTypedDataRequest = SignTypedDataRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(handleSignTypedData, validatedRequest, confirmedRequest.senderTabInfo, confirmedRequest.dappInfo) + break + } + // Add more request types here + } + } else if (type === confirmRequestNoDappInfo.type) { + const confirmedRequest = request as DappRequestNoDappInfo + switch (confirmedRequest.dappRequest.type) { + case DappRequestType.RequestAccount: { + const validatedRequest = RequestAccountRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(getAccountRequest, validatedRequest, confirmedRequest.senderTabInfo) + break + } + case DappRequestType.RequestPermissions: { + const validatedRequest: RequestPermissionsRequest = RequestPermissionsRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call(handleRequestPermissions, validatedRequest, confirmedRequest.senderTabInfo) + break + } + case DappRequestType.RevokePermissions: { + const validatedRequest: RevokePermissionsRequest = RevokePermissionsRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call(handleRevokePermissions, validatedRequest, confirmedRequest.senderTabInfo) + break + } + case DappRequestType.GetPermissions: { + const validatedRequest: GetPermissionsRequest = GetPermissionsRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call(handleGetPermissionsRequest, validatedRequest, confirmedRequest.senderTabInfo) + break + } + case DappRequestType.GetChainId: { + const validatedRequest: GetChainIdRequest = GetChainIdRequestSchema.parse(confirmedRequest.dappRequest) + yield* call(getChainIdNoDappInfo, validatedRequest, confirmedRequest.senderTabInfo) + break + } + case DappRequestType.UniswapOpenSidebar: { + const validatedRequest: UniswapOpenSidebarRequest = UniswapOpenSidebarRequestSchema.parse( + confirmedRequest.dappRequest, + ) + yield* call(handleUniswapOpenSidebarRequest, validatedRequest, confirmedRequest.senderTabInfo) + break + } + } + } else if (type === rejectRequest.type) { + const rejectedRequest = request as DappRequestRejectParams + logger.info('dappRequestApprovalWatcher', 'rejectRequest', 'dapp request rejected', request) + + const errorResponse: ErrorResponse = { + type: DappResponseType.ErrorResponse, + error: rejectedRequest.errorResponse.error, + requestId: rejectedRequest.errorResponse.requestId, + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, rejectedRequest.senderTabInfo.id, errorResponse) + } + } catch (error) { + logger.error(error, { + tags: { file: 'dappRequestApprovalWatcherSaga', function: 'dappRequestApprovalWatcher' }, + }) + + const errorResponse: ErrorResponse = { + type: DappResponseType.ErrorResponse, + requestId, + error: serializeError(error), + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabId, errorResponse) + } finally { + yield* put(dappRequestActions.remove(requestId)) + } +} + +/** + * Watch for pending requests to be confirmed or rejected and dispatch action + */ +export function* dappRequestApprovalWatcher() { + yield* takeEvery([confirmRequestNoDappInfo, confirmRequest, rejectRequest, rejectAllRequests], dappRequestApproval) +} diff --git a/apps/extension/src/app/features/dappRequests/getChainId.ts b/apps/extension/src/app/features/dappRequests/getChainId.ts new file mode 100644 index 00000000000..4cbfc52ccee --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/getChainId.ts @@ -0,0 +1,34 @@ +import { DappInfo } from 'src/app/features/dapp/store' +import { SenderTabInfo } from 'src/app/features/dappRequests/slice' +import { + ChainIdResponse, + DappResponseType, + GetChainIdRequest, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { dappResponseMessageChannel } from 'src/background/messagePassing/messageChannels' +import { call } from 'typed-redux-saga' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { UniverseChainId } from 'uniswap/src/types/chains' + +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export function* getChainId(request: GetChainIdRequest, { id }: SenderTabInfo, dappInfo: DappInfo) { + const response: ChainIdResponse = { + type: DappResponseType.ChainIdResponse, + requestId: request.requestId, + chainId: chainIdToHexadecimalString(dappInfo.lastChainId), + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, id, response) +} + +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type +export function* getChainIdNoDappInfo(request: GetChainIdRequest, { id }: SenderTabInfo) { + // Sending mainnet as default chain for unconnected dapps + const response: ChainIdResponse = { + type: DappResponseType.ChainIdResponse, + requestId: request.requestId, + chainId: chainIdToHexadecimalString(UniverseChainId.Mainnet), + } + + yield* call(dappResponseMessageChannel.sendMessageToTab, id, response) +} diff --git a/apps/extension/src/app/features/dappRequests/permissions.ts b/apps/extension/src/app/features/dappRequests/permissions.ts new file mode 100644 index 00000000000..3ace013c415 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/permissions.ts @@ -0,0 +1,126 @@ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +import { rpcErrors, serializeError } from '@metamask/rpc-errors' +import { logger } from 'ethers' +import { removeDappConnection } from 'src/app/features/dapp/actions' +import { DappInfo } from 'src/app/features/dapp/store' +import { saveAccount } from 'src/app/features/dappRequests/accounts' +import { SenderTabInfo } from 'src/app/features/dappRequests/slice' +import { + DappResponseType, + ErrorResponse, + GetPermissionsRequest, + GetPermissionsResponse, + RequestPermissionsRequest, + RequestPermissionsResponse, + RevokePermissionsRequest, + RevokePermissionsResponse, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { extractBaseUrl } from 'src/app/features/dappRequests/utils' +import { dappResponseMessageChannel } from 'src/background/messagePassing/messageChannels' +import { Permission } from 'src/contentScript/WindowEthereumRequestTypes' +import { ExtensionEthMethods } from 'src/contentScript/methodHandlers/requestMethods' +import { call, put } from 'typed-redux-saga' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { pushNotification } from 'wallet/src/features/notifications/slice' +import { AppNotificationType } from 'wallet/src/features/notifications/types' + +export function getPermissions(dappUrl: string | undefined, connectedAddresses: Address[] | undefined): Permission[] { + const permissions: Permission[] = [] + const isDappConnected = connectedAddresses && connectedAddresses.length > 0 + if (isDappConnected && dappUrl) { + // Safe to assume the eth_accounts permission can be added here, + // since dappInfo will only exist if it as been approved already + permissions.push({ + invoker: dappUrl, + parentCapability: ExtensionEthMethods.eth_accounts, + caveats: [], + }) + } + + return permissions +} + +export function* handleGetPermissionsRequest( + request: GetPermissionsRequest, + { id, url }: SenderTabInfo, + dappInfo?: DappInfo, +) { + const permissions: Permission[] = [] + if (dappInfo) { + permissions.push({ + invoker: url, + parentCapability: ExtensionEthMethods.eth_accounts, + caveats: [], + }) + } + + const response: GetPermissionsResponse = { + type: DappResponseType.GetPermissionsResponse, + requestId: request.requestId, + permissions, + } + yield* call(dappResponseMessageChannel.sendMessageToTab, id, response) +} + +export function* handleRequestPermissions(request: RequestPermissionsRequest, senderTabInfo: SenderTabInfo) { + const requestedPermissions = Object.keys(request.permissions) + + if (requestedPermissions.includes(ExtensionEthMethods.eth_accounts)) { + // Pre-emptively save the dapp connection, to avoid double-approval when dapp calls eth_requestAccounts + const accountInfo = yield* call(saveAccount, senderTabInfo) + const accounts = accountInfo && { + connectedAddresses: accountInfo.connectedAddresses, + chainId: chainIdToHexadecimalString(accountInfo.chainId), + providerUrl: accountInfo.providerUrl, + } + + const permissions: Permission[] = [ + { + invoker: senderTabInfo.url, + parentCapability: ExtensionEthMethods.eth_accounts, + caveats: [], + }, + ] + const response: RequestPermissionsResponse = { + type: DappResponseType.RequestPermissionsResponse, + requestId: request.requestId, + permissions, + accounts, + } + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabInfo.id, response) + } else { + logger.info('saga.ts', 'handleRequestPermissions', 'Unknown permissions requested', requestedPermissions) + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabInfo.id, { + type: DappResponseType.ErrorResponse, + error: serializeError(rpcErrors.methodNotFound()), + requestId: request.requestId, + } satisfies ErrorResponse) + } +} + +export function* handleRevokePermissions(request: RevokePermissionsRequest, senderTabInfo: SenderTabInfo) { + const revokedPermissions = Object.keys(request.permissions) + + if (revokedPermissions.includes(ExtensionEthMethods.eth_accounts)) { + const dappUrl = extractBaseUrl(senderTabInfo.url) + + if (!dappUrl) { + return + } + + yield* call(removeDappConnection, dappUrl, undefined) + yield* put(pushNotification({ type: AppNotificationType.DappDisconnected, dappIconUrl: senderTabInfo.favIconUrl })) + + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabInfo.id, { + type: DappResponseType.RevokePermissionsResponse, + requestId: request.requestId, + } satisfies RevokePermissionsResponse) + } else { + logger.info('saga.ts', 'handleRevokePermissions', 'Unknown permissions requested', revokedPermissions) + yield* call(dappResponseMessageChannel.sendMessageToTab, senderTabInfo.id, { + type: DappResponseType.ErrorResponse, + error: serializeError(rpcErrors.methodNotFound()), + requestId: request.requestId, + } satisfies ErrorResponse) + } +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/Connection/ConnectionRequestContent.tsx b/apps/extension/src/app/features/dappRequests/requestContent/Connection/ConnectionRequestContent.tsx new file mode 100644 index 00000000000..be130ca36d9 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/Connection/ConnectionRequestContent.tsx @@ -0,0 +1,27 @@ +import { useTranslation } from 'react-i18next' +import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent' +import { Flex, Text } from 'ui/src' + +export function ConnectionRequestContent(): JSX.Element { + const { t } = useTranslation() + + return ( + + + + {t('dapp.request.connect.helptext')} + + + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Approve/ApproveRequestContent.tsx b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Approve/ApproveRequestContent.tsx new file mode 100644 index 00000000000..a236214b83e --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Approve/ApproveRequestContent.tsx @@ -0,0 +1,104 @@ +import { useTranslation } from 'react-i18next' +import { useDappLastChainId } from 'src/app/features/dapp/hooks' +import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent' +import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext' +import { + ApproveSendTransactionRequest, + DappRequest as DappRequestBaseType, + DappRequestType, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { Flex, Text } from 'ui/src' +import { iconSizes } from 'ui/src/theme' +import { CurrencyLogo } from 'uniswap/src/components/CurrencyLogo/CurrencyLogo' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { CurrencyInfo } from 'uniswap/src/features/dataApi/types' +import { buildCurrencyId } from 'uniswap/src/utils/currencyId' +import { LearnMoreLink } from 'wallet/src/components/text/LearnMoreLink' +import { GasFeeResult } from 'wallet/src/features/gas/types' +import { useCurrencyInfo } from 'wallet/src/features/tokens/useCurrencyInfo' +import { TransactionType, TransactionTypeInfo } from 'wallet/src/features/transactions/types' + +function useDappRequestTokenRecipientInfo(request: DappRequestBaseType, dappUrl: string): Maybe { + const activeChain = useDappLastChainId(dappUrl) + const type = request.type + const to = type === DappRequestType.SendTransaction ? request.transaction.to : undefined + + const identifier = + activeChain && type === DappRequestType.SendTransaction && to ? buildCurrencyId(activeChain, to) : undefined + + return useCurrencyInfo(identifier) +} + +function parseSpenderAddress(data: string): string { + // Check if the data is of the correct length for "approve(address,uint256)" + // It should have 10 characters for "0x" + function selector and 64 characters for each parameter + if (data.length !== 10 + 64 * 2) { + throw new Error('Invalid data length') + } + + // The first argument (address) starts 10 characters in (after "0x" + 8 characters for function selector) + // and spans the next 64 characters, but the first 24 are padding zeros for the 40-character address + const addressHex = data.slice(34, 74) // From position 34 to 74 to capture the address + + // Validate if the address hex is correctly formatted + if (!/^[0-9a-fA-F]{40}$/.test(addressHex)) { + throw new Error('Invalid characters in hex string') + } + + return `0x${addressHex}` +} + +interface ApproveRequestContentProps { + transactionGasFeeResult: GasFeeResult + dappRequest: ApproveSendTransactionRequest + onCancel: () => Promise + onConfirm: (transactionTypeInfo?: TransactionTypeInfo) => Promise +} + +export function ApproveRequestContent({ + dappRequest, + transactionGasFeeResult, + onCancel, + onConfirm, +}: ApproveRequestContentProps): JSX.Element { + const { t } = useTranslation() + const { dappUrl } = useDappRequestQueueContext() + + const tokenInfo = useDappRequestTokenRecipientInfo(dappRequest, dappUrl) + const tokenSymbol = tokenInfo?.currency.symbol + const spender = parseSpenderAddress(dappRequest.transaction.data) + const transactionTypeInfo: TransactionTypeInfo | undefined = dappRequest.transaction.to + ? { + type: TransactionType.Approve, + tokenAddress: dappRequest.transaction.to, + spender, + } + : undefined + const onConfirmWithTransactionTypeInfo = (): Promise => onConfirm(transactionTypeInfo) + + return ( + } + title={tokenSymbol ? t('dapp.request.approve.title', { tokenSymbol }) : t('dapp.request.approve.fallbackTitle')} + transactionGasFeeResult={transactionGasFeeResult} + onCancel={onCancel} + onConfirm={onConfirmWithTransactionTypeInfo} + > + + + {t('dapp.request.approve.helptext')} + + + + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/EthSend.tsx b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/EthSend.tsx new file mode 100644 index 00000000000..33d54ea3c6b --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/EthSend.tsx @@ -0,0 +1,121 @@ +import { useCallback, useEffect, useMemo } from 'react' +import { useDappLastChainId } from 'src/app/features/dapp/hooks' +import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext' +import { ApproveRequestContent } from 'src/app/features/dappRequests/requestContent/EthSend/Approve/ApproveRequestContent' +import { FallbackEthSendRequestContent } from 'src/app/features/dappRequests/requestContent/EthSend/FallbackEthSend/FallbackEthSend' +import { LPRequestContent } from 'src/app/features/dappRequests/requestContent/EthSend/LP/LPRequestContent' +import { SwapRequestContent } from 'src/app/features/dappRequests/requestContent/EthSend/Swap/SwapRequestContent' +import { + DappRequestStoreItemForEthSendTxn, + isApproveRequest, + isLPRequest, + isSwapRequest, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { PollingInterval } from 'uniswap/src/constants/misc' +import { logger } from 'utilities/src/logger/logger' +import { formatExternalTxnWithGasEstimates } from 'wallet/src/features/gas/formatExternalTxnWithGasEstimates' +import { useTransactionGasFee } from 'wallet/src/features/gas/hooks' +import { GasFeeResult, GasSpeed } from 'wallet/src/features/gas/types' +import { TransactionTypeInfo } from 'wallet/src/features/transactions/types' + +interface EthSendRequestContentProps { + request: DappRequestStoreItemForEthSendTxn +} + +export function EthSendRequestContent({ request }: EthSendRequestContentProps): JSX.Element { + const { dappRequest } = request + const { dappUrl, onConfirm, onCancel } = useDappRequestQueueContext() + const chainId = useDappLastChainId(dappUrl) + + // Gas service requires a chain id + const formattedTxnForGasQuery = { ...dappRequest.transaction, chainId } + + const transactionGasFeeResult = useTransactionGasFee( + formattedTxnForGasQuery, + /*speed=*/ GasSpeed.Urgent, + /*skip=*/ !formattedTxnForGasQuery, + /*pollingInterval=*/ PollingInterval.LightningMcQueen, + ) + + const isInvalidGasFeeResult = isInvalidGasFeeResultForEthSend(transactionGasFeeResult) + + useEffect(() => { + if (isInvalidGasFeeResult) { + logger.error( + new Error(transactionGasFeeResult.error?.toString() ?? 'Empty gas fee result for dapp txn request.'), + { + tags: { file: 'features/dappRequests/DappRequestContent, ', function: 'DappRequest' }, + extra: { dappRequest }, + }, + ) + } + }, [dappRequest, isInvalidGasFeeResult, transactionGasFeeResult]) + + const requestWithGasValues = useMemo(() => { + const txnWithFormattedGasEstimates = formatExternalTxnWithGasEstimates({ + transaction: dappRequest.transaction, + gasFeeResult: transactionGasFeeResult, + }) + + return { + ...request, + dappRequest: { + ...request.dappRequest, + transaction: txnWithFormattedGasEstimates, + }, + } + }, [dappRequest.transaction, request, transactionGasFeeResult]) + + const onConfirmRequest = useCallback( + async (transactionTypeInfo?: TransactionTypeInfo) => { + await onConfirm(requestWithGasValues, transactionTypeInfo) + }, + [onConfirm, requestWithGasValues], + ) + + const onCancelRequest = useCallback(async () => { + await onCancel(requestWithGasValues) + }, [onCancel, requestWithGasValues]) + + if (isSwapRequest(dappRequest)) { + return ( + + ) + } else if (isLPRequest(dappRequest)) { + return ( + + ) + } else if (isApproveRequest(dappRequest)) { + return ( + + ) + } else { + return ( + + ) + } +} + +function isInvalidGasFeeResultForEthSend(gasFeeResult: GasFeeResult): boolean { + return !!gasFeeResult.error || (!gasFeeResult.loading && (!gasFeeResult.params || !gasFeeResult.value)) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/FallbackEthSend/FallbackEthSend.tsx b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/FallbackEthSend/FallbackEthSend.tsx new file mode 100644 index 00000000000..ac106dc3797 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/FallbackEthSend/FallbackEthSend.tsx @@ -0,0 +1,118 @@ +import { BigNumber } from 'ethers' +import { useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { useDappLastChainId } from 'src/app/features/dapp/hooks' +import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent' +import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext' +import { SendTransactionRequest } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { useCopyToClipboard } from 'src/app/hooks/useOnCopyToClipboard' +import { Anchor, Flex, Text, TouchableArea } from 'ui/src' +import { AnimatedCopySheets, ExternalLink } from 'ui/src/components/icons' +import { ellipseMiddle, shortenAddress } from 'utilities/src/addresses' +import { GasFeeResult } from 'wallet/src/features/gas/types' +import { CopyNotificationType } from 'wallet/src/features/notifications/types' +import { ContentRow } from 'wallet/src/features/transactions/TransactionRequest/ContentRow' +import { SpendingDetails } from 'wallet/src/features/transactions/TransactionRequest/SpendingDetails' +import { ExplorerDataType, getExplorerLink } from 'wallet/src/utils/linking' + +interface FallbackEthSendRequestProps { + transactionGasFeeResult: GasFeeResult + dappRequest: SendTransactionRequest + onCancel: () => Promise + onConfirm: () => Promise +} + +export function FallbackEthSendRequestContent({ + dappRequest, + transactionGasFeeResult, + onCancel, + onConfirm, +}: FallbackEthSendRequestProps): JSX.Element | null { + const { t } = useTranslation() + const { dappUrl } = useDappRequestQueueContext() + const activeChain = useDappLastChainId(dappUrl) + + const { value: sending, to: toAddress, chainId: transactionChainId } = dappRequest.transaction + const chainId = transactionChainId || activeChain + const recipientLink = chainId && toAddress ? getExplorerLink(chainId, toAddress, ExplorerDataType.ADDRESS) : '' + const contractFunction = dappRequest.transaction.type + const calldata = dappRequest.transaction.data + + const copyToClipboard = useCopyToClipboard() + + const copyCalldata = useCallback( + () => + copyToClipboard({ + textToCopy: calldata, + copyType: CopyNotificationType.Calldata, + }), + [calldata, copyToClipboard], + ) + + return ( + + + {sending && !BigNumber.from(sending).eq(0) && chainId && } + {toAddress && ( + + + + + {shortenAddress(toAddress)} + + + + + + )} + + + {contractFunction || t('common.text.unknown')} + + + {calldata && ( + + + + {ellipseMiddle(calldata)} + + + + + )} + + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/LP/LPRequestContent.tsx b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/LP/LPRequestContent.tsx new file mode 100644 index 00000000000..ea1615cc2c5 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/LP/LPRequestContent.tsx @@ -0,0 +1,49 @@ +import { useTranslation } from 'react-i18next' +import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent' +import { LPSendTransactionRequest } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { Flex, Text } from 'ui/src' +import { GasFeeResult } from 'wallet/src/features/gas/types' + +interface LPRequestContentProps { + transactionGasFeeResult: GasFeeResult + dappRequest: LPSendTransactionRequest + onCancel: () => Promise + onConfirm: () => Promise +} + +export function LPRequestContent({ + dappRequest, + transactionGasFeeResult, + onCancel, + onConfirm, +}: LPRequestContentProps): JSX.Element { + const { t } = useTranslation() + + return ( + + + {dappRequest.parsedCalldata.commands.map((command) => ( + + {command.commandName} + + ))} + + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/SwapRequestContent.tsx b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/SwapRequestContent.tsx new file mode 100644 index 00000000000..28bd0f53c19 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/SwapRequestContent.tsx @@ -0,0 +1,291 @@ +/* eslint-disable complexity */ +import { useTranslation } from 'react-i18next' +import { useDappLastChainId } from 'src/app/features/dapp/hooks' +import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent' +import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext' +import { formatUnits } from 'src/app/features/dappRequests/requestContent/EthSend/Swap/utils' +import { SwapSendTransactionRequest } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { + AmountInMaxParam, + AmountInParam, + AmountOutMinParam, + AmountOutParam, + Param, + UniversalRouterCommand, + isAmountInMaxParam, + isAmountInParam, + isAmountOutMinParam, + isAmountOutParam, + isURCommandASwap, +} from 'src/app/features/dappRequests/types/UniversalRouterTypes' +import { Flex, Separator, Text } from 'ui/src' +import { ArrowDown } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { CurrencyLogo } from 'uniswap/src/components/CurrencyLogo/CurrencyLogo' +import { CurrencyInfo } from 'uniswap/src/features/dataApi/types' +import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' +import { buildCurrencyId } from 'uniswap/src/utils/currencyId' +import { assert } from 'utilities/src/errors' +import { NumberType } from 'utilities/src/format/types' +import { SplitLogo } from 'wallet/src/components/CurrencyLogo/SplitLogo' +import { GasFeeResult } from 'wallet/src/features/gas/types' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { NativeCurrency } from 'wallet/src/features/tokens/NativeCurrency' +import { useCurrencyInfo } from 'wallet/src/features/tokens/useCurrencyInfo' +import { useUSDCValue } from 'wallet/src/features/transactions/swap/trade/hooks/useUSDCPrice' +import { TransactionType, TransactionTypeInfo } from 'wallet/src/features/transactions/types' +import { ValueType, getCurrencyAmount } from 'wallet/src/utils/getCurrencyAmount' + +function extractPathValues(commands: UniversalRouterCommand[]): { + inputAddress: string | undefined + outputAddress: string | undefined +} { + let inputAddress: string | undefined + let outputAddress: string | undefined + for (const command of commands) { + const param: Param | undefined = command.params.find(({ name }) => name === 'path') + if (!param) { + continue + } + // matches V2SwapExact[In|Out] + if (command.commandName.startsWith('V2SwapExact')) { + const path = param.value as string[] + const first = path[0] + if (first && !inputAddress) { + inputAddress = first + } + const last = path[path.length - 1] + if (last) { + outputAddress = last + } + } + // matches V3SwapExact[In|Out] + if (command.commandName.startsWith('V3SwapExact')) { + const path = param.value as { fee: number; tokenIn: string; tokenOut: string }[] + const first = path[0] + if (first && !inputAddress) { + inputAddress = first.tokenIn + } + const last = path[path.length - 1] + if (last) { + outputAddress = last.tokenOut + } + } + } + return { inputAddress, outputAddress } +} + +function useSwapCurrencyIdentifiers( + request: SwapSendTransactionRequest, + dappUrl: string, +): { inputIdentifier: string | undefined; outputIdentifier: string | undefined } { + const activeChain = useDappLastChainId(dappUrl) + return getSwapCurrencyIdentifiers(request, activeChain) +} + +export function getSwapCurrencyIdentifiers( + request: SwapSendTransactionRequest, + activeChain: WalletChainId | undefined, +): { inputIdentifier: string | undefined; outputIdentifier: string | undefined } { + const { inputAddress, outputAddress } = extractPathValues(request.parsedCalldata.commands) + + const inputIdentifier = activeChain && inputAddress ? buildCurrencyId(activeChain, inputAddress) : undefined + const outputIdentifier = activeChain && outputAddress ? buildCurrencyId(activeChain, outputAddress) : undefined + + return { inputIdentifier, outputIdentifier } +} + +function getTransactionTypeInfo({ + inputCurrencyInfo, + outputCurrencyInfo, + inputAmountRaw, + outputAmountRaw, +}: { + inputCurrencyInfo: Maybe + outputCurrencyInfo: Maybe + inputAmountRaw: string + outputAmountRaw: string +}): TransactionTypeInfo | undefined { + return inputCurrencyInfo?.currencyId && outputCurrencyInfo?.currencyId + ? { + type: TransactionType.Swap, + tradeType: 0, // TradeType.EXACT_INPUT, but TradeType doesn't matter for the UI + inputCurrencyId: inputCurrencyInfo?.currencyId, + outputCurrencyId: outputCurrencyInfo?.currencyId, + inputCurrencyAmountRaw: inputAmountRaw, + expectedOutputCurrencyAmountRaw: outputAmountRaw, + minimumOutputCurrencyAmountRaw: outputAmountRaw, + } + : undefined +} + +interface SwapRequestContentProps { + transactionGasFeeResult: GasFeeResult + dappRequest: SwapSendTransactionRequest + onCancel: () => Promise + onConfirm: (transactionTypeInfo?: TransactionTypeInfo) => Promise +} + +export function SwapRequestContent({ + transactionGasFeeResult, + dappRequest, + onCancel, + onConfirm, +}: SwapRequestContentProps): JSX.Element { + const { t } = useTranslation() + const { dappUrl } = useDappRequestQueueContext() + const { formatCurrencyAmount } = useLocalizationContext() + const activeChain = useDappLastChainId(dappUrl) + + const { inputIdentifier, outputIdentifier } = useSwapCurrencyIdentifiers(dappRequest, dappUrl) + + const inputCurrencyInfo = useCurrencyInfo(inputIdentifier) + const outputCurrencyInfo = useCurrencyInfo(outputIdentifier) + + const isFirstCommandWrappingEth = dappRequest.parsedCalldata.commands[0]?.commandName === 'WrapEth' + const isLastCommandUnwrappingEth = + dappRequest.parsedCalldata.commands[dappRequest.parsedCalldata.commands.length - 1]?.commandName === 'UnwrapWeth' + + const nativeCurrency = NativeCurrency.onChain(activeChain || UniverseChainId.Mainnet) + + const nativeInput = isFirstCommandWrappingEth && inputCurrencyInfo?.currency.equals(nativeCurrency.wrapped) + const nativeOutput = isLastCommandUnwrappingEth && outputCurrencyInfo?.currency.equals(nativeCurrency.wrapped) + const currency0 = nativeInput ? nativeCurrency : inputCurrencyInfo?.currency + const currency1 = nativeOutput ? nativeCurrency : outputCurrencyInfo?.currency + + const firstSwapCommand = dappRequest.parsedCalldata.commands.find(isURCommandASwap) + const lastSwapCommand = dappRequest.parsedCalldata.commands.findLast(isURCommandASwap) + + assert( + firstSwapCommand && lastSwapCommand, + 'SwapRequestContent: All swaps must have a defined input and output Universal Router command.', + ) + + function isAmountInOrMaxParam(param: Param): param is AmountInParam | AmountInMaxParam { + return isAmountInParam(param) || isAmountInMaxParam(param) + } + + function isAmountOutMinOrOutParam(param: Param): param is AmountOutMinParam | AmountOutParam { + return isAmountOutMinParam(param) || isAmountOutParam(param) + } + + // Ideally we would render some UI that makes it clear when you can expect minAmountOut instead of rendering what might look like a bad deal + const firstAmountInParam = firstSwapCommand?.params.find(isAmountInOrMaxParam) + const lastAmountOutParam = lastSwapCommand?.params.find(isAmountOutMinOrOutParam) + + assert( + firstAmountInParam && lastAmountOutParam, + 'SwapRequestContent: All swaps must have a defined input and output amount parameter.', + ) + + const inputAmount = formatUnits( + firstAmountInParam?.value || '0', // should always be defined--`assert` above catches this case + inputCurrencyInfo?.currency.decimals || 18, + ) + const outputAmount = formatUnits( + lastAmountOutParam?.value || '0', // should always be defined--`assert` above catches this case + outputCurrencyInfo?.currency.decimals || 18, + ) + + const inputCurrencyAmount = getCurrencyAmount({ + value: inputAmount, + valueType: ValueType.Exact, + currency: inputCurrencyInfo?.currency, + }) + const inputValue = useUSDCValue(inputCurrencyAmount) + + const outputCurrencyAmount = getCurrencyAmount({ + value: outputAmount, + valueType: ValueType.Exact, + currency: outputCurrencyInfo?.currency, + }) + const outputValue = useUSDCValue(outputCurrencyAmount) + + const showSwapDetails = Boolean(currency0?.symbol && currency1?.symbol) + const showSplitLogo = Boolean(inputCurrencyInfo?.logoUrl && outputCurrencyInfo?.logoUrl) + + // TODO (EXT-1083): add USDC values to SwapTransactionTypeInfo and display on notification toast + // Need the raw uint256 amounts, not the exact floating point amounts + const inputAmountRaw = formatUnits( + firstAmountInParam?.value || '0', // should always be defined--`assert` above catches this case + 0, + ) + const outputAmountRaw = formatUnits( + lastAmountOutParam?.value || '0', // should always be defined--`assert` above catches this case + 0, + ) + const transactionTypeInfo = getTransactionTypeInfo({ + inputCurrencyInfo, + outputCurrencyInfo, + inputAmountRaw, + outputAmountRaw, + }) + const onConfirmWithTransactionTypeInfo = (): Promise => onConfirm(transactionTypeInfo) + + return ( + + ) : undefined + } + title={ + currency0?.symbol && currency1?.symbol + ? t('swap.request.title.full', { + inputCurrencySymbol: currency0?.symbol, + outputCurrencySymbol: currency1?.symbol, + }) + : t('swap.request.title.short') + } + transactionGasFeeResult={transactionGasFeeResult} + onCancel={onCancel} + onConfirm={onConfirmWithTransactionTypeInfo} + > + {showSwapDetails && ( + <> + + + + + + {formatCurrencyAmount({ value: inputCurrencyAmount, type: NumberType.TokenTx })} {currency0?.symbol} + + + {formatCurrencyAmount({ value: inputValue, type: NumberType.FiatTokenPrice })} + + + + + + + + + {formatCurrencyAmount({ value: outputCurrencyAmount, type: NumberType.TokenTx })} {currency1?.symbol} + + + {formatCurrencyAmount({ value: outputValue, type: NumberType.FiatTokenPrice })} + + + + + + + )} + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/constants.ts b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/constants.ts new file mode 100644 index 00000000000..9b5861bb32e --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/constants.ts @@ -0,0 +1,13 @@ +import { BigNumber } from 'ethers' + +export const CONTRACT_BALANCE = BigNumber.from(2).pow(255) +export const ETH_ADDRESS = '0x0000000000000000000000000000000000000000' +export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' +export const MAX_UINT256 = BigNumber.from(2).pow(256).sub(1) +export const MAX_UINT160 = BigNumber.from(2).pow(160).sub(1) + +export const SENDER_AS_RECIPIENT = '0x0000000000000000000000000000000000000001' +export const ROUTER_AS_RECIPIENT = '0x0000000000000000000000000000000000000002' + +export const OPENSEA_CONDUIT_SPENDER_ID = 0 +export const SUDOSWAP_SPENDER_ID = 1 diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/universalRouter.ts b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/universalRouter.ts new file mode 100644 index 00000000000..d1a19f49f3b --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/universalRouter.ts @@ -0,0 +1,110 @@ +import { SwapRouter } from '@uniswap/universal-router-sdk' +import { ethers } from 'ethers' +import { + ABI_DEFINITION, + CommandName, + CommandType, + Subparser, + UniversalRouterCall, + UniversalRouterCommand, +} from 'src/app/features/dappRequests/types/UniversalRouterTypes' + +export function parseCalldata(calldata: string): UniversalRouterCall { + const iface = SwapRouter.INTERFACE + const txDescription = iface.parseTransaction({ data: calldata }) + const { commands, inputs } = txDescription.args + // map hex string to bytes + const commandTypes: CommandType[] = [] + + // Start iterating from the third character to skip the "0x" prefix + for (let i = 2; i < commands.length; i += 2) { + // Get two characters from the hexString + const byte = commands.substr(i, 2) + + // Convert it to a number and add it to the values array + commandTypes.push(parseInt(byte, 16) as CommandType) + } + + const parsedCommands = commandTypes.map((commandType: CommandType, i: number): UniversalRouterCommand => { + const abiDef = ABI_DEFINITION[commandType] + const rawParams = ethers.utils.defaultAbiCoder.decode( + abiDef.map((command) => command.type), + inputs[i], + ) + const params = rawParams.map((param, j: number) => { + const fragment = abiDef[j] + if (fragment && fragment.subparser === Subparser.V3PathExactIn) { + return { + name: fragment.name, + value: parseV3PathExactIn(param), + } + } else if (fragment && fragment.subparser === Subparser.V3PathExactOut) { + return { + name: fragment.name, + value: parseV3PathExactOut(param), + } + } else { + return { + name: fragment?.name || '', + value: param, + } + } + }) + return { + commandName: CommandType[commandType] as CommandName, + commandType, + params, + } + }) + return { commands: parsedCommands } +} + +export type V3PathItem = { + readonly tokenIn: string + readonly tokenOut: string + readonly fee: number +} + +export function parseV3PathExactIn(path: string): readonly V3PathItem[] { + const strippedPath = path.replace('0x', '') + let tokenIn = ethers.utils.getAddress(strippedPath.substr(0, 40)) + let loc = 40 + const res = [] + while (loc < strippedPath.length) { + const feeAndTokenOut = strippedPath.substr(loc, 46) + const fee = parseInt(feeAndTokenOut.substr(0, 6), 16) + const tokenOut = ethers.utils.getAddress(feeAndTokenOut.substr(6, 40)) + + res.push({ + tokenIn, + tokenOut, + fee, + }) + tokenIn = tokenOut + loc += 46 + } + + return res +} + +export function parseV3PathExactOut(path: string): readonly V3PathItem[] { + const strippedPath = path.replace('0x', '') + let tokenIn = ethers.utils.getAddress(strippedPath.substr(strippedPath.length - 40, 40)) + let loc = strippedPath.length - 86 // 86 = (20 addr + 3 fee + 20 addr) * 2 (for hex characters) + const res = [] + while (loc >= 0) { + const feeAndTokenOut = strippedPath.substr(loc, 46) + const tokenOut = ethers.utils.getAddress(feeAndTokenOut.substr(0, 40)) + const fee = parseInt(feeAndTokenOut.substr(40, 6), 16) + + res.push({ + tokenIn, + tokenOut, + fee, + }) + tokenIn = tokenOut + loc -= 46 + } + + return res +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/utils.ts b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/utils.ts new file mode 100644 index 00000000000..639f1aba029 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/utils.ts @@ -0,0 +1,70 @@ +import { BigNumber, BigNumberish } from 'ethers' +import { formatUnits as formatUnitsEthers } from 'ethers/lib/utils' +import { + CONTRACT_BALANCE, + MAX_UINT160, + MAX_UINT256, +} from 'src/app/features/dappRequests/requestContent/EthSend/Swap/constants' +import { CommandType, UniversalRouterCall } from 'src/app/features/dappRequests/types/UniversalRouterTypes' + +export type MinimalToken = { + address: string + symbol: string + decimals: number +} +export type TokenDetails = { [address: string]: MinimalToken } + +export type V3TokenInPath = { + tokenIn: string + tokenOut: string + fee: number +} + +export function findErc20TokensToPrepare(urCall: UniversalRouterCall): string[] { + const tokenAddresses: string[] = [] + urCall.commands.forEach((command) => { + switch (command.commandType) { + case CommandType.V2SwapExactIn: + case CommandType.V2SwapExactOut: { + const tokensInPath: string[] | undefined = command.params.find((param) => param.name === 'path')?.value + tokensInPath?.forEach((tokenAddr: string) => tokenAddresses.push(tokenAddr)) + break + } + case CommandType.V3SwapExactIn: + case CommandType.V3SwapExactOut: { + const pools: V3TokenInPath[] | undefined = command.params.find((param) => param.name === 'path')?.value + pools?.forEach(({ tokenIn, tokenOut }) => { + tokenAddresses.push(tokenIn) + tokenAddresses.push(tokenOut) + }) + break + } + case CommandType.PayPortion: + case CommandType.SWEEP: + case CommandType.TRANSFER: { + const tokenAddr = command.params.find((param) => param.name === 'token')?.value + if (tokenAddr) { + tokenAddresses.push(tokenAddr) + } + break + } + } + }) + + return Array.from(new Set(tokenAddresses)) +} + +// Like ethers.formatUnits except it parses specific constants +export function formatUnits(amount: BigNumberish, units: number): string { + if (BigNumber.from(CONTRACT_BALANCE).eq(amount)) { + return 'CONTRACT_BALANCE' + } + if (BigNumber.from(MAX_UINT256).eq(amount)) { + return 'MAX_UINT256' + } + if (BigNumber.from(MAX_UINT160).eq(amount)) { + return 'MAX_UINT160' + } + + return formatUnitsEthers(amount, units) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/NetworkFooter.test.tsx b/apps/extension/src/app/features/dappRequests/requestContent/NetworkFooter.test.tsx new file mode 100644 index 00000000000..582a57f48e7 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/NetworkFooter.test.tsx @@ -0,0 +1,11 @@ +import { NetworksFooter } from 'src/app/features/dappRequests/requestContent/NetworksFooter' +import { cleanup, render } from 'src/test/test-utils' + +describe(NetworksFooter, () => { + it('renders without error', async () => { + const tree = render() + + expect(tree).toMatchSnapshot() + cleanup() + }) +}) diff --git a/apps/extension/src/app/features/dappRequests/requestContent/NetworksFooter.tsx b/apps/extension/src/app/features/dappRequests/requestContent/NetworksFooter.tsx new file mode 100644 index 00000000000..70130bc007f --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/NetworksFooter.tsx @@ -0,0 +1,20 @@ +import { useTranslation } from 'react-i18next' +import { Flex, Text } from 'ui/src' +import { iconSizes } from 'ui/src/theme' +import { NetworksInSeries } from 'uniswap/src/components/network/NetworkFilter' +import { WALLET_SUPPORTED_CHAIN_IDS } from 'uniswap/src/types/chains' + +export function NetworksFooter(): JSX.Element { + const { t } = useTranslation() + + return ( + + + + {t('extension.connection.networks')} + + + + + ) +} diff --git a/apps/extension/src/app/features/dappRequests/requestContent/PersonalSign/PersonalSignRequestContent.tsx b/apps/extension/src/app/features/dappRequests/requestContent/PersonalSign/PersonalSignRequestContent.tsx new file mode 100644 index 00000000000..5a59a2f7250 --- /dev/null +++ b/apps/extension/src/app/features/dappRequests/requestContent/PersonalSign/PersonalSignRequestContent.tsx @@ -0,0 +1,124 @@ +import { ethers } from 'ethers' +import { useEffect, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent' +import { SignMessageRequest } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { Button, Flex, Text, Tooltip } from 'ui/src' +import { AlertTriangle, Code, StickyNoteTextSquare } from 'ui/src/components/icons' +import { containsNonPrintableChars } from 'utilities/src/primitives/string' + +enum ViewEncoding { + UTF8, + HEX, +} +interface PersonalSignRequestProps { + dappRequest: SignMessageRequest +} + +export function PersonalSignRequestContent({ dappRequest }: PersonalSignRequestProps): JSX.Element | null { + const { t } = useTranslation() + + const [viewEncoding, setViewEncoding] = useState(ViewEncoding.UTF8) + const toggleViewEncoding = (): void => + setViewEncoding(viewEncoding === ViewEncoding.UTF8 ? ViewEncoding.HEX : ViewEncoding.UTF8) + + const hexMessage = dappRequest.messageHex + const utf8Message = ethers.utils.toUtf8String(hexMessage) // Already validated in schema + + const containsUnrenderableCharacters = containsNonPrintableChars(utf8Message) + + const [isScrollable, setIsScrollable] = useState(false) + const messageRef = useRef(null) + useEffect(() => { + const checkScroll = (): void => { + if (!messageRef.current) { + return + } + setIsScrollable(messageRef.current.scrollHeight > messageRef.current.clientHeight) + } + + checkScroll() + window.addEventListener('resize', checkScroll) + + return () => window.removeEventListener('resize', checkScroll) + }, [setIsScrollable, viewEncoding]) + + return ( + + + + {viewEncoding === ViewEncoding.UTF8 ? utf8Message : hexMessage} + + + + + + + + ) + })} + + + + + + ) +} diff --git a/apps/extension/src/app/features/home/TokenBalanceList.tsx b/apps/extension/src/app/features/home/TokenBalanceList.tsx new file mode 100644 index 00000000000..5b8f069107f --- /dev/null +++ b/apps/extension/src/app/features/home/TokenBalanceList.tsx @@ -0,0 +1,189 @@ +import { SharedEventName } from '@uniswap/analytics-events' +import { PropsWithChildren, memo } from 'react' +import { useTranslation } from 'react-i18next' +import { useInterfaceBuyNavigator } from 'src/app/features/for/utils' +import { AppRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { AnimatePresence, ContextMenu, Flex, Loader } from 'ui/src' +import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard' +import { PortfolioBalance } from 'uniswap/src/features/dataApi/types' +import { ElementName, SectionName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' +import { isNonPollingRequestInFlight } from 'wallet/src/data/utils' +import { HiddenTokensRow } from 'wallet/src/features/portfolio/HiddenTokensRow' +import { PortfolioEmptyState } from 'wallet/src/features/portfolio/PortfolioEmptyState' +import { TokenBalanceItem } from 'wallet/src/features/portfolio/TokenBalanceItem' +import { + HIDDEN_TOKEN_BALANCES_ROW, + TokenBalanceListContextProvider, + TokenBalanceListRow, + useTokenBalanceListContext, +} from 'wallet/src/features/portfolio/TokenBalanceListContext' +import { useTokenContextMenu } from 'wallet/src/features/portfolio/useTokenContextMenu' + +const MIN_CONTEXT_MENU_WIDTH = 200 + +type TokenBalanceListProps = { + owner: Address +} + +export const TokenBalanceList = memo(function _TokenBalanceList({ owner }: TokenBalanceListProps): JSX.Element { + const { navigateToTokenDetails } = useWalletNavigation() + + const onPressToken = (currencyId: string): void => { + sendAnalyticsEvent(SharedEventName.ELEMENT_CLICKED, { + element: ElementName.TokenItem, + section: SectionName.HomeTokensTab, + }) + navigateToTokenDetails(currencyId) + } + + return ( + + + + + + ) +}) + +export function TokenBalanceListInner(): JSX.Element { + const { t } = useTranslation() + + const { rows, balancesById, networkStatus, refetch, hiddenTokensExpanded } = useTokenBalanceListContext() + const onPressBuy = useInterfaceBuyNavigator(ElementName.EmptyStateBuy) + + const visible: string[] = [] + const hidden: string[] = [] + + let isHidden = false + for (const row of rows) { + const target = isHidden ? hidden : visible + target.push(row) + // do this after pushing so we keep our Hidden header row in the visible section + // so users can see it when closed and re-open it + if (row === HIDDEN_TOKEN_BALANCES_ROW) { + isHidden = true + } + } + + const onPressReceive = (): void => { + navigate(AppRoutes.Receive) + } + + return ( + + {!balancesById ? ( + isNonPollingRequestInFlight(networkStatus) ? ( + + + + ) : ( + + refetch?.()} + /> + + ) + ) : rows.length === 0 ? ( + + ) : ( + <> + + + {hiddenTokensExpanded && } + + + )} + + ) +} + +const TokenBalanceItems = ({ animated, rows }: { animated?: boolean; rows: string[] }): JSX.Element => { + return ( + + {rows?.map((balance: TokenBalanceListRow) => { + return + })} + + ) +} + +const TokenBalanceItemRow = memo(function TokenBalanceItemRow({ item }: { item: TokenBalanceListRow }) { + const { + balancesById, + hiddenTokensCount, + hiddenTokensExpanded, + isWarmLoading, + onPressToken, + setHiddenTokensExpanded, + } = useTokenBalanceListContext() + + if (item === HIDDEN_TOKEN_BALANCES_ROW) { + return ( + { + setHiddenTokensExpanded(!hiddenTokensExpanded) + }} + /> + ) + } + + const portfolioBalance = balancesById?.[item] + + if (!portfolioBalance) { + // This can happen when the view is out of focus and the user sells/sends 100% of a token's balance. + // In that case, the token is removed from the `balancesById` object, but the FlatList is still using the cached array of IDs until the view comes back into focus. + // As soon as the view comes back into focus, the FlatList will re-render with the latest data, so users won't really see this Skeleton for more than a few milliseconds when this happens. + return ( + + + + ) + } + + return ( + + + + ) +}) + +function TokenContextMenu({ + children, + portfolioBalance, +}: PropsWithChildren<{ + portfolioBalance: PortfolioBalance +}>): JSX.Element { + const contextMenu = useTokenContextMenu({ + currencyId: portfolioBalance.currencyInfo.currencyId, + tokenSymbolForNotification: portfolioBalance?.currencyInfo?.currency?.symbol, + portfolioBalance, + }) + + const menuOptions = contextMenu.menuActions.map((action) => ({ + label: action.title, + onPress: action.onPress, + Icon: action.Icon, + destructive: action.destructive, + })) + + const itemId = `${portfolioBalance.currencyInfo.currencyId}-${portfolioBalance.isHidden}` + + return ( + + {children} + + ) +} diff --git a/apps/extension/src/app/features/lockScreen/Locked.tsx b/apps/extension/src/app/features/lockScreen/Locked.tsx new file mode 100644 index 00000000000..61ebbe0baa9 --- /dev/null +++ b/apps/extension/src/app/features/lockScreen/Locked.tsx @@ -0,0 +1,256 @@ +import { useCallback, useLayoutEffect, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Input } from 'src/app/components/Input' +import { PasswordInput } from 'src/app/components/PasswordInput' +import { BottomModalProps, InfoModal } from 'src/app/components/modal/InfoModal' +import { useSagaStatus } from 'src/app/hooks/useSagaStatus' +import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants' +import { focusOrCreateOnboardingTab } from 'src/app/navigation/utils' +import { useAppDispatch } from 'src/store/store' +import { Button, Flex, InputProps, Text, TouchableArea } from 'ui/src' +import { AlertTriangle, Lock } from 'ui/src/components/icons' +import { spacing, zIndices } from 'ui/src/theme' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { LandingBackground } from 'wallet/src/components/landing/LandingBackground' +import { authActions, authSagaName } from 'wallet/src/features/auth/saga' +import { AuthActionType, AuthSagaError } from 'wallet/src/features/auth/types' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' +import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' +import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { SagaStatus } from 'wallet/src/utils/saga' + +export function usePasswordInput(defaultValue = ''): Pick & { value: string } { + const [value, setValue] = useState(defaultValue) + + const onChangeText: InputProps['onChangeText'] = (newValue): void => { + setValue(newValue) + } + + return { + value, + disabled: !value, + onChangeText, + } +} + +enum ForgotPasswordModalStep { + Initial, + Speedbump, +} + +const CONTAINER_PADDING_TOP_MIN = 50 +const CONTAINER_PADDING_TOP_MAX = 220 +const BACKGROUND_CIRCLE_INNER_SIZE = 140 +const BACKGROUND_CIRCLE_OUTER_SIZE = 250 + +export function Locked(): JSX.Element { + const dispatch = useAppDispatch() + const { t } = useTranslation() + const { value: enteredPassword, onChangeText: onChangePasswordText } = usePasswordInput() + const associatedAccounts = useSignerAccounts() + + const onChangeText = useCallback( + (text: string) => { + if (onChangePasswordText) { + onChangePasswordText?.(text) + } + }, + [onChangePasswordText], + ) + + const { status, error } = useSagaStatus(authSagaName, undefined, false) + + const onPress = async (): Promise => { + await dispatch( + authActions.trigger({ + type: AuthActionType.Unlock, + password: enteredPassword, + }), + ) + } + + const [forgotPasswordModalOpen, setForgotPasswordModalOpen] = useState(false) + const [modalStep, setModalStep] = useState(ForgotPasswordModalStep.Initial) + const scantasticOnboardingOnly = useFeatureFlag(FeatureFlags.ScantasticOnboardingOnly) + + const openRecoveryTab = (): Promise => + focusOrCreateOnboardingTab( + `${TopLevelRoutes.Onboarding}/${scantasticOnboardingOnly ? OnboardingRoutes.ResetScan : OnboardingRoutes.Reset}`, + ) + + const onStartResettingWallet = async (): Promise => { + const currAccount = associatedAccounts[0] + + if (currAccount?.mnemonicId) { + await Keyring.removeMnemonic(currAccount?.mnemonicId) + } + await Keyring.removePassword() + + // We open the recovery tab before removing the accounts so that the proper reset route is loaded. + // Otherwise, the main onboarding route is automatically loaded when accounts are all removed, and then a duplicate recovery tab is opened. + // The standard onboarding open logic triggers but doesn't update the path because the generic one doesn't have a path specified. + await openRecoveryTab() + + await dispatch( + editAccountActions.trigger({ + type: EditAccountAction.Remove, + accounts: associatedAccounts, + }), + ) + } + + const isIncorrectPassword = status === SagaStatus.Failure && error === AuthSagaError.InvalidPassword + + const inputRef = useRef(null) + const [hideInput, setHideInput] = useState(true) + const toggleHideInput = (): void => setHideInput(!hideInput) + + useLayoutEffect(() => { + if (isIncorrectPassword) { + inputRef.current?.focus() + } + }, [isIncorrectPassword]) + + const modalProps: Record = { + [ForgotPasswordModalStep.Initial]: { + buttonText: t('extension.lock.button.reset'), + description: t('extension.lock.password.reset.initial.description'), + linkText: t('extension.lock.password.reset.initial.help'), + linkUrl: uniswapUrls.helpArticleUrls.recoveryPhraseHowToFind, + icon: ( + + + + ), + isOpen: forgotPasswordModalOpen, + name: ModalName.ForgotPassword, + onButtonPress: (): void => setModalStep(ForgotPasswordModalStep.Speedbump), + title: t('extension.lock.password.reset.initial.title'), + }, + [ForgotPasswordModalStep.Speedbump]: { + buttonText: t('common.button.continue'), + description: t('extension.lock.password.reset.speedbump.description'), + linkText: t('extension.lock.password.reset.speedbump.help'), + linkUrl: uniswapUrls.helpArticleUrls.recoveryPhraseForgotten, + icon: ( + + + + ), + isOpen: forgotPasswordModalOpen, + name: ModalName.ForgotPassword, + onButtonPress: onStartResettingWallet, + title: t('extension.lock.password.reset.speedbump.title'), + }, + } + + const [inputHeight, setInputHeight] = useState(0) + const [containerPaddingTop, setContainerPaddingTop] = useState(CONTAINER_PADDING_TOP_MAX) + const [availableHeight, setAvailableHeight] = useState(0) + + useLayoutEffect(() => { + if (availableHeight && inputHeight) { + const containerHeight = inputHeight + spacing.spacing32 + const newPaddingTop = Math.min( + Math.max(CONTAINER_PADDING_TOP_MIN, availableHeight - containerHeight), + CONTAINER_PADDING_TOP_MAX, + ) + + setContainerPaddingTop(newPaddingTop) + } + }, [availableHeight, inputHeight]) + + return ( + <> + + setAvailableHeight(e.nativeEvent.layout.height)}> + + + + setInputHeight(e.nativeEvent.layout.height)} + > + + + {t('extension.lock.title')} + + + + {t('extension.lock.subtitle')} + + + + + + + + + {t('extension.lock.password.error')} + + + + + + + + + + + setForgotPasswordModalOpen(true)} + > + {t('extension.lock.button.forgot')} + + + + + + { + setModalStep(ForgotPasswordModalStep.Initial) + setForgotPasswordModalOpen(false) + }} + /> + + ) +} diff --git a/apps/extension/src/app/features/notifications/NotificationToastWrapper.tsx b/apps/extension/src/app/features/notifications/NotificationToastWrapper.tsx new file mode 100644 index 00000000000..5bfb74defb2 --- /dev/null +++ b/apps/extension/src/app/features/notifications/NotificationToastWrapper.tsx @@ -0,0 +1,36 @@ +import { DappConnectedNotification } from 'wallet/src/features/notifications/components/DappConnectedNotification' +import { DappDisconnectedNotification } from 'wallet/src/features/notifications/components/DappDisconnectedNotification' +import { NotSupportedNetworkNotification } from 'wallet/src/features/notifications/components/NotSupportedNetworkNotification' +import { PasswordChangedNotification } from 'wallet/src/features/notifications/components/PasswordChangedNotification' +import { SharedNotificationToastRouter } from 'wallet/src/features/notifications/components/SharedNotificationToastRouter' +import { selectActiveAccountNotifications } from 'wallet/src/features/notifications/selectors' +import { AppNotification, AppNotificationType } from 'wallet/src/features/notifications/types' +import { useAppSelector } from 'wallet/src/state' + +export function NotificationToastWrapper(): JSX.Element | null { + const notifications = useAppSelector(selectActiveAccountNotifications) + const notification = notifications?.[0] + + if (!notification) { + return null + } + + return +} + +function NotificationToastRouter({ notification }: { notification: AppNotification }): JSX.Element | null { + // Insert Extension-only notifications here. + // Shared wallet notifications should go in SharedNotificationToastRouter. + switch (notification.type) { + case AppNotificationType.DappConnected: + return + case AppNotificationType.NotSupportedNetwork: + return + case AppNotificationType.DappDisconnected: + return + case AppNotificationType.PasswordChanged: + return + } + + return +} diff --git a/apps/extension/src/app/features/onboarding/Complete.tsx b/apps/extension/src/app/features/onboarding/Complete.tsx new file mode 100644 index 00000000000..dc13162a5e3 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/Complete.tsx @@ -0,0 +1,88 @@ +import { useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { KeyboardKey } from 'src/app/features/onboarding/KeyboardKey' +import { MainContentWrapper } from 'src/app/features/onboarding/intro/MainContentWrapper' +import { useOpeningKeyboardShortCut } from 'src/app/hooks/useOpeningKeyboardShortCut' +import { getCurrentTabAndWindowId } from 'src/app/navigation/utils' +import { onboardingMessageChannel } from 'src/background/messagePassing/messageChannels' +import { OnboardingMessageType } from 'src/background/messagePassing/types/ExtensionMessages' +import { openSidePanel } from 'src/background/utils/chromeSidePanelUtils' +import { terminateStoreSynchronization } from 'src/store/storeSynchronization' +import { Button, Flex, Image, Text } from 'ui/src' +import { UNISWAP_LOGO } from 'ui/src/assets' +import { RightArrow } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { ExtensionOnboardingFlow } from 'uniswap/src/types/screens/extension' +import { logger } from 'utilities/src/logger/logger' +import { useFinishOnboarding } from 'wallet/src/features/onboarding/OnboardingContext' + +export function Complete({ flow }: { flow?: ExtensionOnboardingFlow }): JSX.Element { + const { t } = useTranslation() + + const [openedSideBar, setOpenedSideBar] = useState(false) + + // Activates onboarding accounts on component mount + useFinishOnboarding(terminateStoreSynchronization, flow) + + useEffect(() => { + const onSidebarOpenedListener = onboardingMessageChannel.addMessageListener( + OnboardingMessageType.SidebarOpened, + (_message) => { + setOpenedSideBar(true) + }, + ) + return () => { + onboardingMessageChannel.removeMessageListener(OnboardingMessageType.SidebarOpened, onSidebarOpenedListener) + } + }, []) + + const handleOpenWebApp = async (): Promise => { + window.location.href = uniswapUrls.webInterfaceSwapUrl + } + + const handleOpenSidebar = async (): Promise => { + try { + const { tabId, windowId } = await getCurrentTabAndWindowId() + await openSidePanel(tabId, windowId) + } catch (error) { + logger.error(error, { + tags: { file: 'onboarding/Complete.tsx', function: 'handleOpenSidebar' }, + }) + } + } + + const keys = useOpeningKeyboardShortCut(openedSideBar) + + return ( + + + + + + + {t('onboarding.complete.title')} + + + {t('onboarding.complete.description')} + + + + {keys.map((key) => ( + + ))} + + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/KeyboardKey.test.tsx b/apps/extension/src/app/features/onboarding/KeyboardKey.test.tsx new file mode 100644 index 00000000000..04692bdea3a --- /dev/null +++ b/apps/extension/src/app/features/onboarding/KeyboardKey.test.tsx @@ -0,0 +1,33 @@ +import { KeyboardKey } from 'src/app/features/onboarding/KeyboardKey' +import { State } from 'src/app/hooks/useOpeningKeyboardShortCut' +import { cleanup, render, screen } from 'src/test/test-utils' + +describe('KeyboardKey Component', () => { + it('renders correctly with state KeyUp', () => { + const { container } = render() + expect(container).toMatchSnapshot() + }) + + it('renders correctly with state KeyDown', () => { + const { container } = render() + expect(container).toMatchSnapshot() + }) + + it('renders correctly with state Highlighted', () => { + const { container } = render() + expect(container).toMatchSnapshot() + cleanup() + }) + + it('displays the command symbol for Meta key on macOS', () => { + render() + expect(screen.getByText('⌘')).toBeDefined() + cleanup() + }) + + it('displays the correct title for other keys', () => { + render() + expect(screen.getByText('U')).toBeDefined() + cleanup() + }) +}) diff --git a/apps/extension/src/app/features/onboarding/KeyboardKey.tsx b/apps/extension/src/app/features/onboarding/KeyboardKey.tsx new file mode 100644 index 00000000000..e77deaba5bf --- /dev/null +++ b/apps/extension/src/app/features/onboarding/KeyboardKey.tsx @@ -0,0 +1,40 @@ +import { Flex, Text } from 'ui/src' +const SHADOW_OFFSET = { width: 0, height: 7 } +const MAC_OS_COMMAND_SYMBOL = '⌘' +const KEY_HEIGHT = 70 + +enum State { + KeyUp, + KeyDown, + Highlighted, +} + +export interface KeyboardKeyProps { + title: string + px: React.ComponentProps['px'] + fontSize: React.ComponentProps['fontSize'] + state: State +} + +export function KeyboardKey({ title, px, fontSize, state }: KeyboardKeyProps): JSX.Element { + return ( + + + {title === 'Meta' ? MAC_OS_COMMAND_SYMBOL : title} + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/OnboardingPaneAnimatedContents.tsx b/apps/extension/src/app/features/onboarding/OnboardingPaneAnimatedContents.tsx new file mode 100644 index 00000000000..3f061c69ef0 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingPaneAnimatedContents.tsx @@ -0,0 +1,34 @@ +import { Flex, styled } from 'ui/src' + +const SINGLE_PANE_DURATION = 200 + +// TODO: EXT-1164 - Move Keyring methods to workers to not block main thread during onboarding +// if exitBeforeEnter is set in the AnimatePresence we are +// running two 200ms animations sequentially - first to exit, then enter so we +// double this constant. if we change that, needs to change here +export const ONBOARDING_PANE_TRANSITION_DURATION = SINGLE_PANE_DURATION * 2 +export const ONBOARDING_PANE_TRANSITION_DURATION_WITH_LEEWAY = ONBOARDING_PANE_TRANSITION_DURATION + 200 + +export const OnboardingPaneAnimatedContents = styled(Flex, { + animation: `${SINGLE_PANE_DURATION}ms`, + width: '100%', + + zIndex: 1, + x: 0, + opacity: 1, + mx: 'auto', + + variants: { + // note you can use _towards for implementing animations based on the direction! + going: (_towards: 'forward' | 'backward') => ({ + enterStyle: { + opacity: 0, + zIndex: 1, + }, + exitStyle: { + zIndex: 0, + opacity: 0, + }, + }), + } as const, +}) diff --git a/apps/extension/src/app/features/onboarding/OnboardingScreen.tsx b/apps/extension/src/app/features/onboarding/OnboardingScreen.tsx new file mode 100644 index 00000000000..2f012296425 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingScreen.tsx @@ -0,0 +1,20 @@ +import { useContext, useLayoutEffect } from 'react' +import { OnboardingScreenProps } from 'src/app/features/onboarding/OnboardingScreenProps' +import { OnboardingStepsContext } from 'src/app/features/onboarding/OnboardingStepsContext' + +export function OnboardingScreen(props: OnboardingScreenProps): null { + const context = useContext(OnboardingStepsContext) + + useLayoutEffect(() => { + if (!context) { + return + } + context.setOnboardingScreen(props) + return () => { + context.clearOnboardingScreen(props) + } + }, [context, props]) + + // we hoist it up, see OnboardingSteps + OnboardingScreenFrame + return null +} diff --git a/apps/extension/src/app/features/onboarding/OnboardingScreenFrame.tsx b/apps/extension/src/app/features/onboarding/OnboardingScreenFrame.tsx new file mode 100644 index 00000000000..e8bbd4a98c1 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingScreenFrame.tsx @@ -0,0 +1,84 @@ +import { OnboardingScreenProps } from 'src/app/features/onboarding/OnboardingScreenProps' +import { Button, Flex, Text, TouchableArea } from 'ui/src' +import { BackArrow } from 'ui/src/components/icons' +import i18n from 'uniswap/src/i18n/i18n' + +export function OnboardingScreenFrame({ + Icon, + children, + nextButtonEnabled, + nextButtonText = i18n.t('common.button.next'), + nextButtonTheme = 'primary', + onBack, + onSubmit, + onSkip, + subtitle, + title, + warningSubtitle, +}: Partial): JSX.Element { + if (!title) { + return <>{children} + } + + return ( + <> + + {onBack && ( + + + + )} + {onSkip && ( + + + Skip + + + )} + {Icon} + + + {title} + + + + {subtitle} + + {warningSubtitle && ( + + {warningSubtitle} + + )} + + + + + {children} + + + {Boolean(onSubmit) && nextButtonText && ( + + )} + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/OnboardingScreenProps.tsx b/apps/extension/src/app/features/onboarding/OnboardingScreenProps.tsx new file mode 100644 index 00000000000..af3ad90dfb8 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingScreenProps.tsx @@ -0,0 +1,17 @@ +import { ThemeNames } from 'ui/src/theme' + +export type OnboardingScreenProps = { + Icon?: JSX.Element + children?: JSX.Element + nextButtonEnabled?: boolean + nextButtonText?: string + nextButtonTheme?: ThemeNames + onBack?: () => void + onSubmit?: () => void + onSkip?: () => void + subtitle?: string + title: string | JSX.Element + warningSubtitle?: string + outsideContent?: JSX.Element + belowFrameContent?: JSX.Element +} diff --git a/apps/extension/src/app/features/onboarding/OnboardingSteps.tsx b/apps/extension/src/app/features/onboarding/OnboardingSteps.tsx new file mode 100644 index 00000000000..8b5548c3482 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingSteps.tsx @@ -0,0 +1,304 @@ +import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { OnboardingPaneAnimatedContents } from 'src/app/features/onboarding/OnboardingPaneAnimatedContents' +import { OnboardingScreenFrame } from 'src/app/features/onboarding/OnboardingScreenFrame' +import { OnboardingScreenProps } from 'src/app/features/onboarding/OnboardingScreenProps' +import { + OnboardingStepsContext, + OnboardingStepsContextState, + Step, +} from 'src/app/features/onboarding/OnboardingStepsContext' +import { ONBOARDING_CONTENT_WIDTH, ONBOARDING_INITIAL_FRAME_HEIGHT } from 'src/app/features/onboarding/utils' +import { TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { isOnboardedSelector } from 'src/app/utils/isOnboardedSelector' +import { AnimatePresence, Flex, styled, useWindowDimensions } from 'ui/src' +import { useAppSelector } from 'wallet/src/state' + +export * from './OnboardingStepsContext' + +type ComponentByStep = { [key in Step]?: JSX.Element } +type MaybeOnboardingProps = OnboardingScreenProps | null + +/** + * In this file we're doing some weird stuff because we want to keep a nice API + * for onboarding screens but also allow animating them, while still working + * with react router. + * + * AnimatePresence wants to be able to swap out old for new, but react router + * wants to handle that as well + * + * So we have to hoist the props of up to here. + * + * But doing that could cause a re-render loop if the child component isn't + * careful to memoize things. So, we've implemented a little pattern here to + * avoid that - instead of re-rendering the entire OnboardingStepsProvider + * whenever a child re-renders, we instead have a simple emitter/listener we + * trigger (onboardingScreenListen) and we the re-render the contents in a + * sub-component OnboardingScreenDisplay. This way OnboardingScreenDisplay can + * re-render as much as it wants and it doesn't cause the child to re-render, + * avoiding loops! + */ + +let currentOnboardingScreen: MaybeOnboardingProps = null +const onboardingScreenListen = new Set<(step: Step, val: MaybeOnboardingProps) => void>() + +let clearScreenTimeout: NodeJS.Timeout + +export function OnboardingStepsProvider({ + steps, + isResetting = false, + ContainerComponent = React.Fragment, +}: { + steps: ComponentByStep + isResetting?: boolean + ContainerComponent?: React.ComponentType +}): JSX.Element { + const isOnboarded = useAppSelector(isOnboardedSelector) + const wasAlreadyOnboardedWhenPageLoaded = useRef(isOnboarded) + + useEffect(() => { + if (!isResetting && wasAlreadyOnboardedWhenPageLoaded.current) { + // Redirect to the intro screen screen if user is already onboarded. + // We only want to redirect when the page is first loaded but not immediately after the user completes onboarding. + navigate(`/${TopLevelRoutes.Onboarding}`, { replace: true }) + } + }, [isOnboarded, isResetting]) + + const initialStep = Object.keys(steps)[0] as Step + + if (!initialStep) { + throw new Error('`steps` must have at least one `step`') + } + + const [{ step, going, onboardingScreen }, setState] = useState<{ + onboardingScreen?: MaybeOnboardingProps + step: Step + going: 'forward' | 'backward' + }>({ + step: initialStep, + going: 'forward', + }) + + const getCurrentStep = useRef(step) + getCurrentStep.current = step + + const setStep = useCallback((nextStep: Step) => { + setState((prev) => ({ ...prev, step: nextStep })) + }, []) + + const setOnboardingScreen = useCallback((next: OnboardingScreenProps) => { + clearTimeout(clearScreenTimeout) + setState((prev) => { + // we are only updating onboardingScreen here once per unique title so + // the state in this component is accurate, but subsequent updates go + // through the emitter + if (onboardingScreenKey(prev?.onboardingScreen) !== onboardingScreenKey(next)) { + return { + ...prev, + onboardingScreen: next, + } + } + return prev + }) + onboardingScreenListen.forEach((cb) => cb(getCurrentStep.current, next)) + currentOnboardingScreen = next + }, []) + + const clearOnboardingScreen = useCallback((next: OnboardingScreenProps) => { + // delay clear so the next screen can beat clearing the old one to avoid flickering + clearScreenTimeout = setTimeout(() => { + setState((prev) => { + if (prev.onboardingScreen && onboardingScreenKey(prev.onboardingScreen) === onboardingScreenKey(next)) { + return { + ...prev, + onboardingScreen: null, + } + } + return prev + }) + }) + }, []) + + const onboardingScreenKey = (props?: MaybeOnboardingProps): string => { + return `${props?.title}${props?.subtitle}${Object.keys(props || {}).join('')}` + } + + const goToNextStep = useCallback(() => { + const stepIndex = Object.keys(steps).indexOf(step) + const nextStep = Object.keys(steps)[stepIndex + 1] as Step + + if (!nextStep) { + throw new Error('No next step') + } + + setState((prev) => ({ + ...prev, + step: nextStep, + going: 'forward', + })) + }, [step, steps]) + + const goToPreviousStep = useCallback(() => { + const stepIndex = Object.keys(steps).indexOf(step) + const previousStep = Object.keys(steps)[stepIndex - 1] as Step + + if (!previousStep) { + throw new Error('No previous step') + } + + setState((prev) => ({ + ...prev, + step: previousStep, + going: 'backward', + })) + }, [step, steps]) + + const state = useMemo((): OnboardingStepsContextState => { + return { + step, + setStep, + goToNextStep, + setOnboardingScreen, + clearOnboardingScreen, + goToPreviousStep, + isResetting, + going, + } + }, [step, setStep, goToNextStep, setOnboardingScreen, clearOnboardingScreen, goToPreviousStep, isResetting, going]) + + const stepContents = steps[step] + const [frameHeight, setFrameHeight] = useState(ONBOARDING_INITIAL_FRAME_HEIGHT) + const windowDimensions = useWindowDimensions() + const modalY = windowDimensions.height / 2 - frameHeight / 2 + const hasBelowFrameContent = Boolean(onboardingScreen?.belowFrameContent) + const [belowFrameHeight, setBelowFrameHeight] = useState(-1) + const y = + modalY + + // ensure vertically centered when belowFrameContent exists + (hasBelowFrameContent + ? -(belowFrameHeight === -1 + ? // estimate the content height before measurement + 63 + : belowFrameHeight) + 30 + : 0) + + if (!stepContents) { + throw new Error(`Unknown step: ${step}`) + } + + return ( + + + {!onboardingScreen && <>{stepContents}} + + {/* render the contents from step here */} + {onboardingScreen && ( + <> + {/* render actual screen contents "offscreen", we use context and put it on onboardingScreen */} +
{stepContents}
+ { + setFrameHeight(e.nativeEvent.layout.height) + }} + > + + + {/** + * animate the inner contents of the onboarding steps modal + * exitBeforeEnter because we are keeping things simpler and having the inner contents + * not be absolutely positioned, which would let us do overlapping animations but we'd have + * to measure dimensions and do some delicate state management around that. + */} + + {/* note: the exitBeforeEnter here affects the constant ONBOARDING_PANE_TRANSITION_DURATION in OnboardingPaneAnimatedContents.tsx */} + + + + + + + + {hasBelowFrameContent && ( + setBelowFrameHeight(e.nativeEvent.layout.height)} + > + {onboardingScreen?.belowFrameContent} + + )} + + + )} + + {onboardingScreen?.outsideContent || null} +
+
+ ) +} + +const OnboardingScreenDisplay = memo(function OnboardingScreenDisplay(props: { step: Step }): JSX.Element { + const [state, setState] = useState(currentOnboardingScreen) + + useEffect(() => { + const handler = (step: Step, next: MaybeOnboardingProps): void => { + if (step === props.step) { + setState(next) + } + } + + onboardingScreenListen.add(handler) + return () => { + onboardingScreenListen.delete(handler) + } + }, [props.step]) + + return +}) + +// containing frame just for positioning +const Frame = styled(Flex, { + position: 'absolute', + top: 0, + left: '50%', + x: -ONBOARDING_CONTENT_WIDTH * 0.5, + alignItems: 'center', + justifyContent: 'center', + width: ONBOARDING_CONTENT_WIDTH, +}) + +// separate frame background so we can animate +const FrameBackground = styled(Flex, { + position: 'absolute', + top: 0, + left: 0, + width: '100%', + backgroundColor: '$surface1', + borderColor: '$surface3', + borderRadius: '$rounded32', + borderWidth: '$spacing1', + shadowRadius: 4, + shadowColor: '$shadowColor', + shadowOffset: { + height: 2, + width: 0, + }, + shadowOpacity: 0.25, +}) + +// inner frame to prevent overflow of outer frame +const FrameInner = styled(Flex, { + height: '100%', + overflow: 'hidden', + width: '100%', + borderRadius: '$rounded32', + gap: '$spacing12', + pb: '$spacing24', + pt: '$spacing24', + px: '$spacing24', +}) diff --git a/apps/extension/src/app/features/onboarding/OnboardingStepsContext.tsx b/apps/extension/src/app/features/onboarding/OnboardingStepsContext.tsx new file mode 100644 index 00000000000..e1bba51637f --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingStepsContext.tsx @@ -0,0 +1,58 @@ +import { createContext, useContext } from 'react' +import { OnboardingScreenProps } from 'src/app/features/onboarding/OnboardingScreenProps' + +export enum CreateOnboardingSteps { + Password = 'password', + ViewMnemonic = 'mnemonic', + TestMnemonic = 'testMnemonic', + Naming = 'naming', + Complete = 'complete', +} + +export enum ImportOnboardingSteps { + Mnemonic = 'mnemonic', + Password = 'password', + Select = 'select', + Backup = 'backup', + Complete = 'complete', +} + +export enum ResetSteps { + Mnemonic = 'mnemonic', + Password = 'password', + Complete = 'complete', + Select = 'select', +} + +export enum ScanOnboardingSteps { + Password = 'password', + Scan = 'scan', + OTP = 'otp', + Select = 'select', + Complete = 'complete', +} + +export type Step = CreateOnboardingSteps | ImportOnboardingSteps | ResetSteps | ScanOnboardingSteps + +export type OnboardingStepsContextState = { + step: Step + going?: 'forward' | 'backward' + setStep: (step: Step) => void + setOnboardingScreen: (screen: OnboardingScreenProps) => void + clearOnboardingScreen: (screen: OnboardingScreenProps) => void + goToNextStep: () => void + goToPreviousStep: () => void + isResetting: boolean +} + +export const OnboardingStepsContext = createContext(undefined) + +export function useOnboardingSteps(): OnboardingStepsContextState { + const onboardingStepsContext = useContext(OnboardingStepsContext) + + if (onboardingStepsContext === undefined) { + throw new Error('`useOnboardingSteps` must be used inside of `OnboardingStepsProvider`') + } + + return onboardingStepsContext +} diff --git a/apps/extension/src/app/features/onboarding/OnboardingWrapper.tsx b/apps/extension/src/app/features/onboarding/OnboardingWrapper.tsx new file mode 100644 index 00000000000..7e5c3c5ea6e --- /dev/null +++ b/apps/extension/src/app/features/onboarding/OnboardingWrapper.tsx @@ -0,0 +1,54 @@ +import { useEffect, useState } from 'react' +import { Outlet } from 'react-router-dom' +import { StorageWarningModal } from 'src/app/features/warnings/StorageWarningModal' +import { ONBOARDING_BACKGROUND_DARK, ONBOARDING_BACKGROUND_LIGHT } from 'src/assets' +import { onboardingMessageChannel } from 'src/background/messagePassing/messageChannels' +import { OnboardingMessageType } from 'src/background/messagePassing/types/ExtensionMessages' +import { Flex, Image, useIsDarkMode } from 'ui/src' +import { syncAppWithDeviceLanguage } from 'wallet/src/features/language/slice' +import { OnboardingContextProvider } from 'wallet/src/features/onboarding/OnboardingContext' +import { useAppDispatch } from 'wallet/src/state' + +export function OnboardingWrapper(): JSX.Element { + const isDarkMode = useIsDarkMode() + const [isHighlighted, setIsHighlighted] = useState(false) + const dispatch = useAppDispatch() + + useEffect(() => { + dispatch(syncAppWithDeviceLanguage()) + }, [dispatch]) + + useEffect(() => { + return onboardingMessageChannel.addMessageListener(OnboardingMessageType.HighlightOnboardingTab, (_message) => { + // When the onboarding tab regains focus, we do a quick background change to bring attention to it. + // Otherwise, the user might not notice that the tab is now active, specially if the tab is on a different monitor. + setIsHighlighted(true) + setTimeout(() => setIsHighlighted(false), 200) + }) + }, []) + + return ( + + + + {/* TODO: Update this to use the new background asset with varying blur level */} + {!isHighlighted && ( + + )} + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/Password.tsx b/apps/extension/src/app/features/onboarding/Password.tsx new file mode 100644 index 00000000000..9eee86e24b8 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/Password.tsx @@ -0,0 +1,110 @@ +import { useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { PADDING_STRENGTH_INDICATOR, PasswordInput } from 'src/app/components/PasswordInput' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { Flex, Square, Text } from 'ui/src' +import { Lock } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' +import { usePasswordForm } from 'wallet/src/utils/password' + +export function Password({ + flow, + onComplete, + onBack, +}: { + flow: ExtensionOnboardingFlow + onComplete: (password: string) => Promise + onBack?: () => void +}): JSX.Element { + const { t } = useTranslation() + const { isResetting } = useOnboardingSteps() + const { resetOnboardingContextData } = useOnboardingContext() + + const { + enableNext, + hideInput, + debouncedPasswordStrength, + password, + onPasswordBlur, + onChangePassword, + confirmPassword, + onChangeConfirmPassword, + setHideInput, + errorText, + checkSubmit, + } = usePasswordForm() + + const onSubmit = useCallback(async () => { + if (checkSubmit()) { + await onComplete(password) + } + }, [onComplete, password, checkSubmit]) + + const handleBack = useCallback(() => { + // reset the pending mnemonic when going back from password screen + // to avoid having them in the context when coming back to either screen + resetOnboardingContextData() + if (onBack) { + onBack() + } else { + navigate(`/${TopLevelRoutes.Onboarding}`, { replace: true }) + } + }, [onBack, resetOnboardingContextData]) + + return ( + + + + + } + nextButtonEnabled={enableNext} + nextButtonText={t('common.button.continue')} + subtitle={t('onboarding.extension.password.subtitle')} + title={ + isResetting + ? t('onboarding.extension.password.title.reset') + : t('onboarding.extension.password.title.default') + } + onBack={handleBack} + onSubmit={onSubmit} + > + + + + + {errorText || 'Placeholder text'} + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/PasswordImport.tsx b/apps/extension/src/app/features/onboarding/PasswordImport.tsx new file mode 100644 index 00000000000..256bd937f57 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/PasswordImport.tsx @@ -0,0 +1,43 @@ +import { useCallback } from 'react' +import { ONBOARDING_PANE_TRANSITION_DURATION_WITH_LEEWAY } from 'src/app/features/onboarding/OnboardingPaneAnimatedContents' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { Password } from 'src/app/features/onboarding/Password' +import { ExtensionOnboardingFlow } from 'uniswap/src/types/screens/extension' +import { sleep } from 'utilities/src/time/timing' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' +import { BackupType } from 'wallet/src/features/wallet/accounts/types' +import { validateMnemonic } from 'wallet/src/utils/mnemonics' + +export function PasswordImport({ + flow, + allowBack = true, +}: { + flow: ExtensionOnboardingFlow + allowBack?: boolean +}): JSX.Element { + const { goToNextStep, goToPreviousStep } = useOnboardingSteps() + + const { getOnboardingAccountMnemonicString, generateImportedAccountsByMnemonic } = useOnboardingContext() + const mnemonicString = getOnboardingAccountMnemonicString() + + const onSubmit = useCallback( + async (password: string) => { + const { validMnemonic } = validateMnemonic(mnemonicString) + + if (!validMnemonic) { + throw new Error('Mnemonic are invalid on PasswordImport screen') + } + + goToNextStep() + + // TODO: EXT-1164 - Move Keyring methods to workers to not block main thread during onboarding + // start running the validation after going to next step since they clog the main thread with work + // plus just a bit of extra leeway since animations can take just a tad extra to finish + await sleep(ONBOARDING_PANE_TRANSITION_DURATION_WITH_LEEWAY) + await generateImportedAccountsByMnemonic(validMnemonic, password, BackupType.Manual) + }, + [mnemonicString, goToNextStep, generateImportedAccountsByMnemonic], + ) + + return +} diff --git a/apps/extension/src/app/features/onboarding/PinReminder.tsx b/apps/extension/src/app/features/onboarding/PinReminder.tsx new file mode 100644 index 00000000000..8e54c88d180 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/PinReminder.tsx @@ -0,0 +1,64 @@ +import { useTranslation } from 'react-i18next' +import { Flex, Text } from 'ui/src' +import { Pin, X } from 'ui/src/components/icons' +import { iconSizes, zIndices } from 'ui/src/theme' + +const POPUP_WIDTH = 240 +const POPUP_OFFSET = 4 +const POPUP_SHADOW_RADIUS = 8 + +export function PinReminder({ + onClose, + style = 'popup', +}: { + onClose?: () => void + style?: 'inline' | 'popup' +}): JSX.Element { + const { t } = useTranslation() + + return ( + + + + + {t('onboarding.complete.pin.title')} + + + {t('onboarding.complete.pin.description')} + + + {onClose && ( + + + + )} + + ) +} + +const styles = { + inline: { + position: 'relative' as const, + width: '100%', + }, + popup: { + position: 'absolute' as const, + right: POPUP_OFFSET, + top: POPUP_OFFSET, + width: POPUP_WIDTH, + zIndex: zIndices.popover, + }, +} diff --git a/apps/extension/src/app/features/onboarding/SyncFromPhoneButton.tsx b/apps/extension/src/app/features/onboarding/SyncFromPhoneButton.tsx new file mode 100644 index 00000000000..a3bdb179fb1 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/SyncFromPhoneButton.tsx @@ -0,0 +1,32 @@ +import { useTranslation } from 'react-i18next' +import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { Flex, Text, TouchableArea } from 'ui/src' +import { ScanQr } from 'ui/src/components/icons' + +export function SyncFromPhoneButton({ + isResetting, + fill, +}: { + isResetting?: boolean + fill?: boolean +}): JSX.Element | null { + const { t } = useTranslation() + + return ( + + navigate(`/${TopLevelRoutes.Onboarding}/${isResetting ? OnboardingRoutes.ResetScan : OnboardingRoutes.Scan}`) + } + > + + + + {t('onboarding.intro.mobileScan.button')} + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/Terms.tsx b/apps/extension/src/app/features/onboarding/Terms.tsx new file mode 100644 index 00000000000..67c1eb12749 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/Terms.tsx @@ -0,0 +1,30 @@ +import { PropsWithChildren } from 'react' +import { Trans } from 'react-i18next' +import { Link, LinkProps } from 'react-router-dom' +import { Text } from 'ui/src' +import { uniswapUrls } from 'uniswap/src/constants/urls' + +export function Terms(): JSX.Element { + return ( + + , + highlightPrivacy: , + }} + i18nKey="onboarding.termsOfService" + /> + + ) +} + +function LinkWrapper(props: PropsWithChildren): JSX.Element { + const { children, ...rest } = props + return ( + + + {children} + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/UniconWithLockIcon.tsx b/apps/extension/src/app/features/onboarding/UniconWithLockIcon.tsx new file mode 100644 index 00000000000..b5784b9f26e --- /dev/null +++ b/apps/extension/src/app/features/onboarding/UniconWithLockIcon.tsx @@ -0,0 +1,21 @@ +import { Flex, Unicon } from 'ui/src' +import { FileListLock } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' + +export function UniconWithLockIcon({ address }: { address: Address }): JSX.Element { + return ( + + + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/__snapshots__/KeyboardKey.test.tsx.snap b/apps/extension/src/app/features/onboarding/__snapshots__/KeyboardKey.test.tsx.snap new file mode 100644 index 00000000000..bf552b6a263 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/__snapshots__/KeyboardKey.test.tsx.snap @@ -0,0 +1,70 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`KeyboardKey Component renders correctly with state Highlighted 1`] = ` +
+ + +
+ + Shift + +
+
+
+
+`; + +exports[`KeyboardKey Component renders correctly with state KeyDown 1`] = ` +
+ + +
+ + Shift + +
+
+
+
+`; + +exports[`KeyboardKey Component renders correctly with state KeyUp 1`] = ` +
+ + +
+ + Shift + +
+
+
+
+`; diff --git a/apps/extension/src/app/features/onboarding/alerts/selectors.ts b/apps/extension/src/app/features/onboarding/alerts/selectors.ts new file mode 100644 index 00000000000..69e886629ac --- /dev/null +++ b/apps/extension/src/app/features/onboarding/alerts/selectors.ts @@ -0,0 +1,6 @@ +import { AlertsState } from 'src/app/features/onboarding/alerts/slice' +import { WebState } from 'src/store/webReducer' + +export function selectAlertsState(name: T): (state: WebState) => AlertsState[T] { + return (state) => state.alerts[name] +} diff --git a/apps/extension/src/app/features/onboarding/alerts/slice.ts b/apps/extension/src/app/features/onboarding/alerts/slice.ts new file mode 100644 index 00000000000..7c65df953eb --- /dev/null +++ b/apps/extension/src/app/features/onboarding/alerts/slice.ts @@ -0,0 +1,33 @@ +import { createSlice, PayloadAction } from '@reduxjs/toolkit' + +export enum AlertName { + PinToToolbar = 'PinToToolbar', +} + +export interface AlertsState { + [AlertName.PinToToolbar]: { + isOpen: boolean + } +} + +const initialState: AlertsState = { + [AlertName.PinToToolbar]: { + isOpen: true, + }, +} + +const slice = createSlice({ + name: 'alerts', + initialState, + reducers: { + openAlert: (state, action: PayloadAction) => { + state[action.payload].isOpen = true + }, + closeAlert: (state, action: PayloadAction) => { + state[action.payload].isOpen = false + }, + }, +}) + +export const { openAlert, closeAlert } = slice.actions +export const { reducer: alertsReducer } = slice diff --git a/apps/extension/src/app/features/onboarding/create/NameWallet.tsx b/apps/extension/src/app/features/onboarding/create/NameWallet.tsx new file mode 100644 index 00000000000..8fd4496fb18 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/create/NameWallet.tsx @@ -0,0 +1,72 @@ +import { useState } from 'react' +import { Input } from 'src/app/components/Input' +import { saveDappConnection } from 'src/app/features/dapp/actions' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { Flex, Text, Unicon } from 'ui/src' +import { fonts, iconSizes } from 'ui/src/theme' +import { UNISWAP_WEB_URL } from 'uniswap/src/constants/urls' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { shortenAddress } from 'uniswap/src/utils/addresses' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' + +export function NameWallet(): JSX.Element { + const { getOnboardingAccount, setPendingWalletName } = useOnboardingContext() + const onboardingAccount = getOnboardingAccount() + + const { goToNextStep, goToPreviousStep } = useOnboardingSteps() + const [walletName, setWalletName] = useState('') + + const onboardingAccountAddress = onboardingAccount?.address + + const onSubmit = async (): Promise => { + if (walletName) { + setPendingWalletName(walletName) + } + + if (onboardingAccount) { + await saveDappConnection(UNISWAP_WEB_URL, onboardingAccount) + } + + goToNextStep() + } + + return ( + + : undefined + } + nextButtonEnabled={true} + nextButtonText="Finish" + subtitle="This nickname is only visible to you" + title="Give your wallet a name" + onBack={goToPreviousStep} + onSubmit={onSubmit} + > + + + + {onboardingAccountAddress && shortenAddress(onboardingAccountAddress)} + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/create/PasswordCreate.tsx b/apps/extension/src/app/features/onboarding/create/PasswordCreate.tsx new file mode 100644 index 00000000000..3114e7ed10e --- /dev/null +++ b/apps/extension/src/app/features/onboarding/create/PasswordCreate.tsx @@ -0,0 +1,23 @@ +import { ONBOARDING_PANE_TRANSITION_DURATION_WITH_LEEWAY } from 'src/app/features/onboarding/OnboardingPaneAnimatedContents' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { Password } from 'src/app/features/onboarding/Password' +import { ExtensionOnboardingFlow } from 'uniswap/src/types/screens/extension' +import { sleep } from 'utilities/src/time/timing' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' + +export function PasswordCreate(): JSX.Element { + const { goToNextStep } = useOnboardingSteps() + const { generateOnboardingAccount } = useOnboardingContext() + + const onComplete = async (password: string): Promise => { + goToNextStep() + + // TODO: EXT-1164 - Move Keyring methods to workers to not block main thread during onboarding + // start running the validation after going to next step since they clog the main thread with work + // plus just a bit of extra leeway since animations can take just a tad extra to finish + await sleep(ONBOARDING_PANE_TRANSITION_DURATION_WITH_LEEWAY) + await generateOnboardingAccount(password) + } + + return +} diff --git a/apps/extension/src/app/features/onboarding/create/TestMnemonic.tsx b/apps/extension/src/app/features/onboarding/create/TestMnemonic.tsx new file mode 100644 index 00000000000..3762ba728a6 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/create/TestMnemonic.tsx @@ -0,0 +1,261 @@ +import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { TextInput } from 'react-native' +import { Input } from 'src/app/components/Input' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { Flex, Square, Text } from 'ui/src' +import { Check, FileListCheck } from 'ui/src/components/icons' +import { iconSizes, zIndices } from 'ui/src/theme' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { useDebounce } from 'utilities/src/time/timing' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' +import { PASSWORD_VALIDATION_DEBOUNCE_MS } from 'wallet/src/utils/password' + +export function TestMnemonic({ numberOfTests = 3 }: { numberOfTests?: number }): JSX.Element { + const { t } = useTranslation() + + const { getOnboardingAccountAddress, getOnboardingAccountMnemonic } = useOnboardingContext() + const onboardingAccountAddress = getOnboardingAccountAddress() + const onboardingAccountMnemonic = getOnboardingAccountMnemonic() + + const { goToNextStep, goToPreviousStep } = useOnboardingSteps() + + const [completedTests, markTestCompleted] = useReducer((v: number) => v + 1, 0) + const [userWordInput, setUserWordInput] = useState('') + const [hasError, setHasError] = useState(false) + + const isLastTest = completedTests === numberOfTests - 1 + + // Pick NUMBER_OF_TESTS random words + const testingWordIndexes = useMemo( + () => + onboardingAccountMnemonic ? selectRandomNumbers(onboardingAccountMnemonic.length, numberOfTests) : undefined, + [onboardingAccountMnemonic, numberOfTests], + ) + + // Save the next word index for reuse, ensuring it's not undefined + const nextWordIndex = useMemo(() => testingWordIndexes?.[completedTests] ?? 0, [completedTests, testingWordIndexes]) + const nextWordNumber = nextWordIndex + 1 + const validWord = userWordInput === onboardingAccountMnemonic?.[nextWordIndex] + const isComplete = validWord && isLastTest + + useEffect(() => { + if (validWord) { + setTimeout(() => { + if (!isLastTest) { + markTestCompleted() + setUserWordInput('') + } else { + goToNextStep() + } + }, 200) + } + }, [validWord, goToNextStep, isLastTest]) + + const debouncedWord = useDebounce(userWordInput, PASSWORD_VALIDATION_DEBOUNCE_MS) + useEffect(() => { + setHasError(!!debouncedWord && debouncedWord !== onboardingAccountMnemonic?.[nextWordIndex]) + }, [debouncedWord, onboardingAccountMnemonic, nextWordIndex]) + + const onNext = useCallback((): void => { + if (!onboardingAccountMnemonic || !onboardingAccountAddress) { + return + } + + goToNextStep() + }, [onboardingAccountMnemonic, goToNextStep, onboardingAccountAddress]) + + return ( + + + + + } + nextButtonEnabled={false} + nextButtonText={t('onboarding.backup.manual.progress', { + completedStepsCount: isComplete ? numberOfTests : completedTests, + totalStepsCount: numberOfTests, + })} + nextButtonTheme="secondary" + subtitle={t('onboarding.backup.manual.subtitle', { count: nextWordNumber, ordinal: true })} + title={t('onboarding.backup.manual.title')} + onBack={goToPreviousStep} + onSkip={onNext} + onSubmit={onNext} + > + + { + setUserWordInput(value) + if (hasError) { + setHasError(false) + } + }} + /> + + {t('onboarding.backup.manual.error')} + + + + + ) +} + +type InputStackBaseProps = { + value?: string + onChangeText: (word: string) => void +} + +function RecoveryPhraseInputStack({ + nextWordNumber, + numInputsBelow, + numTotalSteps, + isInputValid, + value, + onChangeText, +}: InputStackBaseProps & { + numInputsBelow: number + numTotalSteps: number + nextWordNumber: number + isInputValid: boolean +}): JSX.Element { + return ( + + + {isInputValid ? ( + + + + ) : null} + + + + ) +} + +type InputStackProps = InputStackBaseProps & { + total: number + current: number + prefixText: string +} + +export function InputStack({ onChangeText, total, value, current, prefixText }: InputStackProps): JSX.Element { + const { t } = useTranslation() + const refs = useRef([]) + const prefixTexts = useRef([]) + + // this is weird because we only get the new word as it renders + // but avoiding a bit of a refactor before beta release, should be safe: + prefixTexts.current[current] ||= prefixText + + useEffect(() => { + // Wait until the next tick to focus the input, otherwise the state update interferes with the focus event. + setTimeout(() => { + refs.current?.[current]?.focus() + }, 1) + }, [current]) + + return ( + + {new Array(total).fill(0).map((_, i) => { + const isHidden = i < current + const isCurrentlyActive = i === current + const isBelow = i > current + const belowOffset = i - current + + return ( + + + {prefixTexts.current[i] || ''} + + { + if (inputNode) { + refs.current[i] = inputNode + } + }} + centered + large + borderColor="$surface3" + borderRadius="$rounded20" + flex={1} + placeholder={t('onboarding.backup.manual.placeholder')} + shadowColor="$shadowColor" + shadowOffset={{ width: 0, height: 4 }} + shadowOpacity={0.4} + shadowRadius={10} + value={value} + zIndex={zIndices.sticky} + onChangeText={onChangeText} + /> + + ) + })} + + ) +} + +function selectRandomNumbers(maxNumber: number, numberOfNumbers: number): number[] { + const shuffledIndexes = [...Array(maxNumber).keys()].sort(() => 0.5 - Math.random()) + const selectedIndexes = shuffledIndexes.slice(0, numberOfNumbers) + selectedIndexes.sort((a, b) => a - b) + return selectedIndexes +} diff --git a/apps/extension/src/app/features/onboarding/create/ViewMnemonic.tsx b/apps/extension/src/app/features/onboarding/create/ViewMnemonic.tsx new file mode 100644 index 00000000000..dc1a48af1a8 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/create/ViewMnemonic.tsx @@ -0,0 +1,148 @@ +import { FunctionComponent, useEffect, useState } from 'react' +import { Trans, useTranslation } from 'react-i18next' +import { MnemonicViewer } from 'src/app/components/MnemonicViewer' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { CheckBox, Circle, Flex, IconProps, Square, Text } from 'ui/src' +import { AlertTriangle, EyeOff, FileListLock, Key, PencilDetailed } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { logger } from 'utilities/src/logger/logger' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' + +enum ViewStep { + Info, + View, +} + +export function ViewMnemonic(): JSX.Element { + const { t } = useTranslation() + + const [viewStep, setViewStep] = useState(ViewStep.Info) + + const { goToNextStep } = useOnboardingSteps() + + const [disclaimerChecked, setDisclaimerChecked] = useState(false) + + const { getOnboardingAccountAddress, getOnboardingAccountMnemonic, retrieveOnboardingAccountMnemonic } = + useOnboardingContext() + const onboardingAccountAddress = getOnboardingAccountAddress() + const onboardingAccountMnemonic = getOnboardingAccountMnemonic() + + useEffect(() => { + if (!onboardingAccountMnemonic) { + retrieveOnboardingAccountMnemonic().catch((e) => { + logger.error(e, { + tags: { file: 'ViewMnemonic', function: 'retrieveOnboardingAccountMnemonic' }, + }) + }) + } + }, [onboardingAccountMnemonic, retrieveOnboardingAccountMnemonic]) + + const onSubmit = (): void => { + if (viewStep === ViewStep.Info) { + setViewStep(ViewStep.View) + return + } + + if (onboardingAccountAddress && disclaimerChecked) { + goToNextStep() + } + } + + // On view step, next button should be enabled if mnemonic has been created. + // On disclaimer step, next button should be enabled if disclaimer is checked and mnemonic has been created. + const shouldEnableNextButton = + viewStep === ViewStep.View ? !!onboardingAccountAddress && disclaimerChecked : !!onboardingAccountAddress + + return ( + + + {viewStep === ViewStep.View ? ( + + ) : ( + + )} + + } + nextButtonEnabled={shouldEnableNextButton} + nextButtonText={t('common.button.continue')} + subtitle={ + viewStep === ViewStep.View + ? t('onboarding.backup.view.subtitle.message2') + : t('onboarding.backup.view.subtitle.message1') + } + title={t('onboarding.backup.view.title')} + onBack={(): void => + navigate(`/${TopLevelRoutes.Onboarding}`, { + replace: true, + }) + } + onSubmit={onSubmit} + > + {viewStep === ViewStep.Info ? ( + + + + {t('onboarding.backup.view.warning.message1')} + + + + {t('onboarding.backup.view.warning.message2')} + + + + + }} + i18nKey="onboarding.backup.view.warning.message3" + /> + + + + ) : ( + + + + {t('onboarding.backup.view.disclaimer')}} + onCheckPressed={(currentValue: boolean): void => setDisclaimerChecked(!currentValue)} + /> + + + )} + + + ) +} + +function WarningIcon({ Icon }: { Icon: FunctionComponent }): JSX.Element { + return ( + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/import/ImportMnemonic.tsx b/apps/extension/src/app/features/onboarding/import/ImportMnemonic.tsx new file mode 100644 index 00000000000..05814e7aec7 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/import/ImportMnemonic.tsx @@ -0,0 +1,336 @@ +import { wordlists } from 'ethers' +import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { + NativeSyntheticEvent, + TextInputChangeEventData, + TextInputFocusEventData, + TextInputKeyPressEventData, +} from 'react-native' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { SyncFromPhoneButton } from 'src/app/features/onboarding/SyncFromPhoneButton' +import { TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { useAppDispatch } from 'src/store/store' +import { Button, Flex, FlexProps, Input, Square, Text, inputStyles } from 'ui/src' +import { FileListLock, RotatableChevron } from 'ui/src/components/icons' +import { fonts, iconSizes } from 'ui/src/theme' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { useDebounce } from 'utilities/src/time/timing' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' +import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' +import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { isValidMnemonicWord, validateMnemonic } from 'wallet/src/utils/mnemonics' + +export function ImportMnemonic(): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + const [mnemonic, setMnemonic] = useState(new Array(24).fill('')) + const { addOnboardingAccountMnemonic } = useOnboardingContext() + const [expanded, setExpanded] = useState(false) + const [errors, setErrors] = useState>({}) + const isEmptyMnemonic = useMemo(() => !mnemonic.join(' ').toLocaleLowerCase().trim(), [mnemonic]) + + const inputRefs = useRef>(Array(24).fill(null)) + + const accounts = useSignerAccounts() + + const { isResetting, goToNextStep } = useOnboardingSteps() + + useEffect(() => { + const handlePaste = (event: ClipboardEvent): void | (() => void) => { + if (!event.clipboardData) { + return + } + const pastedText = event.clipboardData.getData('text').toLowerCase().trim() + if (!pastedText) { + return + } + const { validMnemonic, error } = validateMnemonic(pastedText) + if (error || !validMnemonic) { + return + } + // We conditionally prevent default here because we want paste to work as expected in all other cases. + event.preventDefault() + const words = validMnemonic.replaceAll(/\s+/g, ' ').split(' ') + setExpanded(words.length > 12) + + const newMnemonic = Array(24) + .fill('') + .map((_, i) => words[i] || '') + + setMnemonic(newMnemonic) + setErrors({}) + + // We focus the last input on the next tick after the state has been updated. + setTimeout(() => inputRefs.current[words.length - 1]?.focus(), 0) + + // Clear clipboard after paste + navigator.clipboard.writeText('').catch(() => {}) + } + + window.document.addEventListener('paste', handlePaste) + + return () => { + window.document.removeEventListener('paste', handlePaste) + } + }, [setMnemonic]) + + const handleChange = useCallback( + (index: number) => + (event: NativeSyntheticEvent): void => { + const newMnemonic = [...mnemonic] + const word = event.nativeEvent.text + + // Focus next input when the space key is pressed. + if (word.length > 1 && word.endsWith(' ')) { + inputRefs.current[index + 1]?.focus() + } + + newMnemonic[index] = word.trim() + setMnemonic(newMnemonic) + }, + [mnemonic, setMnemonic], + ) + + const handleKeyPress = useCallback( + (index: number) => + (event: NativeSyntheticEvent): void => { + // Focus previous input when the backspace key is pressed. + if (event.nativeEvent.key === 'Backspace' && !mnemonic[index] && index > 0) { + inputRefs.current[index - 1]?.focus() + } + }, + [mnemonic], + ) + + const handleBlur = useCallback( + (index: number) => + (event: NativeSyntheticEvent): void => { + const word = event.nativeEvent.text + + if (!word && errors[index] !== undefined) { + setErrors({ ...errors, [index]: undefined }) + } + if (!word) { + return + } + const wordInList = wordlists.en?.getWordIndex(word) !== -1 + setErrors({ ...errors, [index]: !wordInList }) + }, + [errors], + ) + + const onSubmit = useCallback(async () => { + if (isEmptyMnemonic) { + return + } + + if (isResetting) { + // Remove all accounts before importing mnemonic. + await dispatch( + editAccountActions.trigger({ + type: EditAccountAction.Remove, + accounts, + }), + ) + } + + addOnboardingAccountMnemonic(mnemonic) + goToNextStep() + }, [accounts, dispatch, goToNextStep, isResetting, mnemonic, addOnboardingAccountMnemonic, isEmptyMnemonic]) + + const debouncedMnemonic = useDebounce(mnemonic, 500) + + const { error: mnemonicValidationError, invalidWordCount } = useMemo(() => { + const mnemonicString = debouncedMnemonic.join(' ').toLowerCase() + + if (!mnemonicString.trim()) { + return { error: undefined, invalidWordCount: undefined } + } + + return validateMnemonic(mnemonicString) + }, [debouncedMnemonic]) + + const errorMessageToDisplay = useMemo(() => { + // If all cells are filled, but there is an error, display the invalid phrase error + const trimmedMnemonic = expanded ? mnemonic : mnemonic.slice(0, 12) + const allCellsFilled = trimmedMnemonic.every((word) => word.length > 0) + + if (allCellsFilled && mnemonicValidationError) { + return t('onboarding.importMnemonic.error.invalidPhrase') + } + + if (mnemonicValidationError && invalidWordCount && invalidWordCount >= 1) { + return t('onboarding.import.error.invalidWords', { count: invalidWordCount }) + } + + return undefined + }, [expanded, mnemonic, mnemonicValidationError, t, invalidWordCount]) + + return ( + + + + + + } + belowFrameContent={ + isResetting ? ( + + + + ) : undefined + } + nextButtonEnabled={!isEmptyMnemonic && !mnemonicValidationError && !errorMessageToDisplay} + nextButtonText={t('common.button.continue')} + subtitle={t('onboarding.importMnemonic.subtitle')} + title={t('onboarding.importMnemonic.title')} + onBack={isResetting ? undefined : (): void => navigate(`/${TopLevelRoutes.Onboarding}`, { replace: true })} + onSubmit={onSubmit} + > + <> + + {errorMessageToDisplay ?? DUMMY_TEXT} {/* To prevent layout shift */} + + + + {mnemonic.map( + (word, index) => + Boolean(expanded || (!expanded && index < 12)) && ( + + (inputRefs.current[index] = ref)} + handleBlur={handleBlur} + handleChange={handleChange} + handleKeyPress={handleKeyPress} + index={index} + word={word} + /> + + ), + )} + + + + + + + + ) +} + +const RecoveryPhraseWord = forwardRef< + Input, + { + word: string + index: number + handleBlur: (index: number) => (event: NativeSyntheticEvent) => void + handleChange: (index: number) => (event: NativeSyntheticEvent) => void + handleKeyPress: (index: number) => (e: NativeSyntheticEvent) => void + } +>(function _RecoveryPhraseWord({ word, index, handleBlur, handleChange, handleKeyPress }, ref): JSX.Element { + const debouncedWord = useDebounce(word, 500) + const showError = isValidMnemonicWord(debouncedWord) + + return ( + + + {(index + 1).toString()} + + + + + ) +}) + +const styles = { + inputFocus: { + backgroundColor: '$surface1', + borderWidth: 1, + borderColor: '$surface3', + outlineWidth: 0, + }, + recoveryPhraseWord: { + width: 'calc(calc(100% - 32px) / 3)', // 3 columns with 16px gap + }, +} as const + +const DUMMY_TEXT = 'DUMMY TEXT' diff --git a/apps/extension/src/app/features/onboarding/import/SelectWallets.tsx b/apps/extension/src/app/features/onboarding/import/SelectWallets.tsx new file mode 100644 index 00000000000..d0c1ae89847 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/import/SelectWallets.tsx @@ -0,0 +1,208 @@ +import { useApolloClient } from '@apollo/client' +import { useCallback, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { SelectWalletsSkeleton } from 'src/app/components/loading/SelectWalletSkeleton' +import { saveDappConnection } from 'src/app/features/dapp/actions' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { Flex, ScrollView, Square, Text } from 'ui/src' +import { WalletFilled } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { UNISWAP_WEB_URL } from 'uniswap/src/constants/urls' +import { + SelectWalletScreenDocument, + SelectWalletScreenQuery, +} from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { useAsyncData } from 'utilities/src/react/hooks' +import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { useTimeout } from 'utilities/src/time/timing' +import WalletPreviewCard from 'wallet/src/components/WalletPreviewCard/WalletPreviewCard' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' +import { NUMBER_OF_WALLETS_TO_IMPORT } from 'wallet/src/features/onboarding/createImportedAccounts' +import { useSelectAccounts } from 'wallet/src/features/onboarding/hooks/useSelectAccounts' +import { fetchUnitagByAddresses } from 'wallet/src/features/unitags/api' + +const FORCED_LOADING_DURATION = 3 * ONE_SECOND_MS // 3s + +interface ImportableAccount { + ownerAddress: string + balance: number | undefined +} + +function isImportableAccount(account: { + ownerAddress: string | undefined + balance: Maybe +}): account is ImportableAccount { + return (account as ImportableAccount).ownerAddress !== undefined +} + +export function SelectWallets({ flow }: { flow: ExtensionOnboardingFlow }): JSX.Element { + const { t } = useTranslation() + const shouldAutoConnect = useFeatureFlag(FeatureFlags.ExtensionAutoConnect) + + const { goToNextStep, goToPreviousStep } = useOnboardingSteps() + + const { getImportedAccountsAddresses, selectImportedAccounts } = useOnboardingContext() + const importedAccountsAddresses = getImportedAccountsAddresses() + + const isImportedAccountsReady = importedAccountsAddresses?.length === NUMBER_OF_WALLETS_TO_IMPORT + + const { + data: initialShownAccounts, + isLoading: loading, + error, + refetch, + } = useImportableAccounts(isImportedAccountsReady ? importedAccountsAddresses : undefined) + + const onRetry = useCallback(async () => { + setIsForcedLoading(true) + refetch() + }, [refetch]) + + const showError = error && !initialShownAccounts?.length + + const { selectedAddresses, toggleAddressSelection } = useSelectAccounts(initialShownAccounts) + + const onSubmit = useCallback(async () => { + const importedAccounts = await selectImportedAccounts(selectedAddresses) + + // TODO(EXT-1375): figure out how to better auto connect existing wallets that may have connected via WC or some other method. + // Once that's solved the feature flag can be turned on/removed. + if (shouldAutoConnect && importedAccounts[0]) { + await saveDappConnection(UNISWAP_WEB_URL, importedAccounts[0]) + } + + goToNextStep() + }, [selectImportedAccounts, selectedAddresses, goToNextStep, shouldAutoConnect]) + + // Force a fixed duration loading state for smoother transition (as we show different UI for 1 vs multiple wallets) + const [isForcedLoading, setIsForcedLoading] = useState(true) + useTimeout(() => setIsForcedLoading(false), FORCED_LOADING_DURATION) + + const isLoading = loading || isForcedLoading || !isImportedAccountsReady + + const title = showError ? t('onboarding.selectWallets.title.error') : t('onboarding.selectWallets.title.default') + + return ( + + + + + } + nextButtonEnabled={showError || (isImportedAccountsReady && selectedAddresses.length > 0 && !isLoading)} + nextButtonText={showError ? t('common.button.retry') : t('common.button.continue')} + nextButtonTheme={showError ? 'secondary' : 'primary'} + title={title} + onBack={goToPreviousStep} + onSubmit={showError ? onRetry : onSubmit} + > + + + {showError ? ( + + {t('onboarding.selectWallets.error')} + + ) : isLoading ? ( + + + + ) : ( + initialShownAccounts?.map((account) => { + const { ownerAddress, balance } = account + return ( + + ) + }) + )} + + + + + ) +} + +function useImportableAccounts(addresses?: string[]): { + isLoading: boolean + data?: ImportableAccount[] + error?: Error + refetch: () => void +} { + const [refetchCount, setRefetchCount] = useState(0) + const apolloClient = useApolloClient() + + const refetch = useCallback(() => setRefetchCount((count) => count + 1), []) + + const fetch = useCallback(async (): Promise => { + if (!addresses) { + return + } + + const fetchBalances = apolloClient.query({ + query: SelectWalletScreenDocument, + variables: { ownerAddresses: addresses }, + }) + + const fetchUnitags = fetchUnitagByAddresses(addresses) + + const [balancesResponse, unitagsResponse] = await Promise.all([fetchBalances, fetchUnitags]) + + const unitagsByAddress = unitagsResponse?.data + + const allAddressBalances = balancesResponse.data.portfolios + + const importableAccounts = allAddressBalances + ?.map((address) => ({ + ownerAddress: address?.ownerAddress, + balance: address?.tokensTotalDenominatedValue?.value, + })) + .filter(isImportableAccount) + + const accountsWithBalanceOrUnitag: ImportableAccount[] | undefined = importableAccounts?.filter((address) => { + const hasBalance = Boolean(address.balance && address.balance > 0) + const hasUnitag = unitagsByAddress?.[address.ownerAddress] !== undefined + return hasBalance || hasUnitag + }) + + if (accountsWithBalanceOrUnitag?.length) { + return accountsWithBalanceOrUnitag + } + + // If all addresses have 0 total token value and no unitags are associated with any of them, show the first address. + const firstImportableAccount: ImportableAccount | undefined = importableAccounts?.[0] + if (firstImportableAccount) { + return [firstImportableAccount] + } + + // If query for address balances returned no results, show the first address. + const firstPendingAddress = addresses[0] + if (firstPendingAddress) { + return [{ ownerAddress: firstPendingAddress, balance: undefined }] + } + + throw new Error('No importable accounts found') + // We use `refetchCount` as a dependency to manually trigger a refetch when calling the `refetch` function. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [addresses, apolloClient, refetchCount]) + + const response = useAsyncData(fetch) + + return useMemo( + () => ({ + ...response, + refetch, + }), + [refetch, response], + ) +} diff --git a/apps/extension/src/app/features/onboarding/intro/GetOnTheBetaWaitlistBanner.tsx b/apps/extension/src/app/features/onboarding/intro/GetOnTheBetaWaitlistBanner.tsx new file mode 100644 index 00000000000..ce5fee91068 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/intro/GetOnTheBetaWaitlistBanner.tsx @@ -0,0 +1,43 @@ +import { useTranslation } from 'react-i18next' +import { Button, Flex, FlexProps, Image, Text, useIsDarkMode } from 'ui/src' +import { APP_SCREENSHOT_DARK, APP_SCREENSHOT_LIGHT } from 'ui/src/assets' +import { RotatableChevron } from 'ui/src/components/icons' + +export function GetOnTheBetaWaitlistBanner(): JSX.Element { + const { t } = useTranslation() + const isDarkMode = useIsDarkMode() + + return ( + + ) +} diff --git a/apps/extension/src/app/features/onboarding/intro/IntroScreen.tsx b/apps/extension/src/app/features/onboarding/intro/IntroScreen.tsx new file mode 100644 index 00000000000..8e795dbf317 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/intro/IntroScreen.tsx @@ -0,0 +1,72 @@ +import { useTranslation } from 'react-i18next' +import { Complete } from 'src/app/features/onboarding/Complete' +import { SyncFromPhoneButton } from 'src/app/features/onboarding/SyncFromPhoneButton' +import { Terms } from 'src/app/features/onboarding/Terms' +import { MainIntroWrapper } from 'src/app/features/onboarding/intro/MainIntroWrapper' +import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { checksIfSupportsSidePanel } from 'src/app/utils/chrome' +import { isOnboardedSelector } from 'src/app/utils/isOnboardedSelector' +import { useAppSelector } from 'src/store/store' +import { Button, Flex, Text } from 'ui/src' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { useTimeout } from 'utilities/src/time/timing' + +export function IntroScreen(): JSX.Element { + const { t } = useTranslation() + + const isOnboarded = useAppSelector(isOnboardedSelector) + + // Detections for some unsupported browsers may not work until stylesheet is loaded + useTimeout(() => { + if (!checksIfSupportsSidePanel()) { + navigate(`/${TopLevelRoutes.Onboarding}/${OnboardingRoutes.UnsupportedBrowser}`) + } + }, 0) + + if (isOnboarded) { + return + } + + return ( + + + + + + } + > + + + + + + + + + + {t('onboarding.intro.mobileScan.title')} + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/intro/IntroScreenBetaWaitlist.tsx b/apps/extension/src/app/features/onboarding/intro/IntroScreenBetaWaitlist.tsx new file mode 100644 index 00000000000..d6bbb23be7b --- /dev/null +++ b/apps/extension/src/app/features/onboarding/intro/IntroScreenBetaWaitlist.tsx @@ -0,0 +1,246 @@ +import { useCallback, useEffect, useReducer, useState } from 'react' +import { Trans, useTranslation } from 'react-i18next' +import { Complete } from 'src/app/features/onboarding/Complete' +import { GetOnTheBetaWaitlistBanner } from 'src/app/features/onboarding/intro/GetOnTheBetaWaitlistBanner' +import { MainContentWrapper } from 'src/app/features/onboarding/intro/MainContentWrapper' +import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { checksIfSupportsSidePanel } from 'src/app/utils/chrome' +import { isOnboardedSelector } from 'src/app/utils/isOnboardedSelector' +import { UNISWAP_BETA_LOGO } from 'src/assets' +import { useAppSelector } from 'src/store/store' +import { Button, Flex, Image, Input, SpinningLoader, Text, useSporeColors } from 'ui/src' +import { ApproveFilled, FileListLock, Unitag } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { UnitagWaitlistPositionResponse } from 'uniswap/src/features/unitags/types' +import { shortenAddress } from 'uniswap/src/utils/addresses' +import { useTimeout } from 'utilities/src/time/timing' +import { fetchExtensionWaitlistEligibity } from 'wallet/src/features/unitags/api' + +const UNISWAP_BETA_LOGO_SIZE = 68 + +export function IntroScreenBetaWaitlist(): JSX.Element { + const { t, i18n } = useTranslation() + const colors = useSporeColors() + + const [username, setUsername] = useState('') + const [eligibility, setEligibility] = useState() + const [checkingEligibility, setCheckingEligibility] = useState(false) + + const [_, forceUpdate] = useReducer((x: number): number => x + 1, 0) + + useEffect(() => { + // Initial language change not lead to a rerender for onboarding app + forceUpdate() + }, [i18n.language]) + + // Detections for some unsupported browsers may not work until stylesheet is loaded + useTimeout(() => { + if (!checksIfSupportsSidePanel()) { + navigate(`/${TopLevelRoutes.Onboarding}/${OnboardingRoutes.UnsupportedBrowser}`) + } + }, 0) + + const isSubmitDisabled = (eligibility && !eligibility.isAccepted) || checkingEligibility || !username + + const onCheckEligibility = async (): Promise => { + if (isSubmitDisabled) { + return + } + + setCheckingEligibility(true) + + const { data } = await fetchExtensionWaitlistEligibity(username) + + setCheckingEligibility(false) + setEligibility(data) + } + + const onChangeText = (text: string): void => { + setUsername(text.trim()) + setEligibility(undefined) + } + + const isOnboarded = useAppSelector(isOnboardedSelector) + + if (isOnboarded) { + return + } + + if (eligibility && eligibility.isAccepted) { + return + } + + return ( + + + + + + + + + Uniswap Wallet + + + + BETA + + + + + }} + i18nKey="onboarding.introBetaWaitlist.checkEligibilityInstructions" + t={t} + /> + + + + + + + + + .uni.eth + + + + {eligibility && !eligibility.isAccepted && ( + + + + + + + + {t('onboarding.introBetaWaitlist.ineligibleExplanation')} + + + + )} + + + + + + + ) +} + +function EligibleUnitag({ address, username }: { address: string; username: string }): JSX.Element { + const { t } = useTranslation() + const colors = useSporeColors() + + const onContinue = useCallback(() => { + navigate(`/${TopLevelRoutes.Onboarding}/${OnboardingRoutes.Scan}`) + }, []) + + useEffect(() => { + const handleKeyPress = (event: KeyboardEvent): void => { + if (event.key === 'Enter') { + onContinue() + } + } + + window.addEventListener('keydown', handleKeyPress) + + return () => { + window.removeEventListener('keydown', handleKeyPress) + } + }, [onContinue]) + + return ( + + + + + + + + + + + {t('onboarding.introBetaWaitlist.eligible.title')} + + + + + {t('onboarding.introBetaWaitlist.eligible.tagline')} + + + + + + {username} + + + + + + + + + {shortenAddress(address)} + + + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/intro/MainContentWrapper.tsx b/apps/extension/src/app/features/onboarding/intro/MainContentWrapper.tsx new file mode 100644 index 00000000000..e6109e1f6b3 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/intro/MainContentWrapper.tsx @@ -0,0 +1,23 @@ +import { PropsWithChildren } from 'react' +import { ONBOARDING_CONTENT_WIDTH } from 'src/app/features/onboarding/utils' +import { Flex } from 'ui/src' + +export function MainContentWrapper({ children }: PropsWithChildren): JSX.Element { + return ( + + {children} + + ) +} diff --git a/apps/extension/src/app/features/onboarding/intro/MainIntroWrapper.tsx b/apps/extension/src/app/features/onboarding/intro/MainIntroWrapper.tsx new file mode 100644 index 00000000000..c76615a7a06 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/intro/MainIntroWrapper.tsx @@ -0,0 +1,42 @@ +import { PropsWithChildren, ReactNode } from 'react' +import { ONBOARDING_CONTENT_WIDTH } from 'src/app/features/onboarding/utils' +import { Flex } from 'ui/src' +import { LandingBackground } from 'wallet/src/components/landing/LandingBackground' + +// Fixed padding value to align content with a certain point on the background +const CONTAINER_PADDING_TOP = 340 +const LANDING_BACKGROUND_SIZE = 400 + +export function MainIntroWrapper({ + children, + belowFrameContent, +}: PropsWithChildren<{ belowFrameContent?: ReactNode }>): JSX.Element { + return ( + + + + + + + + + {children} + + + {belowFrameContent && ( + + {belowFrameContent} + + )} + + ) +} diff --git a/apps/extension/src/app/features/onboarding/intro/UnsupportedBrowserScreen.tsx b/apps/extension/src/app/features/onboarding/intro/UnsupportedBrowserScreen.tsx new file mode 100644 index 00000000000..9336a2764a5 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/intro/UnsupportedBrowserScreen.tsx @@ -0,0 +1,41 @@ +import { useTranslation } from 'react-i18next' +import { MainIntroWrapper } from 'src/app/features/onboarding/intro/MainIntroWrapper' +import { Flex, Text } from 'ui/src' +import { AlertTriangle } from 'ui/src/components/icons' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionScreens } from 'uniswap/src/types/screens/extension' + +export function UnsupportedBrowserScreen(): JSX.Element { + const { t } = useTranslation() + + return ( + + + + + + + + + + + {t('onboarding.extension.unsupported.title')} + + + {t('onboarding.extension.unsupported.description')} + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/reset/ResetComplete.tsx b/apps/extension/src/app/features/onboarding/reset/ResetComplete.tsx new file mode 100644 index 00000000000..0e64b2b9976 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/reset/ResetComplete.tsx @@ -0,0 +1,34 @@ +import { useTranslation } from 'react-i18next' +import { terminateStoreSynchronization } from 'src/store/storeSynchronization' +import { Flex, Text } from 'ui/src' +import { Check, GraduationCap } from 'ui/src/components/icons' +import { useFinishOnboarding } from 'wallet/src/features/onboarding/OnboardingContext' + +export function ResetComplete(): JSX.Element { + const { t } = useTranslation() + + // Activates onboarding accounts on component mount + useFinishOnboarding(terminateStoreSynchronization) + + return ( + <> + + + + + + {t('onboarding.resetPassword.complete.title')} + + {t('onboarding.resetPassword.complete.subtitle')} + + + + + + {t('onboarding.resetPassword.complete.safety')} + + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/scan/OTPInput.tsx b/apps/extension/src/app/features/onboarding/scan/OTPInput.tsx new file mode 100644 index 00000000000..f835447c708 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/scan/OTPInput.tsx @@ -0,0 +1,232 @@ +import { createRef, RefObject, useCallback, useEffect, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { NativeSyntheticEvent, TextInput, TextInputChangeEventData, TextInputKeyPressEventData } from 'react-native' +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { useScantasticContext } from 'src/app/features/onboarding/scan/ScantasticContextProvider' +import { decryptMessage } from 'src/app/features/onboarding/scan/utils' +import { Flex, Input, inputStyles, Square, Text } from 'ui/src' +import { Mobile } from 'ui/src/components/icons' +import { fonts, iconSizes } from 'ui/src/theme' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { logger } from 'utilities/src/logger/logger' +import { arraysAreEqual } from 'utilities/src/primitives/array' +import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { useInterval, useTimeout } from 'utilities/src/time/timing' +import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' +import { getOtpDurationString } from 'wallet/src/utils/duration' + +const MAX_FAILED_OTP_ATTEMPTS = 3 + +type CharacterSequence = [string, string, string, string, string, string] +const INITIAL_CHARACTER_SEQUENCE: CharacterSequence = ['', '', '', '', '', ''] + +export function OTPInput(): JSX.Element { + const { t } = useTranslation() + const { goToNextStep, goToPreviousStep } = useOnboardingSteps() + + const { addOnboardingAccountMnemonic } = useOnboardingContext() + const { privateKey, resetScantastic, sessionUUID, expirationTimestamp } = useScantasticContext() + const resetFlowAndNavBack = useCallback((): void => { + resetScantastic() + goToPreviousStep() + }, [goToPreviousStep, resetScantastic]) + + const [expiryText, setExpiryText] = useState(getOtpDurationString(expirationTimestamp)) + + const setExpirationText = useCallback(() => { + const expirationString = getOtpDurationString(expirationTimestamp) + setExpiryText(expirationString) + }, [expirationTimestamp]) + useInterval(setExpirationText, ONE_SECOND_MS) + + if (!sessionUUID || !privateKey) { + resetFlowAndNavBack() + } + + const [loading, setLoading] = useState(false) + const [error, setError] = useState(false) + const [failedAttemptCount, setFailedAttemptCount] = useState(0) + const [characterSequence, setCharacterSequence] = useState(INITIAL_CHARACTER_SEQUENCE) + + const inputRefs = useRef[]>([]) + inputRefs.current = new Array(6).fill(null).map((_, i) => inputRefs.current[i] || createRef()) + + // Add all accounts from mnemonic. + const onSubmit = useCallback( + async (mnemonic: string[]) => { + addOnboardingAccountMnemonic(mnemonic) + goToNextStep() + }, + [goToNextStep, addOnboardingAccountMnemonic], + ) + + useEffect(() => { + if (error && !arraysAreEqual(characterSequence, INITIAL_CHARACTER_SEQUENCE)) { + setCharacterSequence(INITIAL_CHARACTER_SEQUENCE) + } + }, [error, characterSequence]) + + const submitOTP = useCallback(async (): Promise => { + if (!privateKey || !sessionUUID) { + return + } + setError(false) + setLoading(true) + // submit OTP to receive blob + const response = await fetch(`${uniswapUrls.scantasticApiUrl}/otp`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + uuid: sessionUUID, + otp: characterSequence.join(''), + }), + }) + + if (!response.ok) { + setCharacterSequence(INITIAL_CHARACTER_SEQUENCE) + throw new Error(`Failed to submit OTP: ${await response.text()}`) + } + + const data = (await response.json()) as { encryptedSeed?: string; OTPFailedAttempts?: number } + if (!data.encryptedSeed) { + if (data.OTPFailedAttempts) { + if (Number(data.OTPFailedAttempts) === MAX_FAILED_OTP_ATTEMPTS) { + resetFlowAndNavBack() + return + } else { + setFailedAttemptCount(data.OTPFailedAttempts) + return + } + } + throw new Error(`fetch(${uniswapUrls.scantasticApiUrl}/otp failed to include an encrypted seed`) + } + const preImage = await decryptMessage(privateKey, data.encryptedSeed) + const words = preImage.split(' ') + + const newMnemonic = Array(24) + .fill('') + .map((_, i) => (words[i] || '') as string) + .filter((word) => !!word) + + await onSubmit(newMnemonic) + }, [privateKey, sessionUUID, characterSequence, onSubmit, resetFlowAndNavBack]) + + const handleChange = useCallback( + (index: number) => + (event: NativeSyntheticEvent): void => { + setError(false) + const newCharacters: CharacterSequence = [...characterSequence] + newCharacters[index] = event.nativeEvent.text + setCharacterSequence(newCharacters) + + if (newCharacters[index]?.length === 1 && inputRefs.current[index + 1]?.current) { + inputRefs.current[index + 1]?.current?.focus() + } + }, + [characterSequence, setCharacterSequence], + ) + + const handleKeyPress = useCallback( + (index: number) => + (event: NativeSyntheticEvent): void => { + if (index !== 0 && event.nativeEvent.key === 'Backspace') { + inputRefs.current[index - 1]?.current?.focus() + } + }, + [], + ) + + useEffect(() => { + const allCharactersFilled = characterSequence.every((element) => element !== '') + if (allCharactersFilled && !loading && !error) { + submitOTP() + .catch((e) => { + inputRefs.current[0]?.current?.focus() + logger.error(e, { + tags: { file: 'OTPInput.tsx', function: 'submitOTP' }, + extra: { uuid: sessionUUID }, + }) + setError(true) + }) + .finally(() => { + setLoading(false) + }) + } + }, [characterSequence, loading, error, sessionUUID, submitOTP]) + + useTimeout(resetFlowAndNavBack, expirationTimestamp - Date.now()) + + return ( + + + + + } + nextButtonEnabled={false} + nextButtonText={expiryText} + nextButtonTheme="secondary" + subtitle={t('onboarding.scan.otp.subtitle')} + title={t('onboarding.scan.otp.title')} + onBack={resetFlowAndNavBack} + onSubmit={(): void => undefined} + > + + + {characterSequence.map((character, index) => ( + + ))} + + + {error && ( + + {t('onboarding.scan.otp.error')} + + )} + {failedAttemptCount > 0 && ( + + {t('onboarding.scan.otp.failed', { number: failedAttemptCount })} + + )} + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/scan/ScanToOnboard.tsx b/apps/extension/src/app/features/onboarding/scan/ScanToOnboard.tsx new file mode 100644 index 00000000000..e7915bca2fc --- /dev/null +++ b/apps/extension/src/app/features/onboarding/scan/ScanToOnboard.tsx @@ -0,0 +1,311 @@ +import { useCallback, useEffect, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { + cancelAnimation, + useAnimatedStyle, + useSharedValue, + withRepeat, + withSequence, + withSpring, +} from 'react-native-reanimated' +import { SpringConfig } from 'react-native-reanimated/lib/typescript/reanimated2/animation/springUtils' +import QRCode from 'react-qr-code' //TODO(EXT-476): Replace with custom QR code designs +import { OnboardingScreen } from 'src/app/features/onboarding/OnboardingScreen' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { Terms } from 'src/app/features/onboarding/Terms' +import { useScantasticContext } from 'src/app/features/onboarding/scan/ScantasticContextProvider' +import { getScantasticUrl } from 'src/app/features/onboarding/scan/utils' +import { TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import UAParser from 'ua-parser-js' +import { Flex, Image, Square, Text, useSporeColors } from 'ui/src' +import { DOT_GRID, UNISWAP_LOGO } from 'ui/src/assets' +import { Mobile, Wifi } from 'ui/src/components/icons' +import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' +import { iconSizes, zIndices } from 'ui/src/theme' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ExtensionOnboardingFlow, ExtensionOnboardingScreens } from 'uniswap/src/types/screens/extension' +import { logger } from 'utilities/src/logger/logger' +import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { useTimeout } from 'utilities/src/time/timing' +import { ScantasticParamsSchema } from 'wallet/src/features/scantastic/types' + +const UNISWAP_LOGO_SIZE = 52 +const UNISWAP_LOGO_SCALE_LOADING = 1.2 +const UNISWAP_LOGO_SCALE_DEFAULT = 1 +const QR_CODE_SIZE = 212 + +function useDocumentVisibility(): boolean { + const [isDocumentVisible, setIsDocumentVisible] = useState(!document.hidden) + + const handleVisibilityChange = (): void => { + setIsDocumentVisible(!document.hidden) + } + + useEffect(() => { + document.addEventListener('visibilitychange', handleVisibilityChange) + + return () => { + document.removeEventListener('visibilitychange', handleVisibilityChange) + } + }, []) + + return isDocumentVisible +} + +export function ScanToOnboard(): JSX.Element { + const colors = useSporeColors() + const { t } = useTranslation() + + const { goToNextStep } = useOnboardingSteps() + const isDocumentVisible = useDocumentVisibility() + + const { sessionUUID, isLoadingUUID, publicKey, resetScantastic, expirationTimestamp, setExpirationTimestamp } = + useScantasticContext() + + const scantasticValue = useMemo(() => { + const parser = new UAParser(window.navigator.userAgent) + const { + device: { vendor, model }, + browser: { name: browser }, + } = parser.getResult() + + if (!publicKey || !sessionUUID) { + return '' + } + + try { + const params = ScantasticParamsSchema.parse({ + uuid: sessionUUID, + publicKey, + vendor, + browser, + model, + }) + + return getScantasticUrl(params) + } catch (e) { + const wrappedError = new Error('Failed to build scantastic params', { cause: e }) + logger.error(wrappedError, { + tags: { + file: 'ScanToOnboard.tsx', + function: 'useMemo', + }, + }) + return '' + } + }, [publicKey, sessionUUID]) + + const errorDerivingQR = Boolean(!isLoadingUUID && !scantasticValue) + + const checkOTPState = useCallback(async (): Promise => { + if (!sessionUUID) { + return + } + try { + // poll OTP state + const response = await fetch(`${uniswapUrls.scantasticApiUrl}/otp-state/${sessionUUID}`, { + method: 'POST', + headers: { + Accept: 'application/json', + }, + }) + + if (!response.ok) { + throw new Error(`Failed to check OTP state: ${await response.text()}`) + } + const data = (await response.json()) as { otp: string; expiresAtInSeconds: number } + const otpState = data.otp + if (!otpState) { + throw new Error(`Scantastic OTP check response did not include the requested OTP state`) + } + + setExpirationTimestamp((current) => data?.expiresAtInSeconds * ONE_SECOND_MS ?? current) + + // mobile app has received the OTP and the user should input it into this UI + if (otpState === 'ready') { + goToNextStep() + } + if (otpState === 'expired') { + resetScantastic() + } + } catch (e) { + logger.error(e, { + tags: { + file: 'ScanToOnboard.tsx', + function: 'checkOTPState', + }, + extra: { uuid: sessionUUID }, + }) + } + }, [sessionUUID, setExpirationTimestamp, goToNextStep, resetScantastic]) + + useEffect(() => { + let interval: NodeJS.Timeout | undefined + + if (isDocumentVisible) { + interval = setInterval(checkOTPState, ONE_SECOND_MS) + } + + return () => clearInterval(interval) + }, [checkOTPState, isDocumentVisible]) + + useTimeout(resetScantastic, expirationTimestamp - Date.now()) + + const qrScale = useSharedValue(UNISWAP_LOGO_SCALE_DEFAULT) + useEffect(() => { + if (!isLoadingUUID) { + qrScale.value = UNISWAP_LOGO_SCALE_DEFAULT + return + } + + const springConfig: SpringConfig = { + mass: 1, + stiffness: 80, + damping: 20, + } + qrScale.value = withRepeat( + withSequence( + withSpring(UNISWAP_LOGO_SCALE_LOADING, springConfig), + withSpring(UNISWAP_LOGO_SCALE_DEFAULT, springConfig), + ), + 0, + true, + ) + + return () => cancelAnimation(qrScale) + }, [isLoadingUUID, qrScale]) + // Using useAnimatedStyle and AnimatedFlex because tamagui scale animation not working + const qrAnimatedStyle = useAnimatedStyle(() => { + return { + transform: `scale(${qrScale.value})`, + } + }, [qrScale]) + + const scantasticOnboardingOnly = useFeatureFlag(FeatureFlags.ScantasticOnboardingOnly) + + return ( + + + + + } + nextButtonEnabled={false} + nextButtonText={ + scantasticOnboardingOnly + ? undefined + : errorDerivingQR + ? t('common.button.retry') + : t('onboarding.scan.button') + } + nextButtonTheme="secondary" + subtitle={t('onboarding.scan.subtitle')} + title={t('onboarding.scan.title')} + onBack={ + scantasticOnboardingOnly + ? undefined + : (): void => navigate(`/${TopLevelRoutes.Onboarding}`, { replace: true }) + } + > + + + {errorDerivingQR ? ( + + + {t('onboarding.scan.error')} + + + ) : ( + <> + {/* + NOTE: if you modify the style or colors of the QR code, make sure to thoroughly test how they perform when scanning them both on light and dark modes. + */} + + + + {isLoadingUUID ? ( + + ) : ( + + + + )} + + )} + + + + + {t('onboarding.scan.wifi')} + + + + {scantasticOnboardingOnly && ( + + + + )} + + + + ) +} diff --git a/apps/extension/src/app/features/onboarding/scan/ScantasticContextProvider.tsx b/apps/extension/src/app/features/onboarding/scan/ScantasticContextProvider.tsx new file mode 100644 index 00000000000..84dd33c8b54 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/scan/ScantasticContextProvider.tsx @@ -0,0 +1,142 @@ +import { + createContext, + Dispatch, + PropsWithChildren, + SetStateAction, + useCallback, + useContext, + useEffect, + useState, +} from 'react' +import { useOnboardingSteps } from 'src/app/features/onboarding/OnboardingSteps' +import { cryptoKeyToJWK, KEY_PARAMS } from 'src/app/features/onboarding/scan/utils' +import { OnboardingRoutes, TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { logger } from 'utilities/src/logger/logger' +import { ONE_DAY_MS, ONE_MINUTE_MS, ONE_SECOND_MS } from 'utilities/src/time/time' +import { ScantasticParamsSchema } from 'wallet/src/features/scantastic/types' + +type ScantasticContextState = { + isLoadingUUID: boolean + privateKey: CryptoKey | null + publicKey: JsonWebKey | null + sessionUUID: string | null + resetScantastic: () => void + expirationTimestamp: number + setExpirationTimestamp: Dispatch> +} + +const uuidSchema = ScantasticParamsSchema.shape.uuid + +export const ScantasticContext = createContext(undefined) + +export function ScantasticContextProvider({ children }: PropsWithChildren): JSX.Element { + const { isResetting } = useOnboardingSteps() + + const [isLoadingUUID, setIsLoadingUUID] = useState(true) + const [publicKey, setPublicKey] = useState(null) + const [privateKey, setPrivateKey] = useState(null) + const [sessionUUID, setSessionUUID] = useState(null) + // Users have 20 minutes to scan the QR code. This is reduced to 6 minutes for OTP input once the scan is completed. + const [expirationTimestamp, setExpirationTimestamp] = useState(Date.now() + 20 * ONE_MINUTE_MS) + + const reset = useCallback(() => { + setPublicKey(null) + setPrivateKey(null) + setSessionUUID(null) + setExpirationTimestamp(Date.now() + ONE_DAY_MS) + navigate(`/${TopLevelRoutes.Onboarding}/${isResetting ? OnboardingRoutes.ResetScan : OnboardingRoutes.Scan}`, { + replace: true, + }) + }, [isResetting]) + + useEffect(() => { + async function getSessionUUID(): Promise { + if (sessionUUID) { + return + } + + try { + const { publicKey: pub, privateKey: priv } = await window.crypto.subtle.generateKey(KEY_PARAMS, true, [ + 'encrypt', + 'decrypt', + ]) + const jwk = await cryptoKeyToJWK(pub) + setPublicKey(jwk) + setPrivateKey(priv) + } catch (e) { + logger.error(e, { + tags: { + file: 'OnboardingContextProvider.tsx', + function: 'getSessionUUID->generateKeyPair', + }, + }) + } + + // Initiate scantastic onboarding session + const response = await fetch(`${uniswapUrls.scantasticApiUrl}/uuid`, { + method: 'POST', + headers: { + Accept: 'application/json', + }, + }) + + if (!response.ok) { + throw new Error(`Failed to fetch uuid for mobile->ext onboarding: ${await response.text()}`) + } + + const data = await response.json() + + if (!data.uuid) { + throw new Error('Missing uuid from onboarding session initiation request.') + } + + try { + const uuid = uuidSchema.parse(data.uuid) + setSessionUUID(uuid) + } catch { + throw new Error('Invalid uuid from onboarding session initiation request.') + } + + if (data.expiresAtInSeconds) { + setExpirationTimestamp(data.expiresAtInSeconds * ONE_SECOND_MS) + } + } + + setIsLoadingUUID(true) + getSessionUUID() + .catch((e) => { + logger.error(e, { + tags: { file: 'OnboardingContextProvider.tsx', function: 'getSessionUUID' }, + }) + }) + .finally(() => { + setIsLoadingUUID(false) + }) + }, [sessionUUID]) + + return ( + + {children} + + ) +} + +export const useScantasticContext = (): ScantasticContextState => { + const scantasticContext = useContext(ScantasticContext) + if (scantasticContext === undefined) { + throw new Error('useScantasticContext must be inside a ScantasticContextProvider') + } + return scantasticContext +} diff --git a/apps/extension/src/app/features/onboarding/scan/utils.ts b/apps/extension/src/app/features/onboarding/scan/utils.ts new file mode 100644 index 00000000000..e08cdb84be0 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/scan/utils.ts @@ -0,0 +1,52 @@ +import { logger } from 'utilities/src/logger/logger' +import { ScantasticParams } from 'wallet/src/features/scantastic/types' + +export const KEY_PARAMS = { + name: 'RSA-OAEP', + modulusLength: 4096, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', +} + +export async function cryptoKeyToJWK(key: CryptoKey): Promise { + const exportedKeyData = await window.crypto.subtle.exportKey('jwk', key) + return exportedKeyData +} + +export function getScantasticUrl({ uuid, publicKey, vendor, model, browser }: ScantasticParams): string { + let qrURI = `uniswap://scantastic?pubKey=${JSON.stringify(publicKey)}&uuid=${encodeURIComponent(uuid)}` + if (vendor) { + qrURI = qrURI.concat(`&vendor=${encodeURIComponent(vendor)}`) + } + if (model) { + qrURI = qrURI.concat(`&model=${encodeURIComponent(model)}`) + } + if (browser) { + qrURI = qrURI.concat(`&browser=${encodeURIComponent(browser)}`) + } + return qrURI +} + +function base64ToArrayBuffer(base64Data: string): ArrayBuffer { + const binaryString = window.atob(base64Data) + const len = binaryString.length + const bytes = new Uint8Array(len) + for (let i = 0; i < len; i++) { + bytes[i] = binaryString.charCodeAt(i) + } + return bytes.buffer +} + +export async function decryptMessage(privateKey: CryptoKey, ciphertext: string): Promise { + const cipherTextBuffer = base64ToArrayBuffer(ciphertext) + + try { + const decryptedArrayBuffer = await window.crypto.subtle.decrypt({ name: 'RSA-OAEP' }, privateKey, cipherTextBuffer) + + const textDecoder = new TextDecoder() + return textDecoder.decode(decryptedArrayBuffer) + } catch (e) { + logger.error(e, { tags: { file: 'scan/utils.ts', function: 'decryptMessage' } }) + return '' + } +} diff --git a/apps/extension/src/app/features/onboarding/utils.ts b/apps/extension/src/app/features/onboarding/utils.ts new file mode 100644 index 00000000000..7e0c93ddb42 --- /dev/null +++ b/apps/extension/src/app/features/onboarding/utils.ts @@ -0,0 +1,2 @@ +export const ONBOARDING_CONTENT_WIDTH = 460 +export const ONBOARDING_INITIAL_FRAME_HEIGHT = 636 diff --git a/apps/extension/src/app/features/popups/ConnectPopup.tsx b/apps/extension/src/app/features/popups/ConnectPopup.tsx new file mode 100644 index 00000000000..f6c9df13cc4 --- /dev/null +++ b/apps/extension/src/app/features/popups/ConnectPopup.tsx @@ -0,0 +1,87 @@ +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { saveDappConnection } from 'src/app/features/dapp/actions' +import { useDappContext } from 'src/app/features/dapp/DappContext' +import { extractUrlHost } from 'src/app/features/dappRequests/utils' +import { Anchor, Button, Flex, Popover, Separator, Text, TouchableArea } from 'ui/src' +import { X } from 'ui/src/components/icons' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { useActiveAccountWithThrow } from 'wallet/src/features/wallet/hooks' + +export function ConnectPopupContent({ + onClose, + asPopover = false, + showConnectButton = false, +}: { + onClose?: () => void + asPopover?: boolean + showConnectButton?: boolean +}): JSX.Element { + const { t } = useTranslation() + + const { dappUrl } = useDappContext() + const activeAccount = useActiveAccountWithThrow() + + const onConnect = async (): Promise => { + await saveDappConnection(dappUrl, activeAccount) + onClose?.() + } + + return ( + + + + {t('extension.connection.titleNotConnected')} + + + + {extractUrlHost(dappUrl)} + + + + + {!asPopover && ( + + + + )} + + + + + {showConnectButton ? t('extension.connection.popupWithButton') : t('extension.connection.popup')} + + {showConnectButton ? ( + asPopover ? ( + + + + ) : ( + + ) + ) : ( + + sendAnalyticsEvent(ExtensionEventName.DappTroubleConnecting, { + dappUrl, + }) + } + > + + {t('extension.connection.popup.trouble')} + + + )} + + + ) +} diff --git a/apps/extension/src/app/features/popups/selectors.ts b/apps/extension/src/app/features/popups/selectors.ts new file mode 100644 index 00000000000..6c8c7d3193d --- /dev/null +++ b/apps/extension/src/app/features/popups/selectors.ts @@ -0,0 +1,6 @@ +import { PopupsState } from 'src/app/features/popups/slice' +import { WebState } from 'src/store/webReducer' + +export function selectPopupState(name: T): (state: WebState) => PopupsState[T] { + return (state) => state.popups[name] +} diff --git a/apps/extension/src/app/features/popups/slice.ts b/apps/extension/src/app/features/popups/slice.ts new file mode 100644 index 00000000000..a11c446698a --- /dev/null +++ b/apps/extension/src/app/features/popups/slice.ts @@ -0,0 +1,33 @@ +import { createSlice, PayloadAction } from '@reduxjs/toolkit' + +export enum PopupName { + Connect = 'connect', +} + +export interface PopupsState { + [PopupName.Connect]: { + isOpen: boolean + } +} + +const initialState: PopupsState = { + [PopupName.Connect]: { + isOpen: false, + }, +} + +const slice = createSlice({ + name: 'popups', + initialState, + reducers: { + openPopup: (state, action: PayloadAction) => { + state[action.payload].isOpen = true + }, + closePopup: (state, action: PayloadAction) => { + state[action.payload].isOpen = false + }, + }, +}) + +export const { openPopup, closePopup } = slice.actions +export const { reducer: popupsReducer } = slice diff --git a/apps/extension/src/app/features/receive/ReceiveScreen.test.tsx b/apps/extension/src/app/features/receive/ReceiveScreen.test.tsx new file mode 100644 index 00000000000..fb640ab5706 --- /dev/null +++ b/apps/extension/src/app/features/receive/ReceiveScreen.test.tsx @@ -0,0 +1,24 @@ +import { ReceiveScreen } from 'src/app/features/receive/ReceiveScreen' +import { cleanup, render, screen } from 'src/test/test-utils' +import { ACCOUNT, preloadedSharedState } from 'wallet/src/test/fixtures' + +const preloadedState = preloadedSharedState({ + account: ACCOUNT, +}) + +describe(ReceiveScreen, () => { + it('renders without error', async () => { + const tree = render(, { preloadedState }) + + expect(tree).toMatchSnapshot() + cleanup() + }) + + it('renders a QR code', async () => { + render(, { preloadedState }) + + const qrCode = await screen.getByTestId('wallet-qr-code') + expect(qrCode).toBeDefined() + cleanup() + }) +}) diff --git a/apps/extension/src/app/features/receive/ReceiveScreen.tsx b/apps/extension/src/app/features/receive/ReceiveScreen.tsx new file mode 100644 index 00000000000..ac8ebfb2e50 --- /dev/null +++ b/apps/extension/src/app/features/receive/ReceiveScreen.tsx @@ -0,0 +1,29 @@ +import { useTranslation } from 'react-i18next' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { SCREEN_ITEM_HORIZONTAL_PAD } from 'src/app/constants' +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { Flex } from 'ui/src' +import { X } from 'ui/src/components/icons' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { WalletQRCode } from 'wallet/src/components/QRCodeScanner/WalletQRCode' +import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' + +export function ReceiveScreen(): JSX.Element { + const { t } = useTranslation() + const { navigateBack } = useExtensionNavigation() + const activeAddress = useActiveAccountAddressWithThrow() + + return ( + + + + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/receive/__snapshots__/ReceiveScreen.test.tsx.snap b/apps/extension/src/app/features/receive/__snapshots__/ReceiveScreen.test.tsx.snap new file mode 100644 index 00000000000..780be3ab591 --- /dev/null +++ b/apps/extension/src/app/features/receive/__snapshots__/ReceiveScreen.test.tsx.snap @@ -0,0 +1,12505 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ReceiveScreen renders without error 1`] = ` +{ + "asFragment": [Function], + "baseElement": +
+ + +
+
+
+
+ + + +
+
+ + Receive + +
+
+
+
+
+
+
+
+
+
+ + Test Account + +
+
+
+
+ + 0x​82D5...3Fa6 + + + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ + You can receive tokens & NFTs on Ethereum, Polygon, Arbitrum, Optimism, Base, ZKsync, Zora, Avalanche, Celo, Blast, and BNB Chain. + +
+ + Learn more + +
+
+
+
+ + +
+ , + "container":
+ + +
+
+
+
+ + + +
+
+ + Receive + +
+
+
+
+
+
+
+
+
+
+ + Test Account + +
+
+
+
+ + 0x​82D5...3Fa6 + + + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+
+ + You can receive tokens & NFTs on Ethereum, Polygon, Arbitrum, Optimism, Base, ZKsync, Zora, Avalanche, Celo, Blast, and BNB Chain. + +
+ + Learn more + +
+
+
+
+ + +
, + "debug": [Function], + "findAllByAltText": [Function], + "findAllByDisplayValue": [Function], + "findAllByLabelText": [Function], + "findAllByPlaceholderText": [Function], + "findAllByRole": [Function], + "findAllByTestId": [Function], + "findAllByText": [Function], + "findAllByTitle": [Function], + "findByAltText": [Function], + "findByDisplayValue": [Function], + "findByLabelText": [Function], + "findByPlaceholderText": [Function], + "findByRole": [Function], + "findByTestId": [Function], + "findByText": [Function], + "findByTitle": [Function], + "getAllByAltText": [Function], + "getAllByDisplayValue": [Function], + "getAllByLabelText": [Function], + "getAllByPlaceholderText": [Function], + "getAllByRole": [Function], + "getAllByTestId": [Function], + "getAllByText": [Function], + "getAllByTitle": [Function], + "getByAltText": [Function], + "getByDisplayValue": [Function], + "getByLabelText": [Function], + "getByPlaceholderText": [Function], + "getByRole": [Function], + "getByTestId": [Function], + "getByText": [Function], + "getByTitle": [Function], + "queryAllByAltText": [Function], + "queryAllByDisplayValue": [Function], + "queryAllByLabelText": [Function], + "queryAllByPlaceholderText": [Function], + "queryAllByRole": [Function], + "queryAllByTestId": [Function], + "queryAllByText": [Function], + "queryAllByTitle": [Function], + "queryByAltText": [Function], + "queryByDisplayValue": [Function], + "queryByLabelText": [Function], + "queryByPlaceholderText": [Function], + "queryByRole": [Function], + "queryByTestId": [Function], + "queryByText": [Function], + "queryByTitle": [Function], + "rerender": [Function], + "store": { + "@@observable": [Function], + "dispatch": [Function], + "getState": [Function], + "replaceReducer": [Function], + "subscribe": [Function], + }, + "unmount": [Function], +} +`; diff --git a/apps/extension/src/app/features/settings/DevMenuScreen.tsx b/apps/extension/src/app/features/settings/DevMenuScreen.tsx new file mode 100644 index 00000000000..5436dceee09 --- /dev/null +++ b/apps/extension/src/app/features/settings/DevMenuScreen.tsx @@ -0,0 +1,44 @@ +import { useTranslation } from 'react-i18next' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { SettingsItemWithDropdown } from 'src/app/features/settings/SettingsItemWithDropdown' +import { Accordion, Flex, ScrollView } from 'ui/src' +import { Settings } from 'ui/src/components/icons' +import i18n from 'uniswap/src/i18n/i18n' +import { GatingOverrides } from 'wallet/src/components/gating/GatingOverrides' +import { Language, SUPPORTED_LANGUAGES } from 'wallet/src/features/language/constants' +import { getLanguageInfo, useCurrentLanguageInfo } from 'wallet/src/features/language/hooks' +import { setCurrentLanguage } from 'wallet/src/features/language/slice' +import { useAppDispatch } from 'wallet/src/state' + +export function DevMenuScreen(): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + + // Changing extension language requires changing system settings, so allowing for easy override here + const currentLanguageInfo = useCurrentLanguageInfo() + + return ( + + + + { + return { value: language, label: getLanguageInfo(t, language).displayName } + })} + selected={currentLanguageInfo.displayName} + title="Language Override" + onSelect={async (value) => { + const language = value as Language + const languageInfo = getLanguageInfo(t, language) + await i18n.changeLanguage(languageInfo.locale) + dispatch(setCurrentLanguage(language)) + }} + /> + + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsDropdown.tsx b/apps/extension/src/app/features/settings/SettingsDropdown.tsx new file mode 100644 index 00000000000..be9ee09cd86 --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsDropdown.tsx @@ -0,0 +1,92 @@ +import { useState } from 'react' +import { Flex, Popover, ScrollView, Text, TouchableArea } from 'ui/src' +import { Check, RotatableChevron } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' + +type DropdownItem = { + label: string + value: unknown +} + +export type SettingsDropdownProps = { + selected: string + items: DropdownItem[] + disableDropdown?: boolean + onSelect: (item: unknown) => void +} + +const MAX_DROPDOWN_HEIGHT = 220 +const MAX_DROPDOWN_WIDTH = 200 + +export function SettingsDropdown({ selected, items, disableDropdown, onSelect }: SettingsDropdownProps): JSX.Element { + const [isOpen, setIsOpen] = useState(false) + + return ( + + setIsOpen(open)}> + + + + {selected} + + + + + + + + + + {items.map((item, index) => ( + { + onSelect(item.value) + setIsOpen(false) + }} + > + + + + {item.label} + + + {selected === item.label ? ( + + ) : ( + + )} + + + ))} + + + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsItemWithDropdown.tsx b/apps/extension/src/app/features/settings/SettingsItemWithDropdown.tsx new file mode 100644 index 00000000000..a7f1c166cb4 --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsItemWithDropdown.tsx @@ -0,0 +1,33 @@ +import { SCREEN_ITEM_HORIZONTAL_PAD } from 'src/app/constants' +import { SettingsDropdown, SettingsDropdownProps } from 'src/app/features/settings/SettingsDropdown' +import { Flex, GeneratedIcon, Text, TouchableArea } from 'ui/src' +import { iconSizes } from 'ui/src/theme' + +type SettingsItemWithDropdownProps = { + Icon: GeneratedIcon + title: string + disableDropdown?: boolean + onDisabledDropdownPress?: () => void +} & SettingsDropdownProps + +export function SettingsItemWithDropdown(props: SettingsItemWithDropdownProps): JSX.Element { + const { title, disableDropdown, Icon, onDisabledDropdownPress, ...dropdownProps } = props + + const dropdown = + + return ( + + + + + {title} + + + {disableDropdown ? ( + onDisabledDropdownPress?.()}>{dropdown} + ) : ( + dropdown + )} + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsPrivacyScreen.tsx b/apps/extension/src/app/features/settings/SettingsPrivacyScreen.tsx new file mode 100644 index 00000000000..03d2036640a --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsPrivacyScreen.tsx @@ -0,0 +1,15 @@ +import { useTranslation } from 'react-i18next' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { Flex } from 'ui/src' +import { AnalyticsToggleLineSwitch } from 'wallet/src/components/settings/AnalyticsToggleLineSwitch' + +export function SettingsPrivacyScreen(): JSX.Element { + const { t } = useTranslation() + + return ( + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseVerify.tsx b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseVerify.tsx new file mode 100644 index 00000000000..2f0fe5990e7 --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseVerify.tsx @@ -0,0 +1,141 @@ +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { PasswordInput } from 'src/app/components/PasswordInput' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { removeAllDappConnectionsFromExtension } from 'src/app/features/dapp/actions' +import { SettingsRecoveryPhrase } from 'src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase' +import { focusOrCreateOnboardingTab } from 'src/app/navigation/utils' +import { useAppDispatch } from 'src/store/store' +import { CheckBox, Flex, Text, inputStyles } from 'ui/src' +import { TrashFilled } from 'ui/src/components/icons' +import { WalletEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { logger } from 'utilities/src/logger/logger' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' +import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' +import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' + +export function RemoveRecoveryPhraseVerify(): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + + const [password, setPassword] = useState('') + const [showPasswordError, setShowPasswordError] = useState(false) + const [hideInput, setHideInput] = useState(true) + const [checked, setChecked] = useState(false) + + const onChangeText = (text: string): void => { + setPassword(text) + setShowPasswordError(false) + } + + const onCheckPressed = (): void => { + setChecked(!checked) + } + + const associatedAccounts = useSignerAccounts() + + const onRemove = async (): Promise => { + const accountsToRemove = associatedAccounts + const mnemonicId = accountsToRemove?.[0]?.mnemonicId + const accAddress = accountsToRemove?.[0]?.address + + if (!accAddress) { + logger.error(new Error('No accounts to remove'), { + tags: { file: 'RemoveRecoveryPhraseVerify', function: 'onRemove' }, + }) + return + } + + if (!mnemonicId) { + logger.error(new Error('mnemonicId does not exist'), { + tags: { file: 'RemoveRecoveryPhraseVerify', function: 'onRemove' }, + }) + return + } + + await Keyring.removeMnemonic(mnemonicId) + await Keyring.removePassword() + + await removeAllDappConnectionsFromExtension() + + await dispatch( + editAccountActions.trigger({ + type: EditAccountAction.Remove, + accounts: accountsToRemove, + }), + ) + + sendAnalyticsEvent(WalletEventName.WalletRemoved, { + wallets_removed: accountsToRemove.map((a) => a.address), + }) + + await focusOrCreateOnboardingTab() + window.close() + } + + const checkPassword = async (): Promise => { + if (!checked) { + return + } + const success = await Keyring.checkPassword(password) + if (!success) { + setShowPasswordError(true) + return + } + await onRemove() + } + + const removeButtonEnabled = checked && !showPasswordError && password.length > 0 + + return ( + + + } + nextButtonEnabled={removeButtonEnabled} + nextButtonText={t('setting.recoveryPhrase.remove')} + nextButtonTheme="detrimental_Button" + subtitle={t('setting.recoveryPhrase.remove.subtitle')} + title={t('setting.recoveryPhrase.remove.title')} + onNextPressed={checkPassword} + > + + + + + {showPasswordError ? t('setting.recoveryPhrase.remove.password.error') : ''} + + + + + + {t('setting.recoveryPhrase.remove.confirm.title')} + + + {t('setting.recoveryPhrase.remove.confirm.subtitle')} + + + } + onCheckPressed={onCheckPressed} + /> + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseWallets.tsx b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseWallets.tsx new file mode 100644 index 00000000000..c6b25f871ba --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/RemoveRecoveryPhraseWallets.tsx @@ -0,0 +1,111 @@ +import { useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { SettingsRecoveryPhrase } from 'src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase' +import { AppRoutes, RemoveRecoveryPhraseRoutes, SettingsRoutes } from 'src/app/navigation/constants' +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { Flex, ScrollView, Text } from 'ui/src' +import { AlertTriangle } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { NumberType } from 'utilities/src/format/types' +import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' +import { useAccountList } from 'wallet/src/features/accounts/hooks' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { Account } from 'wallet/src/features/wallet/accounts/types' +import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' + +export function RemoveRecoveryPhraseWallets(): JSX.Element { + const { t } = useTranslation() + const { navigateTo } = useExtensionNavigation() + + const accounts = useSignerAccounts() + + return ( + + + } + nextButtonEnabled={true} + nextButtonText={t('common.button.continue')} + nextButtonTheme="secondary_Button" + subtitle={t('setting.recoveryPhrase.remove.initial.subtitle')} + title={t('setting.recoveryPhrase.remove.initial.title')} + onNextPressed={(): void => { + navigateTo( + `${AppRoutes.Settings}/${SettingsRoutes.RemoveRecoveryPhrase}/${RemoveRecoveryPhraseRoutes.Verify}`, + ) + }} + > + + + + ) +} + +// TODO(@thomasthachil): merge this with mobile AccountList +function AssociatedAccountsList({ accounts }: { accounts: Account[] }): JSX.Element { + const addresses = useMemo(() => accounts.map((account) => account.address), [accounts]) + const { data, loading } = useAccountList({ + addresses, + notifyOnNetworkStatusChange: true, + }) + + const sortedAddressesByBalance = addresses + .map((address) => { + const wallet = data?.portfolios?.find((portfolio) => portfolio?.ownerAddress === address) + return { address, balance: wallet?.tokensTotalDenominatedValue?.value } + }) + .sort((a, b) => (b.balance ?? 0) - (a.balance ?? 0)) + + return ( + + + {sortedAddressesByBalance.map(({ address, balance }, index) => ( + + ))} + + + ) +} + +function AssociatedAccountRow({ + index, + address, + balance, + totalCount, + loading, +}: { + index: number + address: string + balance: number | undefined + totalCount: number + loading: boolean +}): JSX.Element { + const { convertFiatAmountFormatted } = useLocalizationContext() + const balanceFormatted = convertFiatAmountFormatted(balance, NumberType.PortfolioBalance) + + return ( + + + + + + {balanceFormatted} + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase.tsx b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase.tsx new file mode 100644 index 00000000000..654fb831a27 --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase.tsx @@ -0,0 +1,52 @@ +import { Button, Flex, Square, Text } from 'ui/src' +import { ThemeNames } from 'ui/src/theme' + +export type SettingsRecoveryPhraseProps = { + title: string + subtitle: string + icon: React.ReactNode + nextButtonEnabled: boolean + nextButtonText: string + nextButtonTheme: string + onNextPressed: () => void + children: React.ReactNode +} +export function SettingsRecoveryPhrase({ + title, + subtitle, + icon, + nextButtonEnabled, + nextButtonText, + nextButtonTheme, + onNextPressed, + children, +}: SettingsRecoveryPhraseProps): JSX.Element { + return ( + + + + {icon} + + + + {title} + + + {subtitle} + + + + {children} + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/ViewRecoveryPhraseScreen.tsx b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/ViewRecoveryPhraseScreen.tsx new file mode 100644 index 00000000000..fa1c6d708d8 --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsRecoveryPhraseScreen/ViewRecoveryPhraseScreen.tsx @@ -0,0 +1,246 @@ +import { useCallback, useEffect, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { LayoutChangeEvent } from 'react-native' +import { CopyButton } from 'src/app/components/buttons/CopyButton' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { EnterPasswordModal } from 'src/app/features/settings/password/EnterPasswordModal' +import { SettingsRecoveryPhrase } from 'src/app/features/settings/SettingsRecoveryPhraseScreen/SettingsRecoveryPhrase' +import { AppRoutes, RemoveRecoveryPhraseRoutes, SettingsRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { Button, Flex, Separator, Text } from 'ui/src' +import { AlertTriangle, Eye, Key, Laptop } from 'ui/src/components/icons' +import { spacing } from 'ui/src/theme' +import { WalletEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { logger } from 'utilities/src/logger/logger' +import { useAsyncData } from 'utilities/src/react/hooks' +import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' +import { setClipboard } from 'wallet/src/utils/clipboard' + +const enum ViewStep { + Warning, + Password, + Reveal, +} + +export function SettingsViewRecoveryPhraseScreen(): JSX.Element { + const { t } = useTranslation() + + const [viewStep, setViewStep] = useState(ViewStep.Warning) + + const mnemonicAccounts = useSignerAccounts() + const mnemonicAccount = mnemonicAccounts[0] + if (!mnemonicAccount) { + throw new Error('Screen should not be accessed unless mnemonic account exists') + } + + const placeholderWordArrayLength = 12 + + const recoveryPhraseString = useAsyncData( + useCallback(async () => Keyring.retrieveMnemonicUnlocked(mnemonicAccount.mnemonicId), [mnemonicAccount.mnemonicId]), + ).data + const recoveryPhraseArray = recoveryPhraseString?.split(' ') ?? Array(placeholderWordArrayLength).fill('') + + const onCopyPress = async (): Promise => { + try { + if (recoveryPhraseString) { + await setClipboard(recoveryPhraseString) + } + } catch (error) { + logger.error(error, { + tags: { file: 'SettingsViewRecoveryPhraseScreen.tsx', function: 'onCopyPress' }, + }) + } + } + + const showPasswordModal = (): void => { + setViewStep(ViewStep.Password) + } + + useEffect(() => { + sendAnalyticsEvent(WalletEventName.ViewRecoveryPhrase) + + // Clear clipboard when the component unmounts + return () => { + navigator.clipboard.writeText('').catch((error) => { + logger.error(error, { + tags: { file: 'SettingsViewRecoveryPhraseScreen.tsx', function: 'maybeClearClipboard' }, + }) + }) + } + }, []) + + return ( + + + {viewStep !== ViewStep.Reveal ? ( + } + nextButtonEnabled={true} + nextButtonText={t('common.button.continue')} + nextButtonTheme="secondary_Button" + subtitle={t('setting.recoveryPhrase.view.warning.message1')} + title={t('setting.recoveryPhrase.view.warning.title')} + onNextPressed={showPasswordModal} + > + {viewStep === ViewStep.Password && ( + setViewStep(ViewStep.Warning)} + onNext={() => setViewStep(ViewStep.Reveal)} + /> + )} + + + + + + + {t('setting.recoveryPhrase.view.warning.message2')} + + + + + + + + {t('setting.recoveryPhrase.view.warning.message3')} + + + + + + + + {t('setting.recoveryPhrase.view.warning.message4')} + + + + + ) : ( + + + + + + + + + + + + {t('setting.recoveryPhrase.warning.view.message')} + + + + + + + )} + + ) +} + +function SeedPhraseColumnGroup({ recoveryPhraseArray }: { recoveryPhraseArray: string[] }): JSX.Element { + const [largestIndexWidth, setLargestIndexWidth] = useState(0) + + const halfLength = recoveryPhraseArray.length / 2 + const firstHalfWords = recoveryPhraseArray.slice(0, halfLength) + const secondHalfWords = recoveryPhraseArray.slice(halfLength) + + const onIndexLayout = (event: LayoutChangeEvent): void => { + const { width } = event.nativeEvent.layout + if (width > largestIndexWidth) { + setLargestIndexWidth(width) + } + } + + return ( + + + + + + ) +} + +function SeedPhraseColumn({ + words, + indexOffset, + largestIndexWidth, + onIndexLayout, +}: { + words: string[] + indexOffset: number + largestIndexWidth: number + onIndexLayout: (event: LayoutChangeEvent) => void +}): JSX.Element { + return ( + + {words.map((word, index) => ( + + ))} + + ) +} + +function SeedPhraseWord({ + index, + word, + indexMinWidth, + onIndexLayout, +}: { + index: number + word: string + indexMinWidth: number + onIndexLayout: (event: LayoutChangeEvent) => void +}): JSX.Element { + return ( + + + {index} + + {word} + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsScreen.tsx b/apps/extension/src/app/features/settings/SettingsScreen.tsx new file mode 100644 index 00000000000..65d3c01317c --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsScreen.tsx @@ -0,0 +1,284 @@ +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { SCREEN_ITEM_HORIZONTAL_PAD } from 'src/app/constants' +import { SettingsItemWithDropdown } from 'src/app/features/settings/SettingsItemWithDropdown' +import { AppRoutes, SettingsRoutes } from 'src/app/navigation/constants' +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { useAppDispatch } from 'src/store/store' +import { + Button, + ColorTokens, + Flex, + GeneratedIcon, + ScrollView, + Separator, + Text, + TouchableArea, + useSporeColors, +} from 'ui/src' +import { + Chart, + Coins, + Feedback, + FileListLock, + HelpCenter, + Key, + Language, + LineChartDots, + Lock, + RotatableChevron, + Settings, + ShieldQuestion, +} from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import { isDevEnv } from 'utilities/src/environment' +import noop from 'utilities/src/react/noop' +import { WebSwitch } from 'wallet/src/components/buttons/Switch' +import { SettingsLanguageModal } from 'wallet/src/components/settings/language/SettingsLanguageModal' +import { authActions } from 'wallet/src/features/auth/saga' +import { AuthActionType } from 'wallet/src/features/auth/types' +import { FiatCurrency, ORDERED_CURRENCIES } from 'wallet/src/features/fiatCurrency/constants' +import { getFiatCurrencyName, useAppFiatCurrencyInfo } from 'wallet/src/features/fiatCurrency/hooks' +import { setCurrentFiatCurrency } from 'wallet/src/features/fiatCurrency/slice' +import { useCurrentLanguageInfo } from 'wallet/src/features/language/hooks' +import { useHideSmallBalancesSetting, useHideSpamTokensSetting } from 'wallet/src/features/wallet/hooks' +import { setHideSmallBalances, setHideSpamTokens } from 'wallet/src/features/wallet/slice' + +const manifestVersion = chrome.runtime.getManifest().version + +export function SettingsScreen(): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + const { navigateTo, navigateBack } = useExtensionNavigation() + const currentLanguageInfo = useCurrentLanguageInfo() + const appFiatCurrencyInfo = useAppFiatCurrencyInfo() + const isExtensionFeedbackEnabled = useFeatureFlag(FeatureFlags.ExtensionBetaFeedbackPrompt) + + const [isLanguageModalOpen, setIsLanguageModalOpen] = useState(false) + + const onPressLockWallet = async (): Promise => { + navigateBack() + await dispatch(authActions.trigger({ type: AuthActionType.Lock })) + } + + const hideSpamTokens = useHideSpamTokensSetting() + const handleSpamTokensToggle = async (): Promise => { + await dispatch(setHideSpamTokens(!hideSpamTokens)) + } + + const hideSmallBalances = useHideSmallBalancesSetting() + const handleSmallBalancesToggle = async (): Promise => { + await dispatch(setHideSmallBalances(!hideSmallBalances)) + } + + return ( + <> + {isLanguageModalOpen ? setIsLanguageModalOpen(false)} /> : undefined} + + + + + <> + {isDevEnv() && ( + navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.DevMenu}`)} + /> + )} + + { + setIsLanguageModalOpen(true) + }} + onSelect={noop} + /> + { + return { + label: getFiatCurrencyName(t, currency).shortName, + value: currency, + } + })} + selected={appFiatCurrencyInfo.shortName} + title={t('settings.setting.currency.title')} + onSelect={(value) => { + const currency = value as FiatCurrency + dispatch(setCurrentFiatCurrency(currency)) + }} + /> + + + navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.Privacy}`)} + /> + + + + navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.ChangePassword}`)} + /> + navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.ViewRecoveryPhrase}`)} + /> + + + + + {isExtensionFeedbackEnabled ? ( + + ) : ( + <> + )} + {`Version ${manifestVersion}`} + + + + + + ) +} + +function SettingsItem({ + Icon, + title, + onPress, + iconProps, + themeProps, + url, +}: { + Icon: GeneratedIcon + title: string + onPress?: () => void + iconProps?: { strokeWidth?: number } + // TODO: do this with a wrapping Theme, "detrimental" wasn't working + themeProps?: { color?: string; hoverColor?: string } + url?: string +}): JSX.Element { + const colors = useSporeColors() + const hoverColor = themeProps?.hoverColor ?? colors.surface2.val + + const content = ( + + + + + {title} + + + + + ) + + if (url) { + return ( + + {content} + + ) + } + + return content +} + +function SettingsToggleRow({ + Icon, + title, + value, + onValueChange, +}: { + title: string + Icon: GeneratedIcon + value: boolean + onValueChange: (value: boolean) => void +}): JSX.Element { + return ( + + + + {title} + + + + ) +} + +function SettingsSection({ title, children }: { title: string; children: JSX.Element | JSX.Element[] }): JSX.Element { + return ( + + + {title} + + {children} + + ) +} + +function SettingsSectionSeparator(): JSX.Element { + return ( + + + + ) +} diff --git a/apps/extension/src/app/features/settings/SettingsScreenWrapper.tsx b/apps/extension/src/app/features/settings/SettingsScreenWrapper.tsx new file mode 100644 index 00000000000..eaeb5f208f4 --- /dev/null +++ b/apps/extension/src/app/features/settings/SettingsScreenWrapper.tsx @@ -0,0 +1,13 @@ +import { Outlet } from 'react-router-dom' +import { Flex } from 'ui/src' + +/** + * SettingsScreenWrapper is a wrapper used by all settings screens. + */ +export function SettingsScreenWrapper(): JSX.Element { + return ( + + + + ) +} diff --git a/apps/extension/src/app/features/settings/password/ChangePasswordForm.tsx b/apps/extension/src/app/features/settings/password/ChangePasswordForm.tsx new file mode 100644 index 00000000000..f6e0af28254 --- /dev/null +++ b/apps/extension/src/app/features/settings/password/ChangePasswordForm.tsx @@ -0,0 +1,75 @@ +import { useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { PADDING_STRENGTH_INDICATOR, PasswordInput } from 'src/app/components/PasswordInput' +import { useAppDispatch } from 'src/store/store' +import { Button, Flex, Text } from 'ui/src' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { pushNotification } from 'wallet/src/features/notifications/slice' +import { AppNotificationType } from 'wallet/src/features/notifications/types' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' +import { usePasswordForm } from 'wallet/src/utils/password' + +export function ChangePasswordForm({ onNext }: { onNext: () => void }): JSX.Element { + const { t } = useTranslation() + const dispatch = useAppDispatch() + + const { + enableNext, + hideInput, + debouncedPasswordStrength, + password, + onPasswordBlur, + onChangePassword, + confirmPassword, + onChangeConfirmPassword, + setHideInput, + errorText, + checkSubmit, + } = usePasswordForm() + + const onSubmit = useCallback(async () => { + if (checkSubmit()) { + await Keyring.changePassword(password) + onNext() + dispatch(pushNotification({ type: AppNotificationType.PasswordChanged })) + sendAnalyticsEvent(ExtensionEventName.PasswordChanged) + } + }, [checkSubmit, password, onNext, dispatch]) + + return ( + + + + + + {errorText || 'Placeholder text'} + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/password/EnterPasswordForm.tsx b/apps/extension/src/app/features/settings/password/EnterPasswordForm.tsx new file mode 100644 index 00000000000..bb83e733f23 --- /dev/null +++ b/apps/extension/src/app/features/settings/password/EnterPasswordForm.tsx @@ -0,0 +1,80 @@ +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { PasswordInput } from 'src/app/components/PasswordInput' +import { Button, Flex, Text } from 'ui/src' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' + +function useEnterPasswordForm(): { + password: string + submitEnabled: boolean + error: string + onInputChange: (input: string) => void + onSubmit: () => Promise +} { + const { t } = useTranslation() + const [password, setPassword] = useState('') + const [submitEnabled, setSubmitEnabled] = useState(false) + const [error, setError] = useState('') + + const onInputChange = function onInputChange(input: string): void { + setPassword(input) + setSubmitEnabled(!!input) + setError('') + } + + const onSubmit = async function onSubmit(): Promise { + const success = await Keyring.checkPassword(password) + if (!success) { + setError(t('extension.settings.password.error.wrong')) + } + return success + } + + return { + password, + submitEnabled, + error, + onInputChange, + onSubmit, + } +} + +export function EnterPasswordForm({ onNext }: { onNext: () => void }): JSX.Element { + const { t } = useTranslation() + const [hideInput, setHideInput] = useState(true) + const { password, submitEnabled, error, onInputChange, onSubmit } = useEnterPasswordForm() + + const onContinue = async (): Promise => { + const success = await onSubmit() + if (success) { + onNext() + } + } + + return ( + + + + {t('extension.settings.password.enter.title')} + + + {error && ( + + {error} + + )} + + + + ) +} diff --git a/apps/extension/src/app/features/settings/password/EnterPasswordModal.tsx b/apps/extension/src/app/features/settings/password/EnterPasswordModal.tsx new file mode 100644 index 00000000000..de9c21fbf3a --- /dev/null +++ b/apps/extension/src/app/features/settings/password/EnterPasswordModal.tsx @@ -0,0 +1,69 @@ +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { PasswordInput } from 'src/app/components/PasswordInput' +import { Button, Flex, Square, Text, inputStyles, useSporeColors } from 'ui/src' +import { Lock } from 'ui/src/components/icons' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' + +export function EnterPasswordModal({ onNext, onClose }: { onNext: () => void; onClose: () => void }): JSX.Element { + const { t } = useTranslation() + const colors = useSporeColors() + + const [password, setPassword] = useState('') + const [showPasswordError, setShowPasswordError] = useState(false) + const [hideInput, setHideInput] = useState(true) + + const onChangeText = (text: string): void => { + setPassword(text) + setShowPasswordError(false) + } + + const checkPassword = async (): Promise => { + const success = await Keyring.checkPassword(password) + if (!success) { + setShowPasswordError(true) + return + } + onNext() + } + + return ( + + + + + + + {t('settings.setting.recoveryPhrase.password.title')} + + + + {showPasswordError ? t('setting.recoveryPhrase.remove.password.error') : ''} + + + + + ) +} diff --git a/apps/extension/src/app/features/settings/password/SettingsChangePasswordScreen.tsx b/apps/extension/src/app/features/settings/password/SettingsChangePasswordScreen.tsx new file mode 100644 index 00000000000..67ca27a0306 --- /dev/null +++ b/apps/extension/src/app/features/settings/password/SettingsChangePasswordScreen.tsx @@ -0,0 +1,34 @@ +import { t } from 'i18next' +import { useState } from 'react' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { ChangePasswordForm } from 'src/app/features/settings/password/ChangePasswordForm' +import { EnterPasswordForm } from 'src/app/features/settings/password/EnterPasswordForm' +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { Flex } from 'ui/src' + +enum Step { + EnterPassword, + ChangePassword, +} + +export function SettingsChangePasswordScreen(): JSX.Element { + const [currentStep, setCurrentStep] = useState(Step.EnterPassword) + const { navigateBack } = useExtensionNavigation() + + let formContent + switch (currentStep) { + case Step.EnterPassword: + formContent = setCurrentStep(Step.ChangePassword)} /> + break + case Step.ChangePassword: + formContent = navigateBack()} /> + break + } + + return ( + + + {formContent} + + ) +} diff --git a/apps/extension/src/app/features/swap/SwapFlowScreen.tsx b/apps/extension/src/app/features/swap/SwapFlowScreen.tsx new file mode 100644 index 00000000000..a1cee3a6d50 --- /dev/null +++ b/apps/extension/src/app/features/swap/SwapFlowScreen.tsx @@ -0,0 +1,16 @@ +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { Flex } from 'ui/src' +import { SwapFlow } from 'wallet/src/features/transactions/swap/SwapFlow' +import { useSwapPrefilledState } from 'wallet/src/features/transactions/swap/hooks/useSwapPrefilledState' + +export function SwapFlowScreen(): JSX.Element { + const { navigateBack, locationState } = useExtensionNavigation() + + const swapPrefilledState = useSwapPrefilledState(locationState?.initialTransactionState) + + return ( + + + + ) +} diff --git a/apps/extension/src/app/features/transfer/SendFormScreen/AmountSelector.tsx b/apps/extension/src/app/features/transfer/SendFormScreen/AmountSelector.tsx new file mode 100644 index 00000000000..f1b1bef06f8 --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendFormScreen/AmountSelector.tsx @@ -0,0 +1,3 @@ +export function AmountSelector(): JSX.Element { + return <>Amount Input + Quick Chips +} diff --git a/apps/extension/src/app/features/transfer/SendFormScreen/GasFeeRow.tsx b/apps/extension/src/app/features/transfer/SendFormScreen/GasFeeRow.tsx new file mode 100644 index 00000000000..a885d265afe --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendFormScreen/GasFeeRow.tsx @@ -0,0 +1,55 @@ +import { t } from 'i18next' +import { FadeIn } from 'react-native-reanimated' +import { Flex, SpinningLoader, Text } from 'ui/src' +import { Gas } from 'ui/src/components/icons' +import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' +import { iconSizes } from 'ui/src/theme' +import { WalletChainId } from 'uniswap/src/types/chains' +import { NumberType } from 'utilities/src/format/types' +import { useUSDValue } from 'wallet/src/features/gas/hooks' +import { GasFeeResult } from 'wallet/src/features/gas/types' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { NetworkFeeWarning } from 'wallet/src/features/transactions/swap/modals/NetworkFeeWarning' + +type GasFeeRowProps = { + gasFee: GasFeeResult + chainId: WalletChainId +} + +export function GasFeeRow({ gasFee, chainId }: GasFeeRowProps): JSX.Element | null { + const { convertFiatAmountFormatted } = useLocalizationContext() + + const gasFeeUSD = useUSDValue(chainId, gasFee.value ?? undefined) + const gasFeeFormatted = convertFiatAmountFormatted(gasFeeUSD, NumberType.FiatTokenPrice) + + if (!gasFeeUSD) { + return null + } + + return ( + + + {t('send.gas.networkCost.title')} + + {gasFee.loading ? ( + + ) : gasFee.error ? ( + + {t('send.gas.error.title')} + + ) : ( + + + {gasFeeFormatted} + + + + } + /> + )} + + ) +} diff --git a/apps/extension/src/app/features/transfer/SendFormScreen/RecipientPanel.tsx b/apps/extension/src/app/features/transfer/SendFormScreen/RecipientPanel.tsx new file mode 100644 index 00000000000..f486c1a0ee7 --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendFormScreen/RecipientPanel.tsx @@ -0,0 +1,106 @@ +import { useCallback, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { useTransferContext } from 'src/app/features/transfer/TransferContext' +import { Flex, Separator, Text, TouchableArea } from 'ui/src' +import { RotatableChevron, WalletFilled } from 'ui/src/components/icons' +import { iconSizes, spacing } from 'ui/src/theme' +import { RecipientList } from 'wallet/src/components/RecipientSearch/RecipientList' +import { useFilteredRecipientSections } from 'wallet/src/components/RecipientSearch/hooks' +import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' +import { SearchTextInput } from 'wallet/src/features/search/SearchTextInput' +import { selectRecipient } from 'wallet/src/features/transactions/transactionState/transactionState' +import { + useOnToggleShowRecipientSelector, + useSetShowRecipientSelector, +} from 'wallet/src/features/transactions/transfer/hooks/useOnToggleShowRecipientSelector' + +export function RecipientPanel(): JSX.Element { + const { t } = useTranslation() + + const [pattern, setPattern] = useState('') + const { recipient, dispatch, showRecipientSelector } = useTransferContext() + const onToggleShowRecipientSelector = useOnToggleShowRecipientSelector(dispatch) + const setShowRecipientSelector = useSetShowRecipientSelector(dispatch) + const sections = useFilteredRecipientSections(pattern) + + const onSelectRecipient = useCallback( + (newRecipient: string) => { + dispatch(selectRecipient({ recipient: newRecipient })) + setShowRecipientSelector(false) + }, + [dispatch, setShowRecipientSelector], + ) + + const onClose = (): void => { + setShowRecipientSelector(false) + } + + const noPatternOrFavorites = !pattern && sections.length === 0 + + return showRecipientSelector || !recipient ? ( + + + + {t('common.text.recipient')} + + + + setShowRecipientSelector(true)} + /> + + {showRecipientSelector && ( + + + + )} + + {showRecipientSelector && } + + {showRecipientSelector && + (noPatternOrFavorites ? ( + + + + {t('send.recipientSelect.search.empty.title')} + + {t('send.recipientSelect.search.empty.message')} + + + + ) : !sections.length ? ( + + {t('send.search.empty.title')} + + {t('send.search.empty.subtitle')} + + + ) : ( + // Show either suggested recipients or filtered sections based on query + + ))} + + ) : ( + + + + + + + ) +} diff --git a/apps/extension/src/app/features/transfer/SendFormScreen/ReviewButton.tsx b/apps/extension/src/app/features/transfer/SendFormScreen/ReviewButton.tsx new file mode 100644 index 00000000000..e609f9f9779 --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendFormScreen/ReviewButton.tsx @@ -0,0 +1,52 @@ +import { useTranslation } from 'react-i18next' +import { useTransferContext } from 'src/app/features/transfer/TransferContext' +import { Button, Flex, Text, isWeb } from 'ui/src' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ElementName } from 'uniswap/src/features/telemetry/constants' +import { TestID } from 'uniswap/src/test/fixtures/testIDs' +import { NativeCurrency } from 'wallet/src/features/tokens/NativeCurrency' +import { WarningLabel } from 'wallet/src/features/transactions/WarningModal/types' + +type ReviewButtonProps = { + onPress: () => void + disabled?: boolean +} + +export function ReviewButton({ onPress, disabled }: ReviewButtonProps): JSX.Element { + const { t } = useTranslation() + + const { + warnings, + derivedTransferInfo: { chainId }, + } = useTransferContext() + + const nativeCurrencySymbol = NativeCurrency.onChain(chainId).symbol + + const insufficientGasFunds = warnings.warnings.some((warning) => warning.type === WarningLabel.InsufficientGasFunds) + + const disableReviewButton = !!warnings.blockingWarning || disabled + + const buttonText = insufficientGasFunds + ? t('send.warning.insufficientFunds.title', { + currencySymbol: nativeCurrencySymbol, + }) + : t('common.button.review') + + return ( + + + + + + ) +} diff --git a/apps/extension/src/app/features/transfer/SendFormScreen/SendFormScreen.tsx b/apps/extension/src/app/features/transfer/SendFormScreen/SendFormScreen.tsx new file mode 100644 index 00000000000..0a93dd7a5cd --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendFormScreen/SendFormScreen.tsx @@ -0,0 +1,186 @@ +import { useCallback, useState } from 'react' +import { GasFeeRow } from 'src/app/features/transfer/SendFormScreen/GasFeeRow' +import { RecipientPanel } from 'src/app/features/transfer/SendFormScreen/RecipientPanel' +import { ReviewButton } from 'src/app/features/transfer/SendFormScreen/ReviewButton' +import { SendReviewScreen } from 'src/app/features/transfer/SendReviewScreen/SendReviewScreen' +import { TransferScreen, useTransferContext } from 'src/app/features/transfer/TransferContext' +import { Flex, Separator, useSporeColors } from 'ui/src' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ModalName, SectionName } from 'uniswap/src/features/telemetry/constants' +import { InsufficientNativeTokenWarning } from 'wallet/src/features/transactions/InsufficientNativeTokenWarning/InsufficientNativeTokenWarning' +import { useTokenFormActionHandlers } from 'wallet/src/features/transactions/hooks/useTokenFormActionHandlers' +import { useTokenSelectorActionHandlers } from 'wallet/src/features/transactions/hooks/useTokenSelectorActionHandlers' +import { useUSDCValue } from 'wallet/src/features/transactions/swap/trade/hooks/useUSDCPrice' +import { useUSDTokenUpdater } from 'wallet/src/features/transactions/swap/trade/hooks/useUSDTokenUpdater' +import { transactionStateActions } from 'wallet/src/features/transactions/transactionState/transactionState' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' +import { TokenSelectorPanel } from 'wallet/src/features/transactions/transfer/TokenSelectorPanel' +import { TransferAmountInput } from 'wallet/src/features/transactions/transfer/TransferAmountInput' +import { TransferFormSpeedbumps } from 'wallet/src/features/transactions/transfer/TransferFormWarnings' +import { useShowSendNetworkNotification } from 'wallet/src/features/transactions/transfer/hooks/useShowSendNetworkNotification' +import { TokenSelectorFlow, TransferSpeedbump } from 'wallet/src/features/transactions/transfer/types' +import { createTransactionId } from 'wallet/src/features/transactions/utils' +import { BlockedAddressWarning } from 'wallet/src/features/trm/BlockedAddressWarning' +import { useIsBlocked, useIsBlockedActiveAddress } from 'wallet/src/features/trm/hooks' + +export function SendFormScreen(): JSX.Element { + const colors = useSporeColors() + const { + dispatch, + derivedTransferInfo, + selectingCurrencyField, + exactAmountToken, + exactAmountFiat, + isFiatInput, + warnings, + gasFee, + showRecipientSelector, + screen, + setScreen, + recipient, + } = useTransferContext() + + const { currencyInInfo, currencyBalances, currencyAmounts, chainId } = derivedTransferInfo + + useShowSendNetworkNotification({ chainId: currencyInInfo?.currency.chainId }) + + const { onSetExactAmount, onSetMax, onToggleFiatInput } = useTokenFormActionHandlers(dispatch) + const { onSelectCurrency, onHideTokenSelector, onShowTokenSelector } = useTokenSelectorActionHandlers( + dispatch, + TokenSelectorFlow.Transfer, + ) + + const currencyUSDValue = useUSDCValue(currencyAmounts[CurrencyField.INPUT]) + + // Sync fiat and token amounts + useUSDTokenUpdater(dispatch, Boolean(isFiatInput), exactAmountToken, exactAmountFiat ?? '', currencyInInfo?.currency) + + const exactValue = isFiatInput ? exactAmountFiat : exactAmountToken + + const showTokenSelector = selectingCurrencyField === CurrencyField.INPUT + + // warnings + const [showSpeedbumpModal, setShowSpeedbumpModal] = useState(false) + const [transferSpeedbump, setTransferSpeedbump] = useState({ + loading: true, + hasWarning: false, + }) + + // blocked addresses + const { isBlocked: isActiveBlocked, isBlockedLoading: isActiveBlockedLoading } = useIsBlockedActiveAddress() + const { isBlocked: isRecipientBlocked, isBlockedLoading: isRecipientBlockedLoading } = useIsBlocked(recipient) + const isBlocked = isActiveBlocked || isRecipientBlocked + const isBlockedLoading = isActiveBlockedLoading || isRecipientBlockedLoading + + const onShowReviewScreen = useCallback(() => { + setShowSpeedbumpModal(false) + const txId = createTransactionId() + dispatch(transactionStateActions.setTxId(txId)) + setScreen(TransferScreen.SendReview) + }, [dispatch, setScreen]) + + const onPressReview = useCallback(() => { + if (transferSpeedbump.hasWarning) { + setShowSpeedbumpModal(true) + } else { + onShowReviewScreen() + } + }, [onShowReviewScreen, transferSpeedbump.hasWarning]) + + const inputShadowProps = { + shadowColor: colors.surface3.val, + shadowRadius: 10, + shadowOpacity: 0.04, + zIndex: 1, + } + + return ( + + {screen === TransferScreen.SendReview && ( + + + + )} + + + + onShowTokenSelector(CurrencyField.INPUT)} + /> + {!showTokenSelector && ( + <> + + + + )} + + {!showTokenSelector && ( + <> + + + + {!showRecipientSelector && ( + <> + {isBlocked && ( + + )} + + + + + )} + + )} + + + ) +} diff --git a/apps/extension/src/app/features/transfer/SendReviewScreen/SendDetails.tsx b/apps/extension/src/app/features/transfer/SendReviewScreen/SendDetails.tsx new file mode 100644 index 00000000000..00aa11f426b --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendReviewScreen/SendDetails.tsx @@ -0,0 +1,198 @@ +import { providers } from 'ethers' +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Button, Flex, Separator, Text, useSporeColors } from 'ui/src' +import { useDeviceDimensions } from 'ui/src/hooks/useDeviceDimensions' +import { iconSizes } from 'ui/src/theme' +import { CurrencyLogo } from 'uniswap/src/components/CurrencyLogo/CurrencyLogo' +import { ElementName, ModalName } from 'uniswap/src/features/telemetry/constants' +import { NumberType } from 'utilities/src/format/types' +import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' +import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' +import { Arrow } from 'wallet/src/components/icons/Arrow' +import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' +import { NFTTransfer } from 'wallet/src/components/nfts/NFTTransfer' +import { useAppFiatCurrencyInfo } from 'wallet/src/features/fiatCurrency/hooks' +import { GasFeeResult } from 'wallet/src/features/gas/types' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { TransactionDetails } from 'wallet/src/features/transactions/TransactionDetails/TransactionDetails' +import { WarningSeverity } from 'wallet/src/features/transactions/WarningModal/types' +import { ParsedWarnings } from 'wallet/src/features/transactions/hooks/useParsedTransactionWarnings' +import { useUSDCValue } from 'wallet/src/features/transactions/swap/trade/hooks/useUSDCPrice' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' +import { DerivedTransferInfo } from 'wallet/src/features/transactions/transfer/types' +import { AccountType } from 'wallet/src/features/wallet/accounts/types' +import { useActiveAccountWithThrow, useAvatar } from 'wallet/src/features/wallet/hooks' + +interface TransferFormProps { + derivedTransferInfo: DerivedTransferInfo + txRequest?: providers.TransactionRequest + gasFee: GasFeeResult + onReviewSubmit: () => void + warnings: ParsedWarnings +} + +/** + * TODO: MOB-2563 https://linear.app/uniswap/issue/MOB-2563/consolidate-all-transfer-logic-ext-mob + * Re-use this component when implemting shared review UI on mobile, and move to shared package. + */ +export function SendDetails({ + derivedTransferInfo, + gasFee, + onReviewSubmit, + txRequest, + warnings, +}: TransferFormProps): JSX.Element | null { + const { t } = useTranslation() + const { fullHeight } = useDeviceDimensions() + const colors = useSporeColors() + + const { formatCurrencyAmount, formatNumberOrString, convertFiatAmountFormatted } = useLocalizationContext() + + const account = useActiveAccountWithThrow() + + const [showWarningModal, setShowWarningModal] = useState(false) + const currency = useAppFiatCurrencyInfo() + + const onShowWarning = (): void => { + setShowWarningModal(true) + } + + const onCloseWarning = (): void => { + setShowWarningModal(false) + } + + const { + currencyAmounts, + recipient, + isFiatInput = false, + currencyInInfo, + nftIn, + chainId, + exactAmountFiat, + } = derivedTransferInfo + + const { avatar } = useAvatar(recipient) + + const inputCurrencyUSDValue = useUSDCValue(currencyAmounts[CurrencyField.INPUT]) + + const { blockingWarning } = warnings + + const actionButtonDisabled = + !!blockingWarning || !gasFee.value || !!gasFee.error || !txRequest || account.type === AccountType.Readonly + + const actionButtonProps = { + disabled: actionButtonDisabled, + label: t('send.review.summary.button.title'), + name: ElementName.Send, + onPress: onReviewSubmit, + } + + const transferWarning = warnings.warnings.find((warning) => warning.severity >= WarningSeverity.Medium) + + const formattedCurrencyAmount = formatCurrencyAmount({ + value: currencyAmounts[CurrencyField.INPUT], + type: NumberType.TokenTx, + }) + const formattedAmountIn = isFiatInput + ? formatNumberOrString({ + value: exactAmountFiat, + type: NumberType.FiatTokenQuantity, + currencyCode: currency.code, + }) + : formattedCurrencyAmount + + const formattedInputFiatValue = convertFiatAmountFormatted( + inputCurrencyUSDValue?.toExact(), + NumberType.FiatTokenQuantity, + ) + + if (!recipient) { + throw new Error('Invalid render of SendDetails with no recipient') + } + + return ( + <> + {showWarningModal && transferWarning?.title && ( + + )} + + {currencyInInfo ? ( + + + + + {formattedAmountIn} {!isFiatInput ? currencyInInfo.currency.symbol : ''} + + + {isFiatInput ? ( + + {formattedCurrencyAmount} {currencyInInfo.currency.symbol} + + ) : ( + inputCurrencyUSDValue && ( + + {formattedInputFiatValue} + + ) + )} + + + + ) : ( + nftIn && ( + + + + ) + )} + + + + {recipient && ( + + + + + )} + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/transfer/SendReviewScreen/SendReviewScreen.tsx b/apps/extension/src/app/features/transfer/SendReviewScreen/SendReviewScreen.tsx new file mode 100644 index 00000000000..7fe565e97bb --- /dev/null +++ b/apps/extension/src/app/features/transfer/SendReviewScreen/SendReviewScreen.tsx @@ -0,0 +1,107 @@ +import { useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' +import { SendDetails } from 'src/app/features/transfer/SendReviewScreen/SendDetails' +import { TransferScreen, useTransferContext } from 'src/app/features/transfer/TransferContext' +import { Flex, Text, TouchableArea } from 'ui/src' +import { X } from 'ui/src/components/icons' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { SectionName } from 'uniswap/src/features/telemetry/constants' +import { currencyAddress } from 'uniswap/src/utils/currencyId' +import { logger } from 'utilities/src/logger/logger' +import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' +import { pushNotification } from 'wallet/src/features/notifications/slice' +import { AppNotificationType } from 'wallet/src/features/notifications/types' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' +import { + useTransferERC20Callback, + useTransferNFTCallback, +} from 'wallet/src/features/transactions/transfer/hooks/useTransferCallback' + +export function SendReviewScreen(): JSX.Element { + const dispatch = useDispatch() + const { t } = useTranslation() + + const { navigateToAccountActivityList } = useWalletNavigation() + + const { derivedTransferInfo, warnings, txRequest, gasFee, setScreen } = useTransferContext() + const { txId, chainId, recipient, currencyInInfo, currencyAmounts, nftIn } = derivedTransferInfo + + const triggerTransferPendingNotification = useCallback(() => { + if (!currencyInInfo) { + // This should never happen. Just keeping TS happy. + logger.error(new Error('Missing `currencyInInfo` when triggering transfer pending notification'), { + tags: { file: 'SendReviewScreen.tsx', function: 'triggerTransferPendingNotification' }, + }) + } else { + dispatch( + pushNotification({ + type: AppNotificationType.TransferCurrencyPending, + currencyInfo: currencyInInfo, + }), + ) + } + }, [currencyInInfo, dispatch]) + + const onNext = useCallback((): void => { + triggerTransferPendingNotification() + navigateToAccountActivityList() + }, [navigateToAccountActivityList, triggerTransferPendingNotification]) + + const transferERC20Callback = useTransferERC20Callback( + txId, + chainId, + recipient, + currencyInInfo ? currencyAddress(currencyInInfo.currency) : undefined, + currencyAmounts[CurrencyField.INPUT]?.quotient.toString(), + txRequest, + onNext, + ) + + const transferNFTCallback = useTransferNFTCallback( + txId, + chainId, + recipient, + nftIn?.nftContract?.address, + nftIn?.tokenId, + txRequest, + onNext, + ) + + const onTransfer = (): void => { + nftIn ? transferNFTCallback?.() : transferERC20Callback?.() + } + + const onPrev = (): void => { + setScreen(TransferScreen.SendForm) + } + + return ( + + + + {t('send.review.modal.title')} + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/transfer/TransferContext.tsx b/apps/extension/src/app/features/transfer/TransferContext.tsx new file mode 100644 index 00000000000..a674001db0d --- /dev/null +++ b/apps/extension/src/app/features/transfer/TransferContext.tsx @@ -0,0 +1,114 @@ +import { TransactionRequest } from '@ethersproject/providers' +import { providers } from 'ethers' +import React, { createContext, ReactNode, useContext, useMemo, useReducer, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { AnyAction } from 'redux' +import { useTransactionGasFee } from 'wallet/src/features/gas/hooks' +import { GasFeeResult, GasSpeed } from 'wallet/src/features/gas/types' +import { + ParsedWarnings, + useParsedSendWarnings, +} from 'wallet/src/features/transactions/hooks/useParsedTransactionWarnings' +import { useTransactionGasWarning } from 'wallet/src/features/transactions/hooks/useTransactionGasWarning' +import { + INITIAL_TRANSACTION_STATE, + transactionStateReducer, +} from 'wallet/src/features/transactions/transactionState/transactionState' +import { TransactionState } from 'wallet/src/features/transactions/transactionState/types' +import { useDerivedTransferInfo } from 'wallet/src/features/transactions/transfer/hooks/useDerivedTransferInfo' +import { useTransferTransactionRequest } from 'wallet/src/features/transactions/transfer/hooks/useTransferTransactionRequest' +import { useTransferWarnings } from 'wallet/src/features/transactions/transfer/hooks/useTransferWarnings' +import { WarningAction } from 'wallet/src/features/transactions/WarningModal/types' + +export enum TransferScreen { + SendForm, + SendReview, +} + +export enum TransferEntryType { + Fiat, + Crypto, +} + +type TransferContextState = { + screen: TransferScreen + setScreen: (newScreen: TransferScreen) => void + dispatch: React.Dispatch + derivedTransferInfo: ReturnType + gasFee: GasFeeResult + warnings: ParsedWarnings + txRequest: TransactionRequest | undefined +} & TransactionState + +export const TransferContext = createContext(undefined) + +export function TransferContextProvider({ + prefilledTransactionState, + children, +}: { + prefilledTransactionState?: TransactionState + children: ReactNode +}): JSX.Element { + const { t } = useTranslation() + + // state and reducers + const [transferFormState, dispatch] = useReducer(transactionStateReducer, { + ...(prefilledTransactionState ?? INITIAL_TRANSACTION_STATE), + showRecipientSelector: false, + }) + const [screen, setScreen] = useState(TransferScreen.SendForm) + + // derived info based on transfer state + const derivedTransferInfo = useDerivedTransferInfo(transferFormState) + + const warnings = useTransferWarnings(t, derivedTransferInfo) + + const txRequest = useTransferTransactionRequest(derivedTransferInfo) + + const gasFee = useTransactionGasFee( + txRequest, + GasSpeed.Urgent, + warnings.some((warning) => warning.action === WarningAction.DisableReview), + ) + + const txRequestWithGasSettings = useMemo( + (): providers.TransactionRequest => ({ ...txRequest, ...gasFee.params }), + [gasFee.params, txRequest], + ) + + const gasWarning = useTransactionGasWarning({ + derivedInfo: derivedTransferInfo, + gasFee: gasFee?.value, + }) + + const allSendWarnings = useMemo(() => { + return !gasWarning ? warnings : [...warnings, gasWarning] + }, [warnings, gasWarning]) + + const parsedSendWarnings = useParsedSendWarnings(allSendWarnings) + + const state: TransferContextState = useMemo(() => { + return { + derivedTransferInfo, + screen, + setScreen, + dispatch, + gasFee, + warnings: parsedSendWarnings, + txRequest: txRequestWithGasSettings, + ...transferFormState, + } + }, [derivedTransferInfo, gasFee, parsedSendWarnings, screen, transferFormState, txRequestWithGasSettings]) + + return {children} +} + +export const useTransferContext = (): TransferContextState => { + const transferContext = useContext(TransferContext) + + if (transferContext === undefined) { + throw new Error('`useTransferContext` must be used inside of `TransferContextProvider`') + } + + return transferContext +} diff --git a/apps/extension/src/app/features/transfer/TransferFlowScreen.tsx b/apps/extension/src/app/features/transfer/TransferFlowScreen.tsx new file mode 100644 index 00000000000..6a8a3daba90 --- /dev/null +++ b/apps/extension/src/app/features/transfer/TransferFlowScreen.tsx @@ -0,0 +1,26 @@ +import { useTranslation } from 'react-i18next' +import { ScreenHeader } from 'src/app/components/layout/ScreenHeader' +import { SCREEN_ITEM_HORIZONTAL_PAD } from 'src/app/constants' +import { SendFormScreen } from 'src/app/features/transfer/SendFormScreen/SendFormScreen' +import { TransferContextProvider } from 'src/app/features/transfer/TransferContext' +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { Flex } from 'ui/src' +import { X } from 'ui/src/components/icons' + +export function TransferFlowScreen(): JSX.Element { + const { t } = useTranslation() + const { navigateBack, locationState } = useExtensionNavigation() + + return ( + + + + + + + + + + + ) +} diff --git a/apps/extension/src/app/features/warnings/StorageWarningModal.tsx b/apps/extension/src/app/features/warnings/StorageWarningModal.tsx new file mode 100644 index 00000000000..dc7c3f5e642 --- /dev/null +++ b/apps/extension/src/app/features/warnings/StorageWarningModal.tsx @@ -0,0 +1,42 @@ +import { useTranslation } from 'react-i18next' +import { ONBOARDING_CONTENT_WIDTH } from 'src/app/features/onboarding/utils' +import { useCheckLowStorage } from 'src/app/features/warnings/useCheckLowStorage' +import { AppRoutes, SettingsRoutes } from 'src/app/navigation/constants' +import { useExtensionNavigation } from 'src/app/navigation/utils' +import { spacing } from 'ui/src/theme' +import { ModalName } from 'uniswap/src/features/telemetry/constants' +import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' +import { WarningSeverity } from 'wallet/src/features/transactions/WarningModal/types' + +export type StorageWarningModalProps = { + isOnboarding: boolean +} +export function StorageWarningModal({ isOnboarding }: StorageWarningModalProps): JSX.Element | null { + const { t } = useTranslation() + const { navigateTo } = useExtensionNavigation() + const { showStorageWarning, onStorageWarningClose } = useCheckLowStorage({ isOnboarding }) + + if (!showStorageWarning) { + return null + } + return ( + { + onStorageWarningClose() + navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.ViewRecoveryPhrase}`) + } + } + /> + ) +} diff --git a/apps/extension/src/app/features/warnings/useCheckLowStorage.ts b/apps/extension/src/app/features/warnings/useCheckLowStorage.ts new file mode 100644 index 00000000000..3207d917f53 --- /dev/null +++ b/apps/extension/src/app/features/warnings/useCheckLowStorage.ts @@ -0,0 +1,48 @@ +import { useCallback, useEffect, useState } from 'react' +import { GlobalErrorEvent } from 'src/app/events/constants' +import { globalEventEmitter } from 'src/app/events/global' +import { logger } from 'utilities/src/logger/logger' + +export const REMAINING_STORAGE_THRESHOLD_BYTES = 500000 // 500KB + +export function useCheckLowStorage({ isOnboarding }: { isOnboarding: boolean }): { + showStorageWarning: boolean + onStorageWarningClose: () => void +} { + const [hasShownWarning, setHasShownWarning] = useState(false) + const [showStorageWarning, setShowStorageWarning] = useState(false) + + const onStorageWarningClose = useCallback(() => setShowStorageWarning(false), []) + const triggerStorageWarning = useCallback((): void => { + if (!hasShownWarning) { + setShowStorageWarning(true) + setHasShownWarning(true) + } + }, [hasShownWarning]) + + useEffect(() => { + if (!isOnboarding) { + navigator.storage + .estimate() + .then(({ quota }) => { + if (quota && quota < REMAINING_STORAGE_THRESHOLD_BYTES) { + triggerStorageWarning() + logger.info('useCheckLowStorage.ts', 'useCheckLowStorage', 'Low storage warning shown') + } + }) + .catch(() => {}) + } + }, [isOnboarding, triggerStorageWarning]) + + useEffect(() => { + const listener = (): void => { + triggerStorageWarning() + } + globalEventEmitter.addListener(GlobalErrorEvent.ReduxStorageExceeded, listener) + return () => { + globalEventEmitter.removeListener(GlobalErrorEvent.ReduxStorageExceeded, listener) + } + }, [hasShownWarning, triggerStorageWarning]) + + return { showStorageWarning, onStorageWarningClose } +} diff --git a/apps/extension/src/app/hooks/useIsWalletUnlocked.ts b/apps/extension/src/app/hooks/useIsWalletUnlocked.ts new file mode 100644 index 00000000000..15dc368a865 --- /dev/null +++ b/apps/extension/src/app/hooks/useIsWalletUnlocked.ts @@ -0,0 +1,59 @@ +import { useCallback, useEffect, useState } from 'react' +import { logger } from 'utilities/src/logger/logger' +import { useAsyncData } from 'utilities/src/react/hooks' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' +import { ENCRYPTION_KEY_STORAGE_KEY, PersistedStorage } from 'wallet/src/utils/persistedStorage' + +/** + * In order to speed up the initial load of the app and avoid a half a second loading spinner every time the sidebar opens, + * we will first do a quick light check to see if the wallet *might* be unlocked by simply checking if the encryption key + * exists in local storage, but without actually verifying that this key is valid. + * + * After the React app fully loads, we will then do a more thorough check to see if the wallet is actually unlocked. + */ + +// exported to be used in saga's +export let isWalletUnlocked: boolean | null = null + +const sessionStorage = new PersistedStorage('session') + +sessionStorage + .getItem(ENCRYPTION_KEY_STORAGE_KEY) + .then((val) => { + isWalletUnlocked = val !== undefined + }) + .catch((err) => { + logger.error(err, { + tags: { + file: 'useIsWalletUnlocked.ts', + function: 'sessionStorage.getItem', + }, + }) + }) + +export function useIsWalletUnlocked(): boolean | null { + const [isUnlocked, setIsUnlocked] = useState(isWalletUnlocked) + + const checkWalletStatus = useCallback(async () => { + isWalletUnlocked = await Keyring.isUnlocked() + setIsUnlocked(isWalletUnlocked) + }, []) + + useEffect(() => { + const listener: Parameters[0] = async (changes, namespace) => { + if (namespace === 'session' && changes[ENCRYPTION_KEY_STORAGE_KEY]) { + await checkWalletStatus() + } + } + + chrome.storage.onChanged.addListener(listener) + + return () => { + chrome.storage.onChanged.removeListener(listener) + } + }, [checkWalletStatus]) + + useAsyncData(checkWalletStatus) + + return isUnlocked +} diff --git a/apps/extension/src/app/hooks/useOnCopyToClipboard.tsx b/apps/extension/src/app/hooks/useOnCopyToClipboard.tsx new file mode 100644 index 00000000000..dd8f43ed0d4 --- /dev/null +++ b/apps/extension/src/app/hooks/useOnCopyToClipboard.tsx @@ -0,0 +1,39 @@ +import { useCallback } from 'react' +import { pushNotification } from 'wallet/src/features/notifications/slice' +import { AppNotificationType, CopyNotificationType } from 'wallet/src/features/notifications/types' +import { useAppDispatch } from 'wallet/src/state' + +export function useCopyToClipboard(): ({ + textToCopy, + copyType, +}: { + textToCopy: string + copyType: CopyNotificationType +}) => Promise { + const dispatch = useAppDispatch() + + const copyToClipboard = useCallback( + async ({ textToCopy, copyType }: { textToCopy: string; copyType: CopyNotificationType }) => { + try { + await navigator.clipboard.writeText(textToCopy) + + dispatch( + pushNotification({ + type: AppNotificationType.Copied, + copyType, + }), + ) + } catch (e) { + dispatch( + pushNotification({ + type: AppNotificationType.CopyFailed, + copyType, + }), + ) + } + }, + [dispatch], + ) + + return copyToClipboard +} diff --git a/apps/extension/src/app/hooks/useOpeningKeyboardShortCut.test.ts b/apps/extension/src/app/hooks/useOpeningKeyboardShortCut.test.ts new file mode 100644 index 00000000000..96801e62898 --- /dev/null +++ b/apps/extension/src/app/hooks/useOpeningKeyboardShortCut.test.ts @@ -0,0 +1,154 @@ +import { State, useOpeningKeyboardShortCut } from 'src/app/hooks/useOpeningKeyboardShortCut' +import * as isAppleDeviceDep from 'src/app/utils/isAppleDevice' +import { act, renderHook } from 'src/test/test-utils' + +jest.mock('src/app/utils/isAppleDevice', () => ({ + isAppleDevice: jest.fn(), +})) + +const isAppleDevice = isAppleDeviceDep.isAppleDevice as jest.MockedFunction< + typeof isAppleDeviceDep.isAppleDevice +> + +describe('useOpeningKeyboardShortCut', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + it('should initialize with the correct keys for an Apple device', () => { + isAppleDevice.mockReturnValue(true) + const { result } = renderHook(() => useOpeningKeyboardShortCut(false)) + + expect(result.current).toEqual([ + { + fontSize: 28, + px: '$spacing28', + title: 'Shift', + state: State.KeyUp, + }, + { + fontSize: 41, + px: '$spacing16', + title: 'Meta', + state: State.KeyUp, + }, + { + fontSize: 41, + px: '$spacing24', + title: 'U', + state: State.KeyUp, + }, + ]) + }) + + it('should initialize with the correct keys for a non-Apple device', () => { + isAppleDevice.mockReturnValue(false) + const { result } = renderHook(() => useOpeningKeyboardShortCut(false)) + + expect(result.current).toEqual([ + { + fontSize: 28, + px: '$spacing28', + title: 'Shift', + state: State.KeyUp, + }, + { + fontSize: 28, + px: '$spacing12', + title: 'Crtl', + state: State.KeyUp, + }, + { + fontSize: 41, + px: '$spacing24', + title: 'U', + state: State.KeyUp, + }, + ]) + }) + + it('should handle keyDown and keyUp events', () => { + isAppleDevice.mockReturnValue(false) + const { result } = renderHook(() => useOpeningKeyboardShortCut(false)) + + act(() => { + window.dispatchEvent(new KeyboardEvent('keydown', { key: 'Shift' })) + }) + + expect(result.current).toEqual([ + { + fontSize: 28, + px: '$spacing28', + title: 'Shift', + state: State.KeyDown, + }, + { + fontSize: 28, + px: '$spacing12', + title: 'Crtl', + state: State.KeyUp, + }, + { + fontSize: 41, + px: '$spacing24', + title: 'U', + state: State.KeyUp, + }, + ]) + + act(() => { + window.dispatchEvent(new KeyboardEvent('keyup', { key: 'Shift' })) + }) + + expect(result.current).toEqual([ + { + fontSize: 28, + px: '$spacing28', + title: 'Shift', + state: State.KeyUp, + }, + { + fontSize: 28, + px: '$spacing12', + title: 'Crtl', + state: State.KeyUp, + }, + { + fontSize: 41, + px: '$spacing24', + title: 'U', + state: State.KeyUp, + }, + ]) + }) + + it('should highlight keys when shortCutPressed is true', () => { + isAppleDevice.mockReturnValue(false) + const { result, rerender } = renderHook((props) => useOpeningKeyboardShortCut(props), { + initialProps: false, + }) + + rerender(true) + + expect(result.current).toEqual([ + { + fontSize: 28, + px: '$spacing28', + title: 'Shift', + state: State.Highlighted, + }, + { + fontSize: 28, + px: '$spacing12', + title: 'Crtl', + state: State.Highlighted, + }, + { + fontSize: 41, + px: '$spacing24', + title: 'U', + state: State.Highlighted, + }, + ]) + }) +}) diff --git a/apps/extension/src/app/hooks/useOpeningKeyboardShortCut.ts b/apps/extension/src/app/hooks/useOpeningKeyboardShortCut.ts new file mode 100644 index 00000000000..87433f2d9c0 --- /dev/null +++ b/apps/extension/src/app/hooks/useOpeningKeyboardShortCut.ts @@ -0,0 +1,77 @@ +import { useEffect, useReducer } from 'react' +import { KeyboardKeyProps } from 'src/app/features/onboarding/KeyboardKey' +import { isAppleDevice } from 'src/app/utils/isAppleDevice' + +const KEY_LONG_TEXT_FONT_SIZE = 28 +const KEY_SHORT_TEXT_FONT_SIZE = 41 + +// export for tests +export enum State { + KeyUp, + KeyDown, + Highlighted, +} + +type ReducerAction = { type: 'keyUp' | 'keyDown' | 'highlight'; key: string } | { type: 'highlight' } + +export const useOpeningKeyboardShortCut = (shortCutPressed: boolean): KeyboardKeyProps[] => { + const reducer = (state: KeyboardKeyProps[], action: ReducerAction): KeyboardKeyProps[] => { + switch (action.type) { + case 'keyDown': + return state.map((key) => (key.title.toLowerCase() === action.key ? { ...key, state: State.KeyDown } : key)) + case 'keyUp': + return state.map((key) => + key.title.toLowerCase() === action.key || + // after pressing Cmd+ keyUp event would only be fired for Cmd, this would "simulate" keyDown for letter + // context: https://github.com/electron/electron/issues/5188 + (action.key === 'meta' && key.title.length === 1) + ? { ...key, state: shortCutPressed ? State.Highlighted : State.KeyUp } + : key, + ) + case 'highlight': + return state.map((key) => ({ ...key, state: State.Highlighted })) + } + } + + const [keys, dispatch] = useReducer(reducer, [ + { + fontSize: KEY_LONG_TEXT_FONT_SIZE, + px: '$spacing28', + title: 'Shift', + state: State.KeyUp, + }, + isAppleDevice() + ? { + fontSize: KEY_SHORT_TEXT_FONT_SIZE, + px: '$spacing16', + title: 'Meta', + state: State.KeyUp, + } + : { + fontSize: KEY_LONG_TEXT_FONT_SIZE, + px: '$spacing12', + title: 'Crtl', + state: State.KeyUp, + }, + { fontSize: KEY_SHORT_TEXT_FONT_SIZE, px: '$spacing24', title: 'U', state: State.KeyUp }, + ]) + + useEffect(() => { + if (shortCutPressed) { + dispatch({ type: 'highlight' }) + } + }, [shortCutPressed]) + + useEffect(() => { + const keyDownHandler = (event: KeyboardEvent): void => dispatch({ type: 'keyDown', key: event.key.toLowerCase() }) + const keyUpHandler = (event: KeyboardEvent): void => dispatch({ type: 'keyUp', key: event.key.toLowerCase() }) + window.addEventListener('keydown', keyDownHandler) + window.addEventListener('keyup', keyUpHandler) + + return () => { + window.removeEventListener('keydown', keyDownHandler) + window.removeEventListener('keyup', keyUpHandler) + } + }, []) + return keys +} diff --git a/apps/extension/src/app/hooks/useOptimizedSearchParams.tsx b/apps/extension/src/app/hooks/useOptimizedSearchParams.tsx new file mode 100644 index 00000000000..083985c2466 --- /dev/null +++ b/apps/extension/src/app/hooks/useOptimizedSearchParams.tsx @@ -0,0 +1,30 @@ +import { useEffect, useState } from 'react' +import { createSearchParams } from 'react-router-dom' +import { getRouter } from 'src/app/navigation/state' +import { sleep } from 'utilities/src/time/timing' + +const getSearchParams = (): URLSearchParams => createSearchParams(new URLSearchParams(window.location.hash.slice(2))) + +/** + * It's just like useSearchParams but avoids re-rendering on every page navigation + */ + +export function useOptimizedSearchParams(): URLSearchParams { + const [searchParams, setSearchParams] = useState(getSearchParams) + + useEffect(() => { + return getRouter().subscribe(async () => { + // react-router-dom calls this before it actually updates the url bar :/ + await sleep(0) + setSearchParams((prev) => { + const next = getSearchParams() + if (prev.toString() !== next.toString()) { + return next + } + return prev + }) + }) + }, []) + + return searchParams +} diff --git a/apps/extension/src/app/hooks/useSagaStatus.ts b/apps/extension/src/app/hooks/useSagaStatus.ts new file mode 100644 index 00000000000..b72120875ec --- /dev/null +++ b/apps/extension/src/app/hooks/useSagaStatus.ts @@ -0,0 +1,39 @@ +import { useEffect } from 'react' +import { monitoredSagas } from 'src/app/saga' +import { useAppDispatch, useAppSelector } from 'src/store/store' +import { SagaState, SagaStatus } from 'wallet/src/utils/saga' + +// Convenience hook to get the status + error of an active saga +export function useSagaStatus(sagaName: string, onSuccess?: () => void, resetSagaOnSuccess = true): SagaState { + const dispatch = useAppDispatch() + const sagaState = useAppSelector((s): SagaState | undefined => s.saga[sagaName]) + if (!sagaState) { + throw new Error(`No saga state found, is sagaName valid? Name: ${sagaName}`) + } + + const saga = monitoredSagas[sagaName] + if (!saga) { + throw new Error(`No saga found, is sagaName valid? Name: ${sagaName}`) + } + + const { status, error } = sagaState + + useEffect(() => { + if (status === SagaStatus.Success) { + if (resetSagaOnSuccess) { + dispatch(saga.actions.reset()).catch(() => undefined) + } + onSuccess?.() + } + }, [saga, status, error, onSuccess, resetSagaOnSuccess, dispatch]) + + useEffect(() => { + return () => { + if (resetSagaOnSuccess) { + dispatch(saga.actions.reset()).catch(() => undefined) + } + } + }, [saga, resetSagaOnSuccess, dispatch]) + + return sagaState +} diff --git a/apps/extension/src/app/navigation/HideContentsWhenSidebarBecomesInactive.tsx b/apps/extension/src/app/navigation/HideContentsWhenSidebarBecomesInactive.tsx new file mode 100644 index 00000000000..a91cb1c1689 --- /dev/null +++ b/apps/extension/src/app/navigation/HideContentsWhenSidebarBecomesInactive.tsx @@ -0,0 +1,31 @@ +import { PropsWithChildren, useEffect } from 'react' +import { Flex } from 'ui/src' +import { useIsChromeWindowFocusedWithTimeout } from 'uniswap/src/extension/useIsChromeWindowFocused' +import { ONE_MINUTE_MS } from 'utilities/src/time/time' +import { LandingBackground } from 'wallet/src/components/landing/LandingBackground' +import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' + +// The sidebar becomes "inactive" when this amount of time has passed since the window lost focus. +const INACTIVITY_TIMEOUT = 15 * ONE_MINUTE_MS + +export function HideContentsWhenSidebarBecomesInactive({ children }: PropsWithChildren): JSX.Element { + const isChromeWindowFocused = useIsChromeWindowFocusedWithTimeout(INACTIVITY_TIMEOUT) + + const { navigateToAccountTokenList } = useWalletNavigation() + + useEffect(() => { + if (!isChromeWindowFocused) { + // We navigate to the homepage because we'll lose the local state when the sidebar becomes active again, + // and we want to avoid the user making mistakes because their swap/flow state was lost. + navigateToAccountTokenList() + } + }, [isChromeWindowFocused, navigateToAccountTokenList]) + + return isChromeWindowFocused ? ( + <>{children} + ) : ( + + + + ) +} diff --git a/apps/extension/src/app/navigation/SideBarNavigationProvider.tsx b/apps/extension/src/app/navigation/SideBarNavigationProvider.tsx new file mode 100644 index 00000000000..7ae244b5d0e --- /dev/null +++ b/apps/extension/src/app/navigation/SideBarNavigationProvider.tsx @@ -0,0 +1,186 @@ +import { PropsWithChildren, useCallback } from 'react' +import { createSearchParams, useNavigate } from 'react-router-dom' +import { useCopyToClipboard } from 'src/app/hooks/useOnCopyToClipboard' +import { AppRoutes, HomeQueryParams, HomeTabs } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { focusOrCreateTokensExploreTab } from 'src/app/navigation/utils' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { WalletEventName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { UniverseChainId } from 'uniswap/src/types/chains' +import { ShareableEntity } from 'uniswap/src/types/sharing' +import { logger } from 'utilities/src/logger/logger' +import { + NavigateToNftItemArgs, + NavigateToSendFlowArgs, + NavigateToSwapFlowArgs, + ShareNftArgs, + ShareTokenArgs, + WalletNavigationProvider, + getNavigateToSendFlowArgsInitialState, + getNavigateToSwapFlowArgsInitialState, +} from 'wallet/src/contexts/WalletNavigationContext' +import { CopyNotificationType } from 'wallet/src/features/notifications/types' +import { TransactionState } from 'wallet/src/features/transactions/transactionState/types' +import { ExplorerDataType, getExplorerLink, getNftUrl, getTokenUrl } from 'wallet/src/utils/linking' + +export type SidebarLocationState = + | { + initialTransactionState?: TransactionState + } + | undefined + +export function SideBarNavigationProvider({ children }: PropsWithChildren): JSX.Element { + const handleShareNft = useHandleShareNft() + const handleShareToken = useHandleShareToken() + const navigateToAccountActivityList = useNavigateToAccountActivityList() + const navigateToAccountTokenList = useNavigateToAccountTokenList() + const navigateToBuyOrReceiveWithEmptyWallet = useNavigateToBuyOrReceiveWithEmptyWallet() + const navigateToNftDetails = useNavigateToNftDetails() + const navigateToReceive = useNavigateToReceive() + const navigateToSend = useNavigateToSend() + const navigateToSwapFlow = useNavigateToSwapFlow() + const navigateToTokenDetails = useNavigateToTokenDetails() + const navigateToNftCollection = useCallback(() => { + // no-op until we have proper NFT collection + }, []) + + return ( + + {children} + + ) +} + +function useHandleShareNft(): (args: ShareNftArgs) => void { + const copyToClipboard = useCopyToClipboard() + + return useCallback( + async ({ contractAddress, tokenId }: ShareNftArgs): Promise => { + const url = getNftUrl(contractAddress, tokenId) + + await copyToClipboard({ textToCopy: url, copyType: CopyNotificationType.NftUrl }) + + sendAnalyticsEvent(WalletEventName.ShareButtonClicked, { + entity: ShareableEntity.NftItem, + url, + }) + }, + [copyToClipboard], + ) +} + +function useHandleShareToken(): (args: ShareTokenArgs) => void { + const copyToClipboard = useCopyToClipboard() + + return useCallback( + async ({ currencyId }: ShareTokenArgs): Promise => { + const url = getTokenUrl(currencyId) + + if (!url) { + logger.error(new Error('Failed to get token URL'), { + tags: { file: 'SideBarNavigationProvider.tsx', function: 'useHandleShareToken' }, + extra: { currencyId }, + }) + return + } + + await copyToClipboard({ textToCopy: url, copyType: CopyNotificationType.TokenUrl }) + + sendAnalyticsEvent(WalletEventName.ShareButtonClicked, { + entity: ShareableEntity.Token, + url, + }) + }, + [copyToClipboard], + ) +} + +function useNavigateToAccountActivityList(): () => void { + // TODO(EXT-1029): determine why we need useNavigate here + const navigateFix = useNavigate() + + return useCallback( + (): void => + navigateFix({ + pathname: AppRoutes.Home, + search: createSearchParams({ + [HomeQueryParams.Tab]: HomeTabs.Activity, + }).toString(), + }), + [navigateFix], + ) +} + +function useNavigateToAccountTokenList(): () => void { + // TODO(EXT-1029): determine why we need useNavigate here + const navigateFix = useNavigate() + + return useCallback( + (): void => + navigateFix({ + pathname: AppRoutes.Home, + search: createSearchParams({ + [HomeQueryParams.Tab]: HomeTabs.Tokens, + }).toString(), + }), + [navigateFix], + ) +} + +function useNavigateToReceive(): () => void { + return useCallback((): void => navigate(AppRoutes.Receive), []) +} + +function useNavigateToSend(): (args: NavigateToSendFlowArgs) => void { + return useCallback((args: NavigateToSendFlowArgs): void => { + const initialState = getNavigateToSendFlowArgsInitialState(args) + + const state: SidebarLocationState = args ? { initialTransactionState: initialState } : undefined + + navigate(AppRoutes.Transfer, { state }) + }, []) +} + +function useNavigateToSwapFlow(): (args: NavigateToSwapFlowArgs) => void { + return useCallback((args: NavigateToSwapFlowArgs): void => { + const initialState = getNavigateToSwapFlowArgsInitialState(args) + + const state: SidebarLocationState = initialState ? { initialTransactionState: initialState } : undefined + + navigate(AppRoutes.Swap, { state }) + }, []) +} + +function useNavigateToTokenDetails(): (currencyId: string) => void { + return useCallback(async (currencyId: string): Promise => { + await focusOrCreateTokensExploreTab({ currencyId }) + }, []) +} + +function useNavigateToNftDetails(): (args: NavigateToNftItemArgs) => void { + return useCallback(({ address, tokenId, chainId }: NavigateToNftItemArgs): void => { + // eslint-disable-next-line security/detect-non-literal-fs-filename + window.open(getExplorerLink(chainId ?? UniverseChainId.Mainnet, `${address}/${tokenId}`, ExplorerDataType.NFT)) + }, []) +} + +function useNavigateToBuyOrReceiveWithEmptyWallet(): () => void { + return useCallback((): void => { + // TODO(EXT-669): replace this once we have an onramp in the Extension. + // eslint-disable-next-line security/detect-non-literal-fs-filename + window.open(uniswapUrls.helpArticleUrls.moonpayHelp, '_blank') + }, []) +} diff --git a/apps/extension/src/app/navigation/constants.ts b/apps/extension/src/app/navigation/constants.ts new file mode 100644 index 00000000000..7ada8b59b50 --- /dev/null +++ b/apps/extension/src/app/navigation/constants.ts @@ -0,0 +1,42 @@ +export { HomeTabs } from 'uniswap/src/types/screens/extension' + +export enum TopLevelRoutes { + Onboarding = 'onboarding', + Notifications = 'notifications', +} + +export enum OnboardingRoutes { + Import = 'import', + Create = 'create', + Scan = 'scan', + Reset = 'reset', + ResetScan = 'reset-scan', + UnsupportedBrowser = 'unsupported-browser', +} + +export enum AppRoutes { + AccountSwitcher = 'account-switcher', + Home = '', + Receive = 'receive', + Requests = 'requests', + Settings = 'settings', + Swap = 'swap', + Transfer = 'transfer', +} + +export enum HomeQueryParams { + Tab = 'tab', +} + +export enum SettingsRoutes { + ChangePassword = 'change-password', + DevMenu = 'dev-menu', + ViewRecoveryPhrase = 'view-recovery-phrase', + RemoveRecoveryPhrase = 'remove-recovery-phrase', + Privacy = 'privacy', +} + +export enum RemoveRecoveryPhraseRoutes { + Wallets = 'wallets', + Verify = 'verify', +} diff --git a/apps/extension/src/app/navigation/index.tsx b/apps/extension/src/app/navigation/index.tsx new file mode 100644 index 00000000000..cc25f3a6a91 --- /dev/null +++ b/apps/extension/src/app/navigation/index.tsx @@ -0,0 +1,247 @@ +import { useCallback, useMemo, useRef } from 'react' +import { Outlet, useLocation } from 'react-router-dom' +import { FeedbackRequestModal } from 'src/app/components/modal/FeedbackRequestModal' +import { DappRequestWrapper } from 'src/app/features/dappRequests/DappRequestContent' +import { DappRequestQueueProvider } from 'src/app/features/dappRequests/DappRequestQueueContext' +import { HomeScreen } from 'src/app/features/home/HomeScreen' +import { Locked } from 'src/app/features/lockScreen/Locked' +import { NotificationToastWrapper } from 'src/app/features/notifications/NotificationToastWrapper' +import { StorageWarningModal } from 'src/app/features/warnings/StorageWarningModal' +import { useIsWalletUnlocked } from 'src/app/hooks/useIsWalletUnlocked' +import { HideContentsWhenSidebarBecomesInactive } from 'src/app/navigation/HideContentsWhenSidebarBecomesInactive' +import { SideBarNavigationProvider } from 'src/app/navigation/SideBarNavigationProvider' +import { AppRoutes } from 'src/app/navigation/constants' +import { useRouterState } from 'src/app/navigation/state' +import { focusOrCreateOnboardingTab } from 'src/app/navigation/utils' +import { isOnboardedSelector } from 'src/app/utils/isOnboardedSelector' +import { useAppSelector } from 'src/store/store' +import { AnimatePresence, Flex, SpinningLoader, styled } from 'ui/src' +import { useIsChromeWindowFocusedWithTimeout } from 'uniswap/src/extension/useIsChromeWindowFocused' +import { useAsyncData } from 'utilities/src/react/hooks' +import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { TransactionHistoryUpdater } from 'wallet/src/features/transactions/TransactionHistoryUpdater' +import { QueuedOrderModal } from 'wallet/src/features/transactions/swap/modals/QueuedOrderModal' + +export function MainContent(): JSX.Element { + const isOnboarded = useAppSelector(isOnboardedSelector) + + if (!isOnboarded) { + // TODO: add an error state that takes the user to fullscreen onboarding + throw new Error('you should have onboarded') + } + + return ( + <> + + + + ) +} + +enum Direction { + Left = 'left', + Right = 'right', + Up = 'up', + Down = 'down', +} + +const oppositeDirection = { + [Direction.Left]: Direction.Right, + [Direction.Right]: Direction.Left, + [Direction.Up]: Direction.Down, + [Direction.Down]: Direction.Up, +} + +// default is Right +const routeDirections = { + [AppRoutes.AccountSwitcher]: Direction.Up, + [AppRoutes.Swap]: Direction.Down, + [AppRoutes.Home]: Direction.Right, + [AppRoutes.Requests]: Direction.Right, + [AppRoutes.Receive]: Direction.Down, + [AppRoutes.Settings]: Direction.Right, + [AppRoutes.Transfer]: Direction.Down, +} satisfies Record + +const getAppRouteFromPathName = (pathname: string): AppRoutes | null => { + const val = (pathname.split('/')[1] || '') as AppRoutes + if (Object.values(AppRoutes).includes(val)) { + return val + } + return null +} + +export function WebNavigation(): JSX.Element { + const isLoggedIn = useIsWalletUnlocked() + const { pathname } = useLocation() + const history = useRef([]).current + if (history[0] !== pathname) { + history.unshift(pathname) + } + + let towards = Direction.Right + const routeName = getAppRouteFromPathName(pathname) + const routerState = useRouterState() + if (routeName != null) { + towards = routeDirections[routeName] + const isBackwards = routerState?.historyAction === 'POP' + if (isBackwards) { + const lastRoute = getAppRouteFromPathName(history[1] || '') + const previousDirection = lastRoute ? routeDirections[lastRoute] : 'right' + towards = oppositeDirection[previousDirection] + } + } + + const childrenMemo = useMemo(() => { + return ( + + + + {isLoggedIn === null ? ( + + ) : isLoggedIn === true ? ( + + + + ) : ( + + )} + + + + ) + }, [isLoggedIn, pathname, towards]) + + return ( + + + {childrenMemo} + + ) +} + +// TODO(EXT-994): improve this loading screen. +function Loading(): JSX.Element { + return ( + + + + ) +} + +const AnimatedPane = styled(Flex, { + zIndex: 1, + fill: true, + position: 'absolute', + inset: 0, + x: 0, + opacity: 1, + maxWidth: 'calc(min(495px, 100vw))', + minHeight: '100vh', + mx: 'auto', + width: '100%', + + variants: { + towards: (dir: Direction) => ({ + enterStyle: { + x: isVertical(dir) ? 0 : dir === 'right' ? 30 : -30, + y: !isVertical(dir) ? 0 : dir === 'down' ? 15 : -15, + opacity: 0, + zIndex: 1, + }, + exitStyle: { + zIndex: 0, + x: isVertical(dir) ? 0 : dir === 'left' ? 30 : -30, + y: !isVertical(dir) ? 0 : dir === 'up' ? 15 : -15, + opacity: 0, + }, + }), + } as const, +}) + +const isVertical = (dir: Direction): boolean => dir === 'up' || dir === 'down' + +function useConstant(c: A): A { + const out = useRef() + if (!out.current) { + out.current = c + } + return out.current +} + +function LoggedIn(): JSX.Element { + /** + * + * So, rendering directly means the internal hooks in Outlet + * will update instantly on page change, but we don't want that. + * + * Instead we run an animation on page change and keep the old page around + * until the animation completes. + * + * So what this does is "unwraps" the Outlet component in a sense, the hooks + * actually run inside *this* component instead of inside the sub-component + * Outlet. + * + * Then we wrap that in `useConstant` so it never changes. + * + * This makes it so the old page doesn't render with the new page contents + * as it does its exit animation. + * + **/ + const outletContents = Outlet({}) + const contents = useConstant(outletContents) + const pendingDappRequests = useAppSelector((state) => state.dappRequests.pending) + const areRequestsPending = pendingDappRequests.length > 0 + + // To avoid excessive API calls, we pause the transaction history updater a short time after the window loses focus. + const isChromeWindowFocused = useIsChromeWindowFocusedWithTimeout(30 * ONE_SECOND_MS) + + return ( + <> + {contents} + + + + + + {isChromeWindowFocused && } + + {areRequestsPending && ( + + + + )} + + ) +} + +function LoggedOut(): JSX.Element { + const isOnboarded = useAppSelector(isOnboardedSelector) + const didOpenOnboarding = useRef(false) + + const handleOnboarding = useCallback(async () => { + if (!isOnboarded && !didOpenOnboarding.current) { + // We keep track of this to avoid opening the onboarding page multiple times if this component remounts. + didOpenOnboarding.current = true + await focusOrCreateOnboardingTab() + // Automatically close the pop up after focusing on the onboarding tab. + window.close() + } + }, [isOnboarded]) + + useAsyncData(handleOnboarding) + + // If the user has not onboarded, we render nothing and let the `useEffect` above automatically close the popup. + // We could consider showing a loading spinner while the popup is being closed. + return isOnboarded ? : <> +} diff --git a/apps/extension/src/app/navigation/state.ts b/apps/extension/src/app/navigation/state.ts new file mode 100644 index 00000000000..1dc49187dc2 --- /dev/null +++ b/apps/extension/src/app/navigation/state.ts @@ -0,0 +1,86 @@ +import { RouterState } from '@sentry/react/types/types' +import { useEffect, useState } from 'react' +import { Router } from 'react-router-dom' +import { sentryCreateHashRouter } from 'src/app/sentry' + +/** + * Note this file is separate from SidebarApp on purpose! + * + * Because the router imports all the top-level pages, you can't import it from + * below those pages without causing circular imports. + * + * Circular imports break many things - HMR, bundle splitting, tree shaking, + * etc. + * + * So instead we use this file as a way to "push" the router into an import that + * is safe from circularity. + */ + +type RouterStateListener = (state: RouterState) => void + +let state: RouterState | null = null + +const listeners = new Set() + +export function setRouterState(next: RouterState): void { + state = next + listeners.forEach((l) => l(next)) +} + +export function getRouterState(): RouterState | null { + return state +} + +export function subscribeToRouterState(listener: RouterStateListener): () => void { + listeners.add(listener) + + if (state) { + listener(state) + } + + return () => { + listeners.delete(listener) + } +} + +export function useRouterState(): RouterState | null { + const [val, setVal] = useState(state) + + useEffect(() => { + return subscribeToRouterState(setVal) + }, []) + + return val +} + +// as far as i can tell, react-router-dom doesn't give us this type so have to work around +type Router = ReturnType + +let router: Router | null = null + +export function setRouter(next: Router): void { + router = next +} + +export function getRouter(): Router { + if (!router) { + throw new Error('Invalid call to `getRouter` before the router was initialized') + } + return router +} + +type RouterNavigate = Router['navigate'] +type RouterNavigateArgs = Parameters + +// this is a navigate that doesn't need any useNavigate() hook, which in react router has performance issues: +// https://github.com/remix-run/react-router/issues/7634#issuecomment-1306650156 +// note: useNavigation().navigate() returns void, so making this match that function for easier swapping out +export const navigate = (to: RouterNavigateArgs[0] | number, opts?: RouterNavigateArgs[1]): void => { + if (typeof to === 'number') { + // eslint-disable-next-line no-void + void getRouter().navigate(to) + return + } + // eslint-disable-next-line no-void + void getRouter().navigate(to, opts) +} diff --git a/apps/extension/src/app/navigation/utils.ts b/apps/extension/src/app/navigation/utils.ts new file mode 100644 index 00000000000..7426f645614 --- /dev/null +++ b/apps/extension/src/app/navigation/utils.ts @@ -0,0 +1,141 @@ +import { To, matchPath, useLocation } from 'react-router-dom' +import { SidebarLocationState } from 'src/app/navigation/SideBarNavigationProvider' +import { TopLevelRoutes } from 'src/app/navigation/constants' +import { navigate } from 'src/app/navigation/state' +import { onboardingMessageChannel } from 'src/background/messagePassing/messageChannels' +import { OnboardingMessageType } from 'src/background/messagePassing/types/ExtensionMessages' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { logger } from 'utilities/src/logger/logger' +import { escapeRegExp } from 'utilities/src/primitives/string' +import { getTokenUrl } from 'wallet/src/utils/linking' + +export function useRouteMatch(pathToMatch: string): boolean { + const { pathname } = useLocation() + + return !!matchPath(pathToMatch, pathname) +} + +export const useExtensionNavigation = (): { + navigateTo: (path: To) => void + navigateBack: () => void + locationState: SidebarLocationState +} => { + const navigateTo = (path: To): void => navigate(path) + const navigateBack = (): void => navigate(-1) + const locationState = useLocation().state as SidebarLocationState + + return { navigateTo, navigateBack, locationState } +} + +export async function focusOrCreateOnboardingTab(page?: string): Promise { + const extension = await chrome.management.getSelf() + + const tabs = await chrome.tabs.query({ url: `chrome-extension://${extension.id}/*` }) + const tab = tabs[0] + + const url = 'onboarding.html#/' + (page ? page : TopLevelRoutes.Onboarding) + + if (!tab?.id) { + await chrome.tabs.create({ url }) + return + } + + await chrome.tabs.update(tab.id, { + active: true, + highlighted: true, + // We only want to update the URL if we're navigating to a specific page. + // Otherwise, just focus the existing tab without overriding the current URL. + url: page ? url : undefined, + }) + + if (page) { + // When navigating to a specific page, we need to reload the tab to ensure that the app state is reset and the store synchronization is properly initialized. + // This is necessary to handle the edge case where the user leaves a completed onboarding tab open (with synchronization paused) + // and then clicks on the "forgot password" link. + await chrome.tabs.reload(tab.id) + } + + await chrome.windows.update(tab.windowId, { focused: true }) + + await onboardingMessageChannel.sendMessage({ + type: OnboardingMessageType.HighlightOnboardingTab, + }) +} + +/** + * To avoid opening too many tabs while also ensuring that we don't take over the user's active tab, + * we only update the URL of the active tab if it's already in a specific route of the Uniswap interface. + * + * If the current tab is not in that route, we open a new tab instead. + */ +export async function focusOrCreateUniswapInterfaceTab({ + url, + reuseActiveTabIfItMatches, +}: { + url: string + reuseActiveTabIfItMatches?: RegExp +}): Promise { + const tabs = await chrome.tabs.query({ active: true, currentWindow: true }) + + const activeTab = tabs[0] + const activeTabUrl = activeTab?.url + + const isInNewTabPage = activeTabUrl === 'chrome://newtab/' + + const shouldReuseActiveTab = reuseActiveTabIfItMatches + ? activeTabUrl && reuseActiveTabIfItMatches?.test(activeTabUrl) + : false + + if (activeTab?.id && (shouldReuseActiveTab || isInNewTabPage)) { + await chrome.tabs.update(activeTab.id, { + active: true, + highlighted: true, + url, + }) + return + } + + await chrome.tabs.create({ url }) +} + +export async function focusOrCreateTokensExploreTab({ currencyId }: { currencyId: string }): Promise { + const url = getTokenUrl(currencyId) + + if (!url) { + logger.error(new Error('Failed to get token URL'), { + tags: { file: 'navigation/utils.ts', function: 'focusOrCreateTokensExploreTab' }, + extra: { currencyId }, + }) + return + } + + return focusOrCreateUniswapInterfaceTab({ + url, + // We want to reuse the active tab only if it's already in any other TDP. + // eslint-disable-next-line security/detect-non-literal-regexp + reuseActiveTabIfItMatches: new RegExp(`^${escapeRegExp(uniswapUrls.webInterfaceTokensUrl)}`), + }) +} + +export async function focusOrCreateNftItemTab({ + address, + tokenId, +}: { + address: string + tokenId: string +}): Promise { + return focusOrCreateUniswapInterfaceTab({ + url: `${uniswapUrls.webInterfaceNftItemUrl}/${address}/${tokenId}`, + // We want to reuse the active tab only if it's already in any other NFT item page. + // eslint-disable-next-line security/detect-non-literal-regexp + reuseActiveTabIfItMatches: new RegExp(`^${escapeRegExp(uniswapUrls.webInterfaceNftItemUrl)}`), + }) +} + +export async function getCurrentTabAndWindowId(): Promise<{ tabId: number; windowId: number }> { + const tabs = await chrome.tabs.query({ active: true, currentWindow: true }) + if (tabs.length === 0 || !tabs[0] || typeof tabs[0].id !== 'number' || typeof tabs[0].windowId !== 'number') { + throw new Error('No active tab found or missing tab/window ID') + } + return { tabId: tabs[0].id, windowId: tabs[0].windowId } +} diff --git a/apps/extension/src/app/saga.ts b/apps/extension/src/app/saga.ts new file mode 100644 index 00000000000..86d67b549dd --- /dev/null +++ b/apps/extension/src/app/saga.ts @@ -0,0 +1,99 @@ +import { initDappStore } from 'src/app/features/dapp/saga' +import { dappRequestApprovalWatcher } from 'src/app/features/dappRequests/dappRequestApprovalWatcherSaga' +import { dappRequestWatcher } from 'src/app/features/dappRequests/saga' +import { call, spawn } from 'typed-redux-saga' +import { apolloClientRef } from 'wallet/src/data/apollo/usePersistedApolloClient' +import { authActions, authReducer, authSaga, authSagaName } from 'wallet/src/features/auth/saga' +import { appLanguageWatcherSaga } from 'wallet/src/features/language/saga' +import { initProviders } from 'wallet/src/features/providers' +import { swapActions, swapReducer, swapSaga, swapSagaName } from 'wallet/src/features/transactions/swap/swapSaga' +import { + tokenWrapActions, + tokenWrapReducer, + tokenWrapSaga, + tokenWrapSagaName, +} from 'wallet/src/features/transactions/swap/wrapSaga' +import { transactionWatcher, watchTransactionEvents } from 'wallet/src/features/transactions/transactionWatcherSaga' +import { + editAccountActions, + editAccountReducer, + editAccountSaga, + editAccountSagaName, +} from 'wallet/src/features/wallet/accounts/editAccountSaga' +import { + createAccountsActions, + createAccountsReducer, + createAccountsSaga, + createAccountsSagaName, +} from 'wallet/src/features/wallet/create/createAccountsSaga' +import { MonitoredSaga, getMonitoredSagaReducers } from 'wallet/src/state/saga' + +// Stateful sagas that are registered with the store on startup +export const monitoredSagas: Record = { + [authSagaName]: { + name: authSagaName, + wrappedSaga: authSaga, + reducer: authReducer, + actions: authActions, + }, + [createAccountsSagaName]: { + name: createAccountsSagaName, + wrappedSaga: createAccountsSaga, + reducer: createAccountsReducer, + actions: createAccountsActions, + }, + [editAccountSagaName]: { + name: editAccountSagaName, + wrappedSaga: editAccountSaga, + reducer: editAccountReducer, + actions: editAccountActions, + }, + [swapSagaName]: { + name: swapSagaName, + wrappedSaga: swapSaga, + reducer: swapReducer, + actions: swapActions, + }, + [tokenWrapSagaName]: { + name: tokenWrapSagaName, + wrappedSaga: tokenWrapSaga, + reducer: tokenWrapReducer, + actions: tokenWrapActions, + }, +} as const + +const sagasInitializedOnStartup = [ + appLanguageWatcherSaga, + initDappStore, + dappRequestApprovalWatcher, + dappRequestWatcher, + initProviders, + watchTransactionEvents, +] as const + +export const monitoredSagaReducers = getMonitoredSagaReducers(monitoredSagas) + +export function* webRootSaga() { + for (const s of sagasInitializedOnStartup) { + yield* spawn(s) + } + + const apolloClient = yield* call(apolloClientRef.onReady) + yield* spawn(transactionWatcher, { apolloClient }) + + for (const m of Object.values(monitoredSagas)) { + yield* spawn(m.wrappedSaga) + } +} + +const onboardingSagasInitializedOnStartup = [initProviders] as const + +export function* onboardingRootSaga() { + for (const s of onboardingSagasInitializedOnStartup) { + yield* spawn(s) + } + + for (const m of Object.values(monitoredSagas)) { + yield* spawn(m.wrappedSaga) + } +} diff --git a/apps/extension/src/app/sentry.ts b/apps/extension/src/app/sentry.ts new file mode 100644 index 00000000000..33515d8a76c --- /dev/null +++ b/apps/extension/src/app/sentry.ts @@ -0,0 +1,88 @@ +import * as SentryBrowser from '@sentry/browser' +import * as Sentry from '@sentry/react' +import { setTag } from '@sentry/react' +import { useEffect } from 'react' +import { + createHashRouter, + createRoutesFromChildren, + matchRoutes, + useLocation, + useNavigationType, +} from 'react-router-dom' +import { getSentryEnvironment } from 'src/app/version' +import { config } from 'uniswap/src/config' +import { logger } from 'utilities/src/logger/logger' +import { beforeSend } from 'wallet/src/utils/sentry' + +export const enum SentryAppNameTag { + Sidebar = 'sidebar', + Onboarding = 'onboarding', + ContentScript = 'content-script', + Background = 'background', +} + +export function initializeSentry(appNameTag: SentryAppNameTag, sentryUserId: string): void { + if (__DEV__) { + return + } + Sentry.init({ + environment: getSentryEnvironment(), + dsn: config.sentryDsn, + release: process.env.VERSION, + integrations: [ + new Sentry.BrowserTracing({ + // See docs for support of different versions of variation of react router + // https://docs.sentry.io/platforms/javascript/guides/react/configuration/integrations/react-router/ + routingInstrumentation: Sentry.reactRouterV6Instrumentation( + useEffect, + useLocation, + useNavigationType, + createRoutesFromChildren, + matchRoutes, + ), + }), + ], + beforeSend, + ...sentrySampleRateOptions, + }) + setTag('appName', appNameTag) + Sentry.setUser({ id: sentryUserId }) +} + +export function initSentryForBrowserScripts(appNameTag: SentryAppNameTag, sentryUserId: string): void { + if (__DEV__) { + return + } + + // Wrapped in try/catch because in this context it can fail silently + try { + SentryBrowser.init({ + environment: getSentryEnvironment(), + dsn: config.sentryDsn, + release: process.env.VERSION, + // TODO (EXT-528): Look into adding tracing integration + beforeSend, + ...sentrySampleRateOptions, + }) + } catch (e) { + logger.debug('sentry.ts', 'initSentryForBrowserScripts', 'Error in Sentry init', e) + } + setTag('appName', appNameTag) + + if (sentryUserId) { + SentryBrowser.setUser({ id: sentryUserId }) + } +} + +const sentrySampleRateOptions = { + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for performance monitoring. + tracesSampleRate: 1.0, + + // Capture Replay for 10% of all sessions, + // plus for 100% of sessions with an error + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, +} + +export const sentryCreateHashRouter = Sentry.wrapCreateBrowserRouter(createHashRouter) diff --git a/apps/extension/src/app/utils/analytics.ts b/apps/extension/src/app/utils/analytics.ts new file mode 100644 index 00000000000..41920b0a63b --- /dev/null +++ b/apps/extension/src/app/utils/analytics.ts @@ -0,0 +1,23 @@ +import '@tamagui/core/reset.css' +import 'src/app/Global.css' +import 'symbol-observable' // Needed by `reduxed-chrome-storage` as polyfill, order matters + +import { getLocalUserId } from 'src/app/utils/storage' +import { EXTENSION_ORIGIN_APPLICATION } from 'src/app/version' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { ApplicationTransport } from 'utilities/src/telemetry/analytics/ApplicationTransport' +// eslint-disable-next-line no-restricted-imports +import { analytics, getAnalyticsAtomDirect } from 'utilities/src/telemetry/analytics/analytics' + +export async function initExtensionAnalytics(): Promise { + const analyticsAllowed = await getAnalyticsAtomDirect(true) + await analytics.init( + new ApplicationTransport({ + serverUrl: uniswapUrls.amplitudeProxyUrl, + appOrigin: EXTENSION_ORIGIN_APPLICATION, + }), + analyticsAllowed, + undefined, + getLocalUserId, + ) +} diff --git a/apps/extension/src/app/utils/chrome.ts b/apps/extension/src/app/utils/chrome.ts new file mode 100644 index 00000000000..9433b4c9271 --- /dev/null +++ b/apps/extension/src/app/utils/chrome.ts @@ -0,0 +1,17 @@ +/** + * Helper function to detect if user is using arc chromium browser + * Will not work until stylesheets are loaded + * @returns true if user is using arc browser + */ +export function isArcBrowser(): boolean { + return !!getComputedStyle(document.documentElement).getPropertyValue('--arc-palette-background') +} + +/** + * Helper function to check if chome extension environment supports side panel + * Arc browser has the functions defined but does not do anything so needs to be explicitly checked + * @returns true if chrome environment supports side panel + */ +export function checksIfSupportsSidePanel(): boolean { + return !!chrome.sidePanel && !isArcBrowser() +} diff --git a/apps/extension/src/app/utils/devtools.ts b/apps/extension/src/app/utils/devtools.ts new file mode 100644 index 00000000000..fe355ad4b6f --- /dev/null +++ b/apps/extension/src/app/utils/devtools.ts @@ -0,0 +1,3 @@ +if (process.env.NODE_ENV === 'development' && window.location.search.includes('why-did-you-render')) { + require('./whyDidYouRender') +} diff --git a/apps/extension/src/app/utils/isAppleDevice.test.ts b/apps/extension/src/app/utils/isAppleDevice.test.ts new file mode 100644 index 00000000000..558774ab472 --- /dev/null +++ b/apps/extension/src/app/utils/isAppleDevice.test.ts @@ -0,0 +1,56 @@ +import { isAppleDevice } from 'src/app/utils/isAppleDevice' + +describe('isAppleDevice', () => { + beforeEach(() => { + // Reset any mocks before each test + jest.resetModules() + }) + + it('should return true for macOS', () => { + Object.defineProperty(window.navigator, 'platform', { + value: 'MacIntel', + writable: true, + }) + expect(isAppleDevice()).toBe(true) + }) + + it('should return true for iPhone', () => { + Object.defineProperty(window.navigator, 'platform', { + value: 'iPhone', + writable: true, + }) + expect(isAppleDevice()).toBe(true) + }) + + it('should return true for iPad', () => { + Object.defineProperty(window.navigator, 'platform', { + value: 'iPad', + writable: true, + }) + expect(isAppleDevice()).toBe(true) + }) + + it('should return false for Windows', () => { + Object.defineProperty(window.navigator, 'platform', { + value: 'Win32', + writable: true, + }) + expect(isAppleDevice()).toBe(false) + }) + + it('should return false for Linux', () => { + Object.defineProperty(window.navigator, 'platform', { + value: 'Linux', + writable: true, + }) + expect(isAppleDevice()).toBe(false) + }) + + it('should return false for Android', () => { + Object.defineProperty(window.navigator, 'platform', { + value: 'Android', + writable: true, + }) + expect(isAppleDevice()).toBe(false) + }) +}) diff --git a/apps/extension/src/app/utils/isAppleDevice.ts b/apps/extension/src/app/utils/isAppleDevice.ts new file mode 100644 index 00000000000..48adc3955a2 --- /dev/null +++ b/apps/extension/src/app/utils/isAppleDevice.ts @@ -0,0 +1,7 @@ +/** + * Checks if the operating system is macOS. + * @returns {boolean} - True if the OS is macOS, otherwise false. + */ +export function isAppleDevice(): boolean { + return /Mac|iPod|iPhone|iPad/.test(navigator.platform) +} diff --git a/apps/extension/src/app/utils/isOnboardedSelector.ts b/apps/extension/src/app/utils/isOnboardedSelector.ts new file mode 100644 index 00000000000..6add25ea522 --- /dev/null +++ b/apps/extension/src/app/utils/isOnboardedSelector.ts @@ -0,0 +1,5 @@ +import { AppSelector } from 'wallet/src/state' + +export const isOnboardedSelector: AppSelector = (state) => { + return Object.values(state.wallet.accounts).length > 0 +} diff --git a/apps/extension/src/app/utils/storage.ts b/apps/extension/src/app/utils/storage.ts new file mode 100644 index 00000000000..1107161fd20 --- /dev/null +++ b/apps/extension/src/app/utils/storage.ts @@ -0,0 +1,18 @@ +import { v4 as uuidv4 } from 'uuid' +import { PersistedStorage } from 'wallet/src/utils/persistedStorage' + +const STORAGE_AREA_KEY = 'local' +export const USER_ID_KEY = 'USER_ID' +export const LOCAL_STORAGE = new PersistedStorage(STORAGE_AREA_KEY) + +export async function getLocalUserId(): Promise { + let userId: string | undefined = await LOCAL_STORAGE.getItem(USER_ID_KEY) + + if (userId) { + return userId + } + + userId = uuidv4() + await LOCAL_STORAGE.setItem(USER_ID_KEY, userId) + return userId +} diff --git a/apps/extension/src/app/utils/whyDidYouRender.ts b/apps/extension/src/app/utils/whyDidYouRender.ts new file mode 100644 index 00000000000..1f0d3645831 --- /dev/null +++ b/apps/extension/src/app/utils/whyDidYouRender.ts @@ -0,0 +1,13 @@ +import whyDidYouRender from '@welldone-software/why-did-you-render' +import React from 'react' + +if (process.env.NODE_ENV === 'development') { + whyDidYouRender(React, { + // use this to filter down to specific component names, ie /Select.*/ + include: [/.*/], + collapseGroups: true, + logOnDifferentValues: true, + trackAllPureComponents: true, + trackHooks: true, + }) +} diff --git a/apps/extension/src/app/version.ts b/apps/extension/src/app/version.ts new file mode 100644 index 00000000000..a1b425aa712 --- /dev/null +++ b/apps/extension/src/app/version.ts @@ -0,0 +1,31 @@ +import { isBetaEnv, isDevEnv } from 'utilities/src/environment' +import { StatsigEnvironmentTier } from 'wallet/src/version' + +// TODO: Add to analytics package and remove +export const EXTENSION_ORIGIN_APPLICATION = 'extension' + +export function getStatsigEnvironmentTier(): StatsigEnvironmentTier { + if (isDevEnv()) { + return StatsigEnvironmentTier.DEV + } + if (isBetaEnv()) { + return StatsigEnvironmentTier.BETA + } + return StatsigEnvironmentTier.PROD +} + +export function getSentryEnvironment(): SentryEnvironment { + if (isDevEnv()) { + return SentryEnvironment.DEV + } + if (isBetaEnv()) { + return SentryEnvironment.BETA + } + return SentryEnvironment.PROD +} + +enum SentryEnvironment { + DEV = 'development', + BETA = 'beta', + PROD = 'production', +} diff --git a/apps/extension/src/assets/beta-logo.png b/apps/extension/src/assets/beta-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e2387a9f737287e870e3f33ab1d0b233909364 GIT binary patch literal 38133 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

c@yj^RvJ)r)0b^EVz%E?C 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 literal 0 HcmV?d00001 diff --git a/apps/extension/src/assets/fonts/Basel-Book.woff b/apps/extension/src/assets/fonts/Basel-Book.woff new file mode 100644 index 0000000000000000000000000000000000000000..7cfd4abb6e9abf069cb553a2964afd4b11684a93 GIT binary patch literal 47616 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ⅅ4X@RGxg-Fn@{`x4vQ~3ZVq9+ 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 literal 0 HcmV?d00001 diff --git a/apps/extension/src/assets/fonts/Basel-Medium.woff b/apps/extension/src/assets/fonts/Basel-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..004a41fcb1ce90a51919e77f3490d7efb343844e GIT binary patch literal 47144 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 literal 0 HcmV?d00001 diff --git a/apps/extension/src/assets/graphics/extension-preview-dark.png b/apps/extension/src/assets/graphics/extension-preview-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..11145a70ae2968036f2c3f8f83a78fd7374cb7ed GIT binary patch literal 48888 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 Wggl?o_fJ5;kCvLQYMHW4*#85dihoo9 literal 0 HcmV?d00001 diff --git a/apps/extension/src/assets/graphics/extension-preview-light.png b/apps/extension/src/assets/graphics/extension-preview-light.png new file mode 100644 index 0000000000000000000000000000000000000000..f29c5585399f9a0aa6740bd30af755d6e5bc1618 GIT binary patch literal 53993 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 ubkooBCU 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 X;yy3s_`(?g00000NkvXXu0mjf_B^4Y literal 0 HcmV?d00001 diff --git a/apps/extension/src/assets/icon128.png b/apps/extension/src/assets/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c2299dfd567c99b5f5904bd3f04e0429610d43 GIT binary patch literal 10783 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 literal 0 HcmV?d00001 diff --git a/apps/extension/src/assets/icon16.png b/apps/extension/src/assets/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..3de1e355d12e215bc7be6f958ea4f841aeb254cc GIT binary patch literal 711 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≠+t+-<=k!{LIF67#K*V- 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

$Z%A=Op>Uq!C#JsG_}&gFFoVHLVm4=-9SWo zC%APSybc1|QUE`~GpBeQ=Nn)zOn2@$z`Rgm&B>h#PD^3SdL1{$E*G$8gyyTnBQEW3 z%^!Sbg!M!@KCPha{@!T%BvPI%jV>SD-0>quPy7;{9#>3D zO+CvGnstlx>vVDtAjwif;~v$-tmNF%zJ&MTolMnuSUs6-UXWMix$RT@!p70Q^q@o# zYyDEchybHGE56c(~aG3mdRP z)uR5*r#sg@jVBVNPbVN#UGr#v%VB;D)$&YfKY@2AiiUvUVbrRs#`$L^JY(GX@P6|1OmDjN4y8*@QN%d@;U0=GwN#aOH9V^)iL!**JSB;q_KuWV!MBy#5i0^ zxwUuW)?#Se(4BkFlYYe2)^dZwI|d@V<3ZZuC=$Tuj5wh2Z^O7D$YUm7|);#%EErb zfY`bsR1C%Kko%&K&H6;_Gw|f!t&?3rJfwz`wP;6Lshe!l_7E*VBADpx;V=`1(U>f+ zc{U2ODUQ1q@+})IzDjY7SU7>n9u=#NL?2@sFLIn5wRzQz`I|@z z@4()#z&xlm9>XnK7|uCp|F=EmOpf*l*u(M7 zlm4GE8vBoWg)*KX#`F-@bR?}GQ zsIgxRVZ(+2x;=SWj|4TNGR)V@uAwzNs<)NYU+?-JX2}qV3vbymUp>iUK^x`$rtT+1 zq;34dTLhL|wIf@}k%f^Ae)~G@+j~1)@OL!|i}zSPV!Gzl@sp$?w1Yvva5^Gjh$-D_ z#DsZynwz&!bn`G${!=rBAxe2o22z;@%>%h6mZswrGu*a{h!pFTDKdu5G+r4ek^67| zbH;z9QJ|zb?p8>2gkoUL^^`(#rLK69)cxNjFx}!n2k+QA-08F6S;n%dHW)Yfdn6Sv zp26(XXxcW|&36T%JpL;9r-QnsY=FZv2b)_2hW{vF*d=^2T)loPDfP%#CXfW>*o!UFo!C1V!_Rip1ti+zoDSVR% zztGJMlALTH4gBhhEjhdN&v*SRsScEL{flT=T`!w~&a|4DakZ!afMew4X+`m)4#aM} zuob&T&AXvsb8-%5gag_1HSm&#wP#v}UT^3r_|5r($TX&dbDJCj@>f+H%I^SJ);*7H z(I))b7_ug2##E`?G|u0Dvnv2LfC(H*w6*NRoztk*l*cZvt9ju3o%0(uzoALe?GQR~ zqp}5prAP6u1f%fX5uPt#YY6cW3>u;L7 z+Yue5pjG2%yZyyqbmuSFp`$F26Obl+rYDd;OD(@Y85u58e2WKQwC~)>&Dq^AvzUc% zT56l8AEp{!P6)G6>lgnvF1ft(nRg0MVL?-0r2C?@VnMUMBby2wtZW9SiUc*~vt#n& z2gSdYV%tMW1_qvD&Y+X&pddAvg$!Qc(~&&7*2M0qQ5u-6y@SG<>7n@(|819=T@-#L z3f_fB=W))q+W%?sEl(nEsFi;*XZ7mbNDGMn6yTdHM1vi)YHH>AYSt9=0d-FL+0|?; zO}0pesSp|MRqb#45qpvIQu?y1E4o6yEZ)MMctdSv^;ly1%Dfhu#kRTo%HdNQN4j80 zm>9uMFAJ8~BiQs8N2GRofM#y+G+4!U`#mx8wVk?EpQOgheQ)x_C0F4e^|gr;&Shfl zKs%xyCq^&YmxnNKj`fwWCiWT1Xjoh)OHz4wCoGD8HD<@=FAdrDIy@#DZ1IybXLLFG zn@UX9S&1p4O6N}A{*y6#dKub0Z6yuOTg7^hTS_a(<3JljUdtb=hp)W3B>GiX;haL8 zCyL?4OOQZt%TESVNBcG>d8cDsjx!-mBgd}d3%X{;f300UMDq=Dlj?)ie?%SIc&%~F zypAA@3hyc|A<=h6dl(J{<6EZ+R+3|U5C`8m?DZyEyomYJ%#6Sjx(w2&2Xm2B##(qM z4zyoHJTs2qMp9!t>Ih_E{dL(5=8p%5kjIc3wz@sNLCs;jlTn`}x1Y4)bUs7>)Im!# zG2wyJ4yTZXAWHG}c}_|renz@^5~`j;Dun2v@w|59*nvHSHu$zkcG9r3y-p!evpJ}k z$Ch+8K;5Xf_{?2vbfQ!3Ujb!?^7 zFePZb(uoW-9_#x=b})%9Qe*)HCoGm@Vw$39MIY;4M?t{5_hik1-r*kknS=kZt)hu? zw2Gc33sc(!$&rNBj6Z>H7RApnTu;;`I>K#(&XgPHpA5CU;hmGdVtO*-P2A%pOTxy$ z*-JJ7w*q0$o=!$ASift^9@U?YQVOYWr?R{jd#vuzp8jrMSwA0nYfqm-yMRB+2M+Cg z(GL_42gZnm!v-a%lONgp(YNHCYo$XTK!a4WOJd=ZO4elTarvpk#WS~b4+SkICbx0P z%*Au|X@{acC)^%HwiH*fdoBo={sGZ@y+oK1>K%EUpR;BldxJZBq%|?B>aPgSp{UXz zy<48OQgGX9QWyaLBBArBHJqj5Ifu$jRGWtiSU7G~o0n!+Vl z_Bduq#|yN$sNgai^dn7YtIqCz4N&x}(OfM_`sP795;Rg)$`d-cD^ax*{!DM&ICZ&= zk7=5~telXX26N($62nofulIgF0<;m}u6MIa!g&MhakcMsITxeoCJB;}OTC-KoT8zL zpIp)=+Oz#$fO>C!=u}wpyIh613K3VEAe-m?v4-oLu!M3Fc^kUPvEU4^sqP*kP!;mS z3>j0r0@_Go57X6_3*x$)(h!G%VF6u65co1ZIEO8z;IW3$roS zQ&@xud1X;f)u-EJ+$;7C*^ITjv2ejCksHrU#`xtyBWi6OQ6c>8k>CH-1tK|{i3&6& z73^N>2CkO&h)2`~>d$52U@kWBAq6u|(NWGx5 zFoogCSEUe$n{`@N-MxMn#;dy#UoOCc^|(l?M1x>F_?8Gk)xa=sKhg!x#|s<-TuC5x zRW!=MzMWNWJCFT3Mc%_-rR$J9&%LJK^0Pc7@NQimXU%R&MS~pyDv)(Po?IzJX8BC{ zeQ<*3T&){e4l*zieeYr;*-nHeSke3jA$5c>9{i5V6Pt5kmNDKu3?yfCKU9CkB6j(J zzKBcS)dq_C+O!TTWoXf##5xlzW8SsPS4^hHc-CLrOIP-wKI}27W-kQ^05maDGVKba&}lw~6DPg?GaeU`C^@o9p#jdt^5gexHPwPruqcYo>|P$|5l zhyghqw{V3R5+WT!@-aQH9j?`oVvTz2^?QH;yuMd>Mz1O$ zBKKXF&+_;z_%2g*1Rj~(x`}vV2949WG0C46Ec0?o^rJq?M07k((;`cCyzPhC55sT4 zf?Ig^4))b-m-niUqbCx%#LlPbbS=ui*E>-4MIbeD_2{b*lA=V^ScvJ^znVF40B^4* zsVwJiwi@3ov%NwfdyI(BUpn>!09uYO+#VWQ&&E$5GGO*h$EPnGn7Q2Laj8YtQ_Ycr zE_Z2Tnk@A7Y)JoOQqo90Fw*{Te(Ea9m z(X;V1)i~bf-n&K{r~8*baaH}eLhO6p*p$39=`ssw`@k9&o*3w7Z^!+&25|m*=B=eC zb^@p_&6DPkl%lLGySe`aj`t4g|I^>Bg6|%1)Gk0XhrNV=*LVia;HM243;N*q8307C z0j+QtRyvD5CUdW^dwA5%0X$(4UiwWsjxwk%0OY(LeFd)TnKSOUg^cuX21Ej2i-xP2WJjxf-~HreZyBT8atyF#dyF-6}J4dTCoI4Zi zzLG05%Q$1aDM@xw4{waOI*N)zI7r4=%=9D)8qJue^8e}=P_bQ>34=XLUJTo1o}7%0 z@hz9DjgLo|0Rj=gsgExBUIr4jssM8CY%Mr-)+B2TT_(iC&=PytLbe<6jPRl0aRU0>-~4g z5Bn!nzbU!%MQs%^3$l_c^R=4J_~4qwoC6!MjYpdx?Esy2tyqM6N(%FnXjVxKiQ>il zm8eyTLM5b+inWm3SrH~!fN8S%@ITP#^~kKjYd$z*l3(eQaC0&~GA?y9sB8Al-M(Vq zrcT1c74Ljp3^2UKYE_9uox-m@Gtb<>x>x|}{22I6oI1MW`XJ4Yb+mxJKV7Axz5&5D^<3`n?iGh z=I;=N`tSv<5RJZu%e=p2LHDTwC@G)vHe}Yg0Xz3EVJb`vU+}_=j${xG0{BdS^rqO} z$gX+tmFr60KqX9M?J6|C!aQE!ST=#)_!v-F5*6zQKEZD_)BC}LyWAo9}tJ;|Rl z4twqfDBV0ZtI_Qu_YG9aD}6TFX>3ysY?xPU3a)(SaO||GLFOIQ@D;vn-jS7yOrGX8 z{LF`sK6zego#7n|ArG$`y~qah&88h#cYYzEbsmw^EXcB*0#ufA0cpLxwY~WTq(55* zcs-SF9Q?I?a1Kv}JJ`xe>hKcCwkv;|TxD~KlJ~iM`>$l&HN>ICP$2&7FIt8VR8^+ek$!~0dHGx6`Z~6pT>>{4NK@^BMd*T zdM+;OU_xAWBoP5+YGVo=w4W!uYv(W|EgsZr1SXvKA-n<-W~-9_efM))m%CJ;7oI{I zX+wtvn$20CVrE9qCd@&Vr*l_f8;uFErOH(vmZ6Ugn1TpXN}AdA9Z3Leye>%c8r@rA zw(egYot{1h>`Sco*bPl9?o|z+r#HGYc(WQKi3`klxwkZI5pB4M>=eYXa92Wm%EumyTJ*>$HwpPIoE~$e;pUI-QG5dCAqflVpy6>Wjgvb)qqaQbvq$WSy!H`Vaq z;DrDYnS|IF5wbkdM{^CAp2Ao)?(8@Oc)$&XDE(rYcgoQZR*HOm^0Tb8 ziz-Km8{d=%~?dio7GVXR>Vn`w#wzKY^^|0C=u(va7pD zxX-~FxodGwWMCu$eT3snKTDZ$XBp%+qA>AOzeBaJH`Yy8 z2Ii)(Y4|7sAwsu7$WX|%ma?sA-SKI;d5a0 zyR`PO&yjH}t6%p^Zc7dDA1Md)C1UV$xH8EzD?B0If+Ar9#J=p6<@Zj>FjJu(lakXr zZ@=^|6?aw(`2#o0{o$T!MQTR795KVZw>$rMxaG^-%&)Y9Uv@soi&MP)d=v@9?r$TC z=XaF$2vOu+WN|WCJ$-rgrg1*b#z+^vf-Y_ivLyR3EGxH9p+^2FBp)Buw=Px)P01-oiItT;T<$xH zukNI@%hi_GXM+aT`14v?sEcGgq`KWel9gj^pZe)4GX?vxS-O?H?^bLOTq|FJp^GYRhx#?_S zGwlhG5Sp-7r(u!BJGmgmqCc;>8+kj1JrBW(Y>-39J5Jx~x-tPs!ua3yhfXm1LHEn- ze*`1J^~xn`%a-dKqM+!>#Au<#&;;zl*X6lXzUM=qZQT?=8GP8HAu@K7p?23@CeHd` zgqlLe#XiPD0e}03`iY>aGZOx}9ZgH|0M~4F^MB`3b&L2H!MvpI5VWC=^6U*Z4OSMg zahCqdM`q26@Hw6P@zf#!XrlXn3#AC5B`zQb1=RBh_Eja`PPhZXry5@4FND|b@TbvgZBHV+ z4F|#yqhlF;5d-nIRw@GdxRL4mws4;Atcb1QrtU=lFO|I7%AfY)#p}5#|2cO(O)17At_G(A0l>icJxW4RA(fI+_*lcZ+fvIp9E0dN05-{m(G+wGWDGp%ad zS`_5{bmMv|Ji>5O?|ZA(JE?cdZB}NuqCYb`^j@Tt@~tU;QlzB{_}Gx?v?=v+iS2%K zrTwKs_IzK=1@pG?n{W~XCrS%g^jz7~fx4dipQa1?I{42kdnjup%)7a1bJ;kzUgZ#pwnhqO!<4pd%5TBv&lzX0*qp61= zJJ)%?$G9KE8EsbBN+N={A(Be-QfBSH79m8@mPZnv(inbu?p$-S(j)!mYNpY<&5od4 z;(oj9*Pq1x_bDW`d``hupFY2zo!?Xa;*)GHQaZ%)a(QTdX;G+_XwxGu%82K{esnbyQ*mYd7O^F@e`ZZf%a$ZDR6*fbbi20MK^$PGs}W(|I_NKq2V=qR(@6os%4y z^JM2XQQcQFumg)4_KKphg=U$B3RfD6PQo98#hoKWleSIcH?XG*<>Ralb5tCSu@`FV ze4AO1`gVO?SCw8VT)Xt@gw_qD#pFQ%86uSavro5(PBmfB7u&7-)+hF_I?w0y6&-4H z^kGh^tkfyZ7#q?2?WpY`lFO927ib&NioCG*u)*Dg?Cl4W-2GeJvY!O20!{)&31C7` zDklH1>|Q>I4A;y3=QcYL%|?v42#yyK6AsXpkQBQruZRd1CFDZneZlN|%hL3=?>rQy zEB5MOS>e_!IRwm5zND@1}IJndz0cPn2p7bRkD!&Uwd<`@kVR#NBL z5UvGYBT`qnql|f{Y&_0}+cxLc`4a(m)}#JEcxxK-ICkvIj>idzYCkarQTeyeiIVo$ z=Q42!(R90UezO`u++o~_9{_J~h%P&qD@5w%os#DbmKvZN+!Y`}Ab!q`$}IkujMRSI zrovzEyYYbC+0I7iOX!~W4PB17>+^48KQH`afU{kG8i2|hQ313L#d(PAA9Ac8Gd5iy zt}Tv1%9-mStix2Ny2>c>m&zgna71W8t76YDDjFAtJ+rP9!@e;&Lxrl3`Lwa689s9< zuYQ{>Ub8nFY<|7j%dBpL*9=gIn+HYe24wwFg2t$+={VT0MZ-PG^34PPTPkTkYxT&8 zEo7BeE!i}KE)H`~2(%e$@DQQZ%s&ZtL|RKZ(N!3mbDq@!oq2_onac0~%G4&>gp~|} z-IlinQWGNMJP_RLTS`g}(lcwBtuKMx&a?l%#AD6tStZW;fbO!XE%a=@&q*WXmWN+A?igRhxgYF01saE)Bg6zjOJtBtLY};vj)lAET)Gd>0s`fDEb1BnAm*rpBM2m zjiIXQj2WZ){F$w1{hxwTNiL@%{ttWK{m%9q{jDF>VYZ(ZRmDfO)tXgB&9qhB=&%V@ zwZ$e#&{mDo(pGJfqNu$SWLPz7#VA1}wjfP{kRZkr{eJ(4=enNj$*(Tg`@YY8#(mCx z&g=Eje)CI&^*jvJKKFHaH67!gf0J6oy^4uWpaQzdoMx2O6MlBP1rZ+=a5Ch(2qW-x z9MEYe`s9uTcJIo}reOOPhiy&CJ5*P#>L>FvG1mMuS6Y2~uBoX8U01DvB7W6_lx;>&8>p5WFbse5Vj=I)ix5$2 zRxTVlgt+Vi8catNTD5qFt~)}2u8ZrR@N z$s?c057fv6W+49(j9_CiEg#?g+9SXtt6)XKnCgAbi?xw^%xCEm4W|*zF9z+k?zYyDhS% zmz@?RwfHmj6WM|p6QMSe-;>|6&!cVKH?Q8*nRTEHII+hWXG`E({XfW^?ZKr(a~bze zO^~{M*nv@C(o+t0_~++&2l0c`=oL18y%g=F*$}$^x%H#?)b2oEHI8hT0p`TRXsN1- zJ;Xba4NnF;&hnw?d@A^!VU&d^1nD{x&y?AGocp z^j?!X2hy|k5D8BkKICEX6^qD(u9G1@5%T^P`=1D=T&9;F`3SF+ zD%kpyQXTyS%+&L=Hk5hnsgIO_Kb$`K$^a@vAaEjwUS+88Uyf0%-a$5LmzevI)p4ak zH08{9<*K*4N4_j-*+D1D6P03vycpQfV20*oYZpTMwe#lPnqPRjFG1ob zXAUy_-67`c%Jc~h&(RgX-u;78^48gdOBmD;DwcD~AJrX`Bi~tt+}t@DldBPgd#I7D zKNV%{(G*mt8SYOCEPKH-!QhYucn#B);s^;_JCah9(<<~A*F&0kH&2~AcW!E??d0{H zgXh4xyaQywt+OV>v@;OMqnO#^o>suC7;JM9leIZ>@zSiiU3s%s28xI5hTG5ZWL=Ji z5zw9;XEmCZH7s@m;gxUuxL^!D5m&x>p*=sc0~sZS z{S0M^?L?!6T5+w?CWj6VKG^<1)oiO;r5BDSSW-Q0rjzNbTLDp?W(@c>y!Avzcc+xHgQr_#0wOsj08Ss} z0i@*I#dOQ!jO@AqnEj@}PufP&=W()mL+dT4s5IjwT!A$e@SJpUnv~nCsBQ=4HVBMQ z0B{fxUV^C7c9Zj^IKsP0Ln7{P*Wv*f?B^8aHd=)69cpn5TJ0IC>pJG2JHJ}CCh{{o zfOp+lzxU2{=vQ+WPwps?Ut+%|H%OL=>8!Umq2I34rX(F-Tq4Rt(^b8pq;umA)ykr<7%hJDA4Ki zHovDs|4rs)sG3p=qCwHF0c_W7_N%K2Eo6w4s$s#z=o};I>OP9A6&!Xncu$PUlw8{Y zDkw+O$Om;Eg$=^4TZPikKkC`kMpp#^vuEnnz|O z`W2zo4YaMavSvl~9jL%(?dVZZlQkC@?Bl)iNq9v`X^)V-5XLDu#y~mrDxAPSS{db* zI}rR`MV?quPb3FTDirrKytXqRGOMFfQXpFeW<9NJ8M7t~5B&l^fE6Z2Ds62eZ>l!Q z6;BG7Vd($t_m3RrfZre374KgWpsTt!y}>-LA!2$EZXTs(gYN7#v`ZN?2ehXtN9@pN z4SZVPVts8L{}>u()2G5x{BQYNXG&e^8-+&|KtGG{3LYEDE6~47Jm|4HuiQU9;aO3o z8?W>g*pn5YVn;5u?ZqhdM$L~cum7R LMLn%C;uWl4R(x-`zhqo4S&F5^XzG;+)) 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

n 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�E^`GuQWx-_JsuV=1fq-ZF118s>{rNv6mIq|H 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⪚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

`v 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ɒltct7Yw9xk4M4b{gIO8o9B>{ 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'`_+rPnP)ZWI zKli?m>%k63Q@$XmM&#gLxt=<&Ar#`?vqjZeu+zq(qP{T#!~ z`RX0*>PZUj{VFZUG*It0gkZ6FD~W4~4cJ;J39Mellzp}rs|)`gHa+m?Wm{tKSkNre zO(pw*LnLLL#rB$8n_0H?OwQnJwD1tCGWjZWF#b(0?aVM?vozSRW)Fyi>$E+cRpD}u z>~(^Kw2`4|;`)ovcIf{I$>P1L_R}g8DB|p*<8m#{dk4tv&_Pr;d0C#VwqHV_PxhC2 zJ?%dUMR#hf4_L-mCyD3<hRXw1l;Xv#Mdd|n{wuz3Ct6dbhXx3^hW}Bi?TK6_w zV7OCC%~;8ChjO;W35_SJylfSBX6dZN3~-DO;qBCS^6iRK9Z0g32I`sI?3U0%da&_m z??av&p?U+Rr;^Od9ZPwF(w7mRg%vGcDd78tm|*4qX$Vk)aoV22p_QXF{>Y#Hb~fL; zQ^_pA9`}K!PW7k#mKUx`w_dxi^k{Ot{?*yEB}(fNi&2iPMnJ00D`!!mm42!RZRyU# zzGilQOSW;Xf9_vES$F05o#l^4tE3aHKFfGTspBi6#T`|oYte%=Vg-H<_#2|qgruB@ zzes*c9K)7T*ZwqOWYkTI%*q0$Dziv|uj24~cTYi0&<7gI5Vjp=q1Xj3t`{2_^4yP* zaw<2o(qX)E(d37*&^;gQyM|5UmmMwF&iQJ?Lkyp%CE+ZiHBJe){b9@$-WD zNx|o+{J7^2r^$fRBaQK84{K3eDoBC*?8iXYUHBNC%NP|YPutl9*um$#Tb1Mwh9Ca} zgT>f=;WeS2D{Z*{nhfkcI1cZ5t_99mph{xOsW;ODb67BoOOpU+6PnyZO46+Q<%bYD zEf32ji$2@$=OUZ#*_w~7ubc&0RG(IC;wA+Q1*Q;Z+j-wcj_hK$ldL1^H@{vQT+Od} zAv&kkMyoGJo;zZev_fRoL;(|Tq|19hX2BT`fJ}`eP-r{y2{^F=c7HhT)yFLN&3UOC zuLJ5r@9u}#!(K)4IKUX&-M8)|!rihrcMQM9{YcvK2X!XIz_Wrh)raKC|0K6ygQy2d zjBmai*+SHIbl$AtJxu*b|IS%Ug}5|Dn2CmYI-j){l$?A6ylc;* zdMj>}F@mUqzpZ9p_jGPK$^j1U@{l~uMg00{qf+aUAGj*Vbeqo>5$O}OfIS@D?1lQF zxO_{EG@kTC6KT_)vyQY=Rq^cswB%1i?dDkBnzI{^2!16u(lq2(UK%)#R6kf@=KXY< z$n5le<@48RTUx#^lau^ACq2eWN(niSrMCWJJ5!{3WM(3f{1J;GEtZ_g{L5_FyH5ys zcuBoC)`Hpq#M*J8xLN(3%xOMeQ}q0&C^xw}GiqbjvUrO#r!QUuqb{$B%uHoX`%0uD zzMf&>qGd9xMxedBTh+04?8}w}L)xhxYq5Dg_q?EIjERhBP($r_tGLJYwOsJw6I>pJ zfE>&-e>Dg|3EC*tl~8q1;}hTbpo8B*Afvhm>eHf&46E-TPqi=QN==!%N= zHE#Fsln!_t&85Dkn3r#1naCF9GC6V)oH2|Hnx~d;(_862HbAg`G^7vb-a}r&3j+3c zrL7=ovH&|!dp~^lAZ8-T2{dFkxn~MdKiBHXwG(1#M<*mV>j(J{)yerSAjT``V zoDHz|YY2K8f#x+9|A$CuN5?OCZ%7B^JEntz-q=USf!Xeo^ILqk{rr5>@NV+JcuJmu zM1?+KP4Q%AnyE|~F}bGHHv}B!tf5YPaenI3sk4y#Tjo9b(7@|o4F8 zvJ-#6Hwy_m=PtH8d0Pv-5si=heBif&k))z8yQAJ!yucT<(a6RT z?984>lmB<`qZoI5K=R&U{N=oeeP#dr=co?>p!zA_+Xwj@)+g7I2oVa-l%vwE?Mxf0 zO!>}RP7Lf62-Rf*LMSNX=l$wsC(BHCmD^8bmi4j)-vi^oyq^)Bi8ug8rdx$_~ZfI*c-Rr1KHn=4BAf{P;vSK+nu)OYd(rc1`Y}?Ei?79?|K{NKTCuu{6<1`#0uY8d)kxV zdd2|qT#CKDIVmrL^6-4+gtUjsgBr*=(95)OnD zIw2j#9|(1ssElv9*6ktGkRgKf5+6<7kJL9cbbQ%Z)dhnB$(T>~LKPH^$=2bz)On){ zC>IHX#TqXdVkoXB4CNl)`8mDh`NG3f@Yy&tYX#nhSz2daf z^<r4v%n#*=!fz+1I%(;_}sXkemj^{oGe#M)M^$9i0PSwFh&ype!z5|D!D%mTNr&3&;qFQq;ALf(0 z(tMM9kV=5Ga_>**=vy0`_@XMGCDBVz4pC;P)gB*IVUIjg%FvE~-b8#%F+oB3TPr(% z_N?hbEKz6}y6(m`gOcE``1zWqi!q@G_50@2{uO4ZD+tg{<=xqAJu(;q!e148A@;(V z^ZjZ5i;KQZYgP!!SAlFvt@d-xEvmCSm7$k-xvDm2B0=oaBH>;;t$SK~tJp5%Y$}VH z3Hy4!6`^o89Z)*|Q+W=;F%aUj;sLMXU=wFczj-?CIP$&spZ4-?nZ5tXwcd;y*DVfJ z3yvy^#P_`_cTL2Llh8Y|6~wPF&Rq!+_Wsaokg zFqT5y;W|^Sx_T`(FtHw_OHSSOW+nr}3EVAj{i{MJac0nFSZ24&jpigV?lh0N=IYt8 zEaliMjXY4UJ|4>rx0KN@+v0$ADl}_q6uFYgnP=UfYZ1!h$qJABhAFQYx2b;_8wg;1 z#c3K>x^tz6WazG?FtVkzIv(CD*AjCHP#RYGz!E;t5k8GxLbcko%`aA%+;gmRV-uSt zemR1jN1l%(voVYnDFjj=lFO4D;jKsigiSE(JAlr-|GT?@`h2}h1)gqvhb6(dl$PM; z-$6~7Jm4W#`#=^8?}XmZG4`33;W8MBoZdv3JJWP8pT7F9e8c^l9am`;SwcO)mEoDHLy_s@1-I$HPk{_-#(V0J3y^Ps88%E|Glhkg zba02xUg}!vg!=wlZ3DH+iJexA-4dNhy5I-3PNaa|>_{sAMn6mgYWOIS2+NvP`RjxdEzVeuPckt`;F;4NP1m8I`k=1h*iZ+7_ zzxjQBK=pNQ*H8mjrT0G%IoR-JUA}o(xiL+iZQ@@QxrSl+m^#gMXAOy~f~_>=a0tP_ z9?b?8RgHW2yRaJi#&VGg*{}uGwx+uM(CnT2AI}vueH^@%xZ~7GBhT$$vYCZnE;n$+ zviV_iqW28EC!ZiqWju2tuSBn+r{nYx(8e<*S)xevJ_hyHP00`q*bK6%mRva9&&Q^A z*@AG!zoW>xh1PN>_&_>ix+V!)Quh>_kfiC(BI%CdS*>v9pbe^$5k@PS$DS{iFCupJReVP>@;x%rkg zqFqqXB_wM|+0()RjQd);N?w$+ZKn`>*?=n6we2{XkN-aoyyeN&*bo)*sFX8iFY6f+ulB1K?z#>Q9Ff~Ok0=ELW;V_>i2ig z2MUbTL8r)y3_#)6~Z`{@|S)1bBnA1E&+3kldYGKE} zskRo2kov;B5no$V56ib-T3fbxL{U~RyfDq@GPKWiLTu*8Q*-gxqB+YiX^v^mjvhy@ zR?yCi@Qy@_wOV@^$Oa(0xy*N});t{2c|jL^36H82Z*fw}13za*rL-mHiH{Y#&xqCZ z5|}?6E4&Y$=Y6lLYy}L%yNIrOkb= zjoeuT8f`*w?4*2Eww(q(b&_gwXd{t|zX816_j;R#C0}TyJUDa=O;J9X6a(~~9=M81 z38b2z-vLC%s|FbLx{5IdPg{IV%sh8^30j)3bAW0HPes)qQ2>a#LTVlqj!*vo7o)Q0 zt}g}%ToMqtWwdYShez=Vv#V+bnl)d!?up)zilq!AC+a@slze|@Z;Kk$u|^S zz+y4M5LSON*IQmwuiUmIRKiY}MvKo`D`#HKcBz={ylaR#ZY!H2zRFt3wC$b%9mNRo ze@JI7p^KM$o$-&HD^`vfczGlnarL6ussZnoRw&2rgZ|-*tKwjnsrwC&u?N5giaaSb zF7a1D?d&Um20@fBoyD3)etdP2SeC355m-pTwAfV_eJTIwlkoL>@=^G6 ztm5xDG-ty%c|*{LobAq(FfP4`UWgL(4pI~C9nl5RRY3g; z7Dib;L6*E;&lGy-#Ws`E&0-VK`mCUnYaVb_{jgIt4@OfsaWNPEZP}d(smU4CJDa{+EDW&YK zBxqi_D`=G%R=+X)3_q*ojb^p$)(MCjKkR1p{EZwUkUu3?!@Nai!@4dGTQ%#Mwv>Td zcE2cHB2*nQvtE7&=Nd>zXi;c&mD_v-(?#|qa!KS~`cB9erKHfD-*aYHxCE&p-;}u( zuwPoV*j%)2&EqqFF_jnwNCGPD2O_-ItPw~l!}xzR@-t{ls;yy^bDYke$67Qf)IIPC58X%nx_BqPDxme9t^1aZluQnuu_vTReSTJVcgZ`PF{!K(7%LfTEIj;+>?s~% zH+MZb`YS2)mg8!m+c0A`6Fc%112^Q`@74fpnA5b*)rg&;{~j=ud{EGT6>lP%j=ZJH z2x#2@s-jrq6b9%TPQ}{ZYM$!EK2hX%-J}i>J!HN=6WK}@6D_X7h|&^SJ;7ir2&hTU z@~dM>yEs`_yqe!=A-->AdqFV8yJ0dX?B%DIqIc7|VyY0s^UE(><3O=2X4^fV55>N$ z6w|@GxQ2=}CoS=XaIL))-8^pGyDzt+hW1x}ce-mJP-W_@eQvCShH3sJZWk!SEEgm~ zc-p6lE@+&fb1xoJ{6|$Ip0WOK+e&KRaEMsjCV$0PpI2i;8GSC(OrWH|XuT6wHi_K2 zMvuS2kRWluwlFwUFW+K6LS7hFjEZ~kyc!k?{-@#)6v!nWpPY2mlxrx&@h73VGX1%H zl-jqO**j}L^Db!Rs?fvh4BZ0i2$1GqG?{2Q8#FUih6N7k49xYsXO_F5ptZ3u70NUB zkH7I~>-xzah)0@~U(S7?+CZ(TJxnL_jMuTLZA}$9j)PAeNIy|KmuOa=&o_|5jhd0f z4CmV1Rt_+4TYfZ=1?*kxAo8XfMjuB2{xvqhKSKv`HtH`5JJWneK4f|6lPm3kAII6) z=BwHpY2aJyI@(^1Ex{@00%5HWm1#mOEQQ!>#TNVJ&XBXqsYj_ehF|<__1Vl4ydTPx z?%|5I0FlL2OM1hTMKx=o5y~t&W)e)VyHKkGEJ9O-ce1K}PQc%`El2sS@SDbmq1chY z+0=>U{d)8Bq%c*!I6XjnP8zO$02xZ{5Swfp>TwFDzc2gd2|or$OilE9vCPS4lL=XN z8w#4hUpVcafZvOIaoRf03}AQEa#7d6dVZ%gg!B$nB>s|Xd3CCgi|qPGt9ElrkW{GC zE)a4{b8lT8KcuLs@=x44opih^#B)c7#_WTe;4_QxYLTZhgqL%aPXO1AM-{9nXnyD4 zloZv{>3#Z@PX5m{KKIc#34Hghw?F zpy$JRmR&;C&WhXY=*3ypyYdz(67LQm1G*o!$!KP2xDj`x84vNMgndHe zN8;Id#W(ble>2ElTw&vDSX8!g{btWr7?O1Qnjb>hZau`Xt%)uJ=R~fQiFGfJO8(l? zOaw~*%v=~}-Yu_}dW&QO+e>k&Y$9G06josxgTSdo8gifunS_$$_W@UA)cc>d;r8%f z_j{I$sr=iOwJ(-xZ!SdiuVnB0oS#vX+z2DKahsmkm1Zr;+>1-vpBU!*D~s}(UBJ#b zej4b{=id`*(H9P45tXiLJ4CAI$w#K6t?dVg;8nAsHvDi0bmA#vC94uK+~jAnzc*U8UwlCfF(M+imP|iDc^IJ|1*Xad|pxha@d; zmmhec5(~mgQ+|XG%)PHK%=ev7Z7%$^s*$`p7edzH(et6<)h?WUmcX@KB4^{&Vpn9{ z^2AOZIXRgwy^C>+jka7PoZp6zlXmcVs-l8xBPiE=9mN$Qo+qTrqT-~^bRXMvwP>(3 z;ufgQB{j166%@FYuRnyl%+)oBX+S#fJsF8#>u{$ccRQmhc_)i5Bh3%Xb1&J6VxvO1q2yPZwx==QSw^c8jynY$AS#A3qV|_8_`^NSV z6y_?GvDGwvft^=)=)GDpBxkx6d$7LHmcBI?(#YpMmRv-T!Tdm(iRb7Ew|X3ZmaJ^A zV^3915&|Z{aIhd9LKizomDo$zK2xN?!wD(AJ%9LG_3W3?u$O=XhhW%vnvZnwOeZt( zAF=jy=~G-TzMO^{45cg;3oUJH0Rx1~ZLT2Y%BYDTp;fbV6Kz4jC#TRmWHi5NjQ5v4 zgPUv+-CQyA^L1QF`gg(r8?3SnFD#v$a|MR#X;C?pwKA7HLz*jXyaoPM#q|uwLGcOb zU>g1e&R?A?i+fR@GZCVxr}c%MwVi+MCR1Jqf3CBOGxM?}xBnS=ywpu??QscVCp7A@ z719$*isVa&@@w2;gi9we?@-)`Y3v#KOh@IyNeumL1{H^X46X}V3p}gu*HI(wYY?3m z*`$Lw#eDoGmd*0g^fl3)RbxWB;wIh1fazB0{1q;3#D>8%N22JLY)82EtAJ;D!CytU zvg#buNvr>Itr~2n_gNF3v&|6-xNNo431d}95@W}TJPsPV2_n6Cxu<4-2aD}y{*S)=J!~d$d&JiTH+*JVqh+z|E(t%F@$d4l$GAxTD$aAzP;QIQICz1HTzdNR+0eB-0x5`7*UkTVA z_gJc;UwVOW38Cax#E9{Ogj_59`pls`KlhmMnCZz+urU`EZeeOHwDL3Kil-x2!U6D? z+@ozIwP%;M&l-tvkBFjca|9)67g;Lt){jYrAoBx%JUz2NjwF`lN^cZ`LNan!ZnEqp zWhJ;`N@-vouo-bEm^LhoaQHLBPM2=p5KiE^7^DQjk1|dzL6DuE4-Bbi=qF*7348X3 zYp>Vb;oOv3^_w1kEF4r-eBZ$hw1D!ORjNb>V5l35;)ha`$2UXMOHLq zUK74jX^E$8^~D`Us^7!DJESpHx~o>K`}K?Dy&nCIe#A0%uA+Z<$GjD#P|mfypkBJ< zH%AYK0xv!m+#y7{dOHUf5f7PpJ{nf%EtaZ0qbNDOT9U~h&hTZG1e`5!BUdWw-gA7G z*^F17^7Ro#NP)QoT$l47)(-Eaz!t>nJ#bmR4-^U)kc>xu4hL5XFwkX^LAf>V0n-x4 zWFav!4>4>XXo-6J2J8-_&JzVa5&VqpJgts-{$RchlVf*C9~5_>gk@tO7tX)_OiL@4 z{6s>g&pp9ZWium82@dnrjd$J<=qJLjc&Ly&f;gc>#~@d%1~R`vz+td=CunQWcR!%G zWb^Q$^_3B<7Z)*Si#Mon_ta@dvp(5qCtys2<2kuU{5P-Nj<9rG>k8FQ&D>#W1BiAg;! zuy6DH!OEFl{-(~K)O2orsww=n7kEnDqv)rKm%IBJJS4}}Huz!Qr@QNKXm6-6o|b>V zk{%Kz~e+U^DS7S+qhiXTPw1rGa^Y5`v&jg4ynlWWFhX*7+u;{oK zh~JPVfN=Ks-H5WkoI(T0Wgl{+Im|K`p0Blsp=&(mVKNB1X1*d2OqKX#kfFp5g0#GU z(?rq|li6w=(*jy^me#x_V86 z$=-PPUgzyOwP03O6;fg=4Uq-wAB4KF-Pa0qJ#uL)+fVF=#3mU;+2mro+5%qpCfCM# zV?I6Y*~{xYI!A;<#Wk=*YFORlK1j6j5ZP|s<(*2yD9VpI3=_`k7eu!ay(BB_5$DSl zR|)*W9UO~}suGS5a0+Yut{E7=0yz0P3x}TXL0~dJ_pgxI?cX>d7z=TK3a9tA+iL9S z7quN~NS$Q2gDM(Jp1iJK3grRar#SkDUbAKVdK>K|HT=En`vs^>5Y#UCE#e5GHT}{7&?=_&3Yv_VPGq&_T)w<1$X0Sw|yC#u8XQK<$WL zqKu=o7>L|FfSN?cYp~m&AM6<}k%-zj^1a{MNj(we*#^V1;iUvg_P4RII#)pp=3%$p zQ;-}=HD3Z{ERTTkKu#4GY=0XjXUAQMfW<&F29N7+QW)Y_EzNDRpyG-<;_OEiTE|glzFb3(9 zbl#n-d0KCjbz(5ykU_%n!gr&4cHGS7Jp3K=9X^SQMA{@@^t(t5+B<)<{;RiBmZT4X;WhMP0e&!mO& z5X2AmD^f53&FGePqpA9K#!CxZQ=y>smw%^lNqDYg>kMsTQ|)XP{qYJgFTfEVy$^ zK_71tVS@b_C&$G0v`}mQk{z{+tc6DzTX= zSQl(5a9gxpXpsm2BZ5;m=V!}s?WU8v&EG{cdftPRiTA`i~1ksJ$Cq|Ck{}{l zduMI@Ny_IMf}A`+i9#4c!3XpcnUa(-cwJr=)CuRID_3T5%&DyXKFXWVyTJPQr>Cpl z&ebY=0W`jjE!1YOCq2(ZE?toje!XLUXO>%u_FU9mZKxmJH2O*SOcL6GI!l>)a;KXN=nBAis^6f}9;d2}9`6Yxym;g2z^5o?;L2d;OKqf-o zV{ElgLO=rGeQO&cCCmTgu2Vni?-D24adS>zUgd8) zHiP)5I<)r4o{}qcw<{?hgSd!e-HJl!0y5|-2#;5A;iZHL1j+`GWuCULMS0zj3?)9a zzkSoki2tfMtv+zVzVnlnhW6uMkizB@++s!cKu>_hlq2~o|M&r%r1CwsmC(rtYBhIC z%^_NN-?{f~V+TfrP~SSFD1yWOimlffsr!@nkaEPZaBGz?r`y>_yf-LR=o+7FUT@J{ zWPHJ*9-|CELT^N+N;>BIIH}4SH^fLr#0%@S#zbel*CK& z1SwtV0QiC?fL3Z8gyt^Uf{^;fhg-O>|GH#JF=Sw?c~x^Y+^MN{`~t=kzs7pvyi^PZix?`}yKhG2m4w+n$AePLWZ83coir=qS?3pbRc*pWfy5`tI9=2$#0Y7g zSYGQ)A_}hqshcvWaPc^8@-*Vu$j{6!!F~eTjeb4T2T`>sn zOb@wFEaNnL4W~o5evo3{tQ#ET$tOIK@o!R-HF{`^mBGDJ{8M?|Kx!1>CfabdmW7bh zP4(tYzFnvP2xRjNJVWrEEqkJwV))X3iNAr0(GDGkgyL|u-_cS-;>yXofYx>@FERDB zG&5T?26vd$d+N}$^U)xm(~uG6xsTsqeT>EsK7;$1pFC;MFWmV-&r1SteYO@#Qf6a< z+rFSGj><0#VHk(fz>|0pJ0znnlBi0d{hFHxiQ9?soB%{U=InzfC-1Fa>c!JYTY$0q_;1rDl9zXIPhGRH~Kcn9sWD=DOz+J zr(b88+TOz)YdVhn2GgEa?BR-vp5xpG=fhFd>jPd%ef@|QeAvRe#Ka96^TxLSKm4r5 z?*&3^P5s+7m8cE<{r3a>{^^;zmm<70efr7dKfwV<)gTYiyHK`Ldv3zi9WDfC?yXB? z-k3B}a}uk8l<{z8-6N@_9A8rVDPDry<>B0--6M`0TE%>gzLZi?Enk)6Q6R!x>q(`J z2GVH`M8{!1!}4{~4~v>;y2pY)6;qE%;TO*Ful0~M82#{>QlsI~b(o$+)ZaEw&eH zF1$9CgNyt-OV zn850)eQ$r`4|X)Jg2quP@EpRmdS0(BWF0eXA6Km;pSo4S^;&U1JZ3H9O4{uzQ{Wf? z7j$$Iv$5UkhQ5WG1fuL5*>CHCX9M775Uf9lADh!f|Ng-WV#6__Rd|%8?I2T61^F%# z!ekAp;VpS*DefmcWxq(dH?AW(qLf$z1vjoHca6uTXowNrHgK}f9bReecwhh8=B@WH zd>3oQnp^WV!`Q~-!Z(xjcAX>-qF=F+=v>DTe#e($P%}gcjRJhSIHcNe#_Wr=pJ!ER z+2yZ^!kVL=JD0uf!1zltuO&WIpVZO)Xo5JbUZ>MPip4~Hn*+PaIUP-VCsgs#OX-I_ zgO)ya*2t-3P)QP#f8$CvE|yg5t(-797%y94AJnq3Ut#*je5tRK?{Bc84h z6vH6P63cv20Rd*XLtqA*dp+^~aO{2Sy83sOUmvJ27Xg!?+z08<229#;ME8Q+V;%~1 z>b`4jUh=+PxKH<1?4w%Ti&KJzIFw@vT<($4?~dJK{*5|4(mwZH)LFi@AU-YzPf*7& z%?GLP2G3szy6b|>?U|lRg8+-j_l8pM8NQy)M2DdeTVv$rQ}=e|z8B2t_X)^zv)QGV zMsVZY2>iXP`o7}*7v;AC1ZFm^8X*GK)6uD<+m(IakagQYPySL{Cnr{CM>;#_vzi^{ zw;nv2AKDoWuYLarZ4AyMOBbOZXKjxv@G_Wd!o+Q)EMd-N=vzmkZ~d;fGI+eg?;^gG zHx><~GYtcXv}j1@%kvPi6mU(Vx1$CGL+^KFZjEI=hwCI`2;k2C#0>h|Ot~*-9Aq(Zp!w2H|oXeD~l|PI! zhQ#}87n7K{e6MH&6!3_tn*)6~U4P>p3RwEvj%6^gV1pAh60=hqU1jX;Q|N}>>4SUa zI1TuDmoa_<7tLHKl0B&=7mb4dxCWoex~*OX-IH$e?B)#h)%~NE8*PW;;rX&ycz}tdor(POqsY2xnug?hO%bGT%Tj&9{Gjb57wY z`Y;8&rTpFio=rBco&lOG!IESWVyV%D=3wGDTT;>$U(n6}%-ui4b2>{aC;;*uQNW>z z3K$IKsiCzMdIzfEXTxaTGnD`>Ltb-ANF~oY5>&EoNiqw6US%Kk#`m8J`dqKEhy*N# z1H)a^8Ae-rbulQ1s;*dFXs6uru9|2oxy^Q~2>Re9oL%5}&Y)b+OY?#ceOOjOK?RnsW0z5TS)kLjF%YT z?a_Gy)_cFO+0V(o`=PNKtp(YChQ1-Uq@G$KUGO2ZU{wFCuGVXMo z+RjMMX-Z9vj^de6KxN{De%DLK2J?!mn6=Kk9~lr%;X*Z7ZpEx7@2C+?7}6j#r7luO zo*y|6b z>w~!0iE*JiY7WzPhK?ecbLNNT#a1kOfTR0&4H52rzG9i$d{a&OEkQv2P=Z&*Q$eTQT6Z+a zrGyEXu%0wOV<$@b4ZtEe@#)2=pe zRKIyaAI1%l__yZC$gV<0mbsf7MzGI+DD8jiB}t{US#aOr^KS#^cUDXVgNc@H+{-a6 z_KW8Tqm{AN_5@}8HOxh-m_i3kfKBT@j#{u_b^l)6*lXqQL_`k^Y!1DcK^+!qWI&?H zPEzA(;xQ!E7z5kn1isTQB~e{NxRcl~3|hAG1F^A|2rWDRdmeYTY>Oij2u_hsvn zAUYJVY(tajz!t|I*eweo_Sn~{qJwC2q+_v@Wg6%Ni^UVOhYfk2YNR0GfD@m(;nlRC zj!SJFGj0XIbHE8NaCFT_{&Wt^*?b~}Sl0qN{ZF63xra+6N!bTa49pme++OXIvqd#m z0-YWq2?9M68G!Z*B34_eZXzarg9|=H&L@TrhGg7s4o^OOfHkKdr`4AJ23g{cK-e() zY|dS4-T<-a5)Ph^6}n5-$ybsFd8E0*p zn8^${TMCn-k`Lr;6p>y{&<>&{#AhWYM}BN}6zV4+Q9elX%ngZqNRqZNNyOq;<-G-K zM21Wn7;;~zxi4VCWFpdLeuP5ZE3Mw%IDDY0u^pP?U|cR=PMea>{Xt<J6DMcJwQbHT ze>LjJFRXQ+qYwkOa0@A#xFTYwam)Iu1@g?4PipEZRqMLK>9c||miR55BlB4gN`!gs z*v0cNnlu}xbB{xLOTq(l{VFXIwUbjnjbH26cBspy?0^JLj55Bpsk^))jIrMY7ucjR zVLiS5yDq~0kV#V5?!5-iTjzCCpV0)c52in(-S1+f+tzjeweD0QsfUUs;j`nNXh773 zUApd|mko&4gU@las=O*!t~&W1)`ES4`@XTQX8m0s;9fwq-0tS}bBXhV>?T^Zo=n;g zN)~iIHL=YX(@*rF0g=mgQxQapS1N(6q8*I&8 z6a{p~u6V75dQOYr+Ka+h3Km+t1?l1=4yx2xp)$n`v2vKG)5XE#fl0RoP zR7f)XIS1)oH*T(@8|(0S6??v&HRc{yZCmY-^_o%;EPLY+cF6pe1rA7k>Yjr1uq7j5 zdWh5h_2S=*6oB}I4o(RCf}5eNtL5Yc5ZwRm_oWZnrzQ zQd}=4pOhR`EJNHm`7dr-cgI&ov$`80CnhGuw1OZ;!aVaw=fBXRXG6yd+1ScX=Nx%u zR9KCrZ>g%Ng9R~EH3Tx{hQ*n{K4x{9(rkwhU>J60?(&?x$~r%+Xm!ivM^8*oQx3ijYN2u8jyXPr z0)vvQU(<60R_{}2AH^nrmi3;rnsJowMjKFGHIcI>$>e`s|31=bu8RMxcJ)N-b9u)G z##bd6lXS1+a9g(q%059D8(k9Lbe6oF1aK=PK01WLn+vXb$UM*A?(C>_Op5#Xt`lcD z&7&(w?PhDg>=-hIH(NR+p#k6}vEC&+Yk`tWc6%L#x$@xOfbyY(7&T+MbD>EsUR z70pqNPxDku{XNwP^W{3lmE375W_;#M3Idh!-~Yh&iwLciih56 zQx38me;9k@$t1wWXu9qM6YMq};=;Lx67R?;!0s`%xmKB^jQV!3lZvIeC&oF~;Utpk z>NAL;afyW!yo7&?yHbu_wW&fsM&t=_dN14dNZFe4g^xh$ST$1O?@Q`Xf**FMU2%V| zjx8Hm+BuocL7F@fobiLd+ysOOegSQyRI!@D6lApUy)WK+r|=nL9S~M0YLzW-j6|xqP)5k^h12UF=bQC9W%+~m1( z4le^;({*ReILbB?&}~WFc{hO=PAq+LszIvgo-US5Q3GsSMHcy)R@F-D6#U>g3NB)r z@wbCa*c4?*qFZ^KyICoi(X)mhP$&3dOL6wa1+D{!p0JH zmlOwnM|mmW*|u+L3sbRJ7Zb9PiMT}21D zlmdpo^b8^O+IkYcfYdI$ba4E)9sS<+$p(r8G>6G}w)H~nD)=}>C!6=Us6P#e`lmX_ zy6(}qpRKcP4IG?Q@+xL)v1a1}Bn%z9Q+lq0yC5F?Ei`|vcv?5XDyc8+*nefEmPj@I zYAbGDPn{9;hqt3*YS)WjzY@`^QYWKR_4?@G=2Xsm`}V}hV~yAdOl_i<1GNQ2{e*T} z1->)zYB;`z6nGuj?T)5<=!CK&{=#oJqIsY8?{f{4hmMMHvzF`AHf2jlIS>3CW5<%hJ)Ql1W%DaOVc9N;cXXLo(5uAz z%Sda)N;%0BdQl4?Oqbl&hWsEo4N81Xy_s+N^*bAOf%)NDd;z zjO@iH0C0ow+$C?bAV-6dOsEz~W*v4I*10s^V>^MpS&0RrZ&W$kw~q9f+0=d+)<k*F{c=QJ-UZ9c@W#D243CWDAMP`>ifCw1Dz+#er3F z^GO>R;WHaI7S*k(9$)|3Cb3!;v_+H}9|ryTI92i?j&jKlM z?e`*qd=$bPyp(O7P(7#gvCQso?1?h_7{UY*0#$~@ba&9%RPqnlxxj{$VyE%F=pU7i z={Q9}6j_PcVh69P|7j;6@(HCQZ{2uZ4~?#h%K$Dgslrf6-!1M?HC#l>&rSDAjWh-x z7nq7)RUC3bsmGl}K!yu6siGYS2s6Cu9!Fv?Oj(J0U?Z~JS+Q@OV9EJ2U_TLclR4{X zHPt2E4peg?ZW>ruV}aRC`W&YOJk9>UuILyC9 zzjZogp-Jn44mDwQhZr86^!L-y^yD@HlIA!1@4usrOgzFq!U1H4Hcx^~+upBR}?E`?F6JbXjy-nHai0Q>cNP};wa&WNRlg|IUBb9Y71T& z)V@se1oy`A;@0v%pdB4V9q~4DohZGZ0ngX|I|$#HK`d4eIJz{9T|6ITaWdqapj>twd zw6_+?Rk&3eAw#&^h=N(C)aJ?Sb^s$E|Eh<38Bd!W1i;Dp2TpafwD+l4xBQd83fTi7 zQrkZnt`0C7vHh@Undj2M!#mP5DVL18dp0bg2B&qrQTjtd ziTTV))`dp~#1qr-z^f?6nBe3wdMQG*C=EluJWhEVJNrwZMZfz%0t&vL_Y3cVMWc7T z+QO&zY+iz!w^ZzmTAIJ^*w>sne?r67RVW3XO!lwXc&W^P4yXz4BEi>`g+$IUrS+_s zZY*VE0b#OffEa>t%85DOT@EN5$ABq^9nzs|lFFgCQS~Zot^UrZZnCn0m2Z$c27wUr zZ?eGM9&d?|lny^}k3dfttA!)|)g%b+rX(@fFmz^hKr@AHd}*}a>rVmI9tT*0ZilAp zuDAripl(f*Hy*B(ZvbG}Hw11z+?UHwG!XT;tjh8L9@~1GLwdirT#YXHM9XA-iT64E zMNSc*H;fV=d!4LGmxKu>HaNb*LKEO1C1`x`%oavCXXp zAWuzT#GWM2=<;z*z@QImw6@Z0?#uSD{AyM zBV7S`=b=15Bk7VCrP(xufWp0t<+&t%_>Ojw@5R3Oe&6?=ODwWuKo`BhjS&|aphA67 z)!*ZlS^1&uq9nY422t=Uwe-~jSi_vncT|BBK5P+nL$myO5<91pfl$0zEyAAXGMNQ zQ?gpmXV%3li3;3;+Hr#xShv3+=R&sv72+ZOM&z=j2xb2YTkmBN?~W-sx&!A?!`AxX z+XM2hgHdG4xeCW7YO%4^DcW}uE>of6%&)c$^$n4-jT^dB?Ej-5M7NNnd@s-$fEJ#> z%SOOTi=83-VWnTUS?>nxi>Jt~?cadloJ+>HKd<~?h^uMNkqt~b&)vubwc&0>Z|(u> z^ziW1X+lvzV>sWGD&hH*JEE*0sbk)k78$pXvlM@lT&p0*@MHE6MSarTiqJ$vW;Ry+<2@Q?%0?s9H4`_Q?2NccsHpMc{G1h9+oeWjE^N1o`!{EoyDSv%Mt;dj=yCNV!ByMyku_(%9JPC_II6;2C)`5wK_DK|Gi zo>Uzri!0d&l9vwAsU?>ZD!_TUSoIKbu8V3SIa@)-b>GcE%pv9Am*ES7-Ct&dlsJ-J z>65o%8obu)1B5IFf@Ht3SSS`dAX?gek}>gWx~WV_zq_T5b^Z33%<0m`@*LO)5de=r z<6H=owoBEajdVl^&(F^&s{;i75*3jZj=Axi%>L7P3pryL-?HoeIw0~U#2)1Rr)SMd7bu^nCd#?yKv-99oa&7t1 z@-2vCV+qPBniD;Xd+?-7757k%cPEGtO{zG54s-@R^^T4i^MaRMJ0n51rJ(|iSL1t| ze8$RLX{=@Ujg{c>Pml2-#=uQ}mKeC%rmb1<8$RGlw{=fI3o21@-uoFHhjfqkB$A78 z3O>v^HG&MvLK3H-!gIVo>^l(R;=dK&pt7;B87aj8KFAsh3 z%x*`}G?w4$Avb5&hw0?OeM6mmy8Ii54%1nJ^z%D`Zh6|58j``&$4Rgj9x#J#$h1+3p8yL^tp>g~Lg3jC?`Vcq zNjU4Aos3J@-Ltx5)yykEABxN$*5+#~TD95pVb&X;Nx+&{a6X1}#U z&Mzmx8ag1NW>E&|B7HOE^wH3|%3Lee4zzKHyL~b0e(ozZoYdx<^8`kMn9yw@fk^*K zUO?E77l<&l$P-p8MDQksC5c-wLF!|jS{Z9NVTi^95a*K_*Rmu@Zrb;Lv-BZb-~)Cs zPVycs1F<kd@a3P(L%qJHRzmcuHr%Xq7mp)fuUf6WAAG#BdkWNVB#9K}x4(k&1}b zv$pUq;x$Hz` zRrzz_(QNn==Uy>C>_~%U?T<~4?dh@S`tS5l3l^jW=1t*tEAc`YUH?+1W6DG~UFHGw zLW6s(-DEOQU0ljTK6MZ~PKaB&QvG^5-0z;+n!r;ZtpeSGgj1_{$_h7PgK($xTibbC z_Vl?))wTJB4xPOs_zzbW((sP|Ov*#}6u=0KZ`!+Vyk666OQN`Lq1NWc-J8DfDX8OL zpb;duAHoYHpM$zVj@H_rTKi>Z50mP?roQ+};Ox8WfS&dcq5EynH`Fi;Ed1(ra~eXM zTPe5AZb`nyIVC^Ohi@P_ppp63rtV#pSQweJ|1Dr%#$YX$ZRrYCc@b%xj9Kf8^!CIL zyT~B^>r;Adu*3cni>q)Hto zmY7Kk9GF5wVz~Ovl1keEt*r z4)rNi<&W>uwe3nZjK?Ma(ALc6j5sP&v0urnY{|;C&)}HsmZE1V&@ULWs1Hl6^h|M_ z^SRSrwL|Y!;B6JwI4uU5!v{d(D673NKI!ykUG^JN9GpagMMERMNPK1Qui+zD(bt$J zW^%&M%N@nRlwsY?ku zt?+>mw#KtLFbCp%IL-oFCmjC&UdTRe^nxKHAtU-TLyJD2{iw%fMc^OUnNH=IT|e{L z^4)gDmHoBe)f8G?^vEnH^-RWf)lon&!;cOUKh-ODn3-}k-mNSQfcps?pe^rDg=x4b zI%q?IjKt6-n-+$j(;PcFvZ$&xyqMe?E{>0Nsj{% z2P;VKQ4=36n3>a@`hJyf;iNGWMhLkc!R?)UXenaPE;b10@GR@)Xd|S@L)0 zS%@);;CxtUuj`y2{?-`Hi~GQ6F60T-P39r={HCqsCXDXJ>Xp#Nxb{!{-Wq>}I*EJ1#|^oQC?TJLFPHyR z*;=>%A;fWu5Gu>{NlA`kDnn2TJrSnhA@V7qoV*+ljWt^jo~i7ewrU6Vd!cn=r4Hg{nP$K<S zFs@IOAKVri`Mz4XySl~3QdD-0MDsQbG910A2E0SgVaxkn*y>_FrKkOeoKEYAc%wrk zlM!!hsio#bJMn-l?`q-Jf{#`=^OpW|H6>u5&zIz#PupE<>B(bC>1O{0mlV`aGLB@* zX*K`Km_3a;38{EdzLi(wUVUWvwGuoX+w7W0_;G?xuqgS&@LvgN(yqS}X*>xe`3xe< zMb}74T<2-hWW33tqHvfDv0vfT3yUztp;RpHkW!c{FD487W@0M#YH@na!RLkH7F<}}~5fD9Vr9?H{i%!dIV6C>;YErn!l| z(6`gZ=%o%mId`ryn790<4dEz1o=S75`bBuKaUEfS{^+brHcO+YWf1*9-hX2}b~XP{ zugSfJauuC0=VqMy?(Ii?M?3lTnz9>zcs@^|bD6G&-7Sl4#!)aH#Fj`;IKEHA_2J+y zV8gvn=|oLaXoi$XNzCo8d}{kRV&P3t}M^sNow)>ZM7o;27Q2FT#ExsR_+?ckxobKs>)YIl0yN?9R&P zEh@(?qG7Ok7g5sJX+voM)ak8A66MCffa_|HGI>|79Q03fl@8%fCI#buKp9_SOGOW9 zZYg==Q2XJ-EEP)<&gei-935t?5}ldRP$!^PRfCG+V~{_x$M=m&1q?g$`>-Lu?{ibQ zIKkKZs9|k*5jzAC#N9y0L5s_Dn6pOR42t52n1M)jC1;oEE0^h4B>e;QZZ=P{);^@b z21`Cv(!_o)sbno(#qm?p4UrgwMMF2KA{LXu2HWLj;@n4SMbZ&Ixb8g;m?>2J?!?va zYf)%xzf}l@oVmUXDDt%(lZZ}#I7qqNamF%?QhUtE{pwCbiD{B-6tbfo5cPl>f){1w)$3{M>R>B#QlYC_e)9XU!OC{-Z5NRbgb&IB=ky#Mef+YXT+`8U zieBO0E?Z$g@I!#nQ^Ue0$9q2j^>E~F6dY6056KRMXotYYps6#s!G!GF+XT4y9i0Gl zmd`V6iY!XmkAk`Y@U_TK*bqU3pH)%oa#^9pSKOra+A2=?Zdvb9QgED~*h~ru1uAhk z+>o5{o6S46y$+!Rjem1*m##rsZ0@xAn`m`gAAw0tpD~93+#L}rX?B7zQZ!#FeLVl5 z+uYrjU(X1xsD+7f#|U#l&40B_ zgkM8F!u^yXnt_| zVluIZY~v`)5$CGJ2bk#S_mtN|0=Myn88WYIq-C4Lw5Y0URtB95@tVf5WcT}&V5gLb zWN6aq#i3j)#?sjtkAZR5S0#NbZI)-Ji{JZS9ofpjV{Y=leE0r-C*XE6GNwr1h$k+l z(@U&)H7#JWmshyF@&EKlf#>YU3|^|MB06oe<#sgJ-eBi8H&3`6EqJ-k;__@0*jR_q zNw)X^cfH;bFaB4EG9a~xW~v(^R{FP-yh8$HQUY|hk1iO`E}l{o0+#iX5;7S4p3I6; zzp$dT9Z$xcl zd`th%XBanw%Bh8y>DI!=bgJSZxV+a&_yj>M!zWLH8wD&OCG+h? zcex@;!_f*l$Ckz~A$n%pA56U^9}5X*N4Tl!p8ZcOIc6?uRlDWcl>J>>A@a!#fyUgL z3J9ZV4XK-qnYf0G-K9Z)%5NYjweY{t)tPc-^T+afC5CkVN3_psEXus#>P%%8_4#B! zzU`~x_2@+nm`b>`^d=&l)4|4zLZxcH$YsqT!bti-`VpzhV>(at1U%9jVGZ)I?Sm53Q=oqKT#jy{zjq!U>-30ny zD8}m%Ic=~%KLFtj>-Pd}I4mB7n;&n>C~|Y0JJ?A?|GdI(hPHEZ5O}t|BrGUBe|^=b zdMc(r?zIXBDH` zaL0n)O$xHp#n3dwBMA> z#ESTIcqK{7bKovHiviQ5Muo`b%$r3lA;DV=RNqCDcPX{`T<+bMc5=x={OObttp-2M zNV|x(Eo#|hECexg%o9ps5$`V~Yxa<5q3WAWS0H<|NZ9-Q4G%)LhP7J%%r_FmAU@9h z?Z$g5o|mMY#c*MrTD)VVjU_LytzcTARJLDGgkd!CkMlA-C^rq-PEeLo+`Z;ZRgLG< z%b!5BFgMr;H^q@j#U#=C(1M|x_|EkGoVr(PQClueA;*1eKO%F|h0 zxyR05ScWQ16};L-p!*)l&3bk&rDNzm1v7WY<0A-S-8*g9E#BSz`0k)bxf%~} z@5)bBr0#?Ov5-(lEj}9vI(B)yTBIWWJ-l-iJ>3IT+y2h|e+sS}w6*{Jzi%Kt8r&6f z^JRalWABbU;z;^ILu1but0^gf+?VmRPY=yg6#Iq0m)&w%-h$~cdC19z+q9BYIWBC* z(~?w8kmI$qI^}lBq&{QVW6`K$)JF0qneuuZR3YnQbnN`|bmdI1ku2@FzZm`(kCd<3 zo%E#4+2&dV6=nCd`rt84RVJ6<5Yi~h&4+{IVPk5ab{`!e=6o!Djoe_y*rzgfQkws9 z_19rdxPRC;4k9Vtjfk`e(hW+7gh)zvNyA1Cq&t;ngo*+Z0@B^xoufvN9wWBjKHvNP zJ;!rA|Bk=5EE^Q`n=e!Q+bAYG)eu zabB{!0ysUP^w~|PqLiZ2fJ;Vmm@@}blu=Jc~V2qNBMKY_nYTn}7b1EQJ7j~oQF4nw* z&qN%VMD&@-{72Q2Sy|RXr>%${Ip4%_uLqKXf~R#PkCpxE{uJjDC%r3bNQ~QOu-#~gJ08@h@_A^(q824?jjdI2UX zuSB`L{wEBaZz+?==p71_X(QjUDV`jPR9~-qql02vxcDcaDUa}Vgzs5#{w?ne2p06ki+ zp3i9EdsIsXdD1!!ZNxaRl(^0=B+?aou&N(G@>v)d_DFZiiNvO7W@Gh^fmI!^Y3lPd z4}M#G8Ss0tmYp`aU-i`FjE)dbk}^`&hyJF0sJ?@%3qQ&)tJ5Xl7Rjt&B1B<#aDKEh zjM{s2Yb{5kz&bjBy5Ge75gd<6D%zDv7G@i_+yC8}-}aiYhT{Q$fdwfaK!38j$L`S^ zdI$%f9PDtqYs2?83B*KP+|K6HVV3WbZvbm4FP}*7;(@{}Pw!MR9lm~ZDmzhm)`$>$ z#xiBD6FdKI4u6S4ytB!9K%Y)s8Te04@{q+-?Qf0Fo`)D!F3)S4yq`;P(B8fFXt9av zBJr1u>6ve8qkD8CZRDj_t)Bm;u+_h$y~Gsi(==2%!uv5uc&1$5j-p*xI>^Juf0;~@ z(OjCy;J-Ghp?Uh1ON19G_Uic!w1Fdckxpu+hD`xMGJcZ-{=nxQ=tZ#9%QVjz@4EQ{;3&XPGs= z7GY@toAUg=$G}d0l~JqvcQ+ooN-Py{1gG?{C&5BQTxa_Fy<=)`iq(x_pVR3*nrUw0$uBN# z7g`5cr*ITwVz;egRm;gB3CFX_ha7uv`Y2E2;1b^6X?ofK43V)BzOGn|sfR6VzWt+g zBOIcdx1!01HSzLJPDWJ@7aMZkSPG*4e*P_WXj3bDTT)xOr;pfAw3RqmrukpRL#6-0 zGgxzLd0o}4NU85heYuNP4-71Zg8$F%`oFD9)dOy*z+Y!=$Vb+ObPg8q!HOY1#YK{2 z6Pv1FH*c#^gX3VT?JpKOyw24(k#9L^95_II29oSK>!VRBC%s8v73?q1!Y^Vy$DiuW zGaL{oG|?0guDOxQ*)#c>=%;y$O?!F(_QL;yvptj-#VCV%>@Id1 z9=2`j(+)TNt>ha`(+ODf8Otz_74kr^Ysgr zl@df9=mxK+>KaZe_H{4`5u`vk)!b9Tqm_GAxh;KiE26!SB~@gKA2_f%hcN>=@Tl;R zX|g^4FUB?Ck0TTp;kBMbz1+Eo-&fh@*WGd`B!V*QSU=Yh^>2Kb#u>jONWQU-$uE>= zSFiI9kU4$FpG}BVD2cVnQLw4jVTZi8v?FyW*re+WOTv%3j8zupI3qJZ-to73g>3YW zAUzl`z&{^)-D(#XX>dsof@ut28^7u8crp<*tq7-=F*=#;OwJxnAR?)el66Xr4! zt_Awz`&!UgI=Vqm!6)#iY;Z?|&rkc@cek$O@5()voY;ZCS2%jFlFV9^@d|C6vF28Z zIhAwAfQoz5;Xn2L1ad;iaY$HtVyVxDB1|Vgrrjqwwc&0$D(lJXxjV?bW!<@Fz)8%@ zm|EP6)h-&P`LSx(Nu!jYp2aCsRO!JQ=Y^?3-G2wtM&36yngcFLbme~fdQTBR*TmJZ z?b{4&q^Ho56!dS1b{?ZEBtz#55bQsX>mB;-=0%=1tOF*{PdWMns&SMaLhNT`pQO0V zl<suY>0ab!c%Lm=Yt^u*)ZQZbK4LlCVK zUA;q+DG6_t{g#8&!i7>Wn zPL9Ofb#)B5eROi(>w?&VHz{yiF7Q(*7`&n&MeML@PUVnyxxrY?r6s9|r@77Fm+2~! z45tw*%+;on(5^9HmPrcZO_%RXbBz0^UA@T%He}+C7gtA}{GA(c=SL9*qx-ytDfD#V z=>Iu9bFGbE&e0!eSfl(o{ys5&^D(C`DN7&9-VDoX4MTjN@zp$eDw_GWY3_LnLn!?% zlV)-K86bS;bSu}Q_&#abx08-YV34(l>urq-+y!Ar*q=qr5by0b`ojFo|P>)@_)=8 zQqZOBjZ;IXD1?#4gB>Q)oNSD0wwKn~wSht=xmKTkzP=v1%mgw5h{8(llIUBFUv`Q7 z86u8oE|uoAxsTCR01>U0iP?oqygNu}jorgy^_^Dkv&iv#_}Z#1@31tw`E*2BW0JnZ z-nPMy`~wn$Sd31l8DyLy(kP_}q@tZ2Z z$C#y>BtEC?@R-Q`n01&kK6{0V4PgJMDuupxg*MZLq8(PR6w!FE zHQ>hqlcumw2f#G34Ych{3gxhjR)y^e$qk~NMCjmZG@%o{ZAO`jqAJ%Z9x*S#z9f=H22an4?T;Jc;^!`;Jx06tI}`pNd?Ti!U4P0rsn{O(&BNTgoYsk54fUd$UWe&%U~ug@lUj zv?*_oyYwu=vHHX5#!AoR2!xn>azV30OoI>PCxaQwkga^MrN$O#QwtIU^I}Tz#czDj zTSSLHcwnyOZ@B~yYF>~A!4GSeNJ4ksLgsGkbLAI8+n;tjT2Oz`iLR$oo&aB_67s7Z z6W^E?D3$kVL=CY4FC#!$hOc2Hli?3TX94jSDdtnlb>DAn3O+@;{2$maP>5Ab&()*X#ci`n{2t`V(!p3kOGVNUir!XlT%OH&K1%Y{+h1h zAPN`I$}PmFIgBUyXKmT&`MLT1dj^#zq01ooMKOvG;J*clr*=gkj2DhMG}fAAT0GlS z;a{97%t${d-+EtYpX4bLC7gzcI2`x)Go4VOoKN>ReXoC=?PD@JpTP>6xc>vm{FTaT zxj_elp@H1!%$!ICBIFv{OzYW(<{p zhty6wj->XtsltDv>q10$2}?lb4x+|{#C9Xmjm)>TuGM;&6bh7%=m?lJjF=_8{^-$y zSs0F*8wU;e@Bnu?U}aeEZ9tdp=#;9@Em~a9?)(y8iQT3^V+D4C%E#v+z!&@1?LUX2 z{^htE@)x(8*Sk}k+#3v3ozfrxhD@fP-@$>)+Bgk3`t#y1u^+X5WQiOSq`GL?$2y1* z=F-IcW-8Qp_DeSOvZzRrPL|E?&LmORCGzQcU(t-fxcV~8%GQ+VEGo=WKKk{OzEOe? z83@{+B*{YqZ@xR>F+`Yz-Bvs87XW}^yk`^9pVok~t?P6-CQmsDb7a1cZKg7;Z^L6c z6PKyEMISBW`)cH@!!2D232opczLa*egYJWn8YKRPP+$wEnD66qdf!^9q7;O!8MjWn z=KZt9O}T!*ZHJ3}u=MiO+v!-sqs0sZ-YM|e8=l?t@BjY&l=n^~S-4Q5HPtFS${k2$ zvk&zNHqnlJu9z`Ge<7izZ3FW!vWJq2KH_JB(@`#WSO|;um9K3K4ZI0%34w9^9cZ~V zZ##PCGlOjX{|8OL_R(H9^k3kghUGG^1QIxRQ@P5Wska2fRh0wrpR+It9b~`zs4&wA zXmyVKz<6zyat-(KROE4?uV0b^dQBYFXj*Dn>Ci%C-lG=W0X6=s5piRXAALph94z#L zBzNC+NM1yzxiBB^BoO_Q|8oM2Qa{+*s_dfH> zslX~?m?(38=XJ2 zpf@C+*8!R>J-)c`@+X%&W!I)e_KNU)eQN*H+cc{gELz^yt8|!myXM41_ow<9!{xei zxv6$-vXlE`rpkQ6kBe~W$g;heI+>DVTUU7N&1v4jeb68k9O`r{Ly1e6LB2E*iV72P z)Bd6|cq>p*a3rKr>4;ujZcSjplkd3zA#wRwr>atNFcdN?6SRu_TsKmvH$r42e0a7E zA86~A#@rq_>Odij-sCIXYuROpmhMuXH|O_1p%Zwy77lp#dp(@Up*kj_c->F%Jlp_Z zwSX|TRDnkN(rExOtyk~Y{Ozw{e5a6EcBOKl{vOE}8p4*;wNw2c31d&;Qiz9xsJ>8R znO!bMI71N@Rt!VhVfZ-c9s392DR&U^s<`NoE(!#J2OGj*iN0 z5YDTni9Zx4`eAe82w@U*RS2`3yE<*}{)sDK06gH_fCgn3fFse#DECMIjdcvG4=@v` z%FEn6OoR0BxV2PAGu5IH@THim;99I_wm{zl{uepA+TH2}f zX{>u}f3qc333R$#d?r+;@=Lvxt^VK^vI!8}r(l~UHN7nMu@Y;U_Jd$)i$#KxXH zDvIhMd?@5z4BOrvmSE3xWo`ThA#ACnl&C_rJ<(fNqn20s8ub>}3TOtaG~W~CGItt5et?6(mv#Xm)azyW?bAQa9%FBU<6=U_5GW&C6DlL$<# zW@R%xJ-Rl|e{I9#)`{24R?Ap^GK$hg8@gq*(L?2MP71@kX^9VTua0-0VQbkOoNM;8 zQjGYNMJFji!UXDQy-1*VEH8AER>7TRR&hO(5x|=iox2CeQWYJwnys-B)5Ha`a3;^e zN8!#}7UqKhcjaRrce`}B1iJ|*3@~y8XFF}38?qT<`ChXx=SBu%#}e;eVZ5w;Zr>V$ z1|)wUf66bt3vy-n71)wB5&byX4=3 z-lFD_sA+u<`i)vZ$f1Frs9`yo(8pmE)c`LF6!YLBS*;jK7dc;;I>XOi9(!(x)XV+PoPtNHFgSG>pD+65V)pJo)o zHLpPd>(m#8un?0F3{smFk6+b5dgUyvD|O7y>^6sBqgz0wp8}l9U84VA-xuAWV5^)c(Bb}HLrQnLmSN=AeRF|R9@EP| zPa6Ua4@}yQ&eRY`j*Um7+WrPsu*1giw?wBcNiT@Zms&0GO;6C${fgykze6{HGDKrh zjZ2S~4s2OTJ=+Xy+GRpy&fBz)JA1fQnDcb}1^F(8%eGm!_f|eP@wO-(|9kdr?)75L z{vdB-X7y;(-`0m?6z{hDiDK#g>Y76W zpDPTVZ^|V5XLu8%(g@*)405xwFYbRG7uxljvJ`9`?mi-7$_q+n$DSbLdw5p~7jY9% z;2_X>0?Zq{)l%Aci}$GquZ!&)uIE;%V06z8-luKfFGXtwNX)X%=SkoOp`lQ8o*P=%oaRvyOvB0uV&A!QDOZ zm5_Kz4QE13a&OIfieCIFJ0f!xcjzF_T}7t}$%KIMo3B=#L4(#BO%Bk{ z^Z$fWFacDR6#&lrAhChQN+1l;c~BF(G3JN~L`VKZPhfkvJI<(X9OSL(^8|I)x?e3& zqo0&tcJyA*wG#z|jGr-{$e+N(DY#QRX!mNT;CQI#(R9^>{Z=Fk27S!e*Owk`fiHtJ=GD@koKqm%rhxjS8l%#VZ3I$x|Nu{X$`Cy!}oE9cl+UD*zONY7iqBeTu- z@aI6i=xBJ5iva)c6rpVssP^vvfXvp#sIiA+QZX}|bATql!ZN#Plr-B~hgk=3~*U4wsRT5S;xeD`eX(r-;Zg%d{g z&0k`ZyA@vPAO?td8xplG=&PzO?m9s3MX69J`{U+m8Zz3wuL)c(Q=v{A2 z@cH^hf`AB{;%M?c<-C2yf{qlM;#ec1wRC30>18e@wTjh6vT*r_&5vGW%Q(IQS;|oE z(){bXzm{HGL_ZYD-JbddzbBW96^}Gj(NoM#adJnos@&6RV;1gveUg9|lLS(W6gZ8dv^4#EDp0YRTMx^Kb=v{nafR`mcE zDA+<%oLubAlKy8O?kIYw`u3iv%X=`JIETucglJCw+F<_n)%)XuFe5=$Rr2tvcCKL=x{PyylSn%~-9ZCVoi7Pk7ql1b3cR@k*V=o5k&Xox1@-$X&%6D9`&NsUvQ01$_T$E}h)Q># z9)~C7(SCE3H?Ff2>=zQ6o3nVw(@D#pxR6dN4DkZ8^3G%6YvZ6dniiv%}2GP^*O@D<;HTJa)b{ zQB;0EC%{-(o=cs(S6N#{J|T#jEK>UAfayBrT+tir1@pDxgAXpcOk2axgsyUOFx_2e zf~0L@odtVjPkB-TG@}QkdEft}OdL3$n(xB6@px0l@%uDK`fvunr* z^qa?LyJ)U<$?9BJc~fJUElV8#8s5dtjXL9` zGrt#(?4$D$%+efE{d4_dQs69R3y%mMZ+Y}+iCNutN*hosd{i&?8tZ!!%g7)%5SGEeVS(|BA-3{zAhUsM0lU~F2nSe zmNSe9kAj^)XtvjUtl$5|OsW&o$f?mmL;7zIF;?xjRJMc_tsYEH#<(^7BvSDw&DFBu z4wCb(nvk(^HFq&su>L+D0)vFo@fG3AcjLV#DS2)JQ1MOgk~=wIk;5PE;2#SoJB4Jn zWSIgrPMb-t&*@p6ii0_rB^a}=f+uI5QvD7+ppxE|z zj_6%><`CH3jai@% z7B1OVEn5@tY0AKzhR0&(%Um8c15M%HMBzL3u21*krUybs#x)PEDV>myE?l(X?3+xS z{O)X%GT9Q*CaeVEz8U)5%tP=5%hlWm^;O=zv-D*$G>&Mb?8) zsu?}pP#WD?j|&3rwF9luMH>mn&aMtGfWa(1Qu$*edB|xUL4r&E_*H99B+30n3TROu zl9>2pOoN^p%0K&+58T<9B$*tgZhqMRobM8gTDFs?pg+AhS9&v6LaZv9<|5>-h|e17 zvY~4}GYi^odD46Mo|080J(_e@bNDZ*`q7mxpLTu!8NaSEG+#<)HTr{30R{whD%z{5 zybEGO-N!P+oX*Xu&kSu$m`l(}cm4O{XmDaV8@j#tpUyw>E&6QnqG6oFsK@#Y7iA#z zYeX+;--jm?OO6K!sS+vcj&1OSH?eUV;SG3obSYL5FMv}jUkI6sq6HVdYoy(ki%SC@ z`;5B@xLPsEsagi1GSoJ(N^F_nK?UDFU*8}qYzKA~Oa8t-IKhp+&c-6KQA$1BauM_W zm)6=L@NTG+#bJv*5gUVdOo9vK%v-`Oy{qdHz;~`l@oG|Xn&hg)NZZ?XTVr55uSDebocOK zUQKyu!DZEB^smzL?#-xgNhBS851`2cE^~|>hHl%iy7r@plggemoV~-~&%OGkjV-{- z)j41NQ|?iM28x7I@fPABPEr8P8O(99etYI&Ep(MAl=rqCd~$1GrKjg7vMB9D!b(e_ zQpWB7A*UFK)7bsupr`r`UwP#uaJT$jU(u#~i{jAL)SN&RFOkj@rjCw=EXW-r0mI_zk=8tuyXTyIt_y zy5^=z1lztYKn^>vLfB7#$NoK)z;pi2HA+iOEW^&S-BRclb&nf4wh4yAy)VFV% zWlGLR)eMq+$q}XMK|iQiP4RR)4wi>^;_S>sA!f8{WLRbuPYk?)MLOP1G_qd%EH6AI z@d#`x?CgXVy%cq=EVlb_zHGCKogJ!cD~x2kCxHLyR_YjP~W&7bd-?f84swxi=o-TACP$eHEFsn6K6g>Y6#(# z?_vY+KqJMe-G?iIUAxKq&zPbLh#c$lVYhk*D_tu;PWFwjM>q}tknlSWp~-8Z6m_G_ zP0zC4QAWY(zA?c0?ysm>-L5L~c*>XsqpJ!AqlUYdqSLv8cV=cr3rToheNXt!mB3SW z`sBw{!Vtj-FFTn+M_hcemmcoRSYcRTa6^jO&+-pN}8HemZ)L&Gk3qYH>Sm)Us92pB9%>U4Cbc zuYs9~s3C%qs0Nhibhw!)@RjIf`V$YNuR*`J@)cH|&OeWcHDzd^Vq#bPxVw?W$w?^3 ziCXaY5IL>tUte2n$SLO~0_^^G&ncmsHo$*@dKVTj3$&CUb&B4i5u~HbH;gRl9e)3@ z!=coLD}~?@Q(gfdIb}L!oL1}F--l9|gnsS^McR7T$HbFQkD6?;T976&xomVfJx3v4 zE?+!XJ(JUlBtDtbp~@izi#;aAdGyzP-K{$w{8p{nz9k=%MzPGZsW`DJ4zQx zFoK7#;SvR9t8oaAA;;jsFn9-dH_xB^!*efG?Susut6TkHxM;zL(ypAt$O40YKKl7C zcilTbo(>}kJ5F)#TEceJf+dj^2l)J}vUySCx7<~a1d-%10Hpmwe8t2UL~G<|zkcKGFv)i4sY>?b>&$Z@|}e)|aRgNE1K>Kxqy zE2jOH2dw^72P@vBLoWqnd88=QF6;hcacpl_llwjodL`y4_%L2UlBIWjekuH8zb;vr z4y8l=U|7}}q~H1S%6jI-)N^i*=iPse;9l?ZYf*^}ZB2m5prrJ+JU6XS>t9{7X%`hHvvu54?e2N~$L0{tw2cAn_Y)>oOWWp>zjM2i8@(RfV9!bZ zb@Y4}FXx~-@#)?#hIEi3wcr={S?O(A}n-CZnq>Eg* z95q|#+_w2q!Z7h`=V;mh0kTKlW|yO>q^0j>COSFLCEe={g4d5vTdU?_6IuUpuf5QN zl56zfPG*$z_P^{7aj=S-j8s7ryxlBrCMt194)Xu~mH@Oa zH%J-Y%U=!1LDk1Aq~@&CN$@ zrCUV7QdS%F6LB}3J{7~y)_P2)kRQ>w4zv5peao52Ck7Yl^V2`05CgCH+)s^{7{nR4 zttQ1jp0cyJ(O|`K=jmJ@FBX0h!M22aPVJucm<}1mtH?2S#Ljb`FtEGc!DZr}E-7{T zPIEoaau*wrAFss02r-myO~jnXOTHYp%$&m366!WBlY4(aK3db456Z zYAFBPGRB;N6lRusuSBDtlNwKrh3Oh;p{$qWJ3lV6qpF5L52yX|OFLs8lDB_{GND>d zjxW$hECB7^3?$(*l_y==*RzwG*+T& zE$T`PJeQlBB=F(<_UK-g9^>L+ZPfI{Bh%>CLvb3IFUiow1 z!F38BB%80EnT6la$Tf+QU{74VF%y%xG#{6_636v@%5n2nW709Mjh5>1h-ls@lewxn zy9NnRJUVy&U*4hQoLc#NH8{sB?BjIv2-!}>eav-gqj^t7oO<8z4Ex94F8FnH{wWS3 zb+7G7yr~6$N(!7i!UtRJZ8BSd*7g@{OHN35pB^et6jb+yU(nvFpg8eEz{!zfBz8yP z0|k0ql8&|v8wP~5AW++HJB~E#&nn+~v-=Sl&J=W8pu_qmA^y{NyhY9B3lrvmYCjm5 zP|&PhlJ@j){@e-o9v|6KeiPp!isrxk$lq_*KE1o;afgS%Yt%Hz^c5|$MqhT>m{Wzm zJO)zdBKxd!HW?I3DOgXZv?c{*3l7grIDu2?{i|%3q0k`)Gnthl!{IaaXn4!CU?DLq zFg1e0si(z!(~KXwvDfBBf1CcWc9tTS$k$VDemT6+Md1r}2y^H-Hy+7J3obZZOWXH| z)I2IRXBV1CEFxcF0efR@;+Cs(_yB6Yj+taA<&kaaxGUVhOoBH*x&6LmrAIrewheJe z4hVMcMrF2_MlRs%o#C}&{&`BCl(%3TA6o_;HezMms(jxCEOMF|u|fr2XeaNb=?6qM z(f1T2)dPe-F1B2tH%8ZJN!tR#P}r}|*Gb!nvl*6N^{|nNerk^v&|#4ey!2Ab&2@%I zuo*g8AvfueH=TjLzluRd1Q$1S>->*E{U}t$p8Vw$d`fD<8y5U}1dwSKS@X@3&AsrS z*;CpWZNTCShtRGM%hLgZ_ZguCQSZgNOFvZ>#V+Wzr^$3n@3ZIR6|P!|0pWXPGwWvBxb0OwjwYR~0pj|c!_ERPyS#V#cSVSvv3m6;BFLleKNhG;GbYd<^a!|P3>HMLW>s2w zDiR^E1_TPqG0peJFbAAGDNs14R+EO<^!-4h4)5WOpLHwB7@~CK{G~e5g%sw3i$=7* zmQ?^oZ}v2oz?6(4bdIFK&LX6;!zccUtm{ zlQ(8Tq~&QckVU|4>G?1|q|2QHH zUBk(hLLEl_ZvcXKHWObtRG;qdg^V^DxCy-qS{v@*nYvp~EO=JwIsWfw`+zDRdF911xwv(2~iURf6jJqEV$#4 z!A_CwB?yS%k`>P7ouH7u7)iK55BGlE|Gw3L6G@at?s))}|%1PEQY?P1W%+4xOWcu1S}!B zRUxqOc3jLBh~Z535lad8i#+n3X^xvr1?Gh0i!B#IiYxnr>+*Tpnfs%?EOuff6_2g# zJ#;WtBH9{MujqW99f#BA)hwonPxCCCRsz2=#wTY>{`k6ej1R-MTb?Co$o20Xw6n2! zxdRei1-(bIZI~eMAIe>@RerJH8de|Os*XJ#BG5M&?C^RV1-d|I;{RW*=YKrSj%Fkm zf@UW*G*bp5WlN6##pfB-6RLC)R43;rgE`E;tG1mvnQhv`lB4h!(;uU-ULS~+WqtU? z*eNOfF@9>(%IB37#jZX%saHhnxd)%0HY7Gb=bJ=`?rR$>Hsi2f64M9Hp~Msst(N>& zQSFC`N3J);4r!6QMc+{%q)fs_v6T_s2#p{8m(1hVuoBvy^!0Bn+iMUX6Z!F3t&AhU zf#%AbJ^#y~%=Rx!Q#Vw!ErRuzeoPR2 zv_s?g4B#8^0Sx|qxmNG8Qgu}Ynx=s{-a8|i_z(&;iriWcb5sg(4M8tC)1j2(k`dEo$uXXc!dVReI+8mgF}QUe85`6YZpi6XIBsu6T#zOEQs4!Hd|83W zH~t7d|Jcsw75zS!UJ`|w-QuroY(h8HPU(R`Pv@mIh4~7om{leffe^j(%7vh2HS!!_ zZ;9Aqgn&db12-iDrDhGH3n~3MVKaLV+NE}xG{F-4V^Ln!MAGb#*;TgAW`GPUV)9M4 z0>U&3YT;7Fy)mxWzL0@VgbW}w?<&FdM;7VzX#7|Ia)g z2*|vdYqj`sQjS1300#felXo}P{{9$?ULAU4I}BkSU?QX1!}uz_PZZ=Q`GyVg$^@4w5%1jx_Ye%r?lZI57ueI|KsYCV3xj zr~42bT0Fh53=!-vm_&>&*4wj2CY>E%tjOq&qH=-`0iTHx0y)jMndT>IdO5)v{|ZLg z-C5kV%NdY~?LC;_;@m3!0`!E26wxu%5YVn+(RJ*2pWU>J9!U$M>nm<=;n*e*oY%Yl zDw}5Q3Gp+J1RHu`&<~=3hd2PXjfjV8csVa>j&~-Hp;~k=3EI>i6ka}Jh#N})`l>>0 zr)*+CoJK@DtfHdF2RzX5N?dar`um-)tL11x%caZ0seJ@&rBE9OkYsRSs1Anv;JBUd zrZ;;Ybg9h@Y3+u(5Ni7^q9)c?xJ;6YT}x6V;Gltxt=SJD%rW$}~W!Z zQ_oquj#L#GSyX=EED=B$WZb6MNZFIukoqBJ`_gua9y7XuETB0^9xu9;o%?Wzq*L9gqN{2ZC<$;@rZsi<3+T-)b`-zg5IYxe-9 z*|xd!F^MXy5W3g2GaloCs_~1rAJ7!jD5CP-&&qSDLymo02EL|JhK40%f5*w%w&INf zF~6Lz_dfnu#}gxO^i`X_PNKNe_?XZ`n`X;-$$q(tgc(G`Zc2LB!}q6Tyx^9S zm#CNtA=FF@0^A?{3RtYh^p61z(ruMFxK2QxHZtGK-Jov7Z@?fG-^J5K6w^e)b zk*V-F);&mx6Q4pnJKIg%Cp&I*C&meMuZJ%hk^kYas*f65R!umNC7@#T>$C+u-QUEg z$?I?^_du7m?!ofh;SL8^^&YaU;z^S?a|vQ4J)&J;C2x&bfgYZ|9)cSvrYFu=dLdjz5)?pyS;I(RmnH?X=mxlzYQhIYgd zYX&MLeTrR)N@)x;R!!ZHdPdCKy3sD1@i}-OaP=z&m44Gv7`%rP`9rpvjT#ux@AOaZv&IK5sz8ee+&pIbX%e?5;br;f zBuYC$$&Q@Cku^%+U9O~g-D*_fQTGe50k(aq2YAja+{aAfz3;GvU`ILXsP1C2hqJDw z@%K=bBQLpP)Hl5Xday69TB}ycF8+=e3quXd`DXSl2F0s?BIG!XqrKIt9lgWW5_`D} zclyO6p&hhAGezYl71V1>uWPmv{;fG}$Zak=8Qm4~+ZZmNoed%?FW5~Ae1&?ZuN+yI z(p5`64}2$+@$NN*phl+;8WPRNN=DFUmlJU5>t<4T%)Q_G!0=ghPT6P5#S2NPy(Od} zQgI-2gkV)UQ*Wsy&^;e_{zk69Nujp;c)m?${6QPFg^*i#j9Ab8H-iA*^m{xN<1HDx zut5zVlOI{`EvE7z;x{PV;||41{&Oe0`*XZ2di-(4`pSMy37v4bSmBWIIS}UbGAMkE zi*2Ee%GYm}^^}BN`L!%?`Nh%D5?6u=sQAw`+i#K`4vfaRm&Syr@0icEAgd~xT!TI( zwmUBy#z@BBMoX{#Q2vD#>;f%1Jr(LC=}9a7d-d<^d?9qEW@lezjaEPwZ@qwcUG2at zRSEXdUHx3TINy%xID%g*Q?xJ7jPr`W2F0@ZX=sb@b$IReC`zs;a1X`B!d#NvJB{-t zwI+Gf{;c+n$?BMRQIo4h9Prhu6p4T1SxEg^<=Q zM|N{3PbFDg{1o3J*+mft+P9S4D84%l?L9Hfl(OB~ z65;HYo+Wlame|v}@w0&Ch1cK&PKoV59Vg90yN5}xAD~i%8N!_ZevC}<*QbGO>miTA zsNnA}>M{hsjdOgMO_4lql3Es-OZ<_J09JZvIIriSPFfdyOFO1x+T;IO0XAKDa!lCf)S)8U#;`rU;0HDMCo0E}r|Y`a=W zi+7O|@n<>d5MWoQhr)?+l*Uo?4+2*Lc4QegnDXUw%1eeX7v+c$k~g4Z)FP?|g=&6` zPq4!d*)Mpv3NDFBqbT?#0}Xnam&f!{BKa}2L`f_XwGThyZIP*?rv>S3rZ)2)ELa2(WtBxXZs8cH7Yi0$3ade6J? z*ZNN*Sxpt}$)3D8-JvWWJ$~u08fWSUZR3~i{m_}hS8NnK4XD|Ye02$hCNNM4{Jv3^ zerv?Gzg<U9eXGB6xF&bz>B5)-^EUkUyT2W zjL2N80j5+wzU{Do&(cH5%Xi~4Vt6{WWV@U2`=g@XqAK78Xr{-}Irj!;?O1-`cvVtm zkz5zNdTqG!Z`bm`r_LB=qYazBtZYc`O$(tk5bjIp#dQ{$d#^z@GqdBPat->0P7u=- zK}dFPv(+hngT~ZroU<;@PmIj$34Dj0gZN~UepVhRJEdN~#*Mqsh?fKv6Z?wTi$*uM zFF33Bq&7zn10#m7x~yY~_!kC%8~VqOmS!IT42HfM?lCcRn9PKCWzD1?RcY?rexAL@ z8QCSdVW}AEVOnv=X#ZUT^-X$iVpEKL?6|(zC6NQI9@{s>*%j`5OA&;QZOTSL2joD= zj+y$4DcaHHXLZ>JFino~qou~g{lw*}q~&BARMT1w>c2}9e$IFg`YBNlilt;F!p#ij zcjw)^Kfd1oZr`Sbou2|%DKV3_U7iUx39cZGg)FJtt}nFvM8Z-a*4ZbS_Y2x3yhzt0 zajvsoy=(z4rD@~fpzaUEn2O3Dp1fV&R;&tF^-2f0mypoj=ze+;BMFsX2%iX8X{V;S z<*4-a-82Pc8>t+>39s>{lqTKpwF}cN_Ls-Bz?*dfbhn=rk02*Gk3QYf-$`W4Zpp!< z$Udkm4VOMmIu3%N0wt97vCFfpzWQUd zhb?9?F;3ZQor7Pt8wREKR#L}eHHiBFVP;gXLfoYMv3kdKUIdJ3FE8pR+f0m)(b=MX zG$q5oUv4ycw4b(;6l^{PjW;A2`?QmW7#Tn+-ec*QGOM{6y&^B5JS|~~{rr{tMDyWB zSd2cka_WNU0Y&#ZIidmYJ|=15W_AVw?2Y?b2T`O!+}G8(2@f_i|8~ovXi!;IV8D%t zNlQ*vef65|g_q*@?s`)YqD?z+O2N*#I1x<_WVev&$~hjSfs z%e#HTz%G-RRIOYOulI9z*1d4eC3ZddOz6HWjX*X@lXq;qeZ5ilW+LEwrB#;D3W~-` zZnV&?BOlN$i$PEPNY!Za=!_0asiR{u&LXW=sR@> zpL8aOBpUmiJdSEg5ItiZ)p`U^=P%U=Mb(Oycu6U5%Z1C`bO0FdQFP$C%@g#s21X`X%&(a8T*ZU$tJ42zpH> zQ&KX>kge)2g145LX7h8YwgO8=JG@5|4im{>gdR~x4o=gKrT%;8u}v9D>NEf}hlu?7 zcfHp$Tgd)HIhx$g`{{R_S~u9?+xxr1S$Fq@p9jU)Sv6$bDcGN0+&C_W`2QCAC@8km z)!ukIWDQ*$APr0I{gr~9f8{jUQc_@v_ip}&SqjCp(%ZuV$-y@?!Cx9Gv-n#VjNO2Z z|N2?9sb*-*Ag=D)R{jU|70|yVoFKrmOI)tOji(Wnns)SzXNy9+-reguMek9uji%2S zTy6-Et8MNipZ++M;{V6hTfa5oe_`WvsDMbffRcigG>k?!%$$`d zYxF^VYUhH2@gf#`s0)_b=<^1!gll&XwWLXi3-|r)d+$~1ix?0hGIQ;uJ<32#7|yFT zsE)D2VN5SoLh=aubsIGPd8|MvNk?^?7EdY{2q8?!m0T`)wI;?_MOWsg3w)l(LwU?A zgvGGedzY<DvG~n_`J9ez_L;-%-!JcIf{;}WQ#Bzd zNm%88^p^oV4EW|N4C|J&Md6*au0P^5&%S*m7<8toRYd2L=Gnkq^m7K+@&{nxEA3+R z#v2-*Vm2!Cyamf>Dhr;-3ZEJBzuo1_-18a-6HavWBN^ff9*ItmmQkpGK^GBEBeUD~ zlidmQiMqfS|G|*>btCy;cf9n%XqDyelL$j{6CD7U?%493Mk#}F-8f2B7nzoexgq?k zoq8qbVStVDvU}$i=GvlkM#CQwYlqR;^0sk`nJ08yj9Tr&r*8Z{R28Fj1BfZ+mWdMj ztnK(f?vL?5I@8o#wmVYP^qdn#lmYR7WZZ(aC5s!*T(L=5^D4-`Q>T19S+n|~(qvYK zpnWX5=)Pc zO}uD+LO^(gm4V&G=R4&2qGA+{m=OJn2ukM<_jBi_-m;J0cZKKXQM?5a+6}z*_3Z^# ztu%CV0E;Ph=QhT+ulOtYJFR8;*yP83S%FXaiNWvV>c0~?19}feO=PEe{VhepXa;FNmddy!wy?LzwSQ}unO7* z65Kwc!u*$;K1XI*uw$%d0_&aD2lw+JXiZBQtgZND?kMwohID7=wr9&FN_gJxbt8Ba zL8q6|(E9??3k_`u1CwYwz%rd#(j*km*i21y9P>2hJ5l3z?350!cuk#d{&44VdLl~Z zIf<#90QN7hdyx|nJdF^YPpd31%`ilzCjgrvxg#BY$jH$LfDMX#Ck>Tn|H0()p+gX5 zdf_L|F4R2|Q(wP9ainm`j9ufC^X^^Y2LQ8=K-WD^`+21bFkjq5Li0r_i2;>UxRdwC zfP&c4;e>rRl0>OtJPcD^;D_VNq-wK)Ys?b!-g=sG*N3zUI138>*$AhDRuSk$_>4K* z%Tc479y9Bn(4FD5!Yh5mcTD(k427=)&)~*K2eYl5c?pUJ^i64?LJ7ucW69wX zE^VG~_RWstoO)Mm^yz($Zh}RMn z68tTg##=JO*NO!0>%R1Uk2^z72=IniSq$o=C)&bLLVAVo9_^1T#AMr7%5wSDD2>H8FxY6?~=C-?>DMCuUyY4G(t+B z>p}RJYfNF%{Vo_8&p?UcMkza!@5h!nOmvl6NV1X?eFJV@CFe8$_H9Q6cl2C@2B&C; zhk1gKdj5?PC=yG!kzi9tRn-~UI@$XWw&f9|24qdVpf`;cHFc$KjV#g>`i3 zaUddb+LWil+4uydWtyrw^E2^r`sSUALAggYpp|ig2XM;KVKaq?*T^DdjG2P)H>bSj z560=_PVJ!~BByZ_A6%e<=oaa1{VZL+FbU77&<%U`8s9g;FON%Qxt+X{oVXdnL-6@Y z-ni{|%-rt!4wCHFIxx##V2i4Ka-U`Co;z_1%};3SBrR;fU)fD(5Y77h{`dyh2j}L@ zlR1Mp?|S5R6wB81$AjL(rx5Ae9bNKLKOY=vl|)Oc=`$r?)+sZx(OHgE1I75ck0~3* zJh|{`QFuhuSa_x6jmMU!u~x|5KCPjwPLYGtJoz9wavV4BPhLCq0I%Nf8bhW~3zWlw z*>lge`Y*s#ksW97^1(Nf_?|Yh`*d98h7SDKUxCNhmehF-<6Q{@zk!YzI zPFYO~;WZm9g`sb@&owaJVda-N_~i`>Vc~h9=zm`o5&XDJ6IF+YB~P^nnP3olrYIVv z_g7Ss(To4#r4T0-fPfd4d4khtbj0%xh`9=H{c2l*L^cyRk8lYO=d4>m!^%V~U9-9u ze05=_McFQeWg>%H-3e@_>(p|o-b#ND7mIrwbEds#*f2SBJw%z>qv*LMO2CR0zaSTC zDtciA#I?3bKj%d8%ohU6wXHD+Y2~w4efOa z2&9?tmMl#XaY7|3BWPhiU>!?fkh%>FCEH&=vu4qIm7@1Zgm&I)S zF{l@JJ_0tjlui3HMiVp(o5~iL&mRfUd3Wj%PP~J`yd$yK6Jet;7PFWytdzJLAxu9Z zThH2SK{@J1nTTcPU42v_J-ff`BxkKd!`#qeM_MAgILRM~K1~99Mc2|}BvtPE!o>@4 zla_={)tS_{x9jN=RN(5LyQSM~MPEj}(X@8Rs2<`L%WNbjHqnWgZ}?F=&Qt@5dyprq z(UZO97ks8G`aDX}Wc+9Ehd9GtJ#Wed!uPAX8>R=~$DJoc)AQlK=WpZoshPLvP|<_0 zh{nuIVC#+9YI)gW65MP0_MAP0%bEG)^W-q+K5J<_T14+#PVod%YGSvftjMFaB}Li3 z9Ol>(Cd@Epmdkf4-?g2275+vSIrmoPn1yaYBplqOacNp_%-UUgq_@7DlFV9 zx=!fpn0tCfCIB=w)2DtWS7c!nsF?ESa_Q^eQSantCFc1LhA0rKW1VYtf>@HYqkX}` zQVqbYKunl))SrQf3GI4HZmmLnu;&s(fC`_m^p3p;6l!9b&AWTEbSh6iRF#s6nubQ* z=@f&AYf-X};Y_55OCY&R`P55do%l8$zdfM}<{k42%C&y{))?(GWVKj*S@5>kCr@mI zk8{h&vj|b{S6M{DkR;1Y=9fs*PCa(jOOr9qcBABrZky4*1p&$l3~N&^pmj(Fu|mCm zyu!_MpXH}jhG7iFDxS|M3|GW#yq5b2ms7WY&c}+=a!)L6-h$*kr4Rkwx8OZw@G^n2 z&#OPw4E=RKrl)vmX=CGKEaqzjFZzX?e+tfG4bfZuVkz*;TjBQ4740sEjTPL#aXj5e zCctfr0l8ra5ZR92rD9US#!yZW( zCH^ESnrhG2v&VAugD6_^GupXW#m5hyA2&F?SNhG=3~&mR;FbRwt>yGoslCs zYs;s*_qoJfj_$_Evp-S=s7>=O9GC-7Q-m{aO>iD(fdUa{mO#A5G#fEnOvd)A8E7$U zh0E_Zr}6nmr+NC_+^lT_mqth#(&v_cKN#Zc|MAdju7Mrf<@xf@&Qu$WMxPhmZkGi7 z(4%*P+(M8!2vp{k4Q=YSUztuPRT;q~=3#Lhi&xwe{ti7L z2LD&JV}syF_?WFmSi*6Gq20`l;v-E?HB1=>??}*#=KT*^Bx;D)IB_{Z zUR~&!D~zw*4Ja4>44a-)1o6CGbEf;y<_f!D|CV1Aw~%$O-?Y1Na%T=sb~}WSJ3tn} zH{uA?-F#?|Wj^yq3UiK3;*MIIa0k>G0#Mj^JHV^e+Q8EypgSnaKRhE9w+L9F&GPck zMbtZDvpQ`HU1Aj@wu)0yl|%4M>(0}LcE0a%S>(z?xyO}&m%V@WU6zg*E?%(m<%;HL zn!KP|=;HMCuBPvpwC0CQ;wws)pb{SPxE80*pIQ2IsoyWiqdymd*raV9uc|z}eW?Ub zf6GoxLGD1jvG<$_{&|-`Iy(zuin^Hj&Hx3gq5en_S5>rY8!vdk8@sDqu7Ya$8QeRE zpn8zDmGE@eR{k!oBLeqkx@*=`F*w74x@%{Rl8or5gW(;+Yq9|-vs5Xl9mohl%~6QJ z)KAg}G+X~(RAH0aE2K@}1!1wzy7(JOR))Q>v?@rR4I({u5}d?m5-D9^x*aLx_JncH z(SI1-6+VeJoVe0(wDGy{v->;h>d)KdvXqW^c-GU{8oROIYSRAHqwKhsQrCu4(qcQL za~>ToN!{BpgeWy77R!gGtrRkg=CcQHGI710?e$`OloR{1!}#!)@;vzA3}&*EuHl<| zwtV#is3X~Ze>I=Bwezj(&86A;BF!+Sz@uHC!C}ua}38OP#)8@A3_wke@aD3&noUP zFwVglw_Bo9Im2od8xY7N`s21VLDN4A8_;rYGX}wWbPL*|H#4I&KQ$FB;&7vg0Z_y% zv3HQ)_u8m=9ljTSrTLjEmTZjnYBom1Hl9+!s^wlE=L)!v2Z(a{^qP~yFL11|5l^^J zxS9Nc?*9GF=tBqn{RFRIzi*3iQ)?((Lf7)1 zo)OTZZC?_b8~pKD6}gQC)tQYD8mO2HN`zHjEySzHNfHpcEhdW7yn!Q9ir9^|UiB!f zvJt`jbQJ2V);W9Pc%1x(UR%IvH|yii;bAc=RTVd+(Ceho__&=A3M)-N`K8OvDRs?q zFMMl&e{EBFPRHp=7o68mlKLIo6`q(s5|{x3V6T zsPKqPKSGo>I=}}u#*!SaEctU#$wfQkIak?@=lKC z9%i~1PyZb5rGk$29rg3ur>yQcRulMYMpwsHP5nJd^9>HPoQwV*CAr4Bd7PGcJk#@W7{VHSc~qxPNx9SP1ZN&kS-IaU9-3hFuGBm3k)pW*`YVgW z(ZP=$d0J~QShSv1%Z1*U&?I$T`*@fM$Z1-C3}h>5Xpkb=z>S}Xq1{h0Kc9Re);J&VrVT&&rI zUK?U}f^QD8_WLdk+-W&!J*3%+oZbRNXH+<>|5Tnky;)xBR{rG>G@Bwn2$8R~tG!XI zrfhHnLRgssWB}8>4S2C2i-{*L*FB zURl1uc=Uw)C8OSUiFt`Kn_inUxApzObx~dcNE#y?nMr+lbk^!x>Q(Bd>j1GC$7n!1RLyF!s=52WTzJPu)ueu%f3CFK z)9VIkvaE@_(^{R*wABw`%gBVoI2r`1bAuQx#>_s%?+l%;ick%@q{mbKsu8;==?~Lj zQB!Z4zT^@9D{nq;_TF!FtIDV_I8=b2-0hpc{VTrk>yNV`ADu0K`XM^+pU<2=j7ci6 z@O*2(Cu@DdhSTxdr%%wkCVaE}FAhNC!rFIp?`ay8pwAivxjfVo$(`K!Y@;5%f9-;t zkPwkw#jsF!IXkQ3OF7?XLf-*-RZGao4!Fd(3)qWewFL)Nv!yRZcJ|ZJ%e;HH+o$f8 zhrh0tz2!nCqLr#nBNI{8W11$R2Q91hgb_p~_qrDpXF9Yy^69nhBR##(xXe1c*x#4Z zYC0ulYwSTz{zmD^4U6(c)Q%Zz?R>w`YL3u!0SnEp-(7%O)!vIpy7`iN%4RS*%a1jnvrXo=V|DG$1dOE*h z1SCGs6}5w%gA2R%WG5$Tcm4NNH14E+brh`JrnUYXXjs=sxJcZ|T<(%6Cv0+Ms)kRwx61dW1B~b{9VJy4()>%P{FjXV z@pu7BxwX!ifzn1{Q{)4$p$D4A zZU3ZX+X)1*7^(!DhIiK}dHr|}*6(Fkgrfp>+S^>kNATUt)7HF#7q*`C2xCyx!UJmD zaT-~&QeLi`xyevlG~yxV^2UdC$QTBTn!gZTL~%B%40-e? z*0;m77X>7_R_ta_rtE^(RYP}&#+er$fg$kB%R9C>5ei`XE6qhA$+UY{t~ErM{Ici# z*dc-Q(HCNAQAJ$8P#14`InjkMjPPN{>gIAUEwj!3IUkIGYW4i&TUUbzudhj0IlRSV zC??C+Ug6+m-Oi2n7K%<&*$5KtHyb&WhH*Z{bo5Xp{Oq~~`oxA-o7DaPzP!C2i>&x= zHq;OvNBk%!tq>+dV)Qo%QddB6qX$)wy&3poU28hUIeIJj_!Bs(^_y*kYJSJY)uu*- z$6cn%jl#t+HGi}?M9X^>FO)@{jBlMH7ekZ-ox#+iKxPZt`%3D z2DtZU><`9oV$g&XYsDJL%!SLzL^zoUt%aIMAU$coo3p%X36Qwg!+RIj4nf{!QsRB- zC8opJl8;&&7b9QjaDxz8lxvq+GIH^SVT^6y=Mo~*1KxreK0v0yrghBsB8+v+bP_9Q zXBsMQ176RHS{FPg@dDc*OCKhp@9$T?jO6hf+2K=;BD9>yrqEH96KRFZMuxB@RhXL5&)PzEK;T@P_R}Q1%{ksb&RWD*qh)TZ)cS3)|dMQNK50?PwFnUwMj|`?F$e6 z93Xm_zqY%ZeT?hZhqg~Xc}+it65Gfo?%bVs$#;W#mCWH{l#1|Qw-Wa|C609WrVanM zzE0+z`sq{}KMF|yAvoY`zDK*L2O03kN$jf%M>!ynQqDI-Q9$>f{;ig2zEMZpnVS@3 zbts?KDy%25PAO8ZfyXqM-j8(*ybK83@9$@E^|~B2jW*n|^%RwBw~-1L5#4uSauXa7 zOW1!wv4DYJ9?##?Bf1AQS6~5v}I~}a{9*ouhw)5 z*BN_J1>@t#(ry8!Q(k>nuMpSvsqqL;O@lb*$%}EW^T&M``#mr1G6_L^x;wr0v2`sq z_i<1~`Oj#{V{jALZbQNt=Y6$4M#;T!?ZgBhNAunZ#(~v7mBjB+LThEUD zp90P9f1(OzuUtzMSqi|Ev2^?;r|9lMjXAI=b?N7op2K}5oHua-E ziP*{{^2$jvwg>Oq2Xf%v@U{*HHGd-+-C}kX<~2F4!!Ph*`4T8H8-BE@N_E;y&$(Rp zsC){HJtH`tIn%|5)$3EuJDlPsUIotDv-PtUYxF*|wjU7-7tK*5t@OEu3h`%V@D8@U zeEz!Cjj+HKDqg5`(9U#$~%}}Mvht2h9 zRTn;G(KZq7PJ7eZ+pp9f+HLO8B2V6L)~Lt1w=c#$dAJ#ei8jt4RRG^}ZJ~1X7ze;3ilIw0R`GiiHh-m6*Iw;)>an!d%WfCo9)k zfCT!B{s(E#T|trePXzb>7?zHDP|3|^m9YVe)9ju~Wa!9Q?bwJ(!noq6SRAu(u{kl5 zDJV)(h)+I#?C7@k%3a$uwvrUyc3NVYZ!3x$@;5Yw-K|syWP#WrpMUohC_=)jx6Wei zTdZ?4`a%-*_qE~}s@?B>!ky168Vr+NThIBleH2kICJodc9O6vA&&kZN5F4z|l=abbc4eeqKs) zHtUt?XD${>+Ak}lXg!m2vUY>{FO%M1I7zcr3cQiRRXcF%PLFFzT%xGm7H6&RcjGFE z_zn~{t6Mw zbq6$uHyI}{(qC3NeIh=i;I%h%QdRWm3$}YyV<4xx1)gUQQkRWv%7_L|EHu;%yaDy|m~vV1S> z3y*-rV~Awy*W14^VRR2J>45{)5j@N*^Q4tZDR;}qwu)?L$tFTr;XZ#5X`kUkHENAh zVw=Ej?nE!+U+yUDJ&NtisepQP&0CwaDE{{zSZ@d#C%fP7zcqcuO)NUK*MMJ{D)Dg^ zF7_ru5|{SV zDfjsMn0#QCuVKyQRbjX}fwBtI;>yw2*Ki98{p3QQ-ue}@BZH|1DY5aktgsT1P7!-; z1hm0}I@g@|@EiKd#2D$&!)*L(|Jap}^IAQD8^~sE8f|rB*{teqm+#^3kIfh*>S}F`c%#9 z3x!zlGQ!;eLX6r#QI~{-^;ooG&hx3IrJ62G;l-Tge@XNuMvlKsDnI4EMzglmQ90D; z7;2uAg39^s`?28j5EGrIj6|ln!Yrz^VFfCKChdOWagShc2?S^wKl2vCB8(zOfZWHY zFee~vS4(#g$~A~hOUQ}(hERqa+s5X-#~=Uh%9X2#PnTD@gi6Y`nrPUE*(c6#OUk^y zx(fg9Ig4o7Vk~S;jdXk6#yx6Iex=P+pXrcvctGHJLm@41Y;dTJq`Jk8e#&K^DBscB z99FNnb9kjIY3~V30qk#*%m+G!XD=)Mz-P5f@mDXn{jkK1xW zh+7XxEK}k!?IpFLd-aUQv_FmMghG#banbmijVt@()xeuLq_JM5om&TmuA{I0YR1lV z5zcZb^}jYfg`$3R>Zvj{+yv?=8y;E_HWGXHW5WfuYRS0lv>_YK(dauN;oY1g^+k!b zJA7EfC14BTxpcgGKXpUEI$_XP*P3-wi%NtVW}@}tHMfWqyBcSLP8hpb_d0W6y{ok!2C_0ZIn&vD>!;vPhTJt7M$0G8_`&IijB3XZeRemQ?c}ei>gjC%*qlyJmY0ILkX=@O0Wprpe5?2WjAX*#j8$GqJP_>r47wUsO0?b+%u7)?lYrnuEk6m!ZI{otsWnvkB}hn?lcUN84$CGlq+Oj={;ES z0ECvDKIyS-MsI|#7_68Vp~w?qn?%^36?Jot|1G%ulE~sm%hFdxLQvoIghc99M?xLx zRHBjG^Y9moO8ci3eQVr-FZ;vDNZDV0ug+yH$zA!NhF)TTDp_5NCs^z#;dP!#O zw2S?!ij{HUM$6^k$BMP5pW|r%gnt9oTUs9yZb4TG^8j8m^%sZT4{q_WcV4hnmh7tT zdpE6;J_cbcL4(bJk9IyPe=TYT=8&yu5{MP5>lOS!In^`ikY{n&D`+nTs{n8 z6D>od+1^GqF)kp|`I@@p<&m+12AZ_+9qvy3_bG{1@-)X8CEI=>5`lFI&MeVYz^*EV zrnNtVndc;kNd{%9=HhUjP)oI%a3PhKiOTJ{GdGepXLodKcfAO-(0k#0|7`i<%Ys%~ zk$g%Uqvjz)g{EBn?b*u7&>!4E?2zQtsaEE5Y!=b|jsl9>%XLn{Hu0@!`4PiEbS$ph z={=Hu59C4g459A+9ZVH|D$uF<4sF(!4N3QE5rmHHJx2RqUB1^_5=`6pT06zpCij*t z?_z9(4JoPUS!x%2n+PNc=uT5#g%@6ID6I9^9j-l@v$%^-uoQSZH*D3xx2>RFI6T6qU3?a|(FK6GF zD8Q=;g-6-Ht}!AoAAYuJzsr6;gy}xesewubKTf5g;Plo{Ue`YYdOPY+kUz45_(C1e z1Aoks8^9a2U?$#0GX98P9_1Pi$X)3Q$2Y8Kan>h`S#uSrPHzW+tqPO=e<1ODLR#*8qXY|yK@4@F>4jnj)<5`xx zvn`M2VMz-Pysv&@Q8x=a>2HR{iBe+YD<%VS{9~*z&=JMEK zgubeZ1%j-#>q^+7>L%O-IaG$O%SG+E$cC)E7B-yPFDaHr$%R`Z?-VT-GEYk5E=(#K z?Y$jF5hu>lcQoZ1r+W5&#L&sqPis92=Syg*{IHwx5n;u(_qUW!cEDemN9#O;QwQhU zjGu^Hk4Zkg^LFk)-B$58OuH_wTK6KRZ$ZC80u&joRUiNDqJB+2M$(LG!67%aXEFsV#tFQ^G=Z&*S}q^$ zN_@C`YzZ~mQ{g$s83%8G2(MO!*`a%J8shG2qUN9S@rk0NB9d5IzXlo>-?EI0Mn)pd zU&h8?)+-!vu2t<5*8^|5mA-4|N}g4S-NE(nJ1VF(Ar4fur&tsCnT>7i6fL*yJk_p6 zS{L7@vFX0Wf56*oN#IjX&=Pde{`U26g4afu?spl|3d}3U>R3G1f>R8KU$b)qN3w-L zKD_N>;KV@`v)E5&D1>+R%qD8yj4hJF?olkXh2b23W zM0-26Z~23G)R(PxTk%Xr%@^=QRKHVpR39J@UrxbegcuHK3jX!2Sv?8&8Z$FlpVM{s#NBy8Tn>7=*y_>;bM7zum5AD!*pfay5H^3qi4ql!cF>zK)@e z#l|~3-ceY1A+Lcw5=$MC#t>h}^KZF)lloqz6x22pWLqzwL;XtRH4=p%Pke#+`x_Q{ zNssAcm?!V#n2Vk|_T`!4A?oe__k)-p;cE_Z&(F#Sb$Qg!4eCq>Xw7X&;D1)qEqejU zWdWRH+Fk}r52>Rx?Mr7U0uDVq@2*V}-T*d8T^{bdMmoov2Y<0u9qt+*4xSpCc|4$M zULJN}XN&$%R&yL&1`Rcpynl!zI7^H++b^M+4~QTCFwnes)h))NaY-8c_MQndi(QfT zmi{GuYS$Pm zIYnTf%9AG0ZX&&&?cBImdE$ic`uZEA_MSmg`OlWNU3~eQn$niee^P}n)oGW=@`lSa zT1wow_PWiOUDXO2oT&K<-ZjX3d>qC7sRh#i@OB_*z;p6fS0np=HYazIb2HtpZTr@% z!oa~W@@u<3-+PB=?08d*Aueg1af_2^$Wa9)k;x&na%V$>%xD|`Tw^zI5QxVuTI8-7elUkw7R(| z2E48P=-~U3aV=eyKWckN}-nr8@3 zl)jNc)SrzDAJyi;(o%kFf^N4}!A-e{^?-mXl;Kpi9pa0%l#77pxZF;IdJ1X9LXgzm zdckY!2g*+t!X|67hlJ{96IADB9;te7T{J1$^%>o@B+l2jOuT5m=xA8I8g1?&--#!ABr*$%)3{dh{5FBfTmATg_L?Om|GD6_ep+LS^kAym)UUTr0n=+J^CdDKKLrwv zi{6qpLiXnB4+$XBw!5??7MWF6!-Oz|8|9-~7|H#n#tnHoP@3gR0qvCDAv5{LVrFXf z$6=K5MGBTwN+6E>bbVd+{*O3xtID3nIijh0CxG6L8;zKIdvut8rQ!le<$Xjo>qpZ( zx0#?($w@eB0r0SYaT`2>4RSH#gLa5)VBZ&w-UWgKF2bKhY!HdpuY4W85PG%9@?*$= z;<(b(!`NwPLL)dJEaPLk!C-n9t(M-fP>UM&$LkT^-?Cns4bcam3|kTBSaUIRWRE%v zcys>C$44NJaAH`I$KPrLq5Ym0+mXQBYjLx5GQ!`d=lLzbHBYC*U(B(rVvGg{#1qSs z3U06`uJk|mJmd)u-gzQ)QJ)S?l_j(St{kjXvA_)_MC2#To+cieSrN#zq0h>(ie6B} zUr9T@`q43#+p~cAZwe5bO;oR z`a_m=UEb7Qw{ZR+9Rb1danWp5%8SIm>c40!su%uY+rAaJcrEV?60bJo#m4B7Zr_~{ znHyxXfcgDfeVs3UM|xg`t<;YuL(5~9vU|m3BHYFt%&2Mqm9ppgvXp6!sz?hk5f;L~ zO#7FmLsEt(pma~am1lHeOTGW+Gq8wArT>wIk-ubTMe+RW^Dpj`dK?N90K6qniwvA5 zgh}RVm&$ac=p*23-2E5)$PTJizvgwj?-><62KP6&0y_YueojH$MbxXPgCk=-Df+&` z7mfd*=zvb!HggzE z>awnvS#?5WjcwUx4?kQ@0DN}B28icgaRHMBCHb}OH7wY1sXW@QC!S2FuuNw}Umx)((7Tp-TYek$(w`-{m?aOJ-_VW2QS-fBo3Ar89;k6e(1>LKmvc;9>4@@dUiJ9sUQt83g>NwS#vf zmj;Pwc9mSpUAh`yM;$!~(5ve!crCBd`+wVrWps?N&s-jjFGyE?5XnE4-2W+&qD;7I zfyaa3Wg|S%Rty^R$D+(n&O%{BQ0R&Q9#Njp+5vjsQv}(0+f}^edAqPVd>y&S;_7A|Y#b&!@*MrmY@ro#_O@)@Eg5`X89SkVigKQ(ZbMgn*Pw&hNC zW~thprb6W;3dT=UDkLy~GQzDfUw>CmXXE*rdZdwS&z zycTnP4ose_&a4+I@QVaZUyW4p%d`Qda%9RU+dlk`aIVP4tB9ZYtGhjoRIc@o$%-$}juPXW z0@@L^v-iKIU+3T{SK(zZ<9zk3U{xjz9xXl>j_ZeJ=fRi_Q3nk(xhz)<8D-ITAIx534b6Vxu5oe(=jC0y$ zu2rtM)K>-%oLlgmh;95}SeuB&4kQk$4S}&t4p(wwK-Wv;#}q$Cc!5AkP>au*=hQ)` zv0sQ-3L41xXgL6gdJv@zbt}$tIx}nf@C2Ogxd+<$sc=a^J27(&o zm%gVHDK*Pl1bfk4TH=l!&rf1zu?BdY9?}Bc4r5{3Hynx_b3nI?NbU*bm)MJ&$cAU( zr|M6|CXt1|$nZ3{0lGa8Q9A;0k2^kjR-MPLv(@bw%Wi`WuKttQn{*U7BQHb(IUV2~ z=JIt^tSphs=ASN`*CK^{w6aqGsG1MwD!$yKk1FdA7T=iMj+_W_=Lf@ zm{4R<7ktY$3_&nFHFDJSNotuK-6*$-wRKl6$z`B-lS%kP5_|C7*Snx%2gqwnoZsj1 zEc#6FkBvR|zXXa&7@DZ*=rQ*h=NbxiC?D@yXg~$A_!i1k4y8fz=_(&0l%r!i_{Msc z@Zw0A4M5|nRY%zv=!n?<6y`#h%Cs?TjWL9_=n3l?%4;w zkpDw@^@siph7_Xz{qwh@v*+-&q`!ro@|;_nKXirp4#2oH25nxVgZ~~gp}K5O@IK8< z*-amqph)nS&ED02XP*c8#%>Jpuj#)zBm_!B+Xq$>l6^zC-j&r6u#w0$=c9SXkgf%M zqfwL?l{kd-uvY|{7J1K;%S|mk#gB^AsfF7z{5ii6YG%1!zN$R6s-bCXu=&@@9^g?5 zRggNi!>hpi`BE`-z+8gy`cZ?v+P)D(eL{FU-zOm)C-;4I z$JKWpMoedwoTon+BlQgLpKf0y<3_&~3}ur)=y@+ZDyC-X)ilwi4rH~D$@k0xV$dI8 z!H-69chrDGNRi2fkLD#94ELz?MHI`hvgAXLpt^va$U3vn9B^^$P)a(g)rnt8<<0cTQ(k2~kEwLY^x z!>u077*BBQe!0pyB#dK-p*P9Q2;HHP#G(=3mQo+}-yikR<$b=}v{T{i_mgRxOesG# z0sQ2_#mJ4j%C;P|Dg%^Tz4D^vzDwNv)QDH`T}6aI+4FPyun+#;OV5!w`m-YiTjGPD zvF{mg>^LYrNA22nMD7+@0~28)ltRWi6DaztMDF=k|qH?%+28tt`_MJZ8Xfq%GU zYk?z1=Sx;qGq<)PNs^JiyYbXNf7liR@wcr*7 zm^3EqeHOhcr@`X0v1OuhrwT!H_fmB`@r%8FgBD)Mv>RQ@?Mxs+(_>!;K2htA#}{bn7k@kK@0xKf?MY zU=|;xhVdeg83wdkb84mvCD(j)XT}~CanpfRQF`lsjAEZew*xOdjZBuVnfb{0{VNPv z7lUt)T3VuRi}0=*HkiX#1B@j4leG*SQi9seO8q1-^Qtvy@(#M;Q3q%QHC#sA{7MI!yx0%<4;(l22 z3v~YjV;GG-}0N7rpht*^{ulBC;M*TTM3S9^?IQP0rEkPHJkO5$CKH9BFkOH z;H7usI}X|?d8N|PE|!6Z2u=4k0s;s6vGxa?{1h#7j2z?w2k7!?$IItclx+56|MFs6 zc;33r(_l_#K>b#JzP~43BiH_+TL@ZAY2lGI33uUX-8ee1^V2X9oVf%gOukAoU_zT$ zP+kX(4m$+cK$|}fK46>UQw5nkDqqW8oJ6|Ku|KM>pP)#|3jRhI!3kq^$df=W2im?``?b% z4f-KrG#|g*a6gSGF+$=>{?|;#peE_XyEhrN` zF^1N+kBmQ&CMjkh9f@XWbz^4EgWCQtSIvl7sivRwDbSX?8gc!ixK#-c?4B z??jblm#Xv^;JG`O<2zCn*3ra?5I9NA=T)Sbc7D#d3}-fSyE@ACwiTrX3P z^S?wVL5OR$(*br}AG4c%k|@?k8;m7Guuwgg>Svie_9amQ{{7Hea%?v5J#F`YAuX%h z3Lp@bJzGS)92{ra>88G22yUsw!xY=pnx94Z8Ip9Ek%zaTy^IOMJge}#>0K@Nb?tJh zTB$mm-2IeU`a9MFu*OnllRarazG=}1R9esC^0vAz_4CWzz|Q5fg|(5kUg_8WNGyOY zROj$!4_w*RdvFV2iC!+2oR%J#RNeD=TJAHpQa4BQ!J}>A zx1~sAJhEDBPG0b~Mg-VI>WA25Ya-|ql8HejuMbJgpD|4|sYp}X1D}nSZ6!kkE4K6b z5@F?Az+KO0sAc!c_eJFDH!S1_+0~v5sNAvGy|JQJq}ZoVM#7hFwn9 zW6183=_{78d{4DW_vyoh@6T>GUE};9UTh|Rq}_dm@%FhxLvKSP`Qa_Eg3e#F-No}X zbCdz~Pp(qbf#*~bGZ-ms*(>5@SS05Wds+w{F59GWWGCj?aAc#GRivU*f=w>R`9B9#|fSEx{?sXo{WI-cJ}+8{EMS#mBd|rv9l}qq63&T5%U1Djk~4GsM<6?jaazq z1CjPfnHabZ9Wt6Yoru{_#KKgmdX@EJu+e)^Wu{1*_?q?&UW(m zhqZ07U`gvq%4LUSC1QwBm$TiQum|;v866|%jL5F1;j2s}(`}v#5Sw;3`XyTv;@kav zh#CryLZlW@7&K1k)>8;C`-m8)myCdQ=@I*8%LEE_2cx?skC-BhSu5Xg z;-FhbyyBPg_pWBH3b(S(7N@Zx5n@qrzxaE;ob0dbN1=#o z3u582#0=Zme+`&q#DI4hUGi@{in2Xi+SiypsvYB;S4f&=U;+f* z$m=goY14EM6`eMGG8S|@tol;}c4qRmL=^ZC17~cA?QE!d~(J3=EZ87P6X(ruu_2nMf;B9n#kMZ?sAvMP6Iz0x2*l`eec<<| z1!Zu(-%No!Vm9HN|B> z&9R?G(F_*r^@Dr|mhwbhQS5K5ffM;%Z3&8Q3p9?8%}%Sw0BrM4S8q;}Wi^Jm1KF}H z+Crk4LO|OXJ3IO}?g9M}UgAr4m;#p=roqNRqk?v7f zCp$@E!|YpjLX|5euEJcd$@prX8J!`eui3x1Xo_u<_`{Mkr0o*MnMi=gg%q;D%C*f^ zWT|p3>5>~cwQ|xckn*mj8mDQ>{BKHAWBUj`xV-+_TUC;Z$?dY%_%%& zSj3Y$$7uXS$9d4U7p3f`VEt~NoR{df+-*jz0MkgzN@%461??zXV#63U`m03Cz?9H$ z0Jb_YP6;0L4X?1n0A=l)=7edC6A76PykI%Qj40}?>3}_Ye=RndkX^m z#}7@JR*~KfG^?xx#y4P>$5sZNrQ24OU9S^pX=de-TwvG&$ou}IN`B}?m4<na@P%aR+f&S> ztk&yX)^<(dv}UDWF-H9V=(E#P!NIDNttA7-Cx~fmw;H#PHMlm*Q>79`(s;|!0*@|t z#8)Y@2bC!ePkP`{`tPHr=B=J`V!J6)m&V$MQMN^1A1Jh*cb}glSDXrgB=cPNL=j34 zzXj}FE(axwuM5AFXpLTl%`AOAzq|cfwf?!9I+0=3!)OtHC_%1$vP*TJ-__&BnO;O% zaZ$ocF&{N?AfM?i_L{!NcBM4VV``%~qS*a-y?U_?v3`yy+`LP^zDrpRPWVdN*Ewsn=J9?RucFXjW1p6U(6Q<#nk;0q0toOo*jEKDw=-Z zU=u@2UHn{8{GYwMwdN99B7an+`42j{yV09xX_k;S3EMV6!WOYlQAmZeJr5lA8((pY zouf=cbrHL#5uR@qGcA%S&s^yS!UEuoa@Wf+@Y%RuN{*ge+s`L2CSqY{T>k(fnTwr) zBIGDks8_6`h9~@Pzl*5aZ~j^Nx_k0LcVs&D7kLw#@}|r|QT_C~n{zkaeOb3!PHvM& zB1Uu0@;o^y#edjI>{??o?j`Q%9M*zyS{56EWDHYD%T7LE#?>~l3)G)($`$-j?u#*! zq{A-yYW!mf^MZtY058DxOIC$o4=LoXk2Ti5H)r=7FVb&JPFGQm(ryTKjJsYL(2Rw0 z*y1poPY2Zeq0AK8`pA_Gzg^H4O`q%kiraw4ua<_OQFC{5V7zj4ex8eGsq^i7iN?vP z*zK1i6Z*zwtP?gs(OpYcNV4X}wlIZXo^r8R+j+O!LAf+%7QsSJ&zTziwceYLa=f3( z#yN-rZzxb0P(Bb!li31z)}YoobTaPIH>vc96|*qO{yDPki@oxZ1dq}rcQpU-4lcH4 z^n_baiR{)>9=!x5$?D^jr>p!AF@fw5jk1Fl9RKaY0Q@+uf(bh!cR41U>dUq4!Nqqa zaU=4w{)!^YbAyFr18q6Go1V9L_DUTm{nO8noX&*7t+fsy@%)~TT zyop&;WqL&rWcGDLXZ5n^XH>J*Pj7w8>GIp8js`3l{d_ z6Ado5L7SR_R7}Z9I>Zg3J|*bLWnEyspZ(=R*E;Q!i*ix)c%|f|@4I6^4MCsWr1B6d zLmvyD$bc^H*qTY1kSW6qK1`gIqIetg#oBWzi(HBB2~M!rbitdb!s?oCLokI+>oZKX zbq^yVmtGb0Q1cVRfF11wCfeG%D#Vt*;A`lqce$#eY2KZj9M!M{$BCg8byG8N7B{YZ z#YA0rZPVl|y;+2S$c9-udfqed)Ke0N>kQ*i;na@|ORVS*S1HdKMzhFW&wdoIJ%lf| zXApvF`;$Lnh$k1;>joZXANIYPuo=2*-Gb#AAuM-2qn~?bKd+cZTU1rudh_Nh3yUx> zDkpCq4P6f!4$;8SC&NF|-GCeh#!7+R1mbjN27xYu)3XfP91G6^wF$X5ry5r={wU4( z(MnBQxj5#&tEN*oJlWZQ9;@MsV`8ByQhg7u^hbY0R0No50Gk8?ZLEr}`{IhW-neXH z;Kht5#qk;1-{)fv5u0Xrje?;yVD36x4a|pBDJ%c0ozCFoRx%1^_257a#ak(hS#C!~YA?GLCA7?6|RmlJf1WVY#r9#VMD< zJ%5NUOvKLB0_vEh_WlDLQ56zZRay0836(o=C15>6`S^C0qB+P7>6&K||MU`O7Y+{Q zItE4Jcy8{w-T1#hJv7V0TVHWkiqWpJqW#(tc>w}`{4KuRzD{T1SWd+k5 zw84z}NnA(sa^>KM(5}=cToSU`QK_KZ-XWAXB`*to`TfuS3s{V2{H(D`wFB+KkxAam zs2fFYY&E##Pqe1w zc!D=rsjB5M{R|+!Cl@%02HC6~hVl4HT*u^g3HSnIb2l$wdrlox#is-|D`phG|4J7r z|Aq>J({#Yc-rK?V!{Co^Bud6oXXP+PhhCVc_vxq+(WNj|4o(I>Q9S$Ix3?57t@p`RxDeM?L8WpsHY~;Nf4szLsd;gHnGpDKH8+ z_70~Qx1kC=8%+LRhP`=!;x^kpFDPAMx3h4j%+Cu#Un;tx_*~?uzgZ~BZ_z9} zZ-R31yiP1dqF=Tx(r&Qe!d$|{*imY-_faT*;b*%ID&iT~ zCbfmwB#j%mgBMCfCts}PDE(bQq@{CYFDcFI4wZ5yr(I@BcGqiQIzYY2U!z-^SF3WT zIIK@IzCqMDLFT5z?m!QknhLxbkowH#w}X01f2){(9w~m`$8ReaJp1JP_0kK`igQ&v z-Vxj*-LuMkV62oS82>hmnZf*C?OKV@@S~9-p*dq0w_HK4O|1c^9mT_b($UP)$a%Bu zEo3yL_5R3v@(pXMmDAqnJub10F(4g@FihNy zx(`K<(I)ro{n{w&HGjue%_rCz_(I^5Jzs13!h>C8UG$%64lDuA4>nIo4Tg0n@-}aZ zU+DK{Fnl8)&OTi(eAHnGRJ>UFzLt9c@Wxe7uJGI zejp}*4>oU6l27rIgb`jl0oBMs?bZ6`Rj3SO2jg1S?<$|5kN=5`m@gySKwLVRjb4GI zTcE9-qteD-pf1bJUAZ9F_-&a89>$gj0l`@sT0PcvS=kSQB8iC@WM?l8Qtxt)Uvvqv zEfG+~e%mFlkD&9!mr7#vi)Rx4Iy-~R)#t5RaLMDE7<#Wq(Q zAw%{#rHm1OBH{&AwcUiX5Ed{O1;T6I)5^l5mT7xg5<7m}-rqNN5BYsC-Ru;&cwMM( zh4?aP&HCq~%Xflh7|lOpNg&UswuT;)@T|z8$T(v1nKQ8atK10F^Y~Fs{p0Nc;)FK^ zKzG)KAaeM&R>6~eY9F83P$6pWGPe-I{P&B?!@z{?qqdlrZ|WorovwtiKVB5TMo*1SmFPAzMm)dz0sU!v>-=F#kxEvIr5Gu5>nE?68&b z9>1V`?Ue3B!CDWm`vz18OdMindl0fI3^ZfrKM#wwdq#e+1rzt)BR`{+T+|}1LFZWE znhg0QVmTH-M>@$6;-%5sanoNfl|G$pP-YTqb?Y+keRU>*$I}d9PMAAmzQc*%1Th|L zPHL!L=o%XOVuJKy2mHy0rPBzq<=zfDJm@@`qTDJ*ZP&fAm#`gLZ6tS^mHJA}l9chb(3#L+JYmBs_c9)>>0 zsl_RIulm(LZR-;9LV_QU<-treV2zT5$9BAL8Wx~9W`2D0Zqz}AHeQQwA%mZBnP#AmXex_ zhGsx?s)e^x|Bf=V!uI5Q)rnf;67uM*(m-a7m}1m_({%ggh}u{O7TiO>(?c7Yrl`uEIXCJ_=@EU) z#21Xmp%D8cqe|IP=sme)g~=3H*l`XuW?_Bko!zFl@stp?rF3~o_ExT|Y)-#~jts)* z9XAmk7)iX1`fzB ziF4i|sV_Sles}%Xz9oir8^9kv)F|VE#$7q! z={d5a+EE6Z3_tMG`Fj)rq!e{`&^JE5MCxE!UHNIFdF*>WH)%0jY*(sk4K_SJh%9@> zu&)9|*fArveGH44LNOqZ;iW@JK@9)c0?a;g4@6u~YorxxfNuY7ZK^W|0r34XDDQ_1 zW20t)j5lFpwzd)-^So*or9zF@F$m5xv#&dn!*kxU*to~qRuJ(bQ8SfTz26G;f%cJ3mkaaIXKnGLx!!<lw`8{c#}lA-KSW(E3T%%Ump z%9TKW&;T$x)WDYhf=2^Ft8=*K!^u?QwbY^rM^boV3Eq*kL&Z4g>`UJ+ka3zvkBL2N zyD7qqX^y(Ra}}3sxDV5FlVZMwM!jSi2YtZA(F`u;)?$~BS#J(%-p>Zy4JK&7f^nuF z7Bi;&hactQ123?EiWx3d$*u2b8@yaUuFQg zlNOUt9Zn}pBy11=2_xoV^~~%21VUPHY;mVIz5#V8ebL+6<5uS1|Xu>-Y5zn)*BZSFlmY^N3er+#lcVb%yV^Hu%sO(aY zz+oPmy6H`?w@8_^cD2{PwTb*HLeqoy4T80;7QJpP4a;S8iJyY`G z_-9FKZp|>V_9UCnnKm&y8q=v;;6p*!R+(nmOSRBwfuPDj0@K-?Mp!pf!scH-+C$f1 zM2_sTuBbE8Gh)|Ra$=f|EbC9o4@~3XnaW9>S10k^EAaFqTO<$N+e*{7*vbhj#X>j0 zP8Zn^CG(gdL&se*yh*+Tx@jyo^NC=61c7JqwE9D+-W-)-#$3GHD#a5C`~l0T-Hlpk zF?B*yGAp6d{l+R}NL+q>uFY6#Oa;|U}z;MK97OUu)-g#RKRy%gJQ2gMhy>CrOqmIZ{H)l&ZLBFvdeI>6? zvzz-RL*f{9=$7!rZnNK-HQ6!n1r;d@0?e9L)2tSRnPHOCQ$I)H%WHa;!lo*7m_>8d zZdVZocc+w-_M~Y$3&;fO1pD;slVINY%CCt9IL>eOf|my;M(wPNnAiT0*}qnTelKr?_TFlG+mtk&z&rEh~A$<;^6e0+C0&1|to> zAlA}vtv!49(yThT3HVrz;^Dgt>a5msFD?P7F^E!@%dY3Iru{C-0lj`KU<<>>cr4)eSP6)@Q~#WAyU8W}(+8){Yn;@1W>}An z5^uF8v|*jHCz9Qp}n2_v=Q{cYvnBVBJFGp9!(bHB%j5|Y&^tygj|heZ+@Rz z{B}DUw;!{JT@jv6hey-Xh2x2NJiNX*ov#-j!-eOFNS`JMaOMJuK^!!q;sL!n3)c#M z^jGyobZOo*F=$3?M>=nHS91()!FXkVri~S?Ren0Y5!U$}k6k9$d$q^iZ48I-7q2Z? z1x%HqHBTbBAj3h&YmdrYe;{{zWNC0L7&ET@{yW^Gq7 zS3JbqwMsjhcZwn{;N#yo@gXLs=0=`m72v1Q=$R}sc7iu1@2+amfvY%Qt~-wK0my^* z2x=V|wrq_&@;QlnEU4zSt(-9}rrGl5qU;s9QQdKhjkEJ~IJ@z@67LGB#7LrcNOp3D zL`~5vjMc_K6moF56-Fc$AwT58o3HQJad4a3@<~TOZyLdTtlr%o1+}Ks9lsG$6;^1; zDG)DvJdUyvY@rDjy#pymC3lB9K~?-zGaBrB+=#sjA5A>~9ef<56f^FDdtt|HjrwNCC#-gt=K?z5#)>~lH;U)sEk?7Sy=0;&(bE3DLg zG%<|-Z94oU_9^+NU$YVtw&sM>9+4vRS z>$NIg>H5&SE?mSEOl-Pgq8M9BK+E_7=X+mnLN8th_{u%^edQg)Y}es=PYRU)S0ggR zlOo$%D)LVjRojHcFcwKBdu^Ki(pd9zSeGD6)~wnRWoDw#%S)2aGiB(fxK@iy^r5&h z{F&CWI~94E6`aBK)z8pw@wC5;8pIzy1RS1+3ZdSTb;(usEA@Pq4aK3VNRpB1@Fty! z^v;P#sIX!EMgH~!)iWjbx8kplwHoiTX9;KH@~P=+nBDXg8^+GxaNPC-J_uw1=BJCEgasMVFys?;>jw51UC_dVuU&v`gLw&63r z@YDiS|CJMY5EAYze#}gazq7Ji&@T!n<@B+^Y=}|29*2|NY@vMcRtyIogqAy zar83kM{9emq3^IPeui<}}-4P1~dQ+SOmi$3rl)GQ0^HRN(|IvlM<;=prGD ztL|3Vah>g@A~XjdJK+J3iKopztR}!}A5`erD;ISARr};r@IGE5Ydt;~MTD2k_g?YCufI`F^ku`Kg^Vq&@uSr-4HU4PWLTCf;T6u4U!Y zpnK=fsXxQ$LgM)+D(_`a*VW}7PwxDrq5Q|F!>iCi6}|uofc?8V>Cf?XDWGY+9hn}B zmdu0nvuk=B`?E&UKK1OPJGFm5ovnMURwFyE9%R^w&ZG0D(~V%{AEmOhMZh&W-wZ4! z4VK7vI0uOxYUz)TB^}GU6gQAHVRfbsOPGjtK9I-m04mhRy_mzckI5UD5zJp$Z*cXM zM}gKh`HBAT`RG}IWkkQ~EQMgv((ny{xP-)$Z5`76Ung!yowmpJA64qmP!D_=NcqZe z%1eh;{^VtMR!2y8>lPm$1mXRe(1=Uaq{qiBzt-^|<n4sUoaxnc5yVIksv@co zI$KkCT=cy7+ogmJ*CiHz~yWm&^Ri+)YpP zMxR;d1gV-!>5#dZ3!z6l-+lB8sx@hU9?0HhmV5a1z#TOgQhHSvcl^(y9w9!d@g+T0 z*X7hsmh@SlQ9{mTa3#_7+|9)7^BDvJ21GF(imCiuD*JI$+9a4@iN^wbM-sCNJ$df&sB-t2 zX`sv)v*-$FvJT{x@@lSE?fHi~?VcTxdz*{0*x=gGjtBVM{G+QFP%-*uoY%o|bAFvjPynT%mWCH#@q z%bv}W=^6D}o3GyH=<^!Tiey|7q5{_(1E%Y!Z351C3-kkQX<7Xu@xDY=amBF}k$h zGCKtP>ymIX@?e0{zpr%5(heV2?IN3_<|Ib5v~Id%1SEGw`h4n&w&?3?P)&WpVvxYb zW~tJk&dnNbGp9Qo%f9Hd| zEUOSBro6`*wUlUSuIxe6^qYJZ14J!8`+Ld6y}xlCZObn5t$rXmItj1+g{X}B??Lqi z)0HQd&bRnkchzrUD@73|_3wcdA-0#VEf_zTr6kM{#-%Y|mcUbJ?|*E_Wa}&S4$Z6g zi^^~5XQXAJTcwnuYV`9OyQsR*paNag&x_rHlZPKZ@TS_!xZ<>kJ3ADsI0Rq9kA(}S zZs&8r591YoAVFl?r#Pk_Bm7!7BTr@_HE*4ge0XTj`4zXMo8=vzRc%S%wd}jw_R-&u3tJfxm;$IoSKU_2d?s)H+Mip z<%;Kx*rNx}r>?5VL&*eo*3Qh`R4*!;5*}h!K^7d2KWeNVa>&#^d7@m!ixKTNS69b-(O-Xu7Pr6mCU zu@3kcayiC60aPxB`95MiJi4xqXD(Nl`sKfcO-q{S79A*-YG@b~P7BCs$)6OUpWki73}YTHs?L%#=Z^7vhYuNVm(JZ3)vJ9FY<0X|XoWvpWo@b=-U zC2{2lYO*FuZg|fRHvC1bg6-1r#CmT}ZLyGZ3imAtC7)glt7sl&C74IM*k><=FLUyI zBP-ll`wcRHgv4{%)5AEU$(xcTp*e#&hgjr$I3@_?vS7zik9DQ)=M_52Fl5O8!pR8&fz8%MTJ#)vWc2c1rkZ-1bhd< zmBmbT&y9H4drqRo^7Zhc@-sFFrD)z0Z_si;=phqcy zu9dW!(ZDs1ag}yu)-u>@U^3S3RTK>kov4Gp{0HtxVHKSlClHe7FmVW5t)#H;e5Ep> z^02+16jjlPEVeetfQqC5Yd?G;=RuyaVv{kGoOasFOc&k!&rW1qR!}!MzR-TZ7uqZX zysQ0s-AVA-&Q_jYXo(Z1VI@zl(mPfgVHycv-?a6cy};N~+iLqpaFP#i#ysn8RQUGcJ(@}PTX>&%Vh`>Skf+Wj-F&=I<;1??~W-+*W#bxeb+AH~1O zhdU3p%v<0?pPz?OVRj|tM2Faid>JnXOincIw(dvAePaiK$HEO={L!&3(t;%T=JbaGx*Q1)~&S8tu535vyF2%63=c zPTNnoJ4Nr;EmI8QoVvM_ve~{J6d$JMytGtFBj-vgqp;oChPBpwa&UdLog` z3xAl87p%v9Xhhm&14H^TFk&%#A?}2l?$GS2gO=0eFh*iLeXYx5>sGhD0rHI0op;kf zC`>ldlvJka#blP+&4%T_PwnV&U372Vb`5vJ>RE^2X`G?R!BAWq{Dk zIMi}SiWw-&PaIJmT)@Xz))%%j8L^Rl*OJV;o=^iZ;$33{3Et8a9eyy5j2|R!tM@4x zQE)L4_xktfR8QqpN7>7!wZ2R!L;6sF4R9GsI>Wx`ZOf!=-Ob|R;{6h_=Ejy?hGAPY z;pwAZAn>G`Ea?2<@U7HP(EzH-EPzB3ohqVN*w_YH%LYrIQP#c=6kvis`pftFg3r2I z;Hr*$7yIIyk@G`kcKDSpCBk|vnwRx)dsPLDdBoR@jL*6poJfTvAiI8D0wsG%-KUk4%JZ6}&f7uvoKm zf2`>Qk_ILV%r6_rR|JVkw^gDg%b0J|p`-FsAk*!Myn)WnI`F``OTG(!d-bCk?Vx@H zzW;J<*LiYJ5%&`nIpQ|npAqA68*gdaDsx*OVuMjO4b+Nd?bG#uc({b_HhrMA# z&_gS`8L{dzz0Wa&caiK=Y0U=*>y zpXNAY~l2#8%i$4$K@MAS@ar#9%%nMfeEy-OE z&%XKrCi=%D^&whq7{3KsEBFt_RhBu{$lw1Fh+q~G^!>_Mh%F34vVh9&dIM%D&qGz; zN%9v{;~5#yUnkK06EZl-#LyK^&6}@1oIZ4+lMLDZNaTXz6ke0_C9UpG`_b$Tv~FYp zE~U5EnA(MN?5zsOPxwQ-&@IgmgR!H3cxM4fGiyv@Rm|>aNs%Nq`CsobDH9w99~^8E zJnM|%jvO*sNs;_x?SnsGqn!(G{%#bkbC>}(UrpVeGt;nU|e^TIrkn|}R z^eyyL-nTB(;$i{V4pU>pD1vEn2+$x@%liDq_(wH4$d?7*b%e^~r5M;|i3z{YnNpmP z^L_8>@>e>7Y=o_8shmG7+Bf=^a|pv&agZ zEW7i$y~sqt$tQZh5wC`FO{_qy|1)B4?tX2~HK|C?mhjYbULKV17g>kV+|xWCtlk5y zR0iqqZ|$DI<-Q-xK8ux0)|7n~c`5g5qyq+=@{3ZB%RrAN9z$Ky}5^@wpq^d#9Ytayd@wbfM!#oYysmOU`KJnQ3rHJFX&? z2`TwIxuxAG?S)qAv?HCC&d29UV^Lba>9u|`3C@)6|{`RzN` zCKt)vYS&LfahM|7@lZ38_QsA{_8-L7jAK(}Un2q6A?H^lF!S!6I;cQ59u91k_fh_5YqJPj z-$ENE(4GGy+}dmgVejO>rsDuCq5mA(X-Lt_K8U_CGsP`u`e>Ypvd7b_{?}Z1Vr3Lz zvPv=JPj@k-{;^3!N8=_gJq+uC$R!m_gf4wk?qvv;1{zAmWKh|u3{9KG_?sO(rb%Xt z_`LC6Yua;5qxw8)6KlzkJ}bc^%Bl6~T3+H1$@PHOg|Q1+-7n`XueZe4mi9ib10>P+yC+y>PmTr{)v;93RPQwli}?zmXJB@T72LQ;kEP-}@;y^sMRcXM6H9|cJ% za6PSJusbPZn3A)35OxXepDdOG254djgz|5CXkUVHm%~_Tw@>4Ccnh4INoP~xaMn4h zI;gwllM9>m71i1QOxryHjp zaHpQPw0>-#DM5IEjqLsLqm7oL=ZSKFiMNAZ)nl}RIf4>!W25nc?LF}a0lHCQJF4H% z@T)WA-M|HJ&8NHGJumty6B#mF5NY@KNV2^Ehcz3*Xl(5sTUGHJHq5YwEDd(BZ39wX)&BQC;=HexRyuO+o4b2 z;UW+fLDU^i61nt>elP9)B6nLptLy6jd*|jLqrqh<&zAOGEI~O%S3iZTh9XgJxi@|` zS~zs~a|MwfjVPp10#GID6PIGUOcgsC50`gR|o~$Zf4^ z9QSfQUHAv~2?y{pP5SmvDY(BHh{9GJJdE9le1#3|9#t!ye^j@c!3-Dr@^M#6u}^2; zH281L5@e0Cg0v9m@c6q3Cp!JGP7o(to#M3{l;z{D&GhT$`N%C?`KZSI zg)Ftua!F%vA7U@Z3BaZxCbGT-_tGfD^KEE>_gW7YyeuWol$7iCJ+ZI^oupE|bVC3X z){@yxj%oy;nbno%Y68e-~L-BcR=(~6A%)`LpkwO?@ zn!t+Wi^6iWTRNNlUvN$V;cZlzci?dyZ-U?8o`#^x1~~R+a~< zjLJ_6p7|2cyeD}l@i08E)ItOE*0@O_UsO!Xbx{Xsi12mVcH-8fwC#-hmQ#ER6x$W& zV%M5X1P0&l69yyZkWFcgyWKuT@J?T6^SApt2{%>y(80V-$6!d@Z>CmdSuR!iN%J`T z4(P7Am^(yLYu_2t~5$eSOG4K_*8L*5AEY|2pT_l;dlq2ℑ(kU0U~9dh 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

jD+p0ES1U2 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 z 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 z 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�K75y&MT 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 z%0AKXlP@9L09JbhXeeR_dHzoXwEmU6ZWMwA)9>+@$v>sd`yD*_;N5rp|Ln4x=YQY$ zAO1D!qc(~glNSm<-)r<^v`gs>%IUCeDmM%f5e(UpU3WW0H@k=sGN96K^GX5(OFwGc7ltMvy4y?vSBm<X#2 z!pZ-Skq*?R+r02X2s59k zu%fIIY4~*KH@}Z7*APVgv?zg!35XpuSPEj12Gg z4~Mu|KbA#dm`FqkLC#Ms6>=cKnv8BYcDQ>cP3N&h_MD`oieue$M$Dg4^N79*6q3>O z+=Q%HNu{(%cSL_JyJ9){U&ciEUwpvqx@Z=8UN2Zc0)nmD)OqoOUWvuLvnsr+iJj#+ z(K2C?wT9k=kFvoFIOmz)!3z=P9#-o!NoaC{H$Hsje-D#s(*?{~RyS$7c+YuEdL3pt z5f+9k-8=Yq`0r@?gy)l1k^4S0>%u%;z1v;0zIS!s(PuaB^``tTjp6S46u;xT?{L_L zuASVetoy}N`+ntr50h#8%K!fPZ;^kRGbQb{wl6vt$Z7td@oenaOlBI5|Cmo0-btKU zOaz{@BO5f^u<^qo6BC}8vt^%f^8jX#d4>!HHJaDqUShscYYEcq#Rw2d&Ulq5ViffW zJF+YS$Ic55`i|7Es?m;L6S0f^qhv4AB;*y}^fB0Jjx*YVg8wrj-Psro<;JVxD59!^ zXg^A{79$+KO4!OVmn7Q`__!(0>tI_d`RwdB%d_a6rK5k=Vhu0203SZ0%l5ZsIci4@ z*wHzC-jLJ6BX(X8i{0UbxkHr6nq>twOjn8dcGb_M%^8BOJT8hE#J&lDR%StawY>hY z{4d_$>DCqQmHwRX^``tTjp6Rb6n@8b-{G(gUAlq)j~)Mw0$d}Q)Ua?T5Mq*lUOa;j0NftTDF>5hUVk-m5*WocA$jQ&;=>XP_gT;7z7nZAs?UpwXSxuAVd^ z_Mupi?r@8@r{^0kKKP&%q&oXE(!3TY9LG^k@dT=M#yuc84?Pw=^PYK*aI_!3NZ|E2 z-+I)%(|zKpU}K>V&c1zM;e0>rJZ3(e_aM{R3jbn6#lJr`>kfG=I=GWRocY3zdRYq# zglZ+&y1Cz#mrZ%ulocxbq-ER%KJxXg+tvM9IW&5HI3f8yFHC%%7DJi4IP z?W!C&ZoxajCVI{yIu(E$hC{_C^ zyB5CpYTtnX6=S?8?`6G)nv#_ymI9#X_XEE4Ea4CjXkq-GR8w73nYA>dI*Pj^8*d9Y zDNW!y6;#r5X;-4zDgl1^LQ;lWU1jw3ewqF~WUJ_RBY=|p4n7YXIeS9zdKH%YmH+Gg zz5GunyMy!yn2cc2NBKYh$~X=wY7SY-ZTZ(2QIYM%r@<*r(Kdc-?8pwI#pU0#X@nKY z$qs`~P>Qk_Wq7{*4~q;Y4G*TF21V0o)cl8dpiwr~{)`;(z5me+{nA|7i{d8aEqIZa zG8ZY@o+ng61C@oaIltN#!_^`|7Vj5crPSqU)i0c{nvQ=}qNxm1s^yia8neFg z|Ec`1@#zh{t83Cef1k?BCcoX_d&;M><^jLAk$3hLm1|qc$g_ega_wuYHs8Jf^qTZB z{MG&J3-&{}Gmmb{ne6L3?|0>8Q(iV@MbuRpt_hd!LcmFj|dFmqXeZ)RAUF5 zw@GqQtDn&#hEY#6Y5hcM=W<1g2eFywl?xECGl^OyzFp^VGGXW36kONn6Me#M={R@# z#Ny0;M7JYs`B$os{Dtx_-|=5W zzT?02e&#BR03wHpP%x@oXA=bC#C#rp%&zGC->Vq?hbE>G0&a)zoq|j zM|*uh_Bb8!>Hl-*xRE11e0vV=JeNMOhGRXP=~#r6qD@sQ0$ zJmfANvnl@MMOo?Ne~7-y$lmE8#u=U?Ts1-{*-4{0lWt81rR=HCv7J>Z`7Jt_E= z;^AlHF-oOC@%UK9%Bf0l?wIGkbg?mvrj=mGB;mMXxV{PpC4-f4IM;O&z|LF=V?koI zob%*L-6?D%Vp!vY7fMPd?#bb;oIe#B;Z4P+jX_SI624T5uG_Rb)#*119l~3F>V17| z7H}1GfX#t}77uDmU^B#=s^)~}Iw3ztB&Z5o;Y!cFcX5-4TU3?1K^RL#3zlY$h+`gp z<^M_kjo_!bK+a+2tw*-!5{+=w{MuRHdw0_&COL64Mord3M2e}>?itUhIpK;v@|)2w zLYq1Otksubgd?2#jdwGpC@Kxw&T=pRjkDW-yML*`iJcDnvx95n5w`v!Qb(}8*k;RE zO`0f5-Xee2f%!)aL&Th+*(%$Nd@|nVOt1-$B8oyKbc7|}vV0Nl^+$l5)D~x{1sxY% zpOX@S>0O{cPW>YL)yq=;Nj)z5c(!q2v9J6;(4&iICyS zWmkRguC2cEzozFa|CQ(8D*rsUFyy}k965M*GV*hb{%0B?gi}4EiD8Gs>78Y3)Q-7O zj^7$%zqk!!J&G9{?xZ=K9daH$fW><_PDGd!R(yet0NN#N7S1DK2$;;drv}T5##cJ= z6J|K7+$U_|IF`Zipe5?eTB9Px%5kn{cA4)Qw?PpYMSVW`M)<~D8Ar_XcrTE zy{`QY;QIVO_)4{=o~BX1T=Z!?(Juedk)%5GUoZa;uvg_KjJx!y$4tKCKfjj^U3Y0K ze5-3U*68AIha+@VrCW5-3Sbp1lI4z~@-?yeWVgnGVXm#k`^e05xATtz$gtza;7x84 z*A@Xpg&st+CD|7S`Im}*2Nk({#+}d@L*PM=-8GR_Gg3XNIWo{SLdb(%ho2K4&Uk#3 z)$?`dIJ|nHZk!Z2#ZT3BI`vi36@TEzKS&EFx+lJm+Brbi85kQ5f1JLdXiJU7fOmc@ z3gmh8aXim~g@ALRpw6cU&WxlN|43}M1>H~K`iYQE;nGdoyjDtW3c^aj?E#kFqoF+I8@VU4ao0~Z6R3084rhE9b+RD?rjEVvODrQDn;9V8yFjcsC8HhqG<$MtU2*`mCJya7ZYM1!mRZmVz&2sU?q!twl ze8R03E1sXPUTQCz-1e6CJied$VjsrxOeYonlA9#0^cfql}BV3wm1fTkdqQJhV%Z2M>on&QVWU|a{~IIS-UB_c z{!p+b;fYmIv&Hx?N(%;A?bG^%Q@H{$D)1@hPQr}xAO#hrxo@&lXJ+>_#mn-Xb&s({ zDk>ilVPa)tVmgTFVK}I04hsgRFH6am%?NsGFR4Cby@Jj|)#O2$WtR1_IQ~MUJLTO} zH84B^J9v?NuYN=w*P}yuzwM3Lc40&FCf)l2q;CSDi{yAx|RRn5eKgP zUaF#(DFYs{->N@iur}U?1KPwW1qi4w?TcD?hvILD>-qJv}DL~5e+-C zLJ@^hb9n(=D|tK};L?sjCf)7LlKvqDTEd(DI8D8#@a>(^_!#~a(d+R+)ic6f^Gtau zhxk!Js8aetOLLsg?R0!cWPP1~pSavf8HEal`iETI;a~967jY&XylRjO1?9k3MC`|z z_7#=yiwg%90pPbk3`o;4f4E~GN8HGw!-=dF!n~%CKINa+EPJPJAaf$jglM4EwO0ze$P0 zz;G-|7%;G>;idUuS#`Uocov3Vs3|6n$Mk$qIMP*N!1c4~n~{*QD|II@Hk zV6dj%Ai5=?D~uWNvi#>qoI9wU-zL&5M9>y31yzl;)nIX}j7cv}U{d**>R$eJ-Lu^Z z86d*STo~a4VD)@UI6cc({$&FR*sWpxgGNM$=*NeU>xf8?X zEQb6r(ph8GVxB{FFSdtzJLTt=T92~HRWL*%orbZvM2xlVY`zSF<^%)w@1<#ruTf86VtH&Ep7Fzar~PLHLd%xqhHcc)LeAZT70T{ z70Zi0WMB_N1*=7reRt&7LX_7h{-oK~EE>}Ae#ifPS>&S(f1JT$a)Z|OxuL3CO!h`1jr9TUA1a3he zpE<)}ZLC8qezlH#@!vzo_<|zp^;PnrX|5ues{|aUbDSSiwIW*+M&9EespDx5C8zsQ zPV)n2z56dB*WVeBPUV|Hq7lP>Ac`JNeih+J`-+H9LY>BwEfkfX`22l2>fMR|>(}xA z!%hIf5jP@hA)5k!C#13|x65a8ubfs&^b_Sd74c6LrO3T9{6y*O=$~{=T6Xok8$?uA zig>E9bF9q*(+TStY~&{_2yj)xptWkR4O6hh#C89CgDeWbY4P)t17Ruo| z>IRT0LW=u=D$5e_2$?hETLD<>?F59W~Avoi|}1B7uWb!=3Th$iIBY{}t?6?v4hN z|JCt7LfaJG-lXI|cBM#2dXv$`yw2f-R@R~;gaiR{nZKMrMN`TD5l5JfDp}nx{DaVu zD5CB-SBxR)h>r>@>W;{9Dx1$rfv9J!xW7|&pogD2KJ=Oq>Zu2gCR$UPe7EjE=j++=TT=i&zR};*&2+10}cME@6kMV|4rs z;8Nt5+VxVB5=g3?yrH%GRP^qlsxEUgH8S7E~3hUL56*Mc1lu{-)~6>^wCl8dF4~HyGKF%S(29lYgbCdTWy? zx!C`3kRz%QCRB4)k^_j+02H`lqE*2~Acv!+E$GfUTt;7~BfDxF&v7So6iv}W91Ikr zkCpAfPAJsJkOW(|m6Z`!k#kAaGM>(S@5K+AlbTRnWnSsX7j`;_u~vLisc!?kUs&4M z)TU>$p)inYRfGcE1{u+Y70D4i$OQ)MXcZ~jUM(F!hQ8+%=?eiWC+Kq4(;PQxjt3L& zl5GEKJfA#rl*YXeHm=m-OSk{+y&&a5X~9s;|HHm-{7=Z#?aeO2#nb%1O#T;nSNDvk z$-jKZ|J8eafbrim{ztd(WlXGYN&Zs^rTrFaqin2$V?ojiw_fN@Jt$J=&<6-otqK49 zCmi0WiDW1|>#k6U?4*ZxKAq!H?u;;(SUkwm{$Cu&)o8{eBH&MWrz8DH2fai(;XCVi zI=scB=7UESy`Fi`bmvbx<==t95+7;(W$ts22>8G)zwR_|BJaEE85 zNT=diE2z%>9GJbQW`Tw;23B2CT~dpvhcrmT;4}Z=X{LoiNfO7(Z`bkTjjFk{~HWMOq>n*v8?Wz{F6Zj({9+CoYnTT&Bt>%m|7 z7x}6D8{w*WY9H~;R*)!vAO127P`wP zWfF=4Mhtl8c-(^V$op65tK=9FXV4iIbZR)r39i?HT=}sG@P2+-@;R+0cEt07MY6+s zk0Pr0Ci)s?PTYqEmsNs8ViE zw>4}FZ>}_PEe#qi{!0Do5UN-N(Tp;e#*6C(e|c7i8+7D!`wX@i+5lx}PAOqNp+#V9 zmc58*+*)9W>RnX`=IaQssDX!Rt$ycOI~*hXUn`>5`*iIEQ49|9t5-Z|Q2qa_RZ! zw{2GxHInfy`giFw;cYJ(PVN{Vj8LZ^Xz)NeQDq%KVB$pZK#u>nTh`v?SC z5RX`DN&_p5K9peLvpdu=07y7qEdLScJp^(I>wSN%q+E=G4+2_kpa)n$wOl|s}7Y!SINxOM`vgRLLZwtBC!SFEeD{HzbKclcz3 z@00Y^AX3)I#EC%{&e4)0)2maSjh*6)N;9AaQGm0oLv%VQ9t)#EwO1el49LO7(YtAf zNUqq2Qsa87<+*~$?am_w4U+W;bzulm&*cXGP-|0WDiwwh&cr01BHg)O3V31ksW2bI zeqlTw1Y*#~-Yh6o230ezMPx=kh;X}>QJu$W7%G)KfpKQVpNrzHzBF)XHjoStC6|)! zT>i?xJf!vXqC`7KHH}+ohPqipOHT9{70P*A?}gG%zSxD7l$Z+Si5(M}k2De-%eeq2 zB`ai3$C&@h6*hZ`dyZj4gk#^KJM9LCZ!GG;fezlB@P7N#i1tsGyd%xwP`Ah(bl!VB%nw}tBK~Hq#-5MW(HLRKnU=#)YqeJr8)Vdj1b%g=PUmo=7mi2IJm;e zdHMZ{t|tHTeC7E2!TVj_RXeWevGF%y&hjd2-slF$%qIi)?)k32+9Ln%(gADNZ=PV? z)pZ4D{!ZRK;ke`9svSk{<>V{>pXL3^|Gz>0%?2+w^B*`CjcqS4Kb;=H?!M;=9<(qP zV*Jib>8xlC>SM5UT$a(-k&tkN&PET6M)ix0e=)Kv0zcg#dm9rP=)$l#i;x38Uclf} zSRh(9$6zBz;FFz8jRIq+o>anVoKR>E8`Wrw80Cx#&zK4wW5WRps$Kq(2&aCqAsy#Y zK7!&boiE7~6S2i^&z^?hudHo#ER@G&&3WsKIx6JEJ{yGsxvT;?`0lfh z#e+PnJ{AVz_?$yq)V=<{(HEv-kj49G>U`!hJ3--cx+uTHvx27^II?)YgS~@scj*Vu zlNYP^t7qN7or?OYZEkt56&s0xn>~BhVNqrhm z4o^bYh3Tm2ymsXRMTC{Dh%!kSg#-CuvN${9tisIYMx4m3V{YL*G$VUMxMG`c4 z6+v+tH&GMHr&N6fEInv-716NT&L9(n9>9o6{$|^2)jkSosqJka%gA}nwSbJ8u!^7{ z^D{9Zs)z8Oi9pp5HiVz8lLj2{?yc(~BAUrpSD&TRPVZ zUQ9dfS|29|%SMIUqIPDy%&!1umTPiWtN-y9@?ZV%d>w0fh*(mE%f0QQ;VO3xg~i0s zIl`B#jHvS~I9rM^uj^1^oNOaUc0(a8fM$f{JT81fHlk5hMv`>@>w6dO2O{B!zWD*qJ3k~XpR_vZ5mO^1qI#(y~NeFQcH3xzH7as)i?8`)+E+&Moc_lh`a z30p``7lKtl(rNApyKJ%o5nU0}9GFc;rXg%73Fpm8;CZGy0wcUyDr9GsE%$zW&s|>b zLwWm0{x71hXQPlEqeL9QWqaY6)RW$q%{djf4FVb{4fd2+dX0O8w=8^R+IU6_0x^4i zpGNG~u)u*vFwJl#GMx6|;0Ycn;R%}S8*0%jxL;auLlEnx(Q0i~<9zlg)7%Z7jqSFy zFE(I(Vb&F9b_AHL1;chP($M_ve?Oim7D_Z&0zVdkDtJgAj{5ut1L$NS(!WXmM?PD; z+v&bZ!*~2&=l_Hk6aKE;C$v0WyL$06lSdxA; zS9EG~-Yh|pq<<@wAM}HSSIEK>M)Jn1q}OGKs-w%R5z(>Od#W0%F%V;d4@u%n3g-YO zDg4mkXGFW1z~@(bTN`gAhPyYw!+mk^NO*F5yDjLlq&ZZ-`25`cY;VA?SJ3M7W1KZ} zCcPppUPoIR2Epu5C#^4qx)rGv35^}(h9KV@f~*z|q$2320L*Kr2%b9kR1hm+{yo=| z0s(IR)j<;r@$aR@7Wev)SLLeAbOG<~n#z}dZGqS8s~BnfOTE&8LGGS{{bh@ssVMZK z7NZZ>RvKRoJG3mVZqO#Q&^iJqV49v9>ExJan%E%FZXPHbXRe=2$#x@U2?;;drNTN; zr9Gb76l|_guw$=rr?4b1kRSC?ipbI0s+x4+sGE7^LWzRriA_?6bZ$wxRIPMY!eCq0 zsPPehYps4?`TsNIUrCZPTFFZOvz8elUyk5LQFTwTTGb!_N`r|qTqC+y>ILa=rb%Va zK8(o@=!jq!itNvS1CC{G^vpPR#=>YRE1@~&t49!wHYq{=M%R0=CVDYhe4iyBd1%or zY7s`o`A)Ei;2KVguCq}nQs1&ZpcXP_wYU*>jq4??qiSG+#g=3MDS^zo38=|DSS)c+ zWcXEHOZi8AL~~KH_xUVFZ3w<&nT2;b>_o=4&tLhM(WC2k#Wj$F@Uv7Jqeg9rvI~t$(cqdD{GAmlXt2#uf3N_PjMZ|OFI zn=_blv`U_JIKmd8Iat)KoC(YnPf_Kw+`SIvV9nU6WLle(ZKP7$4|T3^Hlb_;Gj*4yN4k>u2L$}{|QBv(m_n9nm>bVcNtztZ>84BZ8^39-aeFMQymX9{)?$cn9x zI4%Ot!NFBB&YUi>@yZ)>CtO*JF7nmpLIG+Lk@;FCCe_Vt+NcM1yDvzswsJl~u_~#j54=! z0OuUgl_R9P73A?DBJs0K=rhUxLXoTEOT8FthU%4v!~OJ6HJz_V=)Uk7%PINaY`rCiq3MvCkhi@bWqwYU?K>}@JR#XPaa7bG|ppbePTgK$-jcERKe*c zZN*DsRP-zV@@LAw(Y-%+`R6wrrEE6%Wyq5$+Hs$43nwrQ-<}04(I)*La#m|D&?w3O zOIsQyo5J${(&n&c2RK(&={)wBkcH81&6)2#-m(c1A>j0S5W)N3SG-Go#dx6^Ehnj& z$IELv+C_Xh|Lxp&m?ZyJG*x~f+Vao%gRj-9$_{(~fNgC1ePwzqEaaTB&!NP+7S|ra zRoN`6!WzPI$HB!352gz7hFgsnh*f((tQ@^}^a6j?LWKZ)7 z)}+w}ox6M!=EP|me7eXhAJVw0i)_m8`rN9nPq0?+Y>_tG+~mr~JN$QjLN@qTu%BdT zC4aKOX^S+GeINYF|MmVW|9_+W(>k`>659KmYSkf}BVx8>rLKq!+aw&TmD+-ie*1l$ zQP5_wi`U2hw*_?`?T7K7#%Q0|L_RkSx?@LMR!JvP`b#X+MnFK8NePP}f?CO-@WmEy z8O~YdxoJ4Q-CTTf9S*_v>UwoF{x}8ga2mQ4Ven6HuwSr3fZ|CY6jb=$*>8 z@$9f?^5GGnGR&)s(_NF-X=KH!2G9SLa4A|3MKEX9LSo!k3{BH{Y*UOi6XJVEmykYs z=ta?<3KKS+h&VP$L}$CH!#TNmTo*Ekth&|WnZ*Lxpj|GD5%L}XCk&C#>C+8t`=IO- z-}(N3Yy7X0x}INAR`P3!U?I!TWRI+H^Op#u7Jx)#1ooLR7X+X=T*o1LUU+PQ@=yx= z)0p|OlU_^NS=VVrXTi!NT};Bk4PMZ(H5TW^zhpkTE6On2Bva&37`PQ~EAW@C4nTh_LiqoI|H-4$_B8d0nXP$%Q*1gsVl?i_D2YIAufL@>D4i;J3a2c2d@>W#KRuM4_j=y>DMyib2xZ z973841F9{OJ_+LdlU9etDzFKYzwK$A2j@qbF)RsD)yBZToMJ25|k`n)J+te47 z7rIzd3yeM*Jnmb!xpvs`^_BlMeZQyfT-M}DKi=V2$GcU&9i0=FJmjDFCS9_D@yR&C z?_>dYzE`=&yW+>H-^fEg`2dG*@Xd?cbk;>TWp~ea`Bt#+`p0+t@6TWP-36ElLwNceWes zFTx?9UD~EY!v|IKBeYTWM5N?oKJ6b>ZZOlb^DKSfNe8BSZW928*FR5aNWVwpt8y=>A7=y|*c{}A0~2j)sL!-jd&+)65v{W6ecUer|) z@*<t2V(EwrbRwoJa9shTF{OBlI1RtKw57KIU)b{-=#6|6k4|x{8+;{w4M-^EM z+vYTx87ONnD;Osxt5iO&^E4kePn4waiOZQ(ZB{{CfiUO21Z6{2eE|b2xde6 z^#TTly0whcX-6=nlk%1SKO+CLRgjpH%#%0kjb6!`Q9Y6aBcnNOX^R_aJ2ozY16x6G zMx2CDOP-`U%7sH36Ag+6i!r^6XGDT?$23ETPLSwW!`JK|Zv`GuB*JClf8fX2sDKyw zJ&hdJ$ip9^&4{4E8}1>-N9|-)3=>c5&VQ)|5HtbkkNSx(_9b+QE%VYM`}3dk+&sQ& z_9wl=bf-EjL<#*>lC3i$PpS=NGyb~?R2l+x1ntsFbs4b+>z^zCRbDn}cQntu3*k%{ zI`Xe@+9u6z-ml8*4Q`SBI56*5_4$NuZnvlLYSpKHf}g+es1sRH|MS}kVNXUq zqV$|Nvjae+?0>1YPXdFNTrW2{sXiHCQs^k+-utaw=l|RttbV!HjqdUMyXBwqeTqZI zugZ7)*9~1WeKlUpGRXJu9sm6;^g_cHyNL9Lf{Xm4QwIY{K1%Jxf^6H>qTBgDUaKf) z3cV+7S9dIeNpr@ZS`Ww7SF|Jg=J{p@d|Z^MtY(efMWFL$7qQ~tN>*RNkKy8d*`|Egne4n)%<8Xw2& z9Q6Tr`XH^w$6@uT$a#&is+{v!7!c88G~E=!m4eVsUX!(=xf52Ay>ePzcY-;U)ka->=~GJa)~W7LZ;6s8VPK@(=2a94p9osVu1jS!^>L zu;vT1zKw^B*j_!&EjP6?mw4%S8g2wwRGS}qMx!=^BqH7A0<*NzvS(R2_+f#!BW#dH zNRb{iF+FmwJjzC{vQ1p$Hk!2BjV1`|zS;txQKql5is)DV7wLaY{=<6o_^9NR&?z0%)C3C-|@evf91dD{hyKl+$|irjO?E2bRA^E z!m=2i+YxraJLWh^hq1#pqqO_FJ3IZ;zKL(kTqYLkq?`L+GQ;V%N94M-NO$pb>dW8> zr$~XN$+C|#vsSsGh#oJI6#9Sh{O%cCd6&8#SV!nAN&Rljh)D4&va z!kEXxoQpfy7JWo2Rg#?lS=-E?Rpg^-+VVhvQ)VLqHkxci{|Y;}(gRmaT{U6oLjH~F zC4ZCrZ{Tsh-8IJx-Qb;NR`0&!|2=Q`S2pkN`iFe<&M63SmQWcX|LwT3rsD;>!V`?D z_4lsObog4}!H=;gcEYgyA5Axlj`3gduaQo{Z!Q7M@Xt7|p>%{u`Nu8}H&?#Ee`4}T zc}`GX_OJ%BgPmp_5#nePY1mZhUR;G8GZcqF@oLmhfL9rZCd_`AfZd<;!g z%VGUeM9zu* zJ~#hNJkq#QFs14koWwDm&Ia0CbS#g3kgni7gLY*EexRlom2GZ`mNB`68}H&3=wuIJ zP(Ju@KDfbSd|XYQFFEkoigsZ%S$9p0LRgLXMtrmao@Jx1wFS1-rP?N|iWS=GWw63j z^eg}JSIfVfqbj2jI*e#(ZV?;B7BlmB%8+ngjSh=rVT9J=Bm9)qod`P zY4dy5NJLxKLo&*y(NJkG=1iTPClSJBI3e5>FycG9$M-*{zpX& zNuk7}a_C>gqbqSr_XVF7juJlfgGSCjT>jVjWbtlQ#x^)+{uO^k?(4RDf5#J9lw0At zqiyCDS+~~{jr{H|@1*DVykq#E@aHGxc6^gf`X{ooqG7(D@9YNFUD{I{eC7Wu|Nj;8 zuQ0%Q)WeQBd7t`cjlZ*Vu>GHNg`{gNerHC(!u}b>_jwf#j}VthI)%6O=Y+!Ej)-=I+Hxj%Y;8DK!9gq zBFa08^38(Uv29iXYAh6*7Fs&#vkQ4sM-J+`8iXK%rL9w_AR(%ZfZ6J{s6*5mzAZQ! zbAdr4uOtO-;2k9@(T$K$G9gU#Y*WN}EA!+QBU zjbJ*=O}j5iEa!-{i-hNRk*k<|DGeTCQ%qti4Vih>$H?&IZIFix>A_2ov4LeQkdleXVR8wD{*Ma4b+;yYe zQ?cv+JlG9m*?ZBzB>9Yv)Ml?1UV}5uPl^XGj>GG7oTH@WIN*W}|a z-%qYd+f~U|OZfP17@1r7SkB3jd&Nx8bEMVf`JqN=)Yl1EYCvb}K&yvY*1~PR&k;~prT9~Nw$Ocem#$Q7YvP3fqMsO9t7~V4 z-O>q%9N32_o8%h|yg=2e6t^@_h|m#>JXY!8bnC}hI8kk_pjj5t93pHeedYhJlK<@D zChMw2E|-*|xg5eGe5{QRaM-kW(V& z9j6UbG-=lTJ$E_EX>Q|VpBgk}Pl#yIBhOuz2mr7^2NKRJ&*hDYj0o>i^nVhBYIDi@ zd{MhS3RB{QeR`e*b4s7X+6*Yt*+B?~qABywd8I+Ku_MdV(2p#mK674Y{p43E$CuTl zO_L^}hRe!jidG}(@KcBFr&`A{YDUu54gm8-9G_I4=QtaYmMmZ*h53!XRSvT{Mk1I5 zBd>e{C#0g*V5bV_m*~?JQ{#(N#hjRzDjG?MHGh-*i+sob1uUg9|E%%f^4}5}>h4B* zGPYlb4@k*XC8^^lVeBu81X+wGiQ5+=;nY5?ocw|RRc<+wJviG#mmZNxA&8>1=AemRUo?t02-_|jRSC)khIe0nOm80e_dN2b2WsVxFM-$`l&MLNT-=y}imKECG6 zbyP(DuU`o_{x}*xK*kyL68AW3{_wBHCjRrovosbYP55AJqz7F#kGNSWr`5ZiK&%9D zDn{MF`c!$!O<9wB!T(7)&Ua_{;aTNbIZh+l2FwXV9_ZZBEd%~qv6pa>(Ugu@wvdb< zLWS5wluq0bY>71apie>Pu{)9Fr%Wilq!w$l(xbei!DM)k-)n=oA8ydyJgL$c=^PB7KI{HxD1 zvRzCFFf9bMo+6D}0`-;u#k&;@+0$tfPR+gi*UEdfK|69p&~_oyN)g^>+0e8|W=wnD z`65^x@lvb9f@5k{eagZ*Fmk~M8l3MQbAje)u1NZFKszqvEx00AZK=Hqev65(SG%0> z5n*7L$y@`B2@rpTHjmXAL0aKG_o+&@rsK3cUPp=synYEHDFzRF7p+|YYFddpRExK} zRiZ~T#6mucY|@CnWCbOArD18(l73~})c#mdDaQa7b*k>J!0f_q{mQ>wd-PuZ3%<%d z?Y5wA;+gk5I#;|}$bZAPg2V51lV1m3eSnL1D|{=yFsvs&uV`D9oBUbfTs=S0Fw58n zxK?BCCv9anIAz>_$N#VV|4+()R+RmRlEe22Q!8i)rF?|bt4VIs0(XRicVb*#wsnIZ zk6IxFg6MM2_#R=~4#9GshrdDzIBbKQPGFR74(GG32A<>syh=Y~9+8iZ1rDQgbg$}R z-qdK$sCp+Ajv1ka0-XIDnNH_CRRmK%^OH!=C`{mT4*Pp?ze?0IVdl{@n94=R@H+aL z%J68X2S4Ub;BV}pR>||0DX1i1sBK5iI0 zyiX@S^WSKik@7z~a0bg2Pnz?OFU=xCl3)oZ8`%Sgasj~X5>qD>K>WAL|A6@&|G(qE z(c9L4jDpLwgo#e4sE=(YNS{rUPWOWj5@|T!<6Wl)`D6Y?JC(HMBYL1Ol!B@Pu}P`X zJSL2Cpf;Mv%H+slN0y!jI+J_?&o`t~u`(9P-}vBl8#+yC(~S%MAxnojwn<0MD@ zKL%}4y(&*vSiK(} zhwhYYlu;v2(pDm2=X{ofkP$pFcABNeV5E8(BvN5Ro9PrCk*3HacNt8j9z(BL@*oF= z;**YEa+bl4hpY!tFdby66O&xaiAl9vTRf4k{EPe*@?XwSl^#iT4})heLT%SOpHB{1 zzQcF`P8Fr&Z^&Law@ZsiPR@d@;dpIP-xgg8lOxMC=z=g_LIf=v36=un)}LP$;UvKG zIuTgGwK_XJYJaA`4CYAt_^V0=muI;c&m-_bP%pVS&Yf>Uh8bRU`NzN7i?%v8+QTxT z)kR5~Vy+u{%#bckc7>X~!ARvDv^BlfiNj){NofR&i1|VhkrQ%(Lo&pC$i)*&5{JZp zxveOXbeMV;H*C`B zE9q2;+!4H#PMa7j^P_iZClnRRyBt;KJf=O2YH2!)1r8g5{Q<)fv|M>oyE46Mn%?Q8 z2TpH|d{s?J+eIaIB`e~$I_z=_Nz#R=PSLV@qAAA=%;$dbG1x?|8A4jb(3~)%$VJl7 zbDPYI0p)Zo2_jUBVAL^rBpK{*M!GwF*3Ox(D0jffg^pynMY?c^hT^!1pgHF184#km zb3v>YSo$7L&HhSuC7cBgwrp!ef&_08j%Glcw4EIMzECc=_+&{AL<8wC`Bab zq821&CXz>hEpmvlG7Y#g<=?*YFaH+#&kkYZEq7p!o{v1{WpW=~SnTDP^^q>%W#o@= zG}KuDIJqw%T3&e3AdL**KQq$f`-qiS$_IAKkaHdxtCAI69>1APA6JdS@S?Nh-5v5K z({ZeqmL2)dkHlIXmjhPN@j2&=$zYR2L>VH?Ujo;DHI})aIL{;m9n9|#?92!GZ!}ih zRfLi5c~7i=t$QdvWvHo2jxyClK02>w8cB%Kv@ZpFjRz z%k1#+^NL@)YwG{&II}M&a&5~MuV=nLdQILy!6qmPoR2j!=0- zh->j>^7O2ON6LpEN3GM54R+SKj`fjn5<6T(-{V(n$8s$K1hHpZ9D?I}s!h$0Ur1*W zRrw%i*>R+e;}Pr;xr(`)X5)j8SZGPUQa=&Vj6;!VZ*Q}h6GuZ?9YYgU7dEsiz(dN^ zEIznxNnJTi)99;GJ3b)gWX9qj7ZHB;Y2F^Dz1Z5KcR$HBemT#Sxv1)-%u+p5bJy<89!G6 z&JWCL>W8Wpo$%lT0_0yZ^qU;+)Y95C6&9XFK~uQc@j(j|(d32HVs+@CL%B|k*UVUs z)=$U!FHJsAr@NC{_ux`Qz+2I+N(&5@ivw|_jRd?r$_-KVM@H$3e<-$&>N!jO>tFwR zN$*rs5LXJ}PJyh_Cv17Z`N?G;;Q0jZPUxTTtYGLvS^FT*C)X3)m9qK-$DTeLFUc6x zc$F5CyZjQry0&mwxfmGlxkt=rmkE2#GK0tr=l9XR?Sk+ABAfpai^vAOUr02!1gQ_4L@{|r9UnF2$s@X;bt{nUcceFDYfY#K}TfXvt zU-pm5f8`9Bw0gt+q_(#CyLU_CV__?p149njkS7yu(N#u$y&SSit3;_Y#D(MiwKAvc zMFvUDE*G@8Sh>u^t3UN>4Mx@gFZi9gnu&9e>?`iy$P-ji;k?~XVpLt>P zXjaMrF*#wtX>AP<=rWc*mC`2kUNyHNneZAO894mx(GCLlc++3+NVatJ=cK&BsQ%un zpj{4>L|kdtg>wfmBfaa`PV_SApC|vH!~OHe|NFd8`2UEm|7n>|=>6&S)B4E=d4G!M zll-5QnfadDXNN<6kUn9H{INbE@|FLu{NLyQH2o(uv}X+bRwJ?**~BmsjOrgw(+=F& zR(RV=Wt6-S6k#y(H1FN4N*^#jz?XJXt)th;bDkDuakl-d=4b!+g1Hv41?PK?HUt;aAv^@8@57hP58b4UwiQ{lb1$*_XjQpW5?pk^hJLr@TMK^GW_s%FKK# z`aY?X{2+b87Wrdig2;dA_`jHgE_aHs?<&DpjqsLyTUI{0oL_q>A2VLfhu6j+%dy3- zyIi18t!n8=Y7S5M0(S1;M*YqKBj)hH!+r+P02-0@uG14b>6Ut_V2aYDOf6 zIj0h_MV^_?!m`8p2~7Dxe$HnPw8=wx+0e79(~kB>0sg_g$-3Sv+&@uJ6Fw}K0um`& z1z?!i0=pVh>3vc!)Wx3ymwy2HZJ23L1H%DQc0vsU=Y)>)2GfuPc!gX^ZR=ylm0JSF zmVr_}4PyrdP+!R{Knh1Z;Nl)?z*=3wtExl#&G3$WciPKTBUy8S0gFytS(f;Vqw z1w(+0LT?Osytwj}|G!86?UHUnTb-$GdtdVgEldB3orf~@e-v+HVCvYtuaLt(qN-!y zB`Upp_cW0l*s~R=%Z3@DvAx#uMAXwMrn!yJf?$h*PjVeFXKZ=IOptd5x>?hl7Wp&X znWA-U-?<#8Bs4k53U6noH4KY23a>$=Faremj9d0ySJb05e+j!a-j;5Z(y_LXe~Pw9 zT$Wl23N0tH_?7@W=X+t+ENj`zBXAOgrjwp&OozsVsSB9@VEMn^a}SnHUR+Og;CvIl z$}`Lrk5~Eb(k4AN^6KLK9y0=Q8s#h2rq52`cvLXfFMVOk)}N7LDV(O z&UZeBnf1@e_A@=FOzOuC7$z@VPbs^CqRqwUHUc21PX=;Io+WRh>@+X7x=rPCP6YgC z^raCW&R_p%Y&qw{`97TU@c~ywds(!*=3MlUI#NhQOviCDM-ZM0iQ1K;DKzU)ea+&u zn1o;UUu%nq;G%^n3v-d|e-aJr{a$>NY0ssXej5I;`c6WNLLT$ye~bLfXF7Vm<2<`@ z=u;YhqFbNFN521#|DV14@%Y~sm!!|HTGY4JvGv*_*KM% zei80}{p(+Mg1A#2dh@%2p^N(`T%W+(r7=w+_d@n`?dtav*iU&^?^k&5_;-i>fUVW*=;0x#wAH1o0*TpRIN41aJn7DROA+^c%7(h*&ONZ@=%VLe#cs1{Ta{U>7XxBI80mfaP9bLcY`pKAz^hwul-2aaM_b~4Ae&xTH zk(;vrG4j92K(0}aj{+!1n1k88Z=}W@VKU$IYM;_fkQS|x2+KlWE(~$2yzlfm@ z$v!Zl-dCOS9yU7jShew5QQn(M=}dn(H!t$2`tOnd4`3io9$s zYd)C7Yjt$Yb&ekQKCz0Z)*J(%3k?Ea_hy$dXu`&Jutu{1t|n}D6TDMj6l7)y^L(dc z7r!OZG+v>M)OeMV%butys8`%3yDKC>beo52Z0quudTNH@4p5{-chATVpdy(CJJLux7Iq z3cN=<%lK{@JMrPMwV+s&OU2f~+;-ar_{ifh)p|I1o1yTt#!jV(de8<)A_Btr zjU4P;*A9>AI!1TNy~@FJln>cX1^(W$+%?1~)A40z<+PeuF=54jF3RtXQrA-Rzc2rv z(Qx;E#UpQqTF0@%@!`68XHp{-iJb8Sp;M^GES~$N$f1 zxO@MV|9$yCRsM}FW9u+q7jKBHp2M0_sbgwrW1pjI4ttYut`nSaXh=T>M+ugj_z0x< zzZW|n>Uf*it2x^J*(CD3{5YDxiFfYccP8Mdn)p4XRHPCvodXt~6St^oVr+NC}^{30f{CPS}$h6_{MYU7?;|yF-AV9 z7_o>6<4793wsdkg9646_aWP`D+Hqgc4oNiU|9#P;vC=3Ze=O@1=0#nC>R3)k~HVX|u`)LxR|egqNW-Au7-|NqIo!jX|i6>HC{d^7)Q=#z*1`<^Qc zQ|Q^)T*2E3+fH!r-rZfFD9PWWELQOEczu`evpQd5RNq$w+{g@fjA8oCjKeb4Lp8b0XF3+lFY(l;Ve`pSTJErAW5wm92Cvxr?B z_dV(#G-Mr-KP;?P9`D0@kFW)_ZSPyw?!NN>cgg>S3rf$5VOEC2zV6?R+srcmlIP^XSRlBxEDgkS z!7z=U${IJya+1bO@X$bV;J2)A;mj3(5SkGNbQZl)H`8oU4FL~#K3EjusCZ4hd*AWo z65pcSD2{@Ur@J6(I1@6$Tp>28K&i~KtrySCcl`jk&U;qB}{t9Sft8+@GS4yG*LebP@R z9e39g@0q^U^An6+zM211y1(Q9=hs*MpRd1E{u_}NwnM%Z?F;xA>Mv+BFvy+l#Kxff zj8HZ!=e)pjf=yEtrSJ3f8ekq{!?EMW(EH0k?{mY=Vtt{aoc%*}Cmizy2K9QJ4*!@m zXdFfOj=F|p{}2^8)lWF4d0rsqCX%NU()7jQc;vjrcZYP_XlFj(VQDCyycVhR=PCLq zBDtl`Nkw$3Yn-4Owg--e5OUCWpRh)q&{W8KNahdF-u9SmiDbGv!1D+O!3Ic4wTp+Q-JQ z&d#C>=e+Rz{NehJ|DTorj{kqd_}`rEc%k*3h2{v){4I06t{}0RxADJmmkW?0soy2l zw`8q(4xV%>ur}IKo?Vq^<$SgD4CKcm-TU<`-i~+ z*;aRLWD9toD8*UcF0fQ=$?ZJ7N_bG!8iX&-`C8xV+k4I|#xCPo)0NvE1ADJ2bXfSI zk|5U+UMBy7DDq8(%dzrUt6P;*ykp0BzQ=;aqW4+IDhwH6IuWUl>esvEHl>A53-F;; zG_B#T&QkX=njrdK{X}S{pyYXX|*}=Q(bGvt| z_p->FL-Ph7Ki{>FZ1UXo6J0#-`qnPrQ@{PGT-=ra%KumXKS}>f<)12>dwG2n_Me;} zWI&IX=#w3Mrzc$&hA~ow&Q{kr-_}7|MsU}0B9abkva$k(NlXLC$sp-O$+-s{BQcui zdBL3}N6r&W!@|;_BMpq4GaY%pZ#k5cfkw{nIF==N81;+eSESDQRj|Tc{{f60%LsS! zJb;zQwxc{6&@iuy_e$__3{0LYAG;ib4mhi$P4oQxv)+<*)pl$Q{xSkxksf@@GxgEI zz(+J`_BoQbTxbZpmHWi|>}KwEnoJXNj+4tQoPTWZhpn6TrleUG{R#c0j?{==Ty#)t zMGgj%m=M$a@x2zSnY{iX7M15Y<}+~Ly&j_>&YKRW)W-1O*lkGK%g>C5(o5KJF1()SgaylD+mpjnKC_;EhKjOp z`p+}zL6ZcyUm820RF7lUC3SX=N$-L<+y1?9evD4FQV{%}^XwGPD*aC3O+31RDVy}& zyIt8?hh4ta`yG9&GCLlAQdU2p=WgJz1*|7UJMZ=3m$6v8XBcpBi?Gw$f*Ej{DRr(V z1tPA&8@24& zf)qJT*?Kv>$bUv4)t0m&9lF8|&?I&y98Cs8BUg{#bopUxCDSP-*14y7#0pJD^ZdHf z1Qx`&vpJNGrSdTwx{P^~I{_Tuc^GRMM-`Y}2dX+AlUUu?+VjmEI`@QYiRL@&%hHen z97km(bvV;6x4sK_8w(j0`6~iG9r6bGClS|D4QD1=#aB8CDf|NFjj3IBbS^kZ@kc0U zkM8K^WS2yaBoJyxz2vW_|84nSzu&><`@eqt{|v?orj7S^_1fXn4c;fdeUd(5-qmRZ z?=BDE*(ROg@V#wt=uQ5+{$vY!p8BrIcl`g#|Ic9j&&xkGEaoveH%VJV(x8eWd^T-@ zE(=F7bXP=s*aSRPF>;Fdc+F1!TyL)(Y?vIK(b{PX#Mo}(Bfz+hA7A>954XnYBqDk= zCo+8EJ})`oZIE<~V{R1=b7>A2Kb|Gn6fo0Il~LWZBYSX)3XXa~x$|SGk(Y6wALDb2 z&f%SByC3Bc3VKlQtksDtK1NvhP(Q*g;b=Z`VITmd{p2el(O^|ijkZo&%2}?}QIZ~f zcuqiquQ?X1%FpztHq;v&dXsPUen;P`%#w#S2Mc9K zP>me#LOva+1fzv7o_lG50|jQ%qAB!zo`0Y4_)&?L@G=`^Ryg4k zu{*?b8@PWMyVmA3lwmpEl}n3ec~yK=JDlWDrmB@Mm3S?ND(Px>uxG+S<(zn5pgpjV zaG*>%+J$tyCb@dVhh9-BIPOvZBR__FNG%c^xqS(=AJkfR!h9zPE9LcxK-mJuP8rGO zJ??i3Z^B%+TG@yxcryKI3ajjBt!8u~qk>L*_RC!;FUna;O4PacP{UMYH4If$byz#`X@Zu^`F^qXBqntp2$@uRPO7_YH;>}Py6n~ z+f?fY=T3%2?)!qsKXLs3%Kz&3k6eG9{PP{z(6GbJ;CQb<1#QuYV+W)1Ni3oyspiKT zOgb=DYL5TmaF=y8KnpIs z`S5rUPqar)=K1aBXR}L0=ZkS<

Zf{&xR(_Gkr9_6Er1pXx@Ck_@44$XCgG)f$% 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 $!;6UOlP3?3

nz8 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 literal 0 HcmV?d00001 diff --git a/apps/extension/src/background/background.ts b/apps/extension/src/background/background.ts new file mode 100644 index 00000000000..3f8f27d545c --- /dev/null +++ b/apps/extension/src/background/background.ts @@ -0,0 +1,91 @@ +import 'symbol-observable' // Needed by `reduxed-chrome-storage` as polyfill, order matters + +import { initStatSigForBrowserScripts } from 'src/app/StatsigProvider' +import { focusOrCreateOnboardingTab } from 'src/app/navigation/utils' +import { SentryAppNameTag, initSentryForBrowserScripts } from 'src/app/sentry' +import { initExtensionAnalytics } from 'src/app/utils/analytics' +import { getLocalUserId } from 'src/app/utils/storage' +import { initMessageBridge } from 'src/background/backgroundDappRequests' +import { backgroundStore } from 'src/background/backgroundStore' +import { backgroundToSidePanelMessageChannel } from 'src/background/messagePassing/messageChannels' +import { BackgroundToSidePanelRequestType } from 'src/background/messagePassing/types/requests' +import { setSidePanelBehavior, setSidePanelOptions } from 'src/background/utils/chromeSidePanelUtils' +import { readIsOnboardedFromStorage } from 'src/background/utils/persistedStateUtils' +import { logger } from 'utilities/src/logger/logger' + +export const EXTENSION_ID = chrome.runtime.id + +initMessageBridge() + +async function initApp(): Promise { + const userId = await getLocalUserId() + initSentryForBrowserScripts(SentryAppNameTag.Background, userId) + await initStatSigForBrowserScripts() + await initExtensionAnalytics() + + // Enables or disables sidebar based on onboarding status + // Injected script will reject any requests if not onboarded + backgroundStore.addOnboardingChangedListener(async (isOnboarded) => { + if (isOnboarded) { + await enableSidebar() + } else { + await disableSidebar() + await focusOrCreateOnboardingTab() + } + }) + + await backgroundStore.init() +} + +chrome.tabs.onActivated.addListener(onTabChange) +chrome.tabs.onUpdated.addListener(onTabChange) + +chrome.action.onClicked.addListener(async () => { + await checkAndHandleOnboarding() +}) + +chrome.runtime.onInstalled.addListener(async () => { + await checkAndHandleOnboarding() +}) + +// Utility Functions +async function checkAndHandleOnboarding(): Promise { + const isOnboarded = await readIsOnboardedFromStorage() + + if (!isOnboarded) { + await disableSidebar() + await focusOrCreateOnboardingTab() + } else { + await enableSidebar() + } +} + +async function enableSidebar(): Promise { + await setSidePanelOptions({ enabled: true }) + await setSidePanelBehavior({ openPanelOnActionClick: true }) +} + +async function disableSidebar(): Promise { + await setSidePanelOptions({ enabled: false }) + await setSidePanelBehavior({ openPanelOnActionClick: false }) +} + +/** Fires an event whenever a tab is changed so the sidebar can reflect the current connection status properly. */ +async function onTabChange(): Promise { + try { + await backgroundToSidePanelMessageChannel.sendMessage({ + type: BackgroundToSidePanelRequestType.TabActivated, + }) + } catch (e) { + // an error will be thrown if the sidebar is not open. This is expected and in this case there is no action to be taken anyways so ignore. + } +} + +initApp().catch((error) => { + logger.error(error, { + tags: { + file: 'background/background.ts', + function: 'initApp', + }, + }) +}) diff --git a/apps/extension/src/background/backgroundDappRequests.ts b/apps/extension/src/background/backgroundDappRequests.ts new file mode 100644 index 00000000000..12f142cafd3 --- /dev/null +++ b/apps/extension/src/background/backgroundDappRequests.ts @@ -0,0 +1,267 @@ +import { rpcErrors, serializeError } from '@metamask/rpc-errors' +import { removeDappConnection } from 'src/app/features/dapp/actions' +import { changeChain } from 'src/app/features/dapp/changeChain' +import { dappStore } from 'src/app/features/dapp/store' +import { SenderTabInfo } from 'src/app/features/dappRequests/slice' +import { + ChangeChainRequest, + DappRequest, + DappRequestType, + DappResponseType, + RevokePermissionsRequest, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { extractBaseUrl } from 'src/app/features/dappRequests/utils' +import { focusOrCreateOnboardingTab } from 'src/app/navigation/utils' +import { + DappBackgroundPortChannel, + contentScriptToBackgroundMessageChannel, + contentScriptUtilityMessageChannel, + createBackgroundToSidePanelMessagePort, + dappResponseMessageChannel, +} from 'src/background/messagePassing/messageChannels' +import { + BackgroundToSidePanelRequestType, + ContentScriptUtilityMessageType, + DappRequestMessage, +} from 'src/background/messagePassing/types/requests' +import { openSidePanel } from 'src/background/utils/chromeSidePanelUtils' +import { ExtensionEthMethods } from 'src/contentScript/methodHandlers/requestMethods' +import { hexadecimalStringToInt, toSupportedChainId } from 'uniswap/src/features/chains/utils' +import { ExtensionEventName } from 'uniswap/src/features/telemetry/constants/extension' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { RPCType } from 'uniswap/src/types/chains' +import { logger } from 'utilities/src/logger/logger' +import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' +import { walletContextValue } from 'wallet/src/features/wallet/context' + +const INACTIVITY_ALARM_NAME = 'inactivity' +// TODO(EXT-546): add a setting to turn off the auto-lock setting +const INACTIVITY_TIMEOUT_MINUTES = 60 * 24 // 1 day + +const windowIdToSidebarPortMap = new Map() +// TODO EXT-1020 add timeout support to avoid memory leaks +const windowIdToPendingRequestsMap = new Map() + +chrome.alarms.onAlarm.addListener(async (alarm) => { + if (alarm.name !== INACTIVITY_ALARM_NAME) { + return + } + + await lockWallet() +}) + +async function lockWallet(): Promise { + logger.debug('background', 'lockWallet', 'Locking wallet via background script') + sendAnalyticsEvent(ExtensionEventName.ChangeLockedState, { locked: true, location: 'background' }) + await Keyring.lock() +} + +chrome.runtime.onConnect.addListener(async (port) => { + await chrome.alarms.clear(INACTIVITY_ALARM_NAME) + + const windowId = port.name + const portChannel = createBackgroundToSidePanelMessagePort(port) + windowIdToSidebarPortMap.set(windowId, portChannel) + + const pendingRequests = windowIdToPendingRequestsMap.get(windowId) + + if (pendingRequests) { + for (const pendingRequest of pendingRequests) { + await portChannel.sendMessage(pendingRequest) + } + windowIdToPendingRequestsMap.delete(windowId) + } + + // Only gets called when `port.disconnect()` is called or `port.sendMessage()` for a disconnected port + port.onDisconnect.addListener(async () => { + windowIdToSidebarPortMap.delete(windowId) + + if (windowIdToSidebarPortMap.size <= 0) { + await chrome.alarms.create(INACTIVITY_ALARM_NAME, { + delayInMinutes: INACTIVITY_TIMEOUT_MINUTES, + }) + } + }) +}) + +let initialized = false +export function initMessageBridge(): void { + if (initialized) { + return + } + + contentScriptToBackgroundMessageChannel.addAllMessageListener(async (message, sender) => { + // The side panel needs to be opened here because it has to be in response to a user action. + // Further down in the chain it will be opened in response to a message from the background script. + + if (sender?.tab?.id === undefined || sender?.tab?.url === undefined) { + logger.error(new Error('sender.tab id or url is not defined'), { + tags: { + file: 'background/background.ts', + function: 'dappMessageListener', + }, + }) + return + } + + const senderTabInfo = { + id: sender.tab.id, + url: sender.tab.url, + favIconUrl: sender.tab.favIconUrl, + } + + const isSidebarActive = Boolean(windowIdToSidebarPortMap.get(sender.tab.windowId.toString())) + if (!isSidebarActive) { + const handled = handleSilentBackgroundRequest(message, senderTabInfo) + if (handled) { + return + } + } + + await handleSidebarRequest(message, sender.tab.windowId, senderTabInfo) + }) + + contentScriptUtilityMessageChannel.addMessageListener(ContentScriptUtilityMessageType.ErrorLog, async (message) => { + // Need to re-construct the error object from the message since the error object is not serializable + logger.error(new Error(message.message), { + tags: { + file: message.fileName, + function: message.functionName, + ...message.tags, + }, + }) + }) + + contentScriptUtilityMessageChannel.addMessageListener(ContentScriptUtilityMessageType.InfoLog, async (message) => { + logger.info(message.fileName, message.functionName, message.message, message.tags) + }) + + contentScriptUtilityMessageChannel.addMessageListener(ContentScriptUtilityMessageType.FocusOnboardingTab, () => { + focusOrCreateOnboardingTab().catch((error) => + logger.error(error, { + tags: { + file: 'backgroundDappRequests.ts', + function: 'contentScriptUtilityMessageListener', + }, + }), + ) + }) + contentScriptUtilityMessageChannel.addMessageListener(ContentScriptUtilityMessageType.FocusOnboardingTab, () => { + focusOrCreateOnboardingTab().catch((error) => + logger.error(error, { + tags: { + file: 'backgroundDappRequests.ts', + function: 'contentScriptUtilityMessageListener', + }, + }), + ) + }) + + initialized = true +} + +/** + * Dapp requests that should be silently handled by the background worker as a proxy if the sidebar is not open + * Avoids async to trigger open side panel as quickly as possible + * @returns true if the request was handled, false otherwise + */ +function handleSilentBackgroundRequest(request: DappRequest, senderTabInfo: SenderTabInfo): boolean { + const dappUrl = extractBaseUrl(senderTabInfo.url) + + if (!dappUrl) { + return false + } + + switch (request.type) { + case DappRequestType.ChangeChain: + handleChainChange(request, dappUrl, senderTabInfo.id).catch(() => {}) + return true + case DappRequestType.RevokePermissions: + handleRevokePermissions(request, dappUrl, senderTabInfo.id).catch(() => {}) + return true + default: + return false + } +} + +async function handleChainChange(request: ChangeChainRequest, dappUrl: string, tabId: number): Promise { + await dappStore.init() + const { activeConnectedAddress } = dappStore.getDappInfo(dappUrl) ?? {} + const updatedChainId = toSupportedChainId(hexadecimalStringToInt(request.chainId)) + const provider = updatedChainId ? walletContextValue.providers.getProvider(updatedChainId, RPCType.Public) : undefined + const response = changeChain({ + provider, + dappUrl, + updatedChainId, + requestId: request.requestId, + activeConnectedAddress, + }) + + await dappResponseMessageChannel.sendMessageToTab(tabId, response) +} + +async function handleRevokePermissions( + request: RevokePermissionsRequest, + dappUrl: string, + tabId: number, +): Promise { + await dappStore.init() + const revokedPermissions = Object.keys(request.permissions) + + if (revokedPermissions.includes(ExtensionEthMethods.eth_accounts)) { + await removeDappConnection(dappUrl) + await dappResponseMessageChannel.sendMessageToTab(tabId, { + type: DappResponseType.RevokePermissionsResponse, + requestId: request.requestId, + }) + } else { + await dappResponseMessageChannel.sendMessageToTab(tabId, { + type: DappResponseType.ErrorResponse, + error: serializeError(rpcErrors.methodNotFound()), + requestId: request.requestId, + }) + } +} + +class ExpectedNoPortError extends Error { + constructor() { + super('No port in storage to post message to') + } +} + +async function handleSidebarRequest( + request: DappRequest, + windowId: number, + senderTabInfo: DappRequestMessage['senderTabInfo'], +): Promise { + const windowIdString = windowId.toString() + const portChannel = windowIdToSidebarPortMap.get(windowIdString) + const message: DappRequestMessage = { + type: BackgroundToSidePanelRequestType.DappRequestReceived, + dappRequest: request, + senderTabInfo, + isSidebarClosed: !portChannel, + } + + try { + if (!portChannel) { + throw new ExpectedNoPortError() + } + + await portChannel.sendMessage(message) + } catch (error) { + await openSidePanel(senderTabInfo.id, windowId) + + windowIdToPendingRequestsMap.set(windowIdString, windowIdToPendingRequestsMap.get(windowIdString) ?? []) + windowIdToPendingRequestsMap.get(windowIdString)?.push(message) + + if (!(error instanceof ExpectedNoPortError)) { + logger.error(error, { + tags: { + file: 'backgroundDappRequests.ts', + function: 'handleSidebarRequest', + }, + }) + } + } +} diff --git a/apps/extension/src/background/backgroundStore.ts b/apps/extension/src/background/backgroundStore.ts new file mode 100644 index 00000000000..6664de5a803 --- /dev/null +++ b/apps/extension/src/background/backgroundStore.ts @@ -0,0 +1,71 @@ +import { readIsOnboardedFromStorage, readReduxStateFromStorage } from 'src/background/utils/persistedStateUtils' +import { WebState } from 'src/store/webReducer' +import { logger } from 'utilities/src/logger/logger' + +type BackgroundState = { + isOnboarded: boolean +} + +const state: BackgroundState = { + isOnboarded: false, +} + +type OnboardingChangedListener = (isOnboarded: boolean) => void +const onboardingChangedListeners: OnboardingChangedListener[] = [] + +// Allows for multiple init attempts from different sources +let initPromise: Promise | undefined + +async function init(): Promise { + if (!initPromise) { + initPromise = initInternal() + } + + return initPromise +} + +async function initInternal(): Promise { + try { + const reduxState = await readReduxStateFromStorage() + + if (!reduxState) { + logger.debug('backgroundStore.ts', 'initInternal', 'Failed to read redux state from storage') + } + + await updateFromReduxState(reduxState) + chrome.storage.local.onChanged.addListener(async (changes) => { + const newReduxState = await readReduxStateFromStorage(changes) + await updateFromReduxState(newReduxState) + }) + } catch (error) { + logger.error(error, { + tags: { + file: 'backgroundStore.ts', + function: 'init', + }, + }) + } +} + +async function updateFromReduxState(reduxState: WebState | undefined): Promise { + if (reduxState) { + updateIsOnboarded(await readIsOnboardedFromStorage()) // Can replace this with selector after migration is complete + } +} + +function updateIsOnboarded(isOnboarded: boolean): void { + if (isOnboarded !== state.isOnboarded) { + state.isOnboarded = isOnboarded + onboardingChangedListeners.forEach((listener) => listener(isOnboarded)) + } +} + +function addOnboardingChangedListener(listener: OnboardingChangedListener): void { + onboardingChangedListeners.push(listener) +} + +export const backgroundStore = { + state, + init, + addOnboardingChangedListener, +} diff --git a/apps/extension/src/background/messagePassing/messageChannels.ts b/apps/extension/src/background/messagePassing/messageChannels.ts new file mode 100644 index 00000000000..ffadf741f2f --- /dev/null +++ b/apps/extension/src/background/messagePassing/messageChannels.ts @@ -0,0 +1,339 @@ +import { + AccountResponse, + AccountResponseSchema, + ChainIdResponse, + ChainIdResponseSchema, + ChangeChainRequest, + ChangeChainRequestSchema, + ChangeChainResponse, + ChangeChainResponseSchema, + DappRequestType, + DappResponseType, + ErrorResponse, + ErrorResponseSchema, + GetAccountRequest, + GetAccountRequestSchema, + GetChainIdRequest, + GetChainIdRequestSchema, + GetPermissionsRequest, + GetPermissionsRequestSchema, + GetPermissionsResponse, + GetPermissionsResponseSchema, + RequestAccountRequest, + RequestAccountRequestSchema, + RequestPermissionsRequest, + RequestPermissionsRequestSchema, + RequestPermissionsResponse, + RequestPermissionsResponseSchema, + RevokePermissionsRequest, + RevokePermissionsRequestSchema, + RevokePermissionsResponse, + RevokePermissionsResponseSchema, + SendTransactionRequest, + SendTransactionRequestSchema, + SendTransactionResponse, + SendTransactionResponseSchema, + SignMessageRequest, + SignMessageRequestSchema, + SignMessageResponse, + SignMessageResponseSchema, + SignTransactionRequest, + SignTransactionRequestSchema, + SignTransactionResponse, + SignTransactionResponseSchema, + SignTypedDataRequest, + SignTypedDataRequestSchema, + SignTypedDataResponse, + SignTypedDataResponseSchema, + UniswapOpenSidebarRequest, + UniswapOpenSidebarRequestSchema, + UniswapOpenSidebarResponse, + UniswapOpenSidebarResponseSchema, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { + MessageParsers, + TypedPortMessageChannel, + TypedRuntimeMessageChannel, +} from 'src/background/messagePassing/platform' +import { + HighlightOnboardingTabMessage, + HighlightOnboardingTabMessageSchema, + OnboardingMessageType, + SidebarOpenedMessage, + SidebarOpenedMessageSchema, +} from 'src/background/messagePassing/types/ExtensionMessages' +import { + BackgroundToSidePanelRequestType, + ContentScriptUtilityMessageType, + DappRequestMessage, + DappRequestMessageSchema, + ErrorLog, + ErrorLogSchema, + ExtensionChainChange, + ExtensionChainChangeSchema, + ExtensionToDappRequestType, + FocusOnboardingMessage, + FocusOnboardingMessageSchema, + InfoLog, + InfoLogSchema, + TabActivatedRequest, + TabActivatedRequestSchema, + UpdateConnectionRequest, + UpdateConnectionRequestSchema, +} from 'src/background/messagePassing/types/requests' + +export enum MessageChannelName { + DappContentScript = 'DappContentScript', + DappBackground = 'DappBackground', + DappResponse = 'DappResponse', + Onboarding = 'Onboarding', + ExternalDapp = 'ExternalDapp', + ContentScriptUtility = 'ContentScriptUtility', +} + +type OnboardingMessageSchemas = { + [OnboardingMessageType.HighlightOnboardingTab]: HighlightOnboardingTabMessage + [OnboardingMessageType.SidebarOpened]: SidebarOpenedMessage +} +const onboardingMessageParsers: MessageParsers = { + [OnboardingMessageType.HighlightOnboardingTab]: (message): HighlightOnboardingTabMessage => + HighlightOnboardingTabMessageSchema.parse(message), + [OnboardingMessageType.SidebarOpened]: (message): SidebarOpenedMessage => SidebarOpenedMessageSchema.parse(message), +} + +function createOnboardingMessageChannel(): TypedRuntimeMessageChannel { + return new TypedRuntimeMessageChannel({ + channelName: MessageChannelName.Onboarding, + messageParsers: onboardingMessageParsers, + }) +} + +export function createOnboardingMessagePort( + port: chrome.runtime.Port, +): TypedPortMessageChannel { + return new TypedPortMessageChannel({ + channelName: MessageChannelName.Onboarding, + messageParsers: onboardingMessageParsers, + port, + }) +} + +type BackgroundToSidePanelMessageSchemas = { + [BackgroundToSidePanelRequestType.DappRequestReceived]: DappRequestMessage + [BackgroundToSidePanelRequestType.TabActivated]: TabActivatedRequest +} +const backgroundToSidePanelMessageParsers: MessageParsers< + BackgroundToSidePanelRequestType, + BackgroundToSidePanelMessageSchemas +> = { + [BackgroundToSidePanelRequestType.DappRequestReceived]: (message): DappRequestMessage => + DappRequestMessageSchema.parse(message), + [BackgroundToSidePanelRequestType.TabActivated]: (message): TabActivatedRequest => + TabActivatedRequestSchema.parse(message), +} + +function createBackgroundToSidePanelMessageChannel(): TypedRuntimeMessageChannel< + BackgroundToSidePanelRequestType, + BackgroundToSidePanelMessageSchemas +> { + return new TypedRuntimeMessageChannel({ + channelName: MessageChannelName.DappBackground, + messageParsers: backgroundToSidePanelMessageParsers, + }) +} + +export function createBackgroundToSidePanelMessagePort( + port: chrome.runtime.Port, +): TypedPortMessageChannel { + return new TypedPortMessageChannel({ + channelName: MessageChannelName.DappBackground, + messageParsers: backgroundToSidePanelMessageParsers, + port, + }) +} + +type ContentScriptToBackgroundMessageSchemas = { + [DappRequestType.ChangeChain]: ChangeChainRequest + [DappRequestType.GetAccount]: GetAccountRequest + [DappRequestType.GetChainId]: GetChainIdRequest + [DappRequestType.GetPermissions]: GetPermissionsRequest + [DappRequestType.RequestAccount]: RequestAccountRequest + [DappRequestType.RequestPermissions]: RequestPermissionsRequest + [DappRequestType.RevokePermissions]: RevokePermissionsRequest + [DappRequestType.SendTransaction]: SendTransactionRequest + [DappRequestType.SignMessage]: SignMessageRequest + [DappRequestType.SignTransaction]: SignTransactionRequest + [DappRequestType.SignTypedData]: SignTypedDataRequest + [DappRequestType.UniswapOpenSidebar]: UniswapOpenSidebarRequest +} +const contentScriptToBackgroundMessageParsers: MessageParsers< + DappRequestType, + ContentScriptToBackgroundMessageSchemas +> = { + [DappRequestType.ChangeChain]: (message): ChangeChainRequest => ChangeChainRequestSchema.parse(message), + [DappRequestType.GetAccount]: (message): GetAccountRequest => GetAccountRequestSchema.parse(message), + [DappRequestType.GetChainId]: (message): GetChainIdRequest => GetChainIdRequestSchema.parse(message), + [DappRequestType.GetPermissions]: (message): GetPermissionsRequest => GetPermissionsRequestSchema.parse(message), + [DappRequestType.RequestAccount]: (message): RequestAccountRequest => RequestAccountRequestSchema.parse(message), + [DappRequestType.RequestPermissions]: (message): RequestPermissionsRequest => + RequestPermissionsRequestSchema.parse(message), + [DappRequestType.RevokePermissions]: (message): RevokePermissionsRequest => + RevokePermissionsRequestSchema.parse(message), + [DappRequestType.SendTransaction]: (message): SendTransactionRequest => SendTransactionRequestSchema.parse(message), + [DappRequestType.SignMessage]: (message): SignMessageRequest => SignMessageRequestSchema.parse(message), + [DappRequestType.SignTransaction]: (message): SignTransactionRequest => SignTransactionRequestSchema.parse(message), + [DappRequestType.SignTypedData]: (message): SignTypedDataRequest => SignTypedDataRequestSchema.parse(message), + [DappRequestType.UniswapOpenSidebar]: (message): UniswapOpenSidebarRequest => + UniswapOpenSidebarRequestSchema.parse(message), +} + +function createContentScriptToBackgroundMessageChannel(): TypedRuntimeMessageChannel< + DappRequestType, + ContentScriptToBackgroundMessageSchemas +> { + return new TypedRuntimeMessageChannel({ + channelName: MessageChannelName.DappContentScript, + messageParsers: contentScriptToBackgroundMessageParsers, + canReceiveFromContentScript: true, + }) +} + +export function createContentScriptToBackgroundMessagePort( + port: chrome.runtime.Port, +): TypedPortMessageChannel { + return new TypedPortMessageChannel({ + channelName: MessageChannelName.DappContentScript, + messageParsers: contentScriptToBackgroundMessageParsers, + canReceiveFromContentScript: true, + port, + }) +} + +type DappResponseMessageSchemas = { + [DappResponseType.AccountResponse]: AccountResponse + [DappResponseType.ChainChangeResponse]: ChangeChainResponse + [DappResponseType.ChainIdResponse]: ChainIdResponse + [DappResponseType.ErrorResponse]: ErrorResponse + [DappResponseType.GetPermissionsResponse]: GetPermissionsResponse + [DappResponseType.RequestPermissionsResponse]: RequestPermissionsResponse + [DappResponseType.RevokePermissionsResponse]: RevokePermissionsResponse + [DappResponseType.SendTransactionResponse]: SendTransactionResponse + [DappResponseType.SignMessageResponse]: SignMessageResponse + [DappResponseType.SignTransactionResponse]: SignTransactionResponse + [DappResponseType.SignTypedDataResponse]: SignTypedDataResponse + [DappResponseType.UniswapOpenSidebarResponse]: UniswapOpenSidebarResponse +} +const dappResponseMessageParsers: MessageParsers = { + [DappResponseType.AccountResponse]: (message): AccountResponse => AccountResponseSchema.parse(message), + [DappResponseType.ChainChangeResponse]: (message): ChangeChainResponse => ChangeChainResponseSchema.parse(message), + [DappResponseType.ChainIdResponse]: (message): ChainIdResponse => ChainIdResponseSchema.parse(message), + [DappResponseType.ErrorResponse]: (message): ErrorResponse => ErrorResponseSchema.parse(message), + [DappResponseType.GetPermissionsResponse]: (message): GetPermissionsResponse => + GetPermissionsResponseSchema.parse(message), + [DappResponseType.RequestPermissionsResponse]: (message): RequestPermissionsResponse => + RequestPermissionsResponseSchema.parse(message), + [DappResponseType.RevokePermissionsResponse]: (message): RevokePermissionsResponse => + RevokePermissionsResponseSchema.parse(message), + [DappResponseType.SendTransactionResponse]: (message): SendTransactionResponse => + SendTransactionResponseSchema.parse(message), + [DappResponseType.SignMessageResponse]: (message): SignMessageResponse => SignMessageResponseSchema.parse(message), + [DappResponseType.SignTransactionResponse]: (message): SignTransactionResponse => + SignTransactionResponseSchema.parse(message), + [DappResponseType.SignTypedDataResponse]: (message): SignTypedDataResponse => + SignTypedDataResponseSchema.parse(message), + [DappResponseType.UniswapOpenSidebarResponse]: (message): UniswapOpenSidebarResponse => + UniswapOpenSidebarResponseSchema.parse(message), +} + +function createDappResponseMessageChannel(): TypedRuntimeMessageChannel { + return new TypedRuntimeMessageChannel({ + channelName: MessageChannelName.DappResponse, + messageParsers: dappResponseMessageParsers, + }) +} + +export function createDappResponseMessagePort( + port: chrome.runtime.Port, +): TypedPortMessageChannel { + return new TypedPortMessageChannel({ + channelName: MessageChannelName.DappResponse, + messageParsers: dappResponseMessageParsers, + port, + }) +} + +type ExternalDappMessageSchemas = { + [ExtensionToDappRequestType.SwitchChain]: ExtensionChainChange + [ExtensionToDappRequestType.UpdateConnections]: UpdateConnectionRequest +} +const externalDappMessageParsers: MessageParsers = { + [ExtensionToDappRequestType.SwitchChain]: (message): ExtensionChainChange => + ExtensionChainChangeSchema.parse(message), + [ExtensionToDappRequestType.UpdateConnections]: (message): UpdateConnectionRequest => + UpdateConnectionRequestSchema.parse(message), +} + +export function createExternalDappMessageChannel(): TypedRuntimeMessageChannel< + ExtensionToDappRequestType, + ExternalDappMessageSchemas +> { + return new TypedRuntimeMessageChannel({ + channelName: MessageChannelName.ExternalDapp, + messageParsers: externalDappMessageParsers, + }) +} + +export function createExternalDappMessagePort( + port: chrome.runtime.Port, +): TypedPortMessageChannel { + return new TypedPortMessageChannel({ + channelName: MessageChannelName.ExternalDapp, + messageParsers: externalDappMessageParsers, + port, + }) +} + +type ContentScriptUtilityMessageSchemas = { + [ContentScriptUtilityMessageType.FocusOnboardingTab]: FocusOnboardingMessage + [ContentScriptUtilityMessageType.ErrorLog]: ErrorLog + [ContentScriptUtilityMessageType.InfoLog]: InfoLog +} +const contentScriptUtilityMessageParsers: MessageParsers< + ContentScriptUtilityMessageType, + ContentScriptUtilityMessageSchemas +> = { + [ContentScriptUtilityMessageType.FocusOnboardingTab]: (message): FocusOnboardingMessage => + FocusOnboardingMessageSchema.parse(message), + [ContentScriptUtilityMessageType.ErrorLog]: (message): ErrorLog => ErrorLogSchema.parse(message), + [ContentScriptUtilityMessageType.InfoLog]: (message): InfoLog => InfoLogSchema.parse(message), +} + +export function createContentScriptUtilityMessageChannel(): TypedRuntimeMessageChannel< + ContentScriptUtilityMessageType, + ContentScriptUtilityMessageSchemas +> { + return new TypedRuntimeMessageChannel({ + channelName: MessageChannelName.ContentScriptUtility, + messageParsers: contentScriptUtilityMessageParsers, + canReceiveFromContentScript: true, + }) +} + +export function createContentScriptUtilityMessagePort( + port: chrome.runtime.Port, +): TypedPortMessageChannel { + return new TypedPortMessageChannel({ + channelName: MessageChannelName.ExternalDapp, + messageParsers: contentScriptUtilityMessageParsers, + port, + }) +} + +export const onboardingMessageChannel = createOnboardingMessageChannel() +export const backgroundToSidePanelMessageChannel = createBackgroundToSidePanelMessageChannel() +export const contentScriptToBackgroundMessageChannel = createContentScriptToBackgroundMessageChannel() +export const dappResponseMessageChannel = createDappResponseMessageChannel() +export const externalDappMessageChannel = createExternalDappMessageChannel() +export const contentScriptUtilityMessageChannel = createContentScriptUtilityMessageChannel() + +export type DappBackgroundPortChannel = ReturnType diff --git a/apps/extension/src/background/messagePassing/messageTypes.ts b/apps/extension/src/background/messagePassing/messageTypes.ts new file mode 100644 index 00000000000..a73e41bb09b --- /dev/null +++ b/apps/extension/src/background/messagePassing/messageTypes.ts @@ -0,0 +1,7 @@ +import { z } from 'zod' + +// SCHEMAS +export const MessageSchema = z.object({}) + +// TYPES +export type Message = z.infer diff --git a/apps/extension/src/background/messagePassing/messageUtils.ts b/apps/extension/src/background/messagePassing/messageUtils.ts new file mode 100644 index 00000000000..86209df7fc6 --- /dev/null +++ b/apps/extension/src/background/messagePassing/messageUtils.ts @@ -0,0 +1,28 @@ +import { Message } from 'src/background/messagePassing/messageTypes' + +type MessageValidator = (message: unknown) => message is T + +type WindowMessageHandler = (message: T, source: MessageEventSource | null) => void +type InvalidWindowMessageHandler = (message: unknown, source?: MessageEventSource | null) => void + +// Message listener for chrome.window with validation logic. Used only to receive external messages from dapps. +export function addWindowMessageListener( + validator: MessageValidator, + handler: WindowMessageHandler, + invalidMessageHandler?: InvalidWindowMessageHandler, +): (event: MessageEvent) => void { + const listener = (event: MessageEvent): void => { + if (event.source !== window || !validator(event.data)) { + invalidMessageHandler?.(event.data, event.source) + return + } + + handler(event.data, event.source) + } + window.addEventListener('message', listener) + return listener +} + +export function removeWindowMessageListener(listener: (event: MessageEvent) => void): void { + window.removeEventListener('message', listener) +} diff --git a/apps/extension/src/background/messagePassing/platform.ts b/apps/extension/src/background/messagePassing/platform.ts new file mode 100644 index 00000000000..a7ab70c0d2e --- /dev/null +++ b/apps/extension/src/background/messagePassing/platform.ts @@ -0,0 +1,300 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { logger } from 'utilities/src/logger/logger' + +const EXTENSION_CONTEXT_INVALIDATED_CHROMIUM_ERROR = 'Extension context invalidated.' + +type MessageListener = (message: T, sender?: chrome.runtime.MessageSender) => void +class ChromeMessageChannel { + protected readonly channelName: string + readonly port?: chrome.runtime.Port + + protected listeners: MessageListener[] = [] + + constructor({ + channelName, + port, + canReceiveFromContentScript = false, + }: { + channelName: string + canReceiveFromContentScript?: boolean + port?: chrome.runtime.Port + }) { + this.channelName = channelName + this.port = port + + const mainListener: MessageListener = (message, sender) => { + const targetMessage = message[this.channelName] + + if (targetMessage !== undefined) { + if (sender?.tab !== undefined && !canReceiveFromContentScript) { + return + } + + if (sender?.id !== chrome.runtime.id && !this.port) { + return + } + + this.listeners.forEach((listener) => { + listener(targetMessage, sender) + }) + } + } + + if (this.port) { + this.port.onMessage.addListener((message, senderPort) => mainListener(message, senderPort.sender)) + } else { + // eslint-disable-next-line no-restricted-syntax + chrome.runtime.onMessage.addListener(mainListener) + } + + this.sendMessage = this.sendMessage.bind(this) + this.sendMessageToTab = this.sendMessageToTab.bind(this) + this.sendMessageToTabUrl = this.sendMessageToTabUrl.bind(this) + this.addMessageListener = this.addMessageListener.bind(this) + this.removeMessageListener = this.removeMessageListener.bind(this) + } + + async sendMessage(message: any): Promise { + if (this.port) { + this.port.postMessage({ [this.channelName]: message }) + } else { + // eslint-disable-next-line no-restricted-syntax + chrome.runtime.sendMessage({ [this.channelName]: message }).catch(() => {}) + } + } + + async sendMessageToTab(tabId: number, message: any): Promise { + // eslint-disable-next-line no-restricted-syntax + await chrome.tabs.sendMessage(tabId, { [this.channelName]: message }) + } + + async sendMessageToTabUrl(tabUrl: string, message: any): Promise { + const urlMatcher = `${tabUrl}/*` + const promises: Promise[] = [] + chrome.tabs.query({ url: urlMatcher }, (tabs) => { + tabs.forEach((tab) => { + if (tab?.id) { + promises.push( + // eslint-disable-next-line no-restricted-syntax + chrome.tabs.sendMessage(tab.id, { [this.channelName]: message }).catch(() => { + // Not logging error here because it is expected that inactive tabs will not be able to receive the message + }), + ) + } + }) + }) + return Promise.all(promises) + } + + addMessageListener(listener: MessageListener): () => void { + this.listeners.push(listener) + + return () => this.removeMessageListener(listener) + } + + removeMessageListener(listener: MessageListener): void { + this.listeners = this.listeners.filter((l) => l !== listener) + } +} + +export type MessageParsers = { + [key in T]: (message: unknown) => R[key] +} +abstract class TypedMessageChannel< + T extends string, + R extends { [key in T]: { type: key } }, + L extends { [key in T]: MessageListener } = { [key in T]: MessageListener }, +> { + private readonly chromeMessageChannel: ChromeMessageChannel + private readonly messageParsers: MessageParsers + private listeners = new Map() + + constructor({ + channelName, + port, + messageParsers, + canReceiveFromContentScript, + }: { + channelName: string + port?: chrome.runtime.Port + messageParsers: MessageParsers + canReceiveFromContentScript?: boolean + }) { + this.messageParsers = messageParsers + this.chromeMessageChannel = new ChromeMessageChannel({ + channelName, + port, + canReceiveFromContentScript, + }) + + this.chromeMessageChannel.addMessageListener((message, sender) => { + let type: T | undefined + try { + const processed = this.processMessage(message) + const messageParser = processed.messageParser + type = processed.type + + const parsed = messageParser(message) + this.listeners.get(type)?.forEach((listener) => { + listener(parsed, sender) + }) + } catch (error) { + logger.error( + new Error(`Error validating message. Possible type is ${type}`, { + cause: error, + }), + { + tags: { + file: 'platform.ts', + function: 'TypedMessageChannel.constructor', + }, + }, + ) + } + }) + + this.sendMessage = this.sendMessage.bind(this) + this.sendMessageToTab = this.sendMessageToTab.bind(this) + this.sendMessageToTabUrl = this.sendMessageToTabUrl.bind(this) + this.addMessageListener = this.addMessageListener.bind(this) + this.removeMessageListener = this.removeMessageListener.bind(this) + } + + private processMessage(message: any): { type: T; messageParser: (message: unknown) => R[T] } { + const type = message.type as Maybe + if (!type) { + throw new Error('No type provided on message') + } + + const messageParser = this.messageParsers[type] + if (!messageParser) { + throw new Error(`No message parser found for type ${type}`) + } + return { type, messageParser } + } + + async sendMessage(message: R[T1]): Promise { + const { type } = message + + try { + await this.chromeMessageChannel.sendMessage(message) + return true + } catch (error) { + const isExtensionInvalidatedError = + error instanceof Error && error.message === EXTENSION_CONTEXT_INVALIDATED_CHROMIUM_ERROR + logger.error( + new Error( + `${isExtensionInvalidatedError ? 'Please refresh the page. ' : ''}Error sending message for type ${type}`, + { cause: error }, + ), + { + tags: { + file: 'platform.ts', + function: 'TypedMessageChannel.sendMessage', + }, + }, + ) + return false + } + } + + async sendMessageToTab(tabId: number, message: R[T1]): Promise { + const { type } = message + + try { + await this.chromeMessageChannel.sendMessageToTab(tabId, message) + return true + } catch (error) { + logger.error(new Error(`Error sending message to tab for type ${type}`, { cause: error }), { + tags: { + file: 'platform.ts', + function: 'TypedMessageChannel.sendMessageToTab', + }, + }) + return false + } + } + + async sendMessageToTabUrl(tabUrl: string, message: R[T1]): Promise { + const { type } = message + + try { + await this.chromeMessageChannel.sendMessageToTabUrl(tabUrl, message) + return true + } catch (error) { + logger.error(new Error(`Error sending message to tab for type ${type}`, { cause: error }), { + tags: { + file: 'platform.ts', + function: 'TypedMessageChannel.sendMessageToTabUrl', + }, + }) + return false + } + } + + addMessageListener(type: T1, listener: L[T1]): () => void { + this.listeners.set(type, this.listeners.get(type) ?? []) + this.listeners.get(type)?.push(listener) + + return () => this.removeMessageListener(type, listener) + } + + addAllMessageListener(listener: MessageListener): () => void { + const removeListeners = Object.keys(this.messageParsers).map((type) => + this.addMessageListener(type as T, listener as L[T]), + ) + + return () => removeListeners.forEach((remove) => remove()) + } + + removeMessageListener(type: T, listener: L[T]): void { + this.listeners.set(type, this.listeners.get(type)?.filter((l) => l !== listener) ?? []) + } +} + +/** + * Type-safe message channel class used for communication. Intended for general global use, backed by chrome.runtime + */ +export class TypedRuntimeMessageChannel< + T extends string, + R extends { [key in T]: { type: key } }, + L extends { [key in T]: MessageListener } = { [key in T]: MessageListener }, +> extends TypedMessageChannel { + constructor({ + channelName, + messageParsers, + canReceiveFromContentScript, + }: { + channelName: string + messageParsers: MessageParsers + canReceiveFromContentScript?: boolean + }) { + super({ channelName, messageParsers, canReceiveFromContentScript }) + } +} + +/** + * Adaptation of TypedRuntimeMessageChannel used as a wrapper around chrome.runtime.Port + */ +export class TypedPortMessageChannel< + T extends string, + R extends { [key in T]: { type: key } }, + L extends { [key in T]: MessageListener } = { [key in T]: MessageListener }, +> extends TypedMessageChannel { + readonly port: chrome.runtime.Port + + constructor({ + channelName, + messageParsers, + port, + canReceiveFromContentScript, + }: { + channelName: string + messageParsers: MessageParsers + port: chrome.runtime.Port + canReceiveFromContentScript?: boolean + }) { + super({ channelName, messageParsers, port, canReceiveFromContentScript }) + this.port = port + } +} diff --git a/apps/extension/src/background/messagePassing/types/ExtensionMessages.ts b/apps/extension/src/background/messagePassing/types/ExtensionMessages.ts new file mode 100644 index 00000000000..66bb0d00891 --- /dev/null +++ b/apps/extension/src/background/messagePassing/types/ExtensionMessages.ts @@ -0,0 +1,17 @@ +import { MessageSchema } from 'src/background/messagePassing/messageTypes' +import { z } from 'zod' + +export enum OnboardingMessageType { + HighlightOnboardingTab = 'HighlightOnboardingTab', + SidebarOpened = 'SidebarOpened', +} + +export const HighlightOnboardingTabMessageSchema = MessageSchema.extend({ + type: z.literal(OnboardingMessageType.HighlightOnboardingTab), +}) +export type HighlightOnboardingTabMessage = z.infer + +export const SidebarOpenedMessageSchema = MessageSchema.extend({ + type: z.literal(OnboardingMessageType.SidebarOpened), +}) +export type SidebarOpenedMessage = z.infer diff --git a/apps/extension/src/background/messagePassing/types/requests.ts b/apps/extension/src/background/messagePassing/types/requests.ts new file mode 100644 index 00000000000..f9ac4e49b62 --- /dev/null +++ b/apps/extension/src/background/messagePassing/types/requests.ts @@ -0,0 +1,94 @@ +import { DappRequestSchema } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { MessageSchema } from 'src/background/messagePassing/messageTypes' +import { z } from 'zod' + +// ENUMS + +// Requests from content scripts to the extension (non-dapp requests) +export enum ContentScriptUtilityMessageType { + FocusOnboardingTab = 'FocusOnboardingTab', + ErrorLog = 'Error', + InfoLog = 'Info', +} + +export const ErrorLogSchema = MessageSchema.extend({ + type: z.literal(ContentScriptUtilityMessageType.ErrorLog), + message: z.string(), + fileName: z.string(), + functionName: z.string(), + tags: z.record(z.string()).optional(), +}) +export type ErrorLog = z.infer + +export const InfoLogSchema = MessageSchema.extend({ + type: z.literal(ContentScriptUtilityMessageType.InfoLog), + fileName: z.string(), + functionName: z.string(), + message: z.string(), + tags: z.record(z.string()), +}) +export type InfoLog = z.infer + +export const FocusOnboardingMessageSchema = MessageSchema.extend({ + type: z.literal(ContentScriptUtilityMessageType.FocusOnboardingTab), +}) +export type FocusOnboardingMessage = z.infer + +// Requests from background script to the extension sidebar +export enum BackgroundToSidePanelRequestType { + TabActivated = 'TabActivated', + DappRequestReceived = 'DappRequestReceived', +} + +export const DappRequestMessageSchema = z.object({ + type: z.literal(BackgroundToSidePanelRequestType.DappRequestReceived), + dappRequest: DappRequestSchema, + senderTabInfo: z.object({ + id: z.number(), + url: z.string(), + favIconUrl: z.string().optional(), + }), + isSidebarClosed: z.optional(z.boolean()), +}) +export type DappRequestMessage = z.infer + +export const TabActivatedRequestSchema = MessageSchema.extend({ + type: z.literal(BackgroundToSidePanelRequestType.TabActivated), +}) +export type TabActivatedRequest = z.infer + +// Requests outgoing from the extension to the injected script +export enum ExtensionToDappRequestType { + UpdateConnections = 'UpdateConnections', + SwitchChain = 'SwitchChain', +} + +const BaseExtensionRequestSchema = MessageSchema.extend({ + type: z.nativeEnum(ExtensionToDappRequestType), +}) +export type BaseExtensionRequest = z.infer + +export const ExtensionChainChangeSchema = BaseExtensionRequestSchema.extend({ + type: z.literal(ExtensionToDappRequestType.SwitchChain), + chainId: z.string(), + providerUrl: z.string(), +}) +export type ExtensionChainChange = z.infer + +export const UpdateConnectionRequestSchema = BaseExtensionRequestSchema.extend({ + type: z.literal(ExtensionToDappRequestType.UpdateConnections), + addresses: z.array(z.string()), // TODO (Thomas): Figure out what to do for type safety here +}) +export type UpdateConnectionRequest = z.infer + +export const ExtensionToDappRequestSchema = z.union([ + ExtensionChainChangeSchema, + UpdateConnectionRequestSchema, +]) +export type ExtensionToDappRequest = z.infer + +// VALIDATORS + +export function isValidExtensionToDappRequest(request: unknown): request is ExtensionToDappRequest { + return ExtensionToDappRequestSchema.safeParse(request).success +} diff --git a/apps/extension/src/background/utils/chromeSidePanelUtils.ts b/apps/extension/src/background/utils/chromeSidePanelUtils.ts new file mode 100644 index 00000000000..c566362777e --- /dev/null +++ b/apps/extension/src/background/utils/chromeSidePanelUtils.ts @@ -0,0 +1,44 @@ +import { logger } from 'utilities/src/logger/logger' + +export async function openSidePanel(tabId: number | undefined, windowId: number): Promise { + try { + // eslint-disable-next-line security/detect-non-literal-fs-filename + await chrome.sidePanel.open({ + tabId, + windowId, + }) + } catch (error) { + logger.error(error, { + tags: { + file: 'background/background.ts', + function: 'openSidebar', + }, + }) + } +} + +export async function setSidePanelBehavior(behavior: chrome.sidePanel.PanelBehavior): Promise { + try { + await chrome.sidePanel.setPanelBehavior(behavior) + } catch (error) { + logger.error(error, { + tags: { + file: 'background/background.ts', + function: 'setSideBarBehavior', + }, + }) + } +} + +export async function setSidePanelOptions(options: chrome.sidePanel.PanelOptions): Promise { + try { + await chrome.sidePanel.setOptions(options) + } catch (error) { + logger.error(error, { + tags: { + file: 'background/background.ts', + function: 'setSideBarOptions', + }, + }) + } +} diff --git a/apps/extension/src/background/utils/getCalldataInfoFromTransaction.ts b/apps/extension/src/background/utils/getCalldataInfoFromTransaction.ts new file mode 100644 index 00000000000..338f3a4a545 --- /dev/null +++ b/apps/extension/src/background/utils/getCalldataInfoFromTransaction.ts @@ -0,0 +1,63 @@ +import { parseCalldata as parseURCalldata } from 'src/app/features/dappRequests/requestContent/EthSend/Swap/universalRouter' +import { EthSendTransactionRPCActions } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { EthersTransactionRequest } from 'src/app/features/dappRequests/types/EthersTypes' +import { parseCalldata as parseNfPMCalldata } from 'src/app/features/dappRequests/types/NonfungiblePositionManager' +import { NonfungiblePositionManagerCall } from 'src/app/features/dappRequests/types/NonfungiblePositionManagerTypes' +import { UniversalRouterCall } from 'src/app/features/dappRequests/types/UniversalRouterTypes' +import methodHashToFunctionSignature from 'utilities/src/calldata/methodHashToFunctionSignature' +import noop from 'utilities/src/react/noop' + +interface GetCalldataInfoFromTransactionReturnValue { + functionSignature: string | undefined + contractInteractions: EthSendTransactionRPCActions + to: string | undefined + parsedCalldata?: UniversalRouterCall | NonfungiblePositionManagerCall +} + +function getCalldataInfoFromTransaction( + transaction: EthersTransactionRequest, +): GetCalldataInfoFromTransactionReturnValue { + const calldataMethodHash = transaction.data.substring(2, 10) + const functionSignature = methodHashToFunctionSignature(calldataMethodHash) + const contractInteractions = EthSendTransactionRPCActions.ContractInteraction + const result: GetCalldataInfoFromTransactionReturnValue = { + functionSignature, + contractInteractions, + to: transaction.to, + } + + if (functionSignature) { + if (['approve', 'permit'].some((el) => functionSignature.includes(el))) { + result.contractInteractions = EthSendTransactionRPCActions.Approve + return result + } + try { + const URCalldata = parseURCalldata(transaction.data) + if (URCalldata) { + result.contractInteractions = EthSendTransactionRPCActions.Swap + result.parsedCalldata = URCalldata + return result + } + } catch (_e) { + noop() + } + try { + const NfPMCalldata = parseNfPMCalldata(transaction.data) + + if (NfPMCalldata) { + result.contractInteractions = EthSendTransactionRPCActions.LP + result.parsedCalldata = NfPMCalldata + return result + } + } catch (_e) { + noop() + } + if (functionSignature.includes('wrap')) { + result.contractInteractions = EthSendTransactionRPCActions.Wrap + return result + } + } + return result +} + +export default getCalldataInfoFromTransaction diff --git a/apps/extension/src/background/utils/loggerMiddleware.ts b/apps/extension/src/background/utils/loggerMiddleware.ts new file mode 100644 index 00000000000..b334591de1f --- /dev/null +++ b/apps/extension/src/background/utils/loggerMiddleware.ts @@ -0,0 +1,6 @@ +import { createLogger } from 'redux-logger' + +export const loggerMiddleware = createLogger({ + collapsed: true, + diff: true, +}) diff --git a/apps/extension/src/background/utils/persistedStateUtils.ts b/apps/extension/src/background/utils/persistedStateUtils.ts new file mode 100644 index 00000000000..8ebf4a471dd --- /dev/null +++ b/apps/extension/src/background/utils/persistedStateUtils.ts @@ -0,0 +1,39 @@ +import { isOnboardedSelector } from 'src/app/utils/isOnboardedSelector' +import { STATE_STORAGE_KEY } from 'src/store/constants' +import { readDeprecatedReduxedChromeStorage } from 'src/store/reduxedChromeStorageToReduxPersistMigration' +import { WebState } from 'src/store/webReducer' + +export async function readReduxStateFromStorage(storageChanges?: { + [key: string]: chrome.storage.StorageChange +}): Promise { + const root = storageChanges + ? storageChanges[STATE_STORAGE_KEY]?.newValue + : (await chrome.storage.local.get(STATE_STORAGE_KEY))[STATE_STORAGE_KEY] + + if (!root) { + return undefined + } + + const rootParsed = JSON.parse(root) + + Object.keys(rootParsed).forEach((key) => { + // Each reducer must be parsed individually. + rootParsed[key] = JSON.parse(rootParsed[key]) + }) + + return rootParsed as WebState +} + +export async function readIsOnboardedFromStorage(): Promise { + // The migration will happen in the sidebar, not in the background script, + // because the background script never persists the state (only reads it). + // So we need to check both the old and new storage keys to avoid the onboarding + // flow re-opening the first time the migration needs to run. + const [oldReduxedChromeStorageState, newReduxPersistState] = await Promise.all([ + readDeprecatedReduxedChromeStorage(), + readReduxStateFromStorage(), + ]) + + const state = oldReduxedChromeStorageState ?? newReduxPersistState + return state ? isOnboardedSelector(state) : false +} diff --git a/apps/extension/src/contentScript/WindowEthereumProxy.ts b/apps/extension/src/contentScript/WindowEthereumProxy.ts new file mode 100644 index 00000000000..2c479f5021d --- /dev/null +++ b/apps/extension/src/contentScript/WindowEthereumProxy.ts @@ -0,0 +1,160 @@ +import { rpcErrors, serializeError } from '@metamask/rpc-errors' +import EventEmitter from 'eventemitter3' +import { addWindowMessageListener, removeWindowMessageListener } from 'src/background/messagePassing/messageUtils' +import { BaseEthereumRequest, BaseEthereumRequestSchema } from 'src/contentScript/WindowEthereumRequestTypes' +import { ExtensionResponse, isValidExtensionResponse } from 'src/contentScript/types' +import { logger } from 'utilities/src/logger/logger' +import { v4 as uuidv4 } from 'uuid' +import { ZodError } from 'zod' + +type EthersSendCallback = (error: unknown, response: unknown) => void +type RequestInput = BaseEthereumRequest & { id?: number; jsonrpc?: string } + +const messages = { + errors: { + disconnected: (): string => 'Uniswap Wallet: Disconnected from chain. Attempting to connect.', + invalidRequestArgs: (): string => `Uniswap Wallet: Expected a single, non-array, object argument.`, + invalidRequestGeneric: (): string => `Uniswap Wallet: Please check the input passed to the request method`, + }, +} + +/** + * Proxy class that is injected at `window.ethereum` to handle all RPC and extension API requests. + * Passes along requests to the content script which then forwards and listens for requests accordingly. + */ +export class WindowEthereumProxy extends EventEmitter { + /** + * Boolean indicating that the provider is Uniswap Wallet. + */ + isUniswapWallet = true + + /** + * Boolean to spoof MetaMask + * TODO(EXT-393): Remove this once more dapps support EIP-6963 or have explicit support for Uniswap Wallet. + */ + isMetaMask: boolean + + /** + * Pending requests are stored as promises that resolve or reject based on the response from the content script. + */ + pendingRequests: { + [key: string]: { + resolve: (value: unknown) => void + reject: (error: unknown) => void + } + } + + constructor() { + super() + + this.isMetaMask = true + this.pendingRequests = {} + } + + // Deprecated EIP-11193 method + enable = async (): Promise => { + return this.request({ method: 'eth_requestAccounts' }) + } + + // Deprecated EIP-1193 method + send = ( + methodOrRequest: string | BaseEthereumRequest, + paramsOrCallback: Array | EthersSendCallback, + ): Promise | void => { + if (typeof methodOrRequest === 'string' && typeof paramsOrCallback !== 'function') { + return this.request({ + method: methodOrRequest, + params: paramsOrCallback, + }) + } else if (typeof methodOrRequest === 'object' && typeof paramsOrCallback === 'function') { + return this.sendAsync(methodOrRequest, paramsOrCallback) + } + return Promise.reject(new Error('Unsupported function parameters')) + } + + // Deprecated EIP-1193 method still in use by some DApps + sendAsync = ( + request: RequestInput, + callback: (error: unknown, response: unknown) => void, + ): Promise | void => { + return this.request(request).then( + (response) => + callback(null, { + result: response, + id: request.id, + jsonrpc: request.jsonrpc, + }), + (error) => callback(error, null), + ) + } + + request = async (args: RequestInput): Promise => { + return new Promise((resolve, reject) => { + try { + const ethereumRequest = BaseEthereumRequestSchema.parse(args) + + // Generate a unique ID for this request and store the promise callbacks + const requestId = uuidv4() + this.pendingRequests[requestId] = { resolve, reject } + const responseListener = addWindowMessageListener(isValidExtensionResponse, (response) => { + if (response.requestId === requestId) { + this.handleResponse(response) + removeWindowMessageListener(responseListener) + } + }) + window.postMessage({ + ...ethereumRequest, + requestId, + }) + } catch (error) { + logger.info('WindowEthereumProxy.ts', 'request', 'Invalid request', args) + + // Based on the zod error, we can determine the type of error and reject accordingly + if (error instanceof ZodError) { + return reject( + serializeError( + rpcErrors.invalidRequest({ + message: messages.errors.invalidRequestArgs(), + data: args, + }), + ), + ) + } + + return reject( + serializeError( + rpcErrors.invalidRequest({ + message: messages.errors.invalidRequestGeneric(), + data: args, + }), + ), + ) + } + }) + } + + private handleResponse(response: ExtensionResponse): boolean { + const { requestId, result, error } = response + const promise = this.pendingRequests[requestId] + if (!promise) { + logger.debug('WindowEthereumProxy.ts', 'handleResponse', 'No promise found for request id:', requestId) + return false + } + + if (error) { + promise.reject(error) + delete this.pendingRequests[requestId] + return true + } + + promise.resolve(result) + + // Clean up after handling the response + delete this.pendingRequests[requestId] + return true + } + // Utility function representing connectivity status for RPC requests to the current chain (as opposed to user accounts). + // Method itself created by MetaMask and not in EIP spec. Necessary since some dapps supporting EIP-6963 require it. + // TODO(EXT-1255): Currently faking real status, replace with actual implementation + isConnected = (): boolean => true +} diff --git a/apps/extension/src/contentScript/WindowEthereumRequestTypes.ts b/apps/extension/src/contentScript/WindowEthereumRequestTypes.ts new file mode 100644 index 00000000000..7e97b6c55d5 --- /dev/null +++ b/apps/extension/src/contentScript/WindowEthereumRequestTypes.ts @@ -0,0 +1,323 @@ +import { ethers } from 'ethers' +import { EthersTransactionRequestSchema } from 'src/app/features/dappRequests/types/EthersTypes' +import { HexadecimalNumberSchema } from 'src/app/features/dappRequests/types/utilityTypes' +import { HomeTabs } from 'src/app/navigation/constants' +import { ZodIssueCode, z } from 'zod' + +/** + * Schemas + types for requests that come via `window.ethereum.request` + * e.g.: {"jsonrpc":"2.0","method":"personal_sign","params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0xasdfasdfasdfasdfasdfasdfa"],"id":1}' + * @see https://eips.ethereum.org/EIPS/eip-1193 + * @see https://docs.metamask.io/guide/ethereum-provider.html#ethereum-request + * @see https://docs.metamask.io/wallet/reference/json-rpc-api/ + * + * Note: Our schemas include transformations to make it easier to work with the data + */ + +export const BaseEthereumRequestSchema = z.object({ + method: z.string(), + params: z.union([z.array(z.unknown()), z.record(z.string(), z.unknown())]).optional(), +}) + +export const EthereumRequestWithIdSchema = BaseEthereumRequestSchema.extend({ + requestId: z.string(), +}) +export type EthereumRequestWithId = z.infer + +export type BaseEthereumRequest = z.infer + +export const EthChainIdRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('eth_chainId'), +}) +export type EthChainIdRequest = z.infer + +export const EthRequestAccountsRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('eth_requestAccounts'), +}) +export type EthRequestAccountsRequest = z.infer + +export const EthAccountsRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('eth_accounts'), +}) +export type EthAccountsRequest = z.infer +export const EthSendTransactionRequestSchema = EthereumRequestWithIdSchema.extend({ + requestId: z.string(), + method: z.literal('eth_sendTransaction'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + if (params.length < 1) { + throw new Error('Params array must contain at least one element') + } + + const parseResult = EthersTransactionRequestSchema.safeParse(params[0]) + + if (!parseResult.success) { + throw new Error('First element of the array must match EthersTransactionRequestSchema') + } + + const transaction = parseResult.data + + return { + requestId, + method, + params, + transaction, + } +}) +export type EthSendTransactionRequest = z.infer + +export const PersonalSignRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('personal_sign'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + + if (params.length < 2) { + throw new z.ZodError([ + { + message: 'Params array must contain at least two elements', + path: ['params'], + code: ZodIssueCode.custom, + }, + ]) + } + + const messageHex = z.string().parse(params[0]) + + try { + ethers.utils.toUtf8String(messageHex) + } catch { + throw new z.ZodError([ + { + message: 'Message hex is not a valid hex string', + path: ['params', 'hexMessage'], + code: ZodIssueCode.custom, + }, + ]) + } + + const address = z.string().parse(params[1]) + + return { + requestId, + method, + params, + messageHex, + address, + } +}) + +export type PersonalSignRequest = z.infer + +export const EthSignTransactionRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('eth_signTransaction'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + + if (params.length < 1) { + throw new z.ZodError([ + { + message: 'Params array must contain at least one element', + path: ['params'], + code: ZodIssueCode.custom, + }, + ]) + } + + const parseResult = EthersTransactionRequestSchema.safeParse(params[0]) + if (!parseResult.success) { + throw new z.ZodError([ + { + message: 'First element of the array must match EthersTransactionRequestSchema', + path: ['params', '0'], + code: ZodIssueCode.custom, + }, + ]) + } + const transaction = parseResult.data + + return { + requestId, + method, + params, + transaction, + } +}) +export type EthSignTransactionRequest = z.infer + +export const EthSignTypedDataV4RequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('eth_signTypedData_v4'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + + if (params.length < 2) { + throw new z.ZodError([ + { + message: 'Params array must contain at least two elements', + path: ['params'], + code: ZodIssueCode.custom, + }, + ]) + } + + const address = z.string().parse(params[0]) + const typedData = z.string().parse(params[1]) + + const chainId = JSON.parse(typedData)?.domain?.chainId + const formattedChainId = HexadecimalNumberSchema.parse(chainId) + if (!formattedChainId) { + throw new z.ZodError([ + { + message: 'Typed data must contain a chainId', + path: ['params', '1'], + code: ZodIssueCode.custom, + }, + ]) + } + return { + requestId, + method, + params, + address, + typedData, + } +}) +export type EthSignTypedDataV4Request = z.infer + +export const SwitchEthereumChainParameterSchema = z.object({ + chainId: z.string(), +}) + +export const WalletSwitchEthereumChainRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('wallet_switchEthereumChain'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + if (params.length < 1) { + throw new z.ZodError([ + { + message: 'Params array must contain at least one element', + path: ['params'], + code: ZodIssueCode.custom, + }, + ]) + } + + const parseResult = SwitchEthereumChainParameterSchema.safeParse(params[0]) + if (!parseResult.success) { + throw new z.ZodError([ + { + message: 'Chain id should be specified as a hexadecimal string within object', + path: ['params', '0'], + code: ZodIssueCode.custom, + }, + ]) + } + + const { chainId } = parseResult.data + + return { + requestId, + method, + params, + chainId, + } +}) +export type WalletSwitchEthereumChainRequest = z.infer + +// eslint-disable-next-line no-restricted-syntax +export const PermissionRequestSchema = z.record(z.record(z.any())) + +export const RequestedPermissionSchema = z.object({ + parentCapability: z.string(), // name of the method for which the permission is requested + date: z.number().optional(), // in UNIX time +}) + +export const CaveatSchema = z.object({ + type: z.string(), + // eslint-disable-next-line no-restricted-syntax + value: z.any(), +}) +export type Caveat = z.infer + +export const PermissionSchema = z.object({ + invoker: z.string(), + parentCapability: z.string(), + caveats: z.array(CaveatSchema), +}) +export type Permission = z.infer + +export const WalletRequestPermissionsRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('wallet_requestPermissions'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + if (params.length < 1) { + throw new z.ZodError([ + { + message: 'Params array must contain at least one element', + path: ['params'], + code: ZodIssueCode.custom, + }, + ]) + } + + const permissions = PermissionRequestSchema.parse(params[0]) + + return { + requestId, + method, + params, + permissions, + } +}) + +export type WalletRequestPermissionsRequest = z.infer + +export const WalletRevokePermissionsRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('wallet_revokePermissions'), + params: z.array(z.unknown()), +}).transform((data) => { + const { requestId, method, params } = data + if (params.length < 1) { + throw new z.ZodError([ + { + message: 'Params array must contain at least one element', + path: ['params'], + code: ZodIssueCode.custom, + }, + ]) + } + + const permissions = PermissionRequestSchema.parse(params[0]) + + return { + requestId, + method, + params, + permissions, + } +}) + +export type WalletRevokePermissionsRequest = z.infer + +export const WalletGetPermissionsRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('wallet_getPermissions'), +}) +export type WalletGetPermissionsRequest = z.infer + +export const UniswapOpenSidebarRequestSchema = EthereumRequestWithIdSchema.extend({ + method: z.literal('uniswap_openSidebar'), + params: z.array(z.unknown()), +}).transform((data) => { + const tab = z.nativeEnum(HomeTabs).optional().parse(data.params[0]) + return { + ...data, + tab, + } +}) + +export type UniswapOpenSidebarRequest = z.infer diff --git a/apps/extension/src/contentScript/ethereum.ts b/apps/extension/src/contentScript/ethereum.ts new file mode 100644 index 00000000000..7864cb1953f --- /dev/null +++ b/apps/extension/src/contentScript/ethereum.ts @@ -0,0 +1,84 @@ +import { addWindowMessageListener } from 'src/background/messagePassing/messageUtils' +import { WindowEthereumProxy } from 'src/contentScript/WindowEthereumProxy' +import { isValidContentScriptToProxyEmission } from 'src/contentScript/types' +import { logger } from 'utilities/src/logger/logger' +import { v4 as uuid } from 'uuid' + +// TODO(xtine): Get this working by importing the svg file directly. The svg text comes from packages/ui/src/assets/icons/uniswap-logo.svg +const UNISWAP_LOGO = `data:image/svg+xml,${encodeURIComponent(` + + + + + + + + + + + + +`)}` +const UNISWAP_NAME = 'Uniswap Extension' +const UNISWAP_RDNS = 'org.uniswap.app' + +declare global { + interface Window { + isStretchInstalled?: boolean + ethereum?: WindowEthereumProxy + } +} + +enum EIP6963EventNames { + Announce = 'eip6963:announceProvider', + Request = 'eip6963:requestProvider', +} + +interface EIP6963ProviderInfo { + uuid: string + name: string + icon: string + rdns: string +} + +const uniswapProvider = new WindowEthereumProxy() +window.ethereum = uniswapProvider + +addWindowMessageListener(isValidContentScriptToProxyEmission, (message) => { + logger.debug('ethereum.ts', `Emitting ${message.emitKey} via WindowEthereumProxy`, message.emitValue) + uniswapProvider.emit(message.emitKey, message.emitValue) +}) +function announceProvider(): void { + const info: EIP6963ProviderInfo = { + uuid: uuid(), + name: UNISWAP_NAME, + icon: UNISWAP_LOGO, + rdns: UNISWAP_RDNS, + } + + window.dispatchEvent( + new CustomEvent(EIP6963EventNames.Announce, { + detail: Object.freeze({ info, provider: uniswapProvider }), + }), + ) +} + +window.addEventListener(EIP6963EventNames.Request, (event) => { + if (!isValidRequestProviderEvent(event)) { + throw new Error( + `Invalid EIP-6963 RequestProviderEvent object received from ${EIP6963EventNames.Request} event. See https://eips.ethereum.org/EIPS/eip-6963 for requirements.`, + ) + } + + announceProvider() +}) + +announceProvider() + +type EIP6963RequestProviderEvent = Event & { + type: EIP6963EventNames.Request +} + +function isValidRequestProviderEvent(event: unknown): event is EIP6963RequestProviderEvent { + return event instanceof Event && event.type === EIP6963EventNames.Request +} diff --git a/apps/extension/src/contentScript/index.tsx b/apps/extension/src/contentScript/index.tsx new file mode 100644 index 00000000000..96d0a1de30d --- /dev/null +++ b/apps/extension/src/contentScript/index.tsx @@ -0,0 +1,9 @@ +import React from 'react' +import { createRoot } from 'react-dom/client' + +const container = document.createElement('div') +container.id = 'crx-root' +document.body.append(container) + +const root = createRoot(container) +root.render() diff --git a/apps/extension/src/contentScript/injected.test.ts b/apps/extension/src/contentScript/injected.test.ts new file mode 100644 index 00000000000..859888dd8a8 --- /dev/null +++ b/apps/extension/src/contentScript/injected.test.ts @@ -0,0 +1,11 @@ +jest.mock('src/background/messagePassing/messageChannels') + +describe('injected', () => { + it('should run without throwing an error', () => { + // This does not exist in the extension execution environment for content scripts + Object.defineProperty(document, 'head', { value: undefined, writable: true }) + + const injected = require('./injected') + expect(injected).toBeTruthy() + }) +}) diff --git a/apps/extension/src/contentScript/injected.ts b/apps/extension/src/contentScript/injected.ts new file mode 100644 index 00000000000..85ad15cc1cf --- /dev/null +++ b/apps/extension/src/contentScript/injected.ts @@ -0,0 +1,267 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { dappStore } from 'src/app/features/dapp/store' +import { getOrderedConnectedAddresses } from 'src/app/features/dapp/utils' +import { backgroundStore } from 'src/background/backgroundStore' +import { + contentScriptUtilityMessageChannel, + externalDappMessageChannel, +} from 'src/background/messagePassing/messageChannels' +import { addWindowMessageListener } from 'src/background/messagePassing/messageUtils' +import { + ContentScriptUtilityMessageType, + ErrorLog, + ExtensionToDappRequestType, + InfoLog, +} from 'src/background/messagePassing/types/requests' +import { ExtensionEthMethodHandler } from 'src/contentScript/methodHandlers/ExtensionEthMethodHandler' +import { ProviderDirectMethodHandler } from 'src/contentScript/methodHandlers/ProviderDirectMethodHandler' +import { UniswapMethodHandler } from 'src/contentScript/methodHandlers/UniswapMethodHandler' +import { emitAccountsChanged, emitChainChanged } from 'src/contentScript/methodHandlers/emitUtils' +import { ExtensionEthMethods } from 'src/contentScript/methodHandlers/requestMethods' +import { + isDeprecatedMethod, + isExtensionEthMethod, + isProviderDirectMethod, + isUniswapMethod, + isUnsupportedMethod, + postDeprecatedMethodError, + postParsingError, + postUnknownMethodError, +} from 'src/contentScript/methodHandlers/utils' +import { WindowEthereumRequest, isValidWindowEthereumRequest } from 'src/contentScript/types' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { RPCType } from 'uniswap/src/types/chains' +import { logger } from 'utilities/src/logger/logger' +import { arraysAreEqual } from 'utilities/src/primitives/array' +import { walletContextValue } from 'wallet/src/features/wallet/context' + +import { getValidAddress } from 'uniswap/src/utils/addresses' +import { ZodError } from 'zod' + +let _provider: JsonRpcProvider | undefined +let _chainId: string | undefined +let connectedAddresses: Address[] | undefined +const dappUrl = window.origin + +const getChainId = (): string | undefined => { + const storedChainId = dappStore.getDappInfo(dappUrl)?.lastChainId + + if (_chainId === undefined && storedChainId) { + _chainId = chainIdToHexadecimalString(storedChainId) + } + + return _chainId +} + +const getProvider = (): JsonRpcProvider | undefined => _provider +const getConnectedAddresses = (): Address[] | undefined => { + const storedDappInfo = dappStore.getDappInfo(dappUrl) + const storedConnectedAddresses = + storedDappInfo && + getOrderedConnectedAddresses(storedDappInfo.connectedAccounts, storedDappInfo.activeConnectedAddress) + return connectedAddresses ?? storedConnectedAddresses +} + +const setProvider = (newProvider: JsonRpcProvider): void => { + _provider = newProvider +} +const setChainIdAndMaybeEmit = (newChainId: string): void => { + // Only emit if the chain have changed, and it's not the first time + if (_chainId !== undefined && _chainId !== newChainId) { + emitChainChanged(newChainId) + } + _chainId = newChainId +} + +const setConnectedAddressesAndMaybeEmit = (newConnectedAddresses: Address[]): void => { + // Only emit if the addresses have changed, and it's not the first time + const normalizedNewAddresses: Address[] = newConnectedAddresses + .map((address) => getValidAddress(address)) + .filter((normalizedAddress): normalizedAddress is Address => normalizedAddress !== null) + + if (!connectedAddresses || !arraysAreEqual(connectedAddresses, normalizedNewAddresses)) { + emitAccountsChanged(normalizedNewAddresses) + } + connectedAddresses = normalizedNewAddresses +} + +const extensionEthMethodHandler = new ExtensionEthMethodHandler( + getChainId, + getProvider, + getConnectedAddresses, + setChainIdAndMaybeEmit, + setProvider, + setConnectedAddressesAndMaybeEmit, +) +const providerDirectMethodHandler = new ProviderDirectMethodHandler( + getChainId, + getProvider, + getConnectedAddresses, + setChainIdAndMaybeEmit, + setProvider, + setConnectedAddressesAndMaybeEmit, +) + +const uniswapMethodHandler = new UniswapMethodHandler( + getChainId, + getProvider, + getConnectedAddresses, + setChainIdAndMaybeEmit, + setProvider, + setConnectedAddressesAndMaybeEmit, +) + +addWindowMessageListener(isValidWindowEthereumRequest, async (request, source) => { + logger.debug('injected.ts', 'Request received for method', JSON.stringify(request), _provider) + + if (!backgroundStore.state.isOnboarded) { + rejectRequestNotOnboarded(request, source).catch((error) => + logError( + error?.message ?? 'Error rejecting request when not onboarded', + 'injected.ts', + 'WindowEthereumRequestListener', + ), + ) + return + } + + if (isProviderDirectMethod(request.method)) { + // Provider methods are handled directly by the provider instance + // (avoiding roundtrip to background service worker) + providerDirectMethodHandler.handleRequest(request, source) + return + } + + if (isUniswapMethod(request.method)) { + try { + await uniswapMethodHandler.handleRequest(request, source) + } catch (e) { + if (e instanceof ZodError) { + postParsingError(source, request.requestId, request.method) + } + const errorMessage = e instanceof Error ? e.message : 'Unknown error' + await logError(errorMessage, 'injected.ts', 'WindowEthereumRequest') + } + return + } + + if (isExtensionEthMethod(request.method)) { + try { + await extensionEthMethodHandler.handleRequest(request, source) + } catch (e) { + if (e instanceof ZodError) { + postParsingError(source, request.requestId, request.method) + } + const errorMessage = e instanceof Error ? e.message : 'Unknown error' + await logError(errorMessage, 'injected.ts', 'WindowEthereumRequest') + } + return + } + + if (isDeprecatedMethod(request.method)) { + postDeprecatedMethodError(source, request.requestId, request.method) + await logInfo('injected.ts', 'WindowEthereumRequest', 'Deprecated method', { + method: request.method, + dappUrl, + }) + return + } + + if (isUnsupportedMethod(request.method)) { + postUnknownMethodError(source, request.requestId, request.method) + await logInfo('injected.ts', 'WindowEthereumRequest', 'Unsupported method', { + method: request.method, + dappUrl, + }) + return + } + + // Handle any methods we don't know how to handle and are not in the metamask API + await logInfo('injected.ts', 'WindowEthereumRequest', 'Unrecognized method', { + method: request.method, + dappUrl, + }) + postUnknownMethodError(source, request.requestId, request.method) +}) + +externalDappMessageChannel.addMessageListener(ExtensionToDappRequestType.SwitchChain, (message) => { + setChainIdAndMaybeEmit(message.chainId) + setProvider(new JsonRpcProvider(message.providerUrl)) +}) + +externalDappMessageChannel.addMessageListener(ExtensionToDappRequestType.UpdateConnections, (message) => { + setConnectedAddressesAndMaybeEmit(message.addresses) +}) + +async function init(): Promise { + try { + await Promise.all([backgroundStore.init(), dappStore.init()]) + + const chainId = getChainId() + const provider = getProvider() + + if (chainId && !provider) { + const chainIdNum = parseInt(chainId, 16) + const defaultProvider = walletContextValue.providers.getProvider(chainIdNum, RPCType.Public) + setProvider(defaultProvider) + } + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error' + await logError(errorMessage, 'injected.ts', 'init') + } +} + +/** Helper function to reject all requests from dapps when the extension is not onboarded. */ +async function rejectRequestNotOnboarded( + request: WindowEthereumRequest, + source: MessageEventSource | null, +): Promise { + if ( + request.method === ExtensionEthMethods.eth_requestAccounts || + request.method === ExtensionEthMethods.wallet_requestPermissions + ) { + await contentScriptUtilityMessageChannel.sendMessage({ + type: ContentScriptUtilityMessageType.FocusOnboardingTab, + }) + } + + source?.postMessage({ + requestId: request.requestId, + error: serializeError(providerErrors.userRejectedRequest()), + }) +} + +init().catch(() => {}) + +async function logError( + errorMessage: string, + fileName: string, + functionName: string, + tags?: Record, +): Promise { + const message: ErrorLog = { + type: ContentScriptUtilityMessageType.ErrorLog, + message: errorMessage, + fileName, + functionName, + tags, + } + await contentScriptUtilityMessageChannel.sendMessage(message) +} + +async function logInfo( + fileName: string, + functionName: string, + message: string, + tags: Record, +): Promise { + const logMessage: InfoLog = { + type: ContentScriptUtilityMessageType.InfoLog, + fileName, + functionName, + message, + tags, + } + await contentScriptUtilityMessageChannel.sendMessage(logMessage) +} diff --git a/apps/extension/src/contentScript/methodHandlers/BaseMethodHandler.ts b/apps/extension/src/contentScript/methodHandlers/BaseMethodHandler.ts new file mode 100644 index 00000000000..e9bd18c2baa --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/BaseMethodHandler.ts @@ -0,0 +1,16 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { WindowEthereumRequest } from 'src/contentScript/types' + +export abstract class BaseMethodHandler { + constructor( + protected readonly getChainId: () => string | undefined, + protected readonly getProvider: () => JsonRpcProvider | undefined, + protected readonly getConnectedAddresses: () => Address[] | undefined, + protected readonly setChainIdAndMaybeEmit: (newChainId: string) => void, + protected readonly setProvider: (newProvider: JsonRpcProvider) => void, + protected readonly setConnectedAddressesAndMaybeEmit: (newConnectedAddresses: Address[]) => void, + ) {} + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + handleRequest(request: T, source: MessageEventSource | null): void {} +} diff --git a/apps/extension/src/contentScript/methodHandlers/ExtensionEthMethodHandler.ts b/apps/extension/src/contentScript/methodHandlers/ExtensionEthMethodHandler.ts new file mode 100644 index 00000000000..e62c7871e2a --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/ExtensionEthMethodHandler.ts @@ -0,0 +1,483 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { getPermissions } from 'src/app/features/dappRequests/permissions' +import { + DappRequestType, + DappResponseType, + SendTransactionRequest, +} from 'src/app/features/dappRequests/types/DappRequestTypes' +import { extractBaseUrl } from 'src/app/features/dappRequests/utils' +import { + contentScriptToBackgroundMessageChannel, + dappResponseMessageChannel, +} from 'src/background/messagePassing/messageChannels' +import getCalldataInfoFromTransaction from 'src/background/utils/getCalldataInfoFromTransaction' +import { + EthAccountsRequest, + EthAccountsRequestSchema, + EthChainIdRequest, + EthChainIdRequestSchema, + EthRequestAccountsRequest, + EthRequestAccountsRequestSchema, + EthSendTransactionRequest, + EthSendTransactionRequestSchema, + EthSignTypedDataV4Request, + EthSignTypedDataV4RequestSchema, + PersonalSignRequest, + PersonalSignRequestSchema, + WalletGetPermissionsRequest, + WalletGetPermissionsRequestSchema, + WalletRequestPermissionsRequest, + WalletRequestPermissionsRequestSchema, + WalletRevokePermissionsRequest, + WalletRevokePermissionsRequestSchema, + WalletSwitchEthereumChainRequest, + WalletSwitchEthereumChainRequestSchema, +} from 'src/contentScript/WindowEthereumRequestTypes' +import { BaseMethodHandler } from 'src/contentScript/methodHandlers/BaseMethodHandler' +import { ExtensionEthMethods } from 'src/contentScript/methodHandlers/requestMethods' +import { PendingResponseInfo } from 'src/contentScript/methodHandlers/types' +import { getPendingResponseInfo, postUnauthorizedError } from 'src/contentScript/methodHandlers/utils' +import { WindowEthereumRequest } from 'src/contentScript/types' +import { chainIdToHexadecimalString } from 'uniswap/src/features/chains/utils' +import { UniverseChainId } from 'uniswap/src/types/chains' +import { areAddressesEqual } from 'uniswap/src/utils/addresses' + +export class ExtensionEthMethodHandler extends BaseMethodHandler { + private readonly requestIdToSourceMap: Map = new Map() + + constructor( + getChainId: () => string | undefined, + getProvider: () => JsonRpcProvider | undefined, + getConnectedAddresses: () => Address[] | undefined, + setChainIdAndMaybeEmit: (newChainId: string) => void, + setProvider: (newProvider: JsonRpcProvider) => void, + setConnectedAddressesAndMaybeEmit: (newConnectedAddresses: Address[]) => void, + ) { + super( + getChainId, + getProvider, + getConnectedAddresses, + setChainIdAndMaybeEmit, + setProvider, + setConnectedAddressesAndMaybeEmit, + ) + + dappResponseMessageChannel.addMessageListener(DappResponseType.AccountResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.AccountResponse, + )?.source + + this.handleDappUpdate(message.connectedAddresses, message.chainId, message.providerUrl) + source?.postMessage({ + requestId: message.requestId, + result: message.connectedAddresses, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.ChainIdResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.ChainIdResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: message.chainId, + }) + + const chainId = this.getChainId() + if (!chainId) { + window.postMessage({ + emitKey: 'connect', + emitValue: { + chainId: message.chainId, + }, + }) + } + + this.setChainIdAndMaybeEmit(message.chainId) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.ChainChangeResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.ChainChangeResponse, + )?.source + + this.setChainIdAndMaybeEmit(message.chainId) + this.setProvider(new JsonRpcProvider(message.providerUrl)) + source?.postMessage({ + requestId: message.requestId, + result: message.chainId, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.SendTransactionResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.SendTransactionResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: message.transactionResponse.hash, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.SignMessageResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.SignMessageResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: message.signature, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.SignTransactionResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.SignTransactionResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: message.signedTransactionHash, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.SignTypedDataResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.SignTypedDataResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: message.signature, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.RequestPermissionsResponse, (message) => { + if (message.accounts) { + const { connectedAddresses, chainId, providerUrl } = message.accounts + this.handleDappUpdate(connectedAddresses, chainId, providerUrl) + } + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.RequestPermissionsResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: message.permissions, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.RevokePermissionsResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.RevokePermissionsResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + result: null, + }) + }) + + dappResponseMessageChannel.addMessageListener(DappResponseType.ErrorResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.ErrorResponse, + )?.source + + source?.postMessage(message) + }) + } + + private isAuthorized(): boolean { + const connectedAddresses = this.getConnectedAddresses() + return !!connectedAddresses?.length + } + + private isConnectedToDapp(): boolean { + // Fields that should be populated for connected dapps + return Boolean(this.getConnectedAddresses()?.length && this.getChainId() && this.getProvider()) + } + + private handleDappUpdate(connectedAddresses: string[], chainId: string, providerUrl: string): void { + this.setConnectedAddressesAndMaybeEmit(connectedAddresses) + this.setChainIdAndMaybeEmit(chainId) + this.setProvider(new JsonRpcProvider(providerUrl)) + } + + async handleRequest(request: WindowEthereumRequest, source: MessageEventSource | null): Promise { + switch (request.method) { + case ExtensionEthMethods.eth_chainId: { + const ethChainIdRequest = EthChainIdRequestSchema.parse(request) + await this.handleEthChainIdRequest(ethChainIdRequest, source) + break + } + case ExtensionEthMethods.eth_requestAccounts: { + const parsedRequest = EthRequestAccountsRequestSchema.parse(request) + await this.handleEthRequestAccounts(parsedRequest, source) + break + } + case ExtensionEthMethods.eth_accounts: { + const parsedRequest = EthAccountsRequestSchema.parse(request) + await this.handleEthAccounts(parsedRequest, source) + break + } + case ExtensionEthMethods.eth_sendTransaction: { + if (!this.isAuthorized()) { + postUnauthorizedError(source, request.requestId) + return + } + const parsedRequest = EthSendTransactionRequestSchema.parse(request) + await this.handleEthSendTransaction(parsedRequest, source) + break + } + case ExtensionEthMethods.wallet_switchEthereumChain: { + if (!this.isAuthorized()) { + postUnauthorizedError(source, request.requestId) + return + } + const parsedRequest = WalletSwitchEthereumChainRequestSchema.parse(request) + await this.handleWalletSwitchEthereumChain(parsedRequest, source) + break + } + case ExtensionEthMethods.wallet_getPermissions: { + const parsedRequest = WalletGetPermissionsRequestSchema.parse(request) + await this.handleWalletGetPermissions(parsedRequest, source) + break + } + + case ExtensionEthMethods.wallet_requestPermissions: { + const parsedRequest = WalletRequestPermissionsRequestSchema.parse(request) + await this.handleWalletRequestPermissions(parsedRequest, source) + break + } + case ExtensionEthMethods.wallet_revokePermissions: { + const parsedRequest = WalletRevokePermissionsRequestSchema.parse(request) + await this.handleWalletRevokePermissions(parsedRequest, source) + break + } + case ExtensionEthMethods.personal_sign: { + if (!this.isAuthorized()) { + postUnauthorizedError(source, request.requestId) + return + } + + const parsedRequest = PersonalSignRequestSchema.parse(request) + if (!this.isValidRequestAddress(parsedRequest.address)) { + postUnauthorizedError(source, request.requestId) + return + } + + await this.handlePersonalSign(parsedRequest, source) + break + } + case ExtensionEthMethods.eth_signTypedData_v4: { + if (!this.isAuthorized()) { + postUnauthorizedError(source, request.requestId) + return + } + + const parsedRequest = EthSignTypedDataV4RequestSchema.parse(request) + if (!this.isValidRequestAddress(parsedRequest.address)) { + postUnauthorizedError(source, request.requestId) + return + } + + await this.handleEthSignTypedData(parsedRequest, source) + break + } + } + } + + async handleEthChainIdRequest(request: EthChainIdRequest, source: MessageEventSource | null): Promise { + // Defaults to mainnet for unconnected dapps + const chainId = this.getChainId() ?? chainIdToHexadecimalString(UniverseChainId.Mainnet) + + source?.postMessage({ + requestId: request.requestId, + result: chainId, + }) + return + } + + async handleEthRequestAccounts(request: EthRequestAccountsRequest, source: MessageEventSource | null): Promise { + const connectedAddresses = this.getConnectedAddresses() + + if (connectedAddresses?.length && this.isConnectedToDapp()) { + source?.postMessage({ + requestId: request.requestId, + result: connectedAddresses, + }) + return + } + + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.AccountResponse, + source, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.RequestAccount, + requestId: request.requestId, + }) + } + + async handleEthAccounts(request: EthAccountsRequest, source: MessageEventSource | null): Promise { + const connectedAddresses = this.getConnectedAddresses() + + if (connectedAddresses?.length && this.isConnectedToDapp()) { + source?.postMessage({ + requestId: request.requestId, + result: connectedAddresses, + }) + return + } + + postUnauthorizedError(source, request.requestId) + } + + async handleEthSendTransaction(request: EthSendTransactionRequest, source: MessageEventSource | null): Promise { + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.SendTransactionResponse, + source, + }) + + const sendTransactionRequest: SendTransactionRequest = { + type: DappRequestType.SendTransaction, + requestId: request.requestId, + transaction: adaptTransactionForEthers(request.transaction), + } + + // native transactions like native send will not have populated data field + const requestIncludesData = Boolean(request.transaction.data) + + if (requestIncludesData && request.transaction.data !== '0x') { + Object.assign(sendTransactionRequest, getCalldataInfoFromTransaction(request.transaction)) + } + + await contentScriptToBackgroundMessageChannel.sendMessage(sendTransactionRequest) + } + + async handlePersonalSign(request: PersonalSignRequest, source: MessageEventSource | null): Promise { + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.SignMessageResponse, + source, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.SignMessage, + requestId: request.requestId, + messageHex: request.messageHex, + address: request.address, + }) + } + + async handleEthSignTypedData(request: EthSignTypedDataV4Request, source: MessageEventSource | null): Promise { + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.SignTypedDataResponse, + source, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.SignTypedData, + requestId: request.requestId, + typedData: request.typedData, + address: request.address, + }) + } + + async handleWalletSwitchEthereumChain( + request: WalletSwitchEthereumChainRequest, + source: MessageEventSource | null, + ): Promise { + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.ChainChangeResponse, + source, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.ChangeChain, + requestId: request.requestId, + chainId: request.chainId, + }) + } + + async handleWalletGetPermissions( + request: WalletGetPermissionsRequest, + source: MessageEventSource | null, + ): Promise { + const dappUrl = extractBaseUrl(window.origin) + const connectedAddresses = this.getConnectedAddresses() + + const permissions = getPermissions(dappUrl, connectedAddresses) + + source?.postMessage({ + requestId: request.requestId, + result: permissions, + }) + } + + async handleWalletRequestPermissions( + request: WalletRequestPermissionsRequest, + source: MessageEventSource | null, + ): Promise { + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.RequestPermissionsResponse, + source, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.RequestPermissions, + requestId: request.requestId, + permissions: request.permissions, + }) + } + + async handleWalletRevokePermissions( + request: WalletRevokePermissionsRequest, + source: MessageEventSource | null, + ): Promise { + this.requestIdToSourceMap.set(request.requestId, { + type: DappResponseType.RevokePermissionsResponse, + source, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.RevokePermissions, + requestId: request.requestId, + permissions: request.permissions, + }) + } + + private isValidRequestAddress(address: string): boolean { + return (this.getConnectedAddresses() ?? []).some((connectedAddress) => areAddressesEqual(connectedAddress, address)) + } +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function adaptTransactionForEthers(transaction: any): any { + if (typeof transaction.chainId === 'string') { + transaction.chainId = parseInt(transaction.chainId, 16) + } + return transaction +} diff --git a/apps/extension/src/contentScript/methodHandlers/ProviderDirectMethodHandler.ts b/apps/extension/src/contentScript/methodHandlers/ProviderDirectMethodHandler.ts new file mode 100644 index 00000000000..676c9446a8f --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/ProviderDirectMethodHandler.ts @@ -0,0 +1,115 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { BigNumber } from 'ethers' +import { BaseMethodHandler } from 'src/contentScript/methodHandlers/BaseMethodHandler' +import { ProviderDirectMethods } from 'src/contentScript/methodHandlers/requestMethods' +import { WindowEthereumRequest } from 'src/contentScript/types' +import { logger } from 'utilities/src/logger/logger' + +/** + * Handles all provider direct requests + * Maps Ethereum JSON-RPC methods to their corresponding ethers.js provider method calls. + */ + +export class ProviderDirectMethodHandler extends BaseMethodHandler { + private methodHandlers: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [key: string]: (provider: JsonRpcProvider, params: any[]) => Promise + } + + constructor( + getChainId: () => string | undefined, + getProvider: () => JsonRpcProvider | undefined, + getConnectedAddresses: () => Address[] | undefined, + setChainIdAndMaybeEmit: (newChainId: string) => void, + setProvider: (newProvider: JsonRpcProvider) => void, + setConnectedAddressesAndMaybeEmit: (newConnectedAddresses: Address[]) => void, + ) { + super( + getChainId, + getProvider, + getConnectedAddresses, + setChainIdAndMaybeEmit, + setProvider, + setConnectedAddressesAndMaybeEmit, + ) + + this.methodHandlers = { + /* eslint-disable @typescript-eslint/explicit-function-return-type */ + [ProviderDirectMethods.eth_getBalance]: (provider, params) => provider.getBalance(params[0]), + [ProviderDirectMethods.eth_getCode]: (provider, params) => provider.getCode(params[0]), + [ProviderDirectMethods.eth_getStorageAt]: (provider, params) => provider.getStorageAt(params[0], params[1]), + [ProviderDirectMethods.eth_getTransactionCount]: (provider, params) => provider.getTransactionCount(params[0]), + [ProviderDirectMethods.eth_blockNumber]: (provider, _params) => provider.getBlockNumber(), + [ProviderDirectMethods.eth_getBlockByNumber]: (provider, params) => provider.getBlock(params[0]), + [ProviderDirectMethods.eth_call]: (provider, params) => provider.call(params[0]), + [ProviderDirectMethods.eth_gasPrice]: (provider, _params) => provider.getGasPrice(), + [ProviderDirectMethods.eth_estimateGas]: (provider, params) => provider.estimateGas(params[0]), + [ProviderDirectMethods.eth_getTransactionByHash]: (provider, params) => provider.getTransaction(params[0]), + [ProviderDirectMethods.eth_getTransactionReceipt]: (provider, params) => + provider.getTransactionReceipt(params[0]), + [ProviderDirectMethods.net_version]: async (provider, params) => provider.send('net_version', params), + } + } + + handleRequest(request: WindowEthereumRequest, source: MessageEventSource | null): void { + const handler = this.methodHandlers[request.method] + if (handler) { + const provider = this.getProvider() + if (!provider) { + // TODO: Handle error for disconnection + return + } + const response = handler(provider, request.params) + this.handleResponse(response, source, request.requestId) + } else { + // We shouldn't end up here because injected.ts checks that the method is supported before calling this function + logger.error(new Error('Unexpected method requested'), { + tags: { + file: 'ProviderDirectMethodHandler.ts', + function: 'handleRequest', + }, + extra: { + method: request.method, + dapp: window.origin, + }, + }) + } + } + + private handleResponse( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + response: Promise, + source: MessageEventSource | null, + requestId: string, + ): void { + response + .then((result) => { + source?.postMessage({ + requestId, + result: JSON.parse( + JSON.stringify(result, (_key, value) => { + if (!value) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return value + } else if (BigNumber.isBigNumber(value)) { + return value.toHexString() + } else if (value.type === 'BigNumber' && value.hex) { + // Unsure of why but sometimes the provider has converted the BigNumber with BigNumber.toJSON() e.g. eth_getBlockByNumber + // which is a format not currently accepted by some dapps e.g. Morpho + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return value.hex + } + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return value + }), + ), + }) + }) + .catch((error) => { + source?.postMessage({ + requestId, + error, + }) + }) + } +} diff --git a/apps/extension/src/contentScript/methodHandlers/UniswapMethodHandler.ts b/apps/extension/src/contentScript/methodHandlers/UniswapMethodHandler.ts new file mode 100644 index 00000000000..bbb888cc949 --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/UniswapMethodHandler.ts @@ -0,0 +1,81 @@ +import { JsonRpcProvider } from '@ethersproject/providers' +import { DappRequestType, DappResponseType } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { + contentScriptToBackgroundMessageChannel, + dappResponseMessageChannel, +} from 'src/background/messagePassing/messageChannels' +import { + UniswapOpenSidebarRequest, + UniswapOpenSidebarRequestSchema, +} from 'src/contentScript/WindowEthereumRequestTypes' +import { BaseMethodHandler } from 'src/contentScript/methodHandlers/BaseMethodHandler' +import { UniswapMethods } from 'src/contentScript/methodHandlers/requestMethods' +import { PendingResponseInfo } from 'src/contentScript/methodHandlers/types' +import { getPendingResponseInfo } from 'src/contentScript/methodHandlers/utils' +import { WindowEthereumRequest } from 'src/contentScript/types' +import { logger } from 'utilities/src/logger/logger' + +/** + * Handles all uniswap-specific requests + */ + +export class UniswapMethodHandler extends BaseMethodHandler { + private readonly requestIdToSourceMap: Map = new Map() + + constructor( + getChainId: () => string | undefined, + getProvider: () => JsonRpcProvider | undefined, + getConnectedAddresses: () => Address[] | undefined, + setChainIdAndMaybeEmit: (newChainId: string) => void, + setProvider: (newProvider: JsonRpcProvider) => void, + setConnectedAddressesAndMaybeEmit: (newConnectedAddresses: Address[]) => void, + ) { + super( + getChainId, + getProvider, + getConnectedAddresses, + setChainIdAndMaybeEmit, + setProvider, + setConnectedAddressesAndMaybeEmit, + ) + + dappResponseMessageChannel.addMessageListener(DappResponseType.UniswapOpenSidebarResponse, (message) => { + const source = getPendingResponseInfo( + this.requestIdToSourceMap, + message.requestId, + DappResponseType.UniswapOpenSidebarResponse, + )?.source + + source?.postMessage({ + requestId: message.requestId, + }) + }) + } + + async handleRequest(request: WindowEthereumRequest, source: MessageEventSource | null): Promise { + switch (request.method) { + case UniswapMethods.uniswap_openSidebar: { + logger.debug("Handling 'uniswap_openSidebar' request", request.method, request.toString()) + const uniswapOpenTokensRequest = UniswapOpenSidebarRequestSchema.parse(request) + await this.handleUniswapOpenSidebarRequest(uniswapOpenTokensRequest, source) + break + } + } + } + + private async handleUniswapOpenSidebarRequest( + request: UniswapOpenSidebarRequest, + source: MessageEventSource | null, + ): Promise { + this.requestIdToSourceMap.set(request.requestId, { + source, + type: DappResponseType.UniswapOpenSidebarResponse, + }) + + await contentScriptToBackgroundMessageChannel.sendMessage({ + type: DappRequestType.UniswapOpenSidebar, + requestId: request.requestId, + tab: request.tab, + }) + } +} diff --git a/apps/extension/src/contentScript/methodHandlers/emitUtils.ts b/apps/extension/src/contentScript/methodHandlers/emitUtils.ts new file mode 100644 index 00000000000..fb2f96b7770 --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/emitUtils.ts @@ -0,0 +1,12 @@ +export function emitChainChanged(newChainId: string): void { + window?.postMessage({ + emitKey: 'chainChanged', + emitValue: newChainId, + }) +} +export function emitAccountsChanged(newConnectedAddresses: Address[]): void { + window?.postMessage({ + emitKey: 'accountsChanged', + emitValue: newConnectedAddresses, + }) +} diff --git a/apps/extension/src/contentScript/methodHandlers/requestMethods.ts b/apps/extension/src/contentScript/methodHandlers/requestMethods.ts new file mode 100644 index 00000000000..c147e5f8bf4 --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/requestMethods.ts @@ -0,0 +1,89 @@ +// List of eth methods that the extension will handle +/* eslint-disable @typescript-eslint/naming-convention */ +export enum ExtensionEthMethods { + eth_chainId = 'eth_chainId', + eth_requestAccounts = 'eth_requestAccounts', + eth_accounts = 'eth_accounts', + eth_sendTransaction = 'eth_sendTransaction', + personal_sign = 'personal_sign', + wallet_switchEthereumChain = 'wallet_switchEthereumChain', + wallet_getPermissions = 'wallet_getPermissions', + wallet_requestPermissions = 'wallet_requestPermissions', + wallet_revokePermissions = 'wallet_revokePermissions', + eth_signTypedData_v4 = 'eth_signTypedData_v4', +} + +// Custom Uniswap methods that the extension will handle +/* eslint-disable @typescript-eslint/naming-convention */ +export enum UniswapMethods { + uniswap_openSidebar = 'uniswap_openSidebar', +} + +// Methods that are not supported by the extension because they are deprecated +/* eslint-disable @typescript-eslint/naming-convention */ +export enum DeprecatedEthMethods { + eth_sign = 'eth_sign', // Security risk + eth_signTypedData_v3 = 'eth_signTypedData_v3', + eth_signTypedData_v1 = 'eth_signTypedData_v1', + eth_decrypt = 'eth_decrypt', + eth_getEncryptionPublicKey = 'eth_getEncryptionPublicKey', +} + +// Methods that are handled by Metamask but not by the extension. These are logged +// so we can either display an error to the user or track frequency. +// Depending on the frequency with which we see these methods we could show an error +// in the sidebar for users. +// The methods come from: https://docs.metamask.io/wallet/reference/json-rpc-api/ +/* eslint-disable @typescript-eslint/naming-convention */ +export enum UnsupportedEthMethods { + wallet_addEthereumChain = 'wallet_addEthereumChain', + wallet_registerOnboarding = 'wallet_registerOnboarding', + wallet_watchAsset = 'wallet_watchAsset', + wallet_scanQRCode = 'wallet_scanQRCode', + wallet_getSnaps = 'wallet_getSnaps', + wallet_requestSnaps = 'wallet_requestSnaps', + wallet_snap = 'wallet_snap', + wallet_invokeSnap = 'wallet_invokeSnap', + web3_clientVersion = 'web3_clientVersion', + eth_subscribe = 'eth_subscribe', + eth_unsubscribe = 'eth_unsubscribe', + eth_blobBaseFee = 'eth_blobBaseFee', + eth_coinbase = 'eth_coinbase', + eth_feeHistory = 'eth_feeHistory', + eth_getBlockByHash = 'eth_getBlockByHash', + eth_getBlockTransactionCountByHash = 'eth_getBlockTransactionCountByHash', + eth_getBlockTransactionCountByNumber = 'eth_getBlockTransactionCountByNumber', + eth_getFilterChanges = 'eth_getFilterChanges', + eth_getFilterLogs = 'eth_getFilterLogs', + eth_getLogs = 'eth_getLogs', + eth_getProof = 'eth_getProof', + eth_getStorageAt = 'eth_getStorageAt', + eth_getTransactionByBlockHashAndIndex = 'eth_getTransactionByBlockHashAndIndex', + eth_getTransactionByBlockNumberAndIndex = 'eth_getTransactionByBlockNumberAndIndex', + eth_getTransactionCount = 'eth_getTransactionCount', + eth_getUncleCountByBlockHash = 'eth_getUncleCountByBlockHash', + eth_getUncleCountByBlockNumber = 'eth_getUncleCountByBlockNumber', + eth_maxPriorityFeePerGas = 'eth_maxPriorityFeePerGas', + eth_newBlockFilter = 'eth_newBlockFilter', + eth_newFilter = 'eth_newFilter', + eth_newPendingTransactionFilter = 'eth_newPendingTransactionFilter', + eth_sendRawTransaction = 'eth_sendRawTransaction', + eth_syncing = 'eth_syncing', + eth_uninstallFilter = 'eth_uninstallFilter', + eth_signTransaction = 'eth_signTransaction', +} + +export enum ProviderDirectMethods { + eth_getBalance = 'eth_getBalance', + eth_getCode = 'eth_getCode', + eth_getStorageAt = 'eth_getStorageAt', + eth_getTransactionCount = 'eth_getTransactionCount', + eth_blockNumber = 'eth_blockNumber', + eth_getBlockByNumber = 'eth_getBlockByNumber', + eth_call = 'eth_call', + eth_gasPrice = 'eth_gasPrice', + eth_estimateGas = 'eth_estimateGas', + eth_getTransactionByHash = 'eth_getTransactionByHash', + eth_getTransactionReceipt = 'eth_getTransactionReceipt', + net_version = 'net_version', +} diff --git a/apps/extension/src/contentScript/methodHandlers/types.ts b/apps/extension/src/contentScript/methodHandlers/types.ts new file mode 100644 index 00000000000..c0f77c234e1 --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/types.ts @@ -0,0 +1,6 @@ +import { DappResponseType } from 'src/app/features/dappRequests/types/DappRequestTypes' + +export type PendingResponseInfo = { + type: DappResponseType + source: MessageEventSource | null +} diff --git a/apps/extension/src/contentScript/methodHandlers/utils.ts b/apps/extension/src/contentScript/methodHandlers/utils.ts new file mode 100644 index 00000000000..ecbf2c59690 --- /dev/null +++ b/apps/extension/src/contentScript/methodHandlers/utils.ts @@ -0,0 +1,89 @@ +import { providerErrors, serializeError } from '@metamask/rpc-errors' +import { DappResponseType } from 'src/app/features/dappRequests/types/DappRequestTypes' +import { + DeprecatedEthMethods, + ExtensionEthMethods, + ProviderDirectMethods, + UniswapMethods, + UnsupportedEthMethods, +} from 'src/contentScript/methodHandlers/requestMethods' +import { PendingResponseInfo } from 'src/contentScript/methodHandlers/types' +import { logger } from 'utilities/src/logger/logger' + +export function isProviderDirectMethod(method: string): boolean { + return Object.keys(ProviderDirectMethods).includes(method) +} + +export function isUniswapMethod(method: string): boolean { + return Object.keys(UniswapMethods).includes(method) +} + +export function isExtensionEthMethod(method: string): boolean { + return Object.keys(ExtensionEthMethods).includes(method) +} + +export function isDeprecatedMethod(method: string): boolean { + return Object.keys(DeprecatedEthMethods).includes(method) +} + +export function isUnsupportedMethod(method: string): boolean { + return Object.keys(UnsupportedEthMethods).includes(method) +} + +export function postDeprecatedMethodError(source: MessageEventSource | null, requestId: string, method: string): void { + source?.postMessage({ + requestId, + error: serializeError( + providerErrors.unsupportedMethod(`Uniswap Wallet does not support ${method} as it is deprecated`), + ), + }) +} + +export function postUnknownMethodError(source: MessageEventSource | null, requestId: string, method: string): void { + source?.postMessage({ + requestId, + error: serializeError(providerErrors.unsupportedMethod(`Uniswap Wallet does not support ${method}`)), + }) +} + +export function postUnauthorizedError(source: MessageEventSource | null, requestId: string): void { + source?.postMessage({ + requestId, + error: serializeError(providerErrors.unauthorized()), + }) +} + +export function postParsingError(source: MessageEventSource | null, requestId: string, method: string): void { + source?.postMessage({ + requestId, + error: serializeError( + providerErrors.unsupportedMethod(`Uniswap Wallet could not parse the ${method} request properly`), + ), + }) +} + +export function getPendingResponseInfo( + requestIdToSourceMap: Map, + requestId: string, + type: DappResponseType, +): PendingResponseInfo | undefined { + const pendingResponseInfo = requestIdToSourceMap.get(requestId) + if (pendingResponseInfo) { + requestIdToSourceMap.delete(requestId) + + if (type !== DappResponseType.ErrorResponse && type !== pendingResponseInfo.type) { + logger.error( + `Response type doesn't match expected type, expected: ${pendingResponseInfo.type}, actual: ${type}`, + { + tags: { + file: 'injected.ts', + function: 'validateResponse', + }, + }, + ) + } + return pendingResponseInfo + } + + return undefined +} diff --git a/apps/extension/src/contentScript/types.ts b/apps/extension/src/contentScript/types.ts new file mode 100644 index 00000000000..d55bff9b096 --- /dev/null +++ b/apps/extension/src/contentScript/types.ts @@ -0,0 +1,37 @@ +import { z } from 'zod' + +/* eslint-disable no-restricted-syntax */ +const ExtensionResponseSchema = z + .object({ + requestId: z.string(), + result: z.any().optional(), + error: z.any().optional(), + }) + .refine((data) => data.result !== undefined || data.error !== undefined, { + message: 'Either result or error must be defined', + }) + +export type ExtensionResponse = z.infer + +export const isValidExtensionResponse = (response: unknown): response is ExtensionResponse => + ExtensionResponseSchema.safeParse(response).success + +export const WindowEthereumRequestSchema = z.object({ + method: z.string(), + params: z.any(), + requestId: z.string(), +}) +export type WindowEthereumRequest = z.infer + +export const isValidWindowEthereumRequest = (request: unknown): request is WindowEthereumRequest => + WindowEthereumRequestSchema.safeParse(request).success + +export const ContentScriptToProxyEmissionSchema = z.object({ + emitKey: z.string(), + emitValue: z.any(), +}) + +export type ContentScriptToProxyEmission = z.infer + +export const isValidContentScriptToProxyEmission = (request: unknown): request is ContentScriptToProxyEmission => + ContentScriptToProxyEmissionSchema.safeParse(request).success diff --git a/apps/extension/src/declarations.d.ts b/apps/extension/src/declarations.d.ts new file mode 100644 index 00000000000..d2ecf6ad63d --- /dev/null +++ b/apps/extension/src/declarations.d.ts @@ -0,0 +1,6 @@ +declare module '*.svg' { + import React from 'react' + import { SvgProps } from 'react-native-svg' + const content: React.FC + export default content +} diff --git a/apps/extension/src/env.d.ts b/apps/extension/src/env.d.ts new file mode 100644 index 00000000000..fd6eabefe81 --- /dev/null +++ b/apps/extension/src/env.d.ts @@ -0,0 +1,8 @@ +import { config } from 'ui/src/tamagui.config' + +type Conf = typeof config + +declare module 'tamagui' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + interface TamaguiCustomConfig extends Conf {} +} diff --git a/apps/extension/src/logo.svg b/apps/extension/src/logo.svg new file mode 100644 index 00000000000..6b60c1042f5 --- /dev/null +++ b/apps/extension/src/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/extension/src/manifest.json b/apps/extension/src/manifest.json new file mode 100644 index 00000000000..683549ddd5a --- /dev/null +++ b/apps/extension/src/manifest.json @@ -0,0 +1,75 @@ +{ + "manifest_version": 3, + "name": "Uniswap Extension", + "description": "The Uniswap Extension is a self-custody crypto wallet that's built for swapping.", + "version": "1.0.3", + "minimum_chrome_version": "116", + "icons": { + "16": "assets/icon16.png", + "32": "assets/icon32.png", + "48": "assets/icon48.png", + "128": "assets/icon128.png" + }, + "action": { + "default_icon": { + "16": "assets/icon16.png", + "32": "assets/icon32.png", + "48": "assets/icon48.png", + "128": "assets/icon128.png" + } + }, + "side_panel": { + "default_path": "sidebar.html" + }, + "background": { + "service_worker": "background.js", + "type": "module" + }, + "permissions": [ + "alarms", + "notifications", + "sidePanel", + "storage", + "tabs" + ], + "content_scripts": [ + { + "id": "injected", + "run_at": "document_start", + "matches": [ + "http://127.0.0.1/*", + "http://localhost/*", + "https://*/*" + ], + "js": [ + "injected.js" + ] + }, + { + "id": "ethereum", + "run_at": "document_start", + "matches": [ + "http://127.0.0.1/*", + "http://localhost/*", + "https://*/*" + ], + "js": [ + "ethereum.js" + ], + "world": "MAIN" + } + ], + "externally_connectable": { + "ids": [], + "matches": [] + }, + "commands": { + "_execute_action": { + "suggested_key": { + "default": "Ctrl+Shift+U", + "mac": "Command+Shift+U" + }, + "description": "Toggles the sidebar" + } + } +} diff --git a/apps/extension/src/onboarding.html b/apps/extension/src/onboarding.html new file mode 100644 index 00000000000..67622884299 --- /dev/null +++ b/apps/extension/src/onboarding.html @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + Uniswap Extension + + + +

+ + + + diff --git a/apps/extension/src/onboarding/onboarding.tsx b/apps/extension/src/onboarding/onboarding.tsx new file mode 100644 index 00000000000..a583e37a96b --- /dev/null +++ b/apps/extension/src/onboarding/onboarding.tsx @@ -0,0 +1,55 @@ +// eslint-disable-next-line @typescript-eslint/triple-slash-reference +/// + +import { createRoot } from 'react-dom/client' +import { OptionalStrictMode } from 'src/app/components/OptionalStrictMode' +import OnboardingApp from 'src/app/OnboardingApp' +import { initializeSentry, SentryAppNameTag } from 'src/app/sentry' +import { getLocalUserId } from 'src/app/utils/storage' +import { initializeReduxStore } from 'src/store/store' +import { ExtensionAppLocation, StoreSynchronization } from 'src/store/storeSynchronization' +import { logger } from 'utilities/src/logger/logger' +;(globalThis as any).regeneratorRuntime = undefined // eslint-disable-line @typescript-eslint/no-explicit-any +// The globalThis.regeneratorRuntime = undefined addresses a potentially unsafe-eval problem +// see https://github.com/facebook/regenerator/issues/378#issuecomment-802628326 + +getLocalUserId() + .then((userId) => { + initializeSentry(SentryAppNameTag.Onboarding, userId) + }) + .catch((error) => { + logger.error(error, { + tags: { file: 'SidebarApp.tsx', function: 'getLocalUserId' }, + }) + }) +async function initOnboarding(): Promise { + await initializeReduxStore() + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const container = document.getElementById('onboarding-root')! + const root = createRoot(container) + + root.render( + + + , + ) +} + +StoreSynchronization.init(ExtensionAppLocation.Tab).catch((error) => { + logger.error(error, { + tags: { + file: 'onboarding.ts', + function: 'initPrimaryInstanceHandler', + }, + }) +}) + +initOnboarding().catch((error) => { + logger.error(error, { + tags: { + file: 'onboarding.ts', + function: 'initOnboarding', + }, + }) +}) diff --git a/apps/extension/src/sidebar.html b/apps/extension/src/sidebar.html new file mode 100644 index 00000000000..d918c44aa92 --- /dev/null +++ b/apps/extension/src/sidebar.html @@ -0,0 +1,98 @@ + + + + + + + + + + + + + Uniswap Extension + + +
+ + + diff --git a/apps/extension/src/sidebar/loadSidebar.ts b/apps/extension/src/sidebar/loadSidebar.ts new file mode 100644 index 00000000000..747be9aa8a9 --- /dev/null +++ b/apps/extension/src/sidebar/loadSidebar.ts @@ -0,0 +1,18 @@ +/** + * IMPORTANT: we should keep this file very light. Do not import anything here. + * + * The browser was taking too long to interpret the react JS bundle and initialize the react app, + * so we're now splitting this up and slightly delaying the react bundle execution. + * By doing this, the first render happens faster and there's no longer a flash of a different color background (the default "no background" color). + * Instead, the HTML is now rendered immediately, with the right background color from the inline style. + * + * For video comparison of the before and after, check out https://github.com/Uniswap/universe/pull/9294 + */ + +setTimeout(() => { + const script = document.createElement('script') + script.type = 'text/javascript' + script.async = true + script.src = './sidebar.js' + document.body.appendChild(script) +}, 10) diff --git a/apps/extension/src/sidebar/sidebar.tsx b/apps/extension/src/sidebar/sidebar.tsx new file mode 100644 index 00000000000..4d254f4c36e --- /dev/null +++ b/apps/extension/src/sidebar/sidebar.tsx @@ -0,0 +1,55 @@ +// eslint-disable-next-line @typescript-eslint/triple-slash-reference +/// + +import 'src/app/utils/devtools' +import 'symbol-observable' // Needed by `reduxed-chrome-storage` as polyfill, order matters + +import { createRoot } from 'react-dom/client' +import SidebarApp from 'src/app/SidebarApp' +import { OptionalStrictMode } from 'src/app/components/OptionalStrictMode' +import { onboardingMessageChannel } from 'src/background/messagePassing/messageChannels' +import { OnboardingMessageType } from 'src/background/messagePassing/types/ExtensionMessages' +import { initializeReduxStore } from 'src/store/store' +import { ExtensionAppLocation, StoreSynchronization } from 'src/store/storeSynchronization' +import { initializeScrollWatcher } from 'uniswap/src/components/modals/ScrollLock' +import { logger } from 'utilities/src/logger/logger' +;(globalThis as any).regeneratorRuntime = undefined // eslint-disable-line @typescript-eslint/no-explicit-any +// The globalThis.regeneratorRuntime = undefined addresses a potentially unsafe-eval problem +// see https://github.com/facebook/regenerator/issues/378#issuecomment-802628326 + +async function initSidebar(): Promise { + await initializeReduxStore() + await onboardingMessageChannel.sendMessage({ + type: OnboardingMessageType.SidebarOpened, + }) + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const container = window.document.querySelector('#root')! + const root = createRoot(container) + + root.render( + + + , + ) +} + +StoreSynchronization.init(ExtensionAppLocation.SidePanel).catch((error) => { + logger.error(error, { + tags: { + file: 'sidebar.ts', + function: 'initPrimaryInstanceHandler', + }, + }) +}) + +initSidebar().catch((error) => { + logger.error(error, { + tags: { + file: 'sidebar.ts', + function: 'initSidebar', + }, + }) +}) + +initializeScrollWatcher() diff --git a/apps/extension/src/store/PrimaryAppInstanceDebugger.tsx b/apps/extension/src/store/PrimaryAppInstanceDebugger.tsx new file mode 100644 index 00000000000..42bd081e5b5 --- /dev/null +++ b/apps/extension/src/store/PrimaryAppInstanceDebugger.tsx @@ -0,0 +1,24 @@ +import { useIsPrimaryAppInstance } from 'src/store/storeSynchronization' + +// This is a dev-only component that renders a small green/red dot in the bottom right corner of the screen +// to indicate whether the current app instance is the primary one. +export default function PrimaryAppInstanceDebugger(): JSX.Element | null { + const isPrimaryAppInstance = useIsPrimaryAppInstance() + + return ( +
Cancel limit
Your swap could execute before cancellation is processed. Your network costs cannot be refunded. Do you wish to proceed?
Network cost
- @@ -678,21 +698,21 @@ exports[`CancelOrdersDialog should render limit order text 1`] = `
@@ -713,80 +733,40 @@ exports[`CancelOrdersDialog should render limit order text 1`] = ` `; exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` -.c2 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 24px; -} - -.c11 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 16px; +.c5 { + box-sizing: border-box; + margin: 0; + min-width: 0; + width: 100%; + padding: 4px 0px; } -.c13 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 8px; +.c9 { + box-sizing: border-box; + margin: 0; + min-width: 0; } -.c18 { +.c6 { + width: 100%; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c3 { - width: 100%; + padding: 0; -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; + -webkit-box-pack: end; + -webkit-justify-content: end; + -ms-flex-pack: end; + justify-content: end; + padding: 4px 0px; + gap: 10px; } -.c8 { - box-sizing: border-box; - margin: 0; - min-width: 0; -} - -.c9 { +.c10 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -804,7 +784,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` gap: 4px; } -.c19 { +.c20 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -821,7 +801,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` justify-content: flex-start; } -.c24 { +.c25 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -839,14 +819,14 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` gap: 12px; } -.c21 { +.c22 { -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; } -.c14 { +.c15 { color: #222222; -webkit-letter-spacing: -0.01em; -moz-letter-spacing: -0.01em; @@ -854,7 +834,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` letter-spacing: -0.01em; } -.c16 { +.c17 { color: #7D7D7D; -webkit-letter-spacing: -0.01em; -moz-letter-spacing: -0.01em; @@ -862,7 +842,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` letter-spacing: -0.01em; } -.c10 { +.c11 { color: #222222; cursor: pointer; -webkit-text-decoration: none; @@ -872,15 +852,15 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` transition-duration: 125ms; } -.c10:hover { +.c11:hover { opacity: 0.6; } -.c10:active { +.c11:active { opacity: 0.4; } -.c6 { +.c7 { -webkit-text-decoration: none; text-decoration: none; cursor: pointer; @@ -891,15 +871,106 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` font-weight: 500; } -.c6:hover { +.c7:hover { opacity: 0.6; } -.c6:active { +.c7:active { opacity: 0.4; } -.c28 { +.c8 { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + border-radius: 16px; + padding: 4px 8px; + font-size: 14px; + font-weight: 485; + line-height: 20px; + background: #F9F9F9; + color: #7D7D7D; + stroke: none; +} + +.c8:hover { + background: #22222212; + color: #222222; + opacity: unset; +} + +.c8:hover path { + fill: #222222; +} + +.c2 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 24px; +} + +.c12 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 16px; +} + +.c14 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 8px; +} + +.c19 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c3 { + width: 100%; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c29 { background-color: transparent; bottom: 0; border-radius: inherit; @@ -913,7 +984,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` width: 100%; } -.c25 { +.c26 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -948,30 +1019,30 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` user-select: none; } -.c25:active .c27 { +.c26:active .c28 { background-color: #B8C0DC3d; } -.c25:focus .c27 { +.c26:focus .c28 { background-color: #B8C0DC3d; } -.c25:hover .c27 { +.c26:hover .c28 { background-color: #98A1C014; } -.c25:disabled { +.c26:disabled { cursor: default; opacity: 0.6; } -.c25:disabled:active .c27, -.c25:disabled:focus .c27, -.c25:disabled:hover .c27 { +.c26:disabled:active .c28, +.c26:disabled:focus .c28, +.c26:disabled:hover .c28 { background-color: transparent; } -.c29 { +.c30 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -1006,26 +1077,26 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` user-select: none; } -.c29:active .c27 { +.c30:active .c28 { background-color: #B8C0DC3d; } -.c29:focus .c27 { +.c30:focus .c28 { background-color: #B8C0DC3d; } -.c29:hover .c27 { +.c30:hover .c28 { background-color: #98A1C014; } -.c29:disabled { +.c30:disabled { cursor: default; opacity: 0.6; } -.c29:disabled:active .c27, -.c29:disabled:focus .c27, -.c29:disabled:hover .c27 { +.c30:disabled:active .c28, +.c30:disabled:focus .c28, +.c30:disabled:hover .c28 { background-color: transparent; } @@ -1072,30 +1143,6 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` border-radius: 20px; } -.c7 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; - border-radius: 16px; - padding: 4px 8px; - font-size: 14px; - font-weight: 485; - line-height: 20px; - background: #F9F9F9; - color: #7D7D7D; - stroke: none; -} - -.c7:hover { - background: #22222212; - color: #222222; - opacity: unset; -} - -.c7:hover path { - fill: #222222; -} - .c4 { background-color: #FFFFFF; outline: 1px solid #22222212; @@ -1104,7 +1151,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` width: 100%; } -.c12 { +.c13 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -1123,14 +1170,14 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` border-radius: 12px; } -.c15 { +.c16 { font-size: 24px; line-height: 32px; text-align: center; font-weight: 500; } -.c17 { +.c18 { font-size: 16px; font-weight: 500; line-height: 24px; @@ -1141,7 +1188,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` text-align: center; } -.c26 { +.c27 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -1155,7 +1202,7 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` border-radius: 12px; } -.c30 { +.c31 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -1169,21 +1216,17 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` border-radius: 12px; } -.c5 { - padding: 4px 0px; -} - -.c22 { +.c23 { cursor: auto; color: #7D7D7D; } -.c23 { +.c24 { text-align: right; overflow-wrap: break-word; } -.c20 { +.c21 { border-top: 1px solid #22222212; margin-top: 16px; padding-top: 16px; @@ -1259,71 +1302,68 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` class="c2 c3 c4" >
- + + + Get help +
+ + + + +
Cancel order
Your swap could execute before cancellation is processed. Your network costs cannot be refunded. Do you wish to proceed?
Network cost
- @@ -1390,21 +1430,21 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = `
diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/OffchainActivityModal.test.tsx.snap b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/OffchainActivityModal.test.tsx.snap index 3378ff6b8ec..efa9a0d17f5 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/OffchainActivityModal.test.tsx.snap +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/OffchainActivityModal.test.tsx.snap @@ -1,65 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`OrderContent should render without error, filled order 1`] = ` -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c10 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; -} - -.c12 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 4px; -} - -.c17 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 8px; -} - .c1 { box-sizing: border-box; margin: 0; @@ -176,6 +117,65 @@ exports[`OrderContent should render without error, filled order 1`] = ` background-color: #22222212; } +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c10 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 12px; +} + +.c12 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 4px; +} + +.c17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 8px; +} + .c20 { cursor: auto; color: #7D7D7D; @@ -543,65 +543,6 @@ exports[`OrderContent should render without error, filled order 1`] = ` `; exports[`OrderContent should render without error, limit order 1`] = ` -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c10 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; -} - -.c12 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 4px; -} - -.c17 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 8px; -} - .c1 { box-sizing: border-box; margin: 0; @@ -718,6 +659,65 @@ exports[`OrderContent should render without error, limit order 1`] = ` background-color: #22222212; } +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c10 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 12px; +} + +.c12 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 4px; +} + +.c17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 8px; +} + .c26 { background-color: transparent; bottom: 0; @@ -1201,65 +1201,6 @@ exports[`OrderContent should render without error, limit order 1`] = ` `; exports[`OrderContent should render without error, open order 1`] = ` -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c10 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; -} - -.c12 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 4px; -} - -.c17 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 8px; -} - .c1 { box-sizing: border-box; margin: 0; @@ -1357,6 +1298,65 @@ exports[`OrderContent should render without error, open order 1`] = ` background-color: #22222212; } +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c10 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 12px; +} + +.c12 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 4px; +} + +.c17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 8px; +} + .c26 { background-color: transparent; bottom: 0; diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/index.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/index.tsx index f1ddf89f468..cdedd6901fb 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/index.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/index.tsx @@ -9,9 +9,9 @@ import { hideSpamAtom } from 'components/AccountDrawer/SpamToggle' import Column from 'components/Column' import { LoadingBubble } from 'components/Tokens/loading' import { useAtomValue, useUpdateAtom } from 'jotai/utils' -import styled from 'lib/styled-components' import { EmptyWalletModule } from 'nft/components/profile/view/EmptyWalletContent' import { useMemo } from 'react' +import styled from 'styled-components' import { ThemedText } from 'theme/components' const ActivityGroupWrapper = styled(Column)` diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseLocal.test.ts b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseLocal.test.ts index 963943ded32..3f9a04f0117 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseLocal.test.ts +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseLocal.test.ts @@ -29,7 +29,7 @@ function mockSwapInfo( inputCurrency: Token, inputCurrencyAmountRaw: string, outputCurrency: Token, - outputCurrencyAmountRaw: string, + outputCurrencyAmountRaw: string ): ExactInputSwapTransactionInfo | ExactOutputSwapTransactionInfo { if (type === MockTradeType.EXACT_INPUT) { return { @@ -109,7 +109,7 @@ jest.mock('../../../../state/transactions/hooks', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), ...mockCommonFields('0x123', mockAccount1, TransactionStatus.Confirmed), } as TransactionDetails, @@ -121,9 +121,9 @@ jest.mock('../../../../state/transactions/hooks', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), - '0xswap_exact_input', + '0xswap_exact_input' ), ...mockMultiStatus( mockSwapInfo( @@ -131,9 +131,9 @@ jest.mock('../../../../state/transactions/hooks', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), - '0xswap_exact_output', + '0xswap_exact_output' ), ...mockMultiStatus( { @@ -142,7 +142,7 @@ jest.mock('../../../../state/transactions/hooks', () => { spender: mockSpenderAddress, amount: mockApprovalAmountRaw, }, - '0xapproval', + '0xapproval' ), ...mockMultiStatus( { @@ -151,7 +151,7 @@ jest.mock('../../../../state/transactions/hooks', () => { spender: mockSpenderAddress, amount: '0', }, - '0xrevoke_approval', + '0xrevoke_approval' ), ...mockMultiStatus( { @@ -160,7 +160,7 @@ jest.mock('../../../../state/transactions/hooks', () => { currencyAmountRaw: mockCurrencyAmountRaw, chainId: mockChainId, }, - '0xwrap', + '0xwrap' ), ...mockMultiStatus( { @@ -169,7 +169,7 @@ jest.mock('../../../../state/transactions/hooks', () => { currencyAmountRaw: mockCurrencyAmountRaw, chainId: mockChainId, }, - '0xunwrap', + '0xunwrap' ), ...mockMultiStatus( { @@ -181,7 +181,7 @@ jest.mock('../../../../state/transactions/hooks', () => { expectedAmountBaseRaw: mockCurrencyAmountRawUSDC, expectedAmountQuoteRaw: mockCurrencyAmountRaw, }, - '0xadd_liquidity_v3', + '0xadd_liquidity_v3' ), ...mockMultiStatus( { @@ -191,7 +191,7 @@ jest.mock('../../../../state/transactions/hooks', () => { expectedAmountBaseRaw: mockCurrencyAmountRawUSDC, expectedAmountQuoteRaw: mockCurrencyAmountRaw, }, - '0xremove_liquidity_v3', + '0xremove_liquidity_v3' ), ...mockMultiStatus( { @@ -201,7 +201,7 @@ jest.mock('../../../../state/transactions/hooks', () => { expectedAmountBaseRaw: mockCurrencyAmountRawUSDC, expectedAmountQuoteRaw: mockCurrencyAmountRaw, }, - '0xadd_liquidity_v2', + '0xadd_liquidity_v2' ), ...mockMultiStatus( { @@ -211,7 +211,7 @@ jest.mock('../../../../state/transactions/hooks', () => { expectedCurrencyOwed0: mockCurrencyAmountRawUSDC, expectedCurrencyOwed1: mockCurrencyAmountRaw, }, - '0xcollect_fees', + '0xcollect_fees' ), ...mockMultiStatus( { @@ -220,7 +220,7 @@ jest.mock('../../../../state/transactions/hooks', () => { quoteCurrencyId: MockDAI.address, isFork: false, }, - '0xmigrate_v3_liquidity', + '0xmigrate_v3_liquidity' ), ] }, @@ -237,7 +237,7 @@ describe('parseLocalActivity', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), hash: '0x123', status: TransactionStatus.Confirmed, @@ -265,7 +265,7 @@ describe('parseLocalActivity', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), hash: '0x123', status: TransactionStatus.Confirmed, @@ -292,7 +292,7 @@ describe('parseLocalActivity', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), hash: '0x123', status: TransactionStatus.Confirmed, @@ -575,8 +575,8 @@ describe('parseLocalActivity', () => { type: SignatureType.SIGN_UNISWAPX_ORDER, status: UniswapXOrderStatus.FILLED, } as SignatureDetails, - formatNumber, - ), + formatNumber + ) ).toBeUndefined() }) @@ -594,11 +594,11 @@ describe('parseLocalActivity', () => { MockUSDC_MAINNET, mockCurrencyAmountRawUSDC, MockDAI, - mockCurrencyAmountRaw, + mockCurrencyAmountRaw ), } as SignatureDetails, - formatNumber, - ), + formatNumber + ) ).toEqual({ chainId: 1, currencies: [MockUSDC_MAINNET, MockDAI], diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx index 1f0a8c0e7ac..37baf7f18d8 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx @@ -24,8 +24,6 @@ import { NftApprovalPartsFragment, NftApproveForAllPartsFragment, NftTransferPartsFragment, - OnRampTransactionDetailsPartsFragment, - OnRampTransferPartsFragment, TokenApprovalPartsFragment, TokenAssetPartsFragment, TokenTransferPartsFragment, @@ -358,7 +356,6 @@ function parseLPTransfers(changes: TransactionChanges, formatNumberOrString: For } type TransactionActivity = AssetActivityPartsFragment & { details: TransactionDetailsPartsFragment } -type FiatOnRampActivity = AssetActivityPartsFragment & { details: OnRampTransactionDetailsPartsFragment } function parseSendReceive( changes: TransactionChanges, @@ -506,83 +503,6 @@ function parseUniswapXOrder(activity: OrderActivity): Activity | undefined { } } -function parseFiatOnRampTransaction(activity: TransactionActivity | FiatOnRampActivity): Activity { - const chainId = supportedChainIdFromGQLChain(activity.chain) - if (!chainId) { - const error = new Error('Invalid activity from unsupported chain received from GQL') - logger.error(error, { - tags: { - file: 'parseRemote', - function: 'parseRemote', - }, - extra: { activity }, - }) - throw error - } - if (activity.details.__typename === 'OnRampTransactionDetails') { - const onRampTransfer = activity.details.onRampTransfer - return { - from: activity.details.receiverAddress, - hash: activity.id, - chainId, - timestamp: activity.timestamp, - logos: [onRampTransfer.token.project?.logo?.url], - currencies: [gqlToCurrency(onRampTransfer.token)], - title: t('fiatOnRamp.purchasedOn', { - serviceProvider: onRampTransfer.serviceProvider.name, - }), - descriptor: t('fiatOnRamp.exchangeRate', { - outputAmount: onRampTransfer.amount, - outputSymbol: onRampTransfer.token.symbol, - inputAmount: onRampTransfer.sourceAmount, - inputSymbol: onRampTransfer.sourceCurrency, - }), - suffixIconSrc: onRampTransfer.serviceProvider.logoDarkUrl, - status: activity.details.status, - } - } else if (activity.details.__typename === 'TransactionDetails') { - const assetChange = activity.details.assetChanges[0] - if (assetChange?.__typename !== 'OnRampTransfer') { - logger.error('Unexpected asset change type, expected OnRampTransfer', { - tags: { - file: 'parseRemote', - function: 'parseRemote', - }, - }) - } - const onRampTransfer = assetChange as OnRampTransferPartsFragment - return { - from: activity.details.from, - hash: activity.details.hash, - chainId, - timestamp: activity.timestamp, - logos: [onRampTransfer.token.project?.logo?.url], - currencies: [gqlToCurrency(onRampTransfer.token)], - title: t('fiatOnRamp.purchasedOn', { - serviceProvider: onRampTransfer.serviceProvider.name, - }), - descriptor: t('fiatOnRamp.exchangeRate', { - outputAmount: onRampTransfer.amount, - outputSymbol: onRampTransfer.token.symbol, - inputAmount: onRampTransfer.sourceAmount, - inputSymbol: onRampTransfer.sourceCurrency, - }), - suffixIconSrc: onRampTransfer.serviceProvider.logoDarkUrl, - status: activity.details.status, - } - } else { - const error = new Error('Invalid Fiat On Ramp activity type received from GQL') - logger.error(error, { - tags: { - file: 'parseRemote', - function: 'parseFiatOnRampTransaction', - }, - extra: { activity }, - }) - throw error - } -} - function parseRemoteActivity( assetActivity: AssetActivityPartsFragment | undefined, account: string, @@ -598,12 +518,8 @@ function parseRemoteActivity( return parseUniswapXOrder(assetActivity as OrderActivity) } - if ( - assetActivity.details.__typename === 'OnRampTransactionDetails' || - (assetActivity.details.__typename === 'TransactionDetails' && - assetActivity.details.type === TransactionType.OnRamp) - ) { - return parseFiatOnRampTransaction(assetActivity as TransactionActivity) + if (assetActivity.details.__typename === 'OnRampTransactionDetails') { + return undefined // TODO(WEB-4187): support onramp transactions } const changes = assetActivity.details.assetChanges.reduce( diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/types.ts b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/types.ts index 60d8ec7aa32..1c709ea36a3 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/types.ts +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/types.ts @@ -23,7 +23,6 @@ export type Activity = { from: string nonce?: number | null prefixIconSrc?: string - suffixIconSrc?: string cancelled?: boolean isSpam?: boolean } diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/utils.test.ts b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/utils.test.ts index 7183d388e41..e612bb1cfb1 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/utils.test.ts +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/utils.test.ts @@ -23,7 +23,7 @@ describe('createGroups', () => { transactions: expect.arrayContaining([ expect.objectContaining({ timestamp: expect.any(Number), status: TransactionStatus.Confirmed }), ]), - }), + }) ) expect(createGroups(mockActivities, true)).toEqual([]) }) @@ -43,7 +43,7 @@ describe('createGroups', () => { transactions: expect.arrayContaining([ expect.objectContaining({ timestamp: 1700000000, status: TransactionStatus.Pending }), ]), - }), + }) ) expect(result).toContainEqual( @@ -52,7 +52,7 @@ describe('createGroups', () => { transactions: expect.arrayContaining([ expect.objectContaining({ timestamp: expect.any(Number), status: TransactionStatus.Confirmed }), ]), - }), + }) ) }) }) diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/EmptyWallet.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/EmptyWallet.tsx index 1edf1419eee..9377496bd3c 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/EmptyWallet.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/EmptyWallet.tsx @@ -1,6 +1,6 @@ import { Trans, t } from 'i18n' -import styled from 'lib/styled-components' import { useCallback, useMemo } from 'react' +import styled from 'styled-components' import { Flex, Text, useIsDarkMode } from 'ui/src' import { CRYPTO_PURCHASE_BACKGROUND_DARK, CRYPTO_PURCHASE_BACKGROUND_LIGHT } from 'ui/src/assets' import { ArrowDownCircle, Buy as BuyIcon } from 'ui/src/components/icons' @@ -38,8 +38,8 @@ export const EmptyWallet = ({ BackgroundImageWrapperCallback, }, { - title: t('fiatOnRamp.receiveCrypto.title'), - blurb: t('fiatOnRamp.receiveCrypto.transferFunds'), + title: t('home.tokens.empty.action.receive.title'), + blurb: t('home.tokens.empty.action.receive.description'), elementName: ElementName.EmptyStateReceive, icon: , onPress: handleReceiveCryptoClick, diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/ExpandoRow.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/ExpandoRow.tsx index 691556bd2b7..4286a0317a2 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/ExpandoRow.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/ExpandoRow.tsx @@ -1,9 +1,9 @@ import Column from 'components/Column' import Row from 'components/Row' import { t } from 'i18n' -import styled from 'lib/styled-components' import { PropsWithChildren } from 'react' import { ChevronDown } from 'react-feather' +import styled from 'styled-components' import { ThemedText } from 'theme/components' const ExpandIcon = styled(ChevronDown)<{ $expanded: boolean }>` diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/ExtensionDeeplinks.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/ExtensionDeeplinks.tsx deleted file mode 100644 index 192720fc63b..00000000000 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/ExtensionDeeplinks.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { MenuState, miniPortfolioMenuStateAtom } from 'components/AccountDrawer/DefaultMenu' -import { useOpenLimitOrders, usePendingActivity } from 'components/AccountDrawer/MiniPortfolio/Activity/hooks' -import { useFilterPossiblyMaliciousPositionInfo } from 'components/AccountDrawer/MiniPortfolio/Pools' -import useMultiChainPositions from 'components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions' -import { useAccountDrawer } from 'components/AccountDrawer/MiniPortfolio/hooks' -import { Pool } from 'components/Icons/Pool' -import { ExtensionRequestMethods, useUniswapExtensionConnector } from 'components/WalletModal/useOrderedConnections' -import { t } from 'i18n' -import { useUpdateAtom } from 'jotai/utils' -import { useTheme } from 'lib/styled-components' -import { useEffect, useState } from 'react' -import { Button, Flex, Image, Text } from 'ui/src' -import { UNISWAP_LOGO } from 'ui/src/assets' -import { ArrowRightToLine, RotatableChevron, TimePast } from 'ui/src/components/icons' -import { iconSizes } from 'ui/src/theme/iconSizes' - -const UnreadIndicator = () => { - const theme = useTheme() - - return ( - - - - - - ) -} - -const DeepLinkButton = ({ Icon, Label, onPress }: { Icon: JSX.Element; Label: string; onPress: () => void }) => { - return ( - - ) -} - -export function ExtensionDeeplinks({ account }: { account: string }) { - const theme = useTheme() - const uniswapExtensionConnector = useUniswapExtensionConnector() - const accountDrawer = useAccountDrawer() - const setMenu = useUpdateAtom(miniPortfolioMenuStateAtom) - const { openLimitOrders } = useOpenLimitOrders(account) - - const [activityUnread, setActivityUnread] = useState(false) - const { hasPendingActivity } = usePendingActivity() - useEffect(() => { - if (hasPendingActivity) { - setActivityUnread(true) - } - }, [hasPendingActivity]) - - const { positions } = useMultiChainPositions(account) - const filteredPositions = useFilterPossiblyMaliciousPositionInfo(positions) - - if (!uniswapExtensionConnector) { - return null - } - - return ( - - } - Label={t('extension.open')} - onPress={() => { - uniswapExtensionConnector.extensionRequest(ExtensionRequestMethods.OPEN_SIDEBAR, 'Tokens') - accountDrawer.close() - }} - /> - - - {activityUnread && } - - } - Label={t('common.activity')} - onPress={() => { - uniswapExtensionConnector.extensionRequest(ExtensionRequestMethods.OPEN_SIDEBAR, 'Activity') - accountDrawer.close() - setActivityUnread(false) - }} - /> - {filteredPositions.length > 0 && ( - } - Label={t('common.pools')} - onPress={() => setMenu(MenuState.POOLS)} - /> - )} - {openLimitOrders.length > 0 && ( - } - Label={t('common.limits')} - onPress={() => setMenu(MenuState.LIMITS)} - /> - )} - - ) -} diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitDetailActivityRow.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitDetailActivityRow.tsx index 103c2f58e98..39e30ed4093 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitDetailActivityRow.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitDetailActivityRow.tsx @@ -12,10 +12,10 @@ import { parseUnits } from 'ethers/lib/utils' import { useCurrencyInfo } from 'hooks/Tokens' import { useScreenSize } from 'hooks/screenSize' import { Trans } from 'i18n' -import styled, { useTheme } from 'lib/styled-components' import { Checkbox } from 'nft/components/layout/Checkbox' import { useMemo, useState } from 'react' import { ArrowRight } from 'react-feather' +import styled, { useTheme } from 'styled-components' import { EllipsisStyle, ThemedText } from 'theme/components' import { UniswapXOrderStatus } from 'types/uniswapx' import { useFormatter } from 'utils/formatNumbers' diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitsMenu.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitsMenu.tsx index 06dbf0679ba..3014f3d8387 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitsMenu.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/LimitsMenu.tsx @@ -11,9 +11,9 @@ import { ButtonEmphasis, ButtonSize, ThemeButton } from 'components/Button' import Column from 'components/Column' import { LimitDisclaimer } from 'components/swap/LimitDisclaimer' import { Plural, Trans, t } from 'i18n' -import styled from 'lib/styled-components' import { useMemo, useState } from 'react' import { UniswapXOrderDetails } from 'state/signatures/types' +import styled from 'styled-components' import { UniswapXOrderStatus } from 'types/uniswapx' const Container = styled(Column)` diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/OpenLimitOrdersButton.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/OpenLimitOrdersButton.tsx index 7e36e0aaebe..bb0ee3ae8ef 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/OpenLimitOrdersButton.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/OpenLimitOrdersButton.tsx @@ -1,8 +1,8 @@ import { useOpenLimitOrders } from 'components/AccountDrawer/MiniPortfolio/Activity/hooks' import { TabButton } from 'components/AccountDrawer/MiniPortfolio/shared' import { Plural, Trans, t } from 'i18n' -import { useTheme } from 'lib/styled-components' import { Clock } from 'react-feather' +import { useTheme } from 'styled-components' function getExtraWarning(openLimitOrders: any[]) { if (openLimitOrders.length >= 100) { diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitDetailActivityRow.test.tsx.snap b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitDetailActivityRow.test.tsx.snap index 0d27cc71a9e..d3f174be935 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitDetailActivityRow.test.tsx.snap +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitDetailActivityRow.test.tsx.snap @@ -1,29 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`LimitDetailActivityRow should render with valid details 1`] = ` -.c6 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c4 { - display: grid; - grid-auto-rows: auto; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - .c0 { box-sizing: border-box; margin: 0; @@ -88,6 +65,29 @@ exports[`LimitDetailActivityRow should render with valid details 1`] = ` letter-spacing: -0.01em; } +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c4 { + display: grid; + grid-auto-rows: auto; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + .c2 { gap: 12px; height: 68px; diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitsMenu.test.tsx.snap b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitsMenu.test.tsx.snap index b029f5fc5af..61a187120b3 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitsMenu.test.tsx.snap +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Limits/__snapshots__/LimitsMenu.test.tsx.snap @@ -1,44 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`LimitsMenu should render when there are two open orders 1`] = ` -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c6 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 8px; -} - -.c17 { - display: grid; - grid-auto-rows: auto; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - .c13 { box-sizing: border-box; margin: 0; @@ -122,6 +84,44 @@ exports[`LimitsMenu should render when there are two open orders 1`] = ` opacity: 0.4; } +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 8px; +} + +.c17 { + display: grid; + grid-auto-rows: auto; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + .c7 { background-color: #F9F9F9; border-radius: 12px; @@ -588,44 +588,6 @@ exports[`LimitsMenu should render when there are two open orders 1`] = ` `; exports[`LimitsMenu should render when there is one open order 1`] = ` -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c6 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 8px; -} - -.c17 { - display: grid; - grid-auto-rows: auto; - -webkit-box-flex: 1; - -webkit-flex-grow: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - .c13 { box-sizing: border-box; margin: 0; @@ -709,6 +671,44 @@ exports[`LimitsMenu should render when there is one open order 1`] = ` opacity: 0.4; } +.c0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + gap: 8px; +} + +.c17 { + display: grid; + grid-auto-rows: auto; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + .c7 { background-color: #F9F9F9; border-radius: 12px; diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/NFTItem.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/NFTItem.tsx index 3787f70b3e8..3e5f5e6bfaf 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/NFTItem.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/NFTItem.tsx @@ -4,13 +4,13 @@ import Column from 'components/Column' import Row from 'components/Row' import { MouseFollowTooltip, TooltipSize } from 'components/Tooltip' import { t } from 'i18next' -import styled from 'lib/styled-components' import { Box } from 'nft/components/Box' import { NftCard } from 'nft/components/card' import { detailsHref } from 'nft/components/card/utils' import { VerifiedIcon } from 'nft/components/icons' import { WalletAsset } from 'nft/types' import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' import { ThemedText } from 'theme/components' import { capitalize } from 'tsafe' import { Chain } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/index.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/index.tsx index e23566da226..deb977c21a9 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/index.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/NFTs/index.tsx @@ -4,7 +4,6 @@ import { useAccountDrawer } from 'components/AccountDrawer/MiniPortfolio/hooks' import { TabButton } from 'components/AccountDrawer/MiniPortfolio/shared' import { useNftBalance } from 'graphql/data/nft/NftBalance' import { t } from 'i18n' -import styled from 'lib/styled-components' import { LoadingAssets } from 'nft/components/collection/CollectionAssetLoading' import { EmptyWalletModule } from 'nft/components/profile/view/EmptyWalletContent' import { useProfilePageState, useSellAsset, useWalletCollections } from 'nft/hooks' @@ -12,6 +11,7 @@ import { ProfilePageStateType } from 'nft/types' import { useCallback, useState } from 'react' import InfiniteScroll from 'react-infinite-scroll-component' import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' import { Gallery } from 'ui/src/components/icons' import { Chain } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { FeatureFlags } from 'uniswap/src/features/gating/flags' diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/UniExtensionPoolsMenu.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/UniExtensionPoolsMenu.tsx deleted file mode 100644 index 85ff437a5be..00000000000 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/UniExtensionPoolsMenu.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import Pools from 'components/AccountDrawer/MiniPortfolio/Pools' -import { SlideOutMenu } from 'components/AccountDrawer/SlideOutMenu' -import Column from 'components/Column' -import { Trans } from 'i18n' -import styled from 'lib/styled-components' - -const Container = styled(Column)` - height: 100%; - position: relative; -` - -export function UniExtensionPoolsMenu({ onClose, account }: { account: string; onClose: () => void }) { - return ( - } onClose={onClose}> - - - - - ) -} diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/hooks.ts b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/hooks.ts index e909758c2c8..1ad6803f1db 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/hooks.ts +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/hooks.ts @@ -98,7 +98,7 @@ export function usePoolPriceMap(positions: PositionInfo[] | undefined) { } function useFeeValue(token: Token, fee: number | undefined, queriedPrice: number | undefined) { - const { price: stablecoinPrice } = useStablecoinPrice(!queriedPrice ? token : undefined) + const stablecoinPrice = useStablecoinPrice(!queriedPrice ? token : undefined) return useMemo(() => { // Prefers gql price, as fetching stablecoinPrice will trigger multiple infura calls for each pool position const price = queriedPrice ?? (stablecoinPrice ? parseFloat(stablecoinPrice.toSignificant()) : undefined) diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/index.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/index.tsx index 93913c03cb7..5edea6ccc1a 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/index.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/index.tsx @@ -17,10 +17,10 @@ import { useAccount } from 'hooks/useAccount' import { useFilterPossiblyMaliciousPositions } from 'hooks/useFilterPossiblyMaliciousPositions' import { useSwitchChain } from 'hooks/useSwitchChain' import { t } from 'i18n' -import styled from 'lib/styled-components' import { EmptyWalletModule } from 'nft/components/profile/view/EmptyWalletContent' import { useCallback, useMemo, useReducer } from 'react' import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' import { ThemedText } from 'theme/components' import Trace from 'uniswap/src/features/telemetry/Trace' import { NumberType, useFormatter } from 'utils/formatNumbers' @@ -31,7 +31,7 @@ import { NumberType, useFormatter } from 'utils/formatNumbers' * filters the PositionDetails data for malicious content, * and then returns the original data in its original format. */ -export function useFilterPossiblyMaliciousPositionInfo(positions: PositionInfo[] | undefined): PositionInfo[] { +function useFilterPossiblyMaliciousPositionInfo(positions: PositionInfo[] | undefined): PositionInfo[] { const tokenIdsToPositionInfo: Record = useMemo( () => positions diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions.tsx index a3e35f8aa86..38314513aeb 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Pools/useMultiChainPositions.tsx @@ -13,7 +13,7 @@ import { usePoolPriceMap, useV3ManagerContracts, } from 'components/AccountDrawer/MiniPortfolio/Pools/hooks' -import { PRODUCTION_CHAIN_IDS } from 'constants/chains' +import { L1_CHAIN_IDS, L2_CHAIN_IDS, TESTNET_CHAIN_IDS } from 'constants/chains' import { BigNumber } from 'ethers/lib/ethers' import { Interface } from 'ethers/lib/utils' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' @@ -51,6 +51,10 @@ type FeeAmounts = [BigNumber, BigNumber] const MAX_UINT128 = BigNumber.from(2).pow(128).sub(1) +const DEFAULT_CHAINS = [...L1_CHAIN_IDS, ...L2_CHAIN_IDS].filter((chain: number) => { + return !TESTNET_CHAIN_IDS.includes(chain) +}) + type UseMultiChainPositionsData = { positions?: PositionInfo[]; loading: boolean } /** @@ -62,10 +66,7 @@ type UseMultiChainPositionsData = { positions?: PositionInfo[]; loading: boolean * @param chains - chains to fetch positions from * @returns positions, fees */ -export default function useMultiChainPositions( - account: string, - chains = PRODUCTION_CHAIN_IDS, -): UseMultiChainPositionsData { +export default function useMultiChainPositions(account: string, chains = DEFAULT_CHAINS): UseMultiChainPositionsData { const pms = useV3ManagerContracts(chains) const multicalls = useInterfaceMulticallContracts(chains) diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioLogo.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioLogo.tsx index 4af15148e66..bccd8611878 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioLogo.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioLogo.tsx @@ -10,8 +10,8 @@ import { } from 'components/DoubleLogo' import Identicon from 'components/Identicon' import { ChainLogo } from 'components/Logo/ChainLogo' -import styled from 'lib/styled-components' import React from 'react' +import styled from 'styled-components' import { InterfaceChainId, UniverseChainId } from 'uniswap/src/types/chains' const UnknownContract = styled(UnknownStatus)` diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioRow.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioRow.tsx index 2569e566a31..7e55431cea9 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioRow.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/PortfolioRow.tsx @@ -1,7 +1,7 @@ import Column, { AutoColumn } from 'components/Column' import Row from 'components/Row' import { LoadingBubble } from 'components/Tokens/loading' -import styled, { css, keyframes } from 'lib/styled-components' +import styled, { css, keyframes } from 'styled-components' export const PortfolioRowWrapper = styled(Row)<{ onClick?: any }>` gap: 12px; diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Tokens/index.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/Tokens/index.tsx index 025b8e38146..73467be9f9e 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Tokens/index.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Tokens/index.tsx @@ -14,10 +14,10 @@ import { useTokenBalancesQuery } from 'graphql/data/apollo/TokenBalancesProvider import { PortfolioToken } from 'graphql/data/portfolios' import { getTokenDetailsURL, gqlToCurrency } from 'graphql/data/util' import { useAtomValue } from 'jotai/utils' -import styled from 'lib/styled-components' import { EmptyWalletModule } from 'nft/components/profile/view/EmptyWalletContent' import { useCallback, useMemo, useState } from 'react' import { useNavigate } from 'react-router-dom' +import styled from 'styled-components' import { EllipsisStyle, ThemedText } from 'theme/components' import { PortfolioTokenBalancePartsFragment } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import Trace from 'uniswap/src/features/telemetry/Trace' diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/index.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/index.tsx index 4cc631dd607..a93dcd4f03d 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/index.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/index.tsx @@ -12,8 +12,8 @@ import { useDisableNFTRoutes } from 'hooks/useDisableNFTRoutes' import { useIsNftPage } from 'hooks/useIsNftPage' import { Trans } from 'i18n' import { atom, useAtom } from 'jotai' -import styled, { useTheme } from 'lib/styled-components' import { useEffect, useState } from 'react' +import styled, { useTheme } from 'styled-components' import { BREAKPOINTS } from 'theme' import { ThemedText } from 'theme/components' import Trace from 'uniswap/src/features/telemetry/Trace' diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/shared.tsx b/apps/web/src/components/AccountDrawer/MiniPortfolio/shared.tsx index 161a71452f9..bd8aaff7e91 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/shared.tsx +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/shared.tsx @@ -1,8 +1,8 @@ import Column from 'components/Column' import Row from 'components/Row' -import styled, { useTheme } from 'lib/styled-components' import { ReactNode } from 'react' import { ArrowRight } from 'react-feather' +import styled, { useTheme } from 'styled-components' import { ClickableStyle, ThemedText } from 'theme/components' import { Text } from 'ui/src' diff --git a/apps/web/src/components/AccountDrawer/SettingsMenu.tsx b/apps/web/src/components/AccountDrawer/SettingsMenu.tsx index a2259883571..ab6316f70db 100644 --- a/apps/web/src/components/AccountDrawer/SettingsMenu.tsx +++ b/apps/web/src/components/AccountDrawer/SettingsMenu.tsx @@ -11,9 +11,9 @@ import { LOCALE_LABEL } from 'constants/locales' import { useActiveLocalCurrency } from 'hooks/useActiveLocalCurrency' import { useActiveLocale } from 'hooks/useActiveLocale' import { Trans } from 'i18n' -import styled from 'lib/styled-components' import { ReactNode } from 'react' import { ChevronRight } from 'react-feather' +import styled from 'styled-components' import { ClickableStyle, ThemedText } from 'theme/components' import ThemeToggle from 'theme/components/ThemeToggle' import { FeatureFlags } from 'uniswap/src/features/gating/flags' diff --git a/apps/web/src/components/AccountDrawer/SettingsToggle.tsx b/apps/web/src/components/AccountDrawer/SettingsToggle.tsx index 5d4661d2d07..39117ffdf28 100644 --- a/apps/web/src/components/AccountDrawer/SettingsToggle.tsx +++ b/apps/web/src/components/AccountDrawer/SettingsToggle.tsx @@ -1,8 +1,8 @@ import Column from 'components/Column' import Row from 'components/Row' import Toggle from 'components/Toggle' -import styled from 'lib/styled-components' import { ReactNode } from 'react' +import styled from 'styled-components' import { ThemedText } from 'theme/components' const StyledColumn = styled(Column)` diff --git a/apps/web/src/components/AccountDrawer/SlideOutMenu.tsx b/apps/web/src/components/AccountDrawer/SlideOutMenu.tsx index 2d8d5f040ec..e8ce58bacd2 100644 --- a/apps/web/src/components/AccountDrawer/SlideOutMenu.tsx +++ b/apps/web/src/components/AccountDrawer/SlideOutMenu.tsx @@ -1,7 +1,7 @@ import Column from 'components/Column' import { ScrollBarStyles } from 'components/Common' -import styled from 'lib/styled-components' import { ArrowLeft } from 'react-feather' +import styled from 'styled-components' import { ClickableStyle, ThemedText } from 'theme/components' const Menu = styled(Column)` diff --git a/apps/web/src/components/AccountDrawer/Status.tsx b/apps/web/src/components/AccountDrawer/Status.tsx index bf8eced156e..07d981c554e 100644 --- a/apps/web/src/components/AccountDrawer/Status.tsx +++ b/apps/web/src/components/AccountDrawer/Status.tsx @@ -1,4 +1,3 @@ -import { AddressDisplay } from 'components/AccountDetails/AddressDisplay' import Column from 'components/Column' import { ENS } from 'components/Icons/ENS' import { EthMini } from 'components/Icons/EthMini' @@ -6,10 +5,11 @@ import StatusIcon from 'components/Identicon/StatusIcon' import Popover from 'components/Popover' import Row from 'components/Row' import { useOnClickOutside } from 'hooks/useOnClickOutside' -import styled from 'lib/styled-components' import { useRef, useState } from 'react' import { MoreHorizontal } from 'react-feather' -import { ClickableStyle, CopyHelper, ThemedText } from 'theme/components' +import styled from 'styled-components' +import { ClickableStyle, CopyHelper, EllipsisStyle, ThemedText } from 'theme/components' +import { Unitag } from 'ui/src/components/icons' import { shortenAddress } from 'utilities/src/addresses' const Container = styled.div` @@ -26,6 +26,13 @@ const Identifiers = styled.div` overflow: hidden; flex: 1 1 auto; ` +const IdentifierText = styled.span` + ${EllipsisStyle} + max-width: 120px; + @media screen and (min-width: 1440px) { + max-width: 180px; + } +` const SecondaryIdentifiersContainer = styled(Row)` position: relative; user-select: none; @@ -73,7 +80,7 @@ function SecondaryIdentifier({ ) } -export function SecondaryIdentifiers({ +function SecondaryIdentifiers({ account, uniswapUsername, ensUsername, @@ -123,19 +130,26 @@ export function Status({ account, ensUsername, uniswapUsername, - showAddressCopy = true, }: { account: string ensUsername: string | null uniswapUsername?: string - showAddressCopy?: boolean }) { return ( - + + + {uniswapUsername ?? ensUsername ?? shortenAddress(account)} + {uniswapUsername && } + + {(uniswapUsername || ensUsername) && ( diff --git a/apps/web/src/components/AccountDrawer/UniwalletModal.tsx b/apps/web/src/components/AccountDrawer/UniwalletModal.tsx index 170e3d11755..960b07d1a11 100644 --- a/apps/web/src/components/AccountDrawer/UniwalletModal.tsx +++ b/apps/web/src/components/AccountDrawer/UniwalletModal.tsx @@ -8,9 +8,9 @@ import { useConnectorWithId } from 'components/WalletModal/useOrderedConnections import { CONNECTION } from 'components/Web3Provider/constants' import { useConnect } from 'hooks/useConnect' import { Trans } from 'i18n' -import styled, { useTheme } from 'lib/styled-components' import { QRCodeSVG } from 'qrcode.react' import { useCallback, useEffect, useState } from 'react' +import styled, { useTheme } from 'styled-components' import { CloseIcon, ThemedText } from 'theme/components' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { isWebAndroid, isWebIOS } from 'utilities/src/platform' @@ -69,8 +69,6 @@ export default function UniwalletModal() { useEffect(() => { if (open) { sendAnalyticsEvent(InterfaceEventName.UNIWALLET_CONNECT_MODAL_OPENED) - } else { - setUri(undefined) } }, [open]) diff --git a/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap b/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap deleted file mode 100644 index ccd52f478d3..00000000000 --- a/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,1657 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`AccountDrawer tests AccountDrawer styles when isUniExtensionAvailable is false 1`] = ` - - .c7 { - box-sizing: border-box; - margin: 0; - min-width: 0; - width: 100%; -} - -.c14 { - box-sizing: border-box; - margin: 0; - min-width: 0; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.c8 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.c15 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: flex-start; - -webkit-box-align: flex-start; - -ms-flex-align: flex-start; - align-items: flex-start; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c9 { - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.c9 > * { - margin: !important; -} - -.c10 { - color: #222222; - -webkit-letter-spacing: -0.01em; - -moz-letter-spacing: -0.01em; - -ms-letter-spacing: -0.01em; - letter-spacing: -0.01em; -} - -.c24 { - color: #7D7D7D; - -webkit-letter-spacing: -0.01em; - -moz-letter-spacing: -0.01em; - -ms-letter-spacing: -0.01em; - letter-spacing: -0.01em; -} - -.c25 { - -webkit-text-decoration: none; - text-decoration: none; - cursor: pointer; - -webkit-transition-duration: 125ms; - transition-duration: 125ms; - color: #FC72FF; - stroke: #FC72FF; - font-weight: 500; -} - -.c25:hover { - opacity: 0.6; -} - -.c25:active { - opacity: 0.4; -} - -.c4 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c13 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.c22 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; -} - -.c11 { - background-color: #FFFFFF; - -webkit-transition: width ease-in-out 125ms; - transition: width ease-in-out 125ms; - border-radius: 12px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - cursor: pointer; - position: relative; - overflow: hidden; - height: 32px; - width: 32px; - color: #7D7D7D; - border: none; - outline: none; -} - -.c11:hover { - background-color: #F9F9F9; - -webkit-transition: 125ms background-color ease-in, width ease-in-out 125ms; - transition: 125ms background-color ease-in, width ease-in-out 125ms; -} - -.c11:active { - background-color: #FFFFFF; - -webkit-transition: background-color 125ms linear, width ease-in-out 125ms; - transition: background-color 125ms linear, width ease-in-out 125ms; -} - -.c12 { - width: 24px; - height: 24px; - margin: auto; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; -} - -.c19 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: column nowrap; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.c18 { - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background-color: unset; - border: none; - cursor: pointer; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - opacity: 1; - padding: 18px; - -webkit-transition: 125ms; - transition: 125ms; -} - -.c21 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - color: #222222; - font-size: 16px; - font-weight: 535; - padding: 0 8px; -} - -.c20 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: column nowrap; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; -} - -.c20 img { - border: 1px solid #22222212; - border-radius: 12px; -} - -.c20 > img, -.c20 span { - height: 40px; - width: 40px; -} - -.c17 { - -webkit-align-items: stretch; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - position: relative; - width: 100%; - background-color: #F9F9F9; -} - -.c17:hover { - cursor: pointer; - background-color: #22222212; -} - -.c17:focus { - background-color: #22222212; -} - -.c26 { - font-weight: 535; - color: #7D7D7D; -} - -.c6 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: column nowrap; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - background-color: #FFFFFF; - width: 100%; - padding: 14px 16px 16px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - gap: 16px; -} - -.c16 { - display: grid; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - grid-gap: 2px; - border-radius: 12px; - overflow: hidden; - opacity: 1; - max-height: 100vh; - -webkit-transition: max-height 125ms ease-in-out,opacity 125ms ease-in-out; - transition: max-height 125ms ease-in-out,opacity 125ms ease-in-out; -} - -.c23 { - padding: 0 4px; -} - -.c5 { - width: 100%; - height: 100%; -} - -.c1 { - z-index: 1040; - overflow: hidden; - top: 0; - left: 0; - position: fixed; - width: 100%; - height: 100%; - background-color: rgba(0,0,0,0.60); - opacity: 0; - pointer-events: none; -} - -.c3 { - overflow-y: auto; - overflow-x: hidden; - -webkit-scrollbar-width: thin; - -moz-scrollbar-width: thin; - -ms-scrollbar-width: thin; - scrollbar-width: thin; - -webkit-scrollbar-color: #22222212 transparent; - -moz-scrollbar-color: #22222212 transparent; - -ms-scrollbar-color: #22222212 transparent; - scrollbar-color: #22222212 transparent; - height: 100%; - -webkit-scrollbar-gutter: stable; - -moz-scrollbar-gutter: stable; - -ms-scrollbar-gutter: stable; - scrollbar-gutter: stable; - overscroll-behavior: contain; - border-radius: 12px; -} - -.c3::-webkit-scrollbar { - background: transparent; - width: 4px; - overflow-y: scroll; -} - -.c3::-webkit-scrollbar-thumb { - background: #22222212; - border-radius: 8px; -} - -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - height: calc(100% - 2 * 8px); - overflow: hidden; - position: fixed; - right: 8px; - top: 8px; - z-index: 1030; -} - -.c2 { - margin-right: -320px; - height: 100%; - overflow: hidden; - border-radius: 12px; - width: 320px; - max-width: 320px; - font-size: 16px; - background-color: #FFFFFF; - border: 1px solid #22222212; - box-shadow: 8px 12px 20px rgba(51,53,72,0.04),4px 6px 12px rgba(51,53,72,0.02),4px 4px 8px rgba(51,53,72,0.04); - -webkit-transition: margin-right 250ms; - transition: margin-right 250ms; -} - -@media (max-width:960px) { - .c20 { - -webkit-align-items: flex-end; - -webkit-box-align: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - } -} - -@media (max-width:960px) { - .c16 { - grid-template-columns: 1fr; - } -} - -@media only screen and (max-width:640px) { - .c1 { - opacity: 0; - pointer-events: none; - -webkit-transition: opacity 250ms ease-in-out; - transition: opacity 250ms ease-in-out; - } -} - -@media only screen and (max-width:640px) { - .c0 { - height: 100%; - top: 100%; - left: 0; - right: 0; - width: 100%; - overflow: visible; - } -} - -@media only screen and (max-width:640px) { - .c2 { - z-index: 1060; - position: absolute; - margin-right: 0; - top: 0; - height: calc(100% - 72px); - width: 100%; - max-width: 100%; - border-bottom-right-radius: 0px; - border-bottom-left-radius: 0px; - box-shadow: unset; - -webkit-transition: top 250ms; - transition: top 250ms; - } -} - -@media screen and (min-width:1440px) { - .c2 { - margin-right: -390px; - width: 390px; - max-width: 390px; - } -} - - - -
-
-
-
-
-
-
-
-
- Connect a wallet -
- -
-
-
-
-
- -
-
- -
-
- -
-
-
-
-
-
- By connecting a wallet, you agree to Uniswap Labs’ - - Terms of Service - - and consent to its - - Privacy Policy. - -
-
-
-
-
-
-
-
-
- - - -`; - -exports[`AccountDrawer tests AccountDrawer styles when isUniExtensionAvailable is true 1`] = ` - - .c7 { - box-sizing: border-box; - margin: 0; - min-width: 0; - width: 100%; -} - -.c15 { - box-sizing: border-box; - margin: 0; - min-width: 0; -} - -.c19 { - box-sizing: border-box; - margin: 0; - min-width: 0; - padding: 8px 0px; -} - -.c23 { - box-sizing: border-box; - margin: 0; - min-width: 0; - margin-left: 18px; - margin-right: 18px; -} - -.c27 { - box-sizing: border-box; - margin: 0; - min-width: 0; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.c8 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.c16 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; -} - -.c18 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 4px; -} - -.c20 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - padding: 8px 0px; -} - -.c24 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c28 { - width: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - -webkit-align-items: flex-start; - -webkit-box-align: flex-start; - -ms-flex-align: flex-start; - align-items: flex-start; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c9 { - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.c9 > * { - margin: !important; -} - -.c10 { - color: #222222; - -webkit-letter-spacing: -0.01em; - -moz-letter-spacing: -0.01em; - -ms-letter-spacing: -0.01em; - letter-spacing: -0.01em; -} - -.c36 { - color: #7D7D7D; - -webkit-letter-spacing: -0.01em; - -moz-letter-spacing: -0.01em; - -ms-letter-spacing: -0.01em; - letter-spacing: -0.01em; -} - -.c37 { - -webkit-text-decoration: none; - text-decoration: none; - cursor: pointer; - -webkit-transition-duration: 125ms; - transition-duration: 125ms; - color: #FC72FF; - stroke: #FC72FF; - font-weight: 500; -} - -.c37:hover { - opacity: 0.6; -} - -.c37:active { - opacity: 0.4; -} - -.c4 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.c13 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 16px; -} - -.c14 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; -} - -.c26 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - gap: 12px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.c11 { - background-color: #FFFFFF; - -webkit-transition: width ease-in-out 125ms; - transition: width ease-in-out 125ms; - border-radius: 12px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 0; - cursor: pointer; - position: relative; - overflow: hidden; - height: 32px; - width: 32px; - color: #7D7D7D; - border: none; - outline: none; -} - -.c11:hover { - background-color: #F9F9F9; - -webkit-transition: 125ms background-color ease-in, width ease-in-out 125ms; - transition: 125ms background-color ease-in, width ease-in-out 125ms; -} - -.c11:active { - background-color: #FFFFFF; - -webkit-transition: background-color 125ms linear, width ease-in-out 125ms; - transition: background-color 125ms linear, width ease-in-out 125ms; -} - -.c12 { - width: 24px; - height: 24px; - margin: auto; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; -} - -.c32 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: column nowrap; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.c31 { - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background-color: unset; - border: none; - cursor: pointer; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - opacity: 1; - padding: 18px; - -webkit-transition: 125ms; - transition: 125ms; -} - -.c34 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: row nowrap; - -ms-flex-flow: row nowrap; - flex-flow: row nowrap; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - color: #222222; - font-size: 16px; - font-weight: 535; - padding: 0 8px; -} - -.c33 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: column nowrap; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; -} - -.c33 img { - border: 1px solid #22222212; - border-radius: 12px; -} - -.c33 > img, -.c33 span { - height: 40px; - width: 40px; -} - -.c30 { - -webkit-align-items: stretch; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - position: relative; - width: 100%; - background-color: #F9F9F9; -} - -.c30:hover { - cursor: pointer; - background-color: #22222212; -} - -.c30:focus { - background-color: #22222212; -} - -.c38 { - font-weight: 535; - color: #7D7D7D; -} - -.c17 { - padding: 16px; - gap: 12px; - border-radius: 16px; - border: 1px solid #22222212; - overflow: hidden; - max-height: 72px; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - cursor: pointer; - position: relative; - z-index: 1; -} - -.c17:hover { - background: #22222212; -} - -.c6 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: column nowrap; - -ms-flex-flow: column nowrap; - flex-flow: column nowrap; - background-color: #FFFFFF; - width: 100%; - padding: 0px 16px 16px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - gap: 16px; -} - -.c29 { - display: grid; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - grid-gap: 2px; - border-radius: 12px; - overflow: hidden; - opacity: 1; - max-height: 100vh; - -webkit-transition: max-height 125ms ease-in-out,opacity 125ms ease-in-out; - transition: max-height 125ms ease-in-out,opacity 125ms ease-in-out; -} - -.c35 { - padding: 0 4px; -} - -.c21 { - -webkit-text-decoration: none; - text-decoration: none; - cursor: pointer; - -webkit-transition-duration: 125ms; - transition-duration: 125ms; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.c21:hover { - opacity: 0.6; -} - -.c21:active { - opacity: 0.4; -} - -.c22 { - height: 1px; - width: 100%; - background: #22222212; -} - -.c25 { - height: 20px; - width: 20px; - fill: #7D7D7D; - -webkit-flex-shrink: 0; - -ms-flex-negative: 0; - flex-shrink: 0; -} - -.c5 { - width: 100%; - height: 100%; -} - -.c1 { - z-index: 1040; - overflow: hidden; - top: 0; - left: 0; - position: fixed; - width: 100%; - height: 100%; - background-color: rgba(0,0,0,0.60); - opacity: 0; - pointer-events: none; -} - -.c3 { - overflow-y: auto; - overflow-x: hidden; - -webkit-scrollbar-width: thin; - -moz-scrollbar-width: thin; - -ms-scrollbar-width: thin; - scrollbar-width: thin; - -webkit-scrollbar-color: #22222212 transparent; - -moz-scrollbar-color: #22222212 transparent; - -ms-scrollbar-color: #22222212 transparent; - scrollbar-color: #22222212 transparent; - height: 100%; - -webkit-scrollbar-gutter: stable; - -moz-scrollbar-gutter: stable; - -ms-scrollbar-gutter: stable; - scrollbar-gutter: stable; - overscroll-behavior: contain; - border-radius: 12px; -} - -.c3::-webkit-scrollbar { - background: transparent; - width: 4px; - overflow-y: scroll; -} - -.c3::-webkit-scrollbar-thumb { - background: #22222212; - border-radius: 8px; -} - -.c0 { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - height: calc(100% - 2 * 8px); - overflow: hidden; - position: fixed; - right: 8px; - top: 8px; - z-index: 1030; - height: auto; - max-height: calc(100% - 88px); - right: 24px; - top: 72px; - -webkit-scrollbar-width: thin; - -moz-scrollbar-width: thin; - -ms-scrollbar-width: thin; - scrollbar-width: thin; - -webkit-scrollbar-color: #22222212 transparent; - -moz-scrollbar-color: #22222212 transparent; - -ms-scrollbar-color: #22222212 transparent; - scrollbar-color: #22222212 transparent; - height: 100%; -} - -.c0::-webkit-scrollbar { - background: transparent; - width: 4px; - overflow-y: scroll; -} - -.c0::-webkit-scrollbar-thumb { - background: #22222212; - border-radius: 8px; -} - -.c2 { - margin-right: -368px; - height: 100%; - overflow: hidden; - border-radius: 12px; - width: 320px; - max-width: 320px; - font-size: 16px; - background-color: #FFFFFF; - border: 1px solid #22222212; - box-shadow: 8px 12px 20px rgba(51,53,72,0.04),4px 6px 12px rgba(51,53,72,0.02),4px 4px 8px rgba(51,53,72,0.04); - -webkit-transition: margin-right 250ms; - transition: margin-right 250ms; - height: -webkit-max-content; - height: -moz-max-content; - height: max-content; - max-height: 100%; - width: 368px; - max-width: 368px; - border-radius: 20px; - box-shadow: 8px 12px 20px rgba(51,53,72,0.04),4px 6px 12px rgba(51,53,72,0.02),4px 4px 8px rgba(51,53,72,0.04); - -webkit-transform: scale(0.96); - -ms-transform: scale(0.96); - transform: scale(0.96); - -webkit-transform-origin: top right; - -ms-transform-origin: top right; - transform-origin: top right; - opacity: 0; - overflow-y: scroll; - -webkit-transition: -webkit-transform 125ms ease-in-out, opacity 125ms ease-in-out; - -webkit-transition: transform 125ms ease-in-out, opacity 125ms ease-in-out; - transition: transform 125ms ease-in-out, opacity 125ms ease-in-out; -} - -@media (max-width:960px) { - .c33 { - -webkit-align-items: flex-end; - -webkit-box-align: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - } -} - -@media (max-width:960px) { - .c29 { - grid-template-columns: 1fr; - } -} - -@media only screen and (max-width:640px) { - .c1 { - opacity: 0; - pointer-events: none; - -webkit-transition: opacity 250ms ease-in-out; - transition: opacity 250ms ease-in-out; - } -} - -@media only screen and (max-width:640px) { - .c0 { - height: 100%; - top: 100%; - left: 0; - right: 0; - width: 100%; - overflow: visible; - } -} - -@media only screen and (max-width:640px) { - .c2 { - z-index: 1060; - position: absolute; - margin-right: 0; - top: 0; - height: calc(100% - 72px); - width: 100%; - max-width: 100%; - border-bottom-right-radius: 0px; - border-bottom-left-radius: 0px; - box-shadow: unset; - -webkit-transition: top 250ms; - transition: top 250ms; - } -} - -@media screen and (min-width:1440px) { - .c2 { - margin-right: -390px; - width: 390px; - max-width: 390px; - } -} - - - -
-
-
-
-
-
-
-
-
- Connect a wallet -
- -
-
-
-
- - - -
-
- - Uniswap Mobile - - - Scan QR code to connect - -
-
-
-
-
-
-
-
- - Other wallets - - - - - -
-
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- By connecting a wallet, you agree to Uniswap Labs’ - - Terms of Service - - and consent to its - - Privacy Policy. - -
-
-
-
-
-
-
-
-
- - - -`; diff --git a/apps/web/src/components/AccountDrawer/index.test.tsx b/apps/web/src/components/AccountDrawer/index.test.tsx deleted file mode 100644 index 9d041bf0e19..00000000000 --- a/apps/web/src/components/AccountDrawer/index.test.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import AccountDrawer, { DRAWER_WIDTH, MODAL_WIDTH } from 'components/AccountDrawer' -import { useIsUniExtensionAvailable, useUniswapWalletOptions } from 'hooks/useUniswapWalletOptions' -import { mocked } from 'test-utils/mocked' -import { render, screen } from 'test-utils/render' - -jest.mock('hooks/useUniswapWalletOptions', () => ({ - useIsUniExtensionAvailable: jest.fn(), - useUniswapWalletOptions: jest.fn(), -})) - -describe('AccountDrawer tests', () => { - it('AccountDrawer styles when isUniExtensionAvailable is false', () => { - mocked(useUniswapWalletOptions).mockReturnValue(false) - mocked(useIsUniExtensionAvailable).mockReturnValue(false) - - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() - const drawerWrapper = screen.getByTestId('account-drawer') - expect(drawerWrapper).toBeInTheDocument() - expect(drawerWrapper).toHaveStyleRule('width', DRAWER_WIDTH) - }) - - it('AccountDrawer styles when isUniExtensionAvailable is true', () => { - mocked(useUniswapWalletOptions).mockReturnValue(true) - mocked(useIsUniExtensionAvailable).mockReturnValue(true) - - const { asFragment } = render() - expect(asFragment()).toMatchSnapshot() - const drawerWrapper = screen.getByTestId('account-drawer') - expect(drawerWrapper).toBeInTheDocument() - expect(drawerWrapper).toHaveStyleRule('width', MODAL_WIDTH) - }) -}) diff --git a/apps/web/src/components/AccountDrawer/index.tsx b/apps/web/src/components/AccountDrawer/index.tsx index 110a4d2b04e..10f22cb519f 100644 --- a/apps/web/src/components/AccountDrawer/index.tsx +++ b/apps/web/src/components/AccountDrawer/index.tsx @@ -2,17 +2,13 @@ import { InterfaceEventName } from '@uniswap/analytics-events' import DefaultMenu from 'components/AccountDrawer/DefaultMenu' import { useAccountDrawer } from 'components/AccountDrawer/MiniPortfolio/hooks' import { ScrollBarStyles } from 'components/Common' -import { Web3StatusRef } from 'components/Web3Status' import { useWindowSize } from 'hooks/screenSize' import useDisableScrolling from 'hooks/useDisableScrolling' -import { useOnClickOutside } from 'hooks/useOnClickOutside' import usePrevious from 'hooks/usePrevious' -import { useIsUniExtensionAvailable } from 'hooks/useUniswapWalletOptions' -import { useAtom } from 'jotai' -import styled, { css } from 'lib/styled-components' import { useEffect, useRef, useState } from 'react' import { ChevronsRight } from 'react-feather' import { useGesture } from 'react-use-gesture' +import styled from 'styled-components' import { BREAKPOINTS } from 'theme' import { ClickableStyle } from 'theme/components' import { Z_INDEX } from 'theme/zIndex' @@ -20,12 +16,10 @@ import Trace from 'uniswap/src/features/telemetry/Trace' import { isMobile } from 'utilities/src/platform' const DRAWER_WIDTH_XL = '390px' -export const DRAWER_WIDTH = '320px' +const DRAWER_WIDTH = '320px' const DRAWER_MARGIN = '8px' const DRAWER_OFFSET = '10px' -export const MODAL_WIDTH = '368px' - const ScrimBackground = styled.div<{ $open: boolean; $maxWidth?: number; $zIndex?: number }>` z-index: ${({ $zIndex }) => $zIndex ?? Z_INDEX.modalBackdrop}; overflow: hidden; @@ -77,7 +71,7 @@ const AccountDrawerScrollWrapper = styled.div` border-radius: 12px; ` -const Container = styled.div<{ isUniExtensionAvailable?: boolean }>` +const Container = styled.div` display: flex; flex-direction: row; height: calc(100% - 2 * ${DRAWER_MARGIN}); @@ -87,8 +81,6 @@ const Container = styled.div<{ isUniExtensionAvailable?: boolean }>` top: ${DRAWER_MARGIN}; z-index: ${Z_INDEX.fixed}; - ${({ isUniExtensionAvailable }) => isUniExtensionAvailable && ExtensionContainerStyles} - @media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.sm}px`}) { height: 100%; top: 100%; @@ -99,17 +91,8 @@ const Container = styled.div<{ isUniExtensionAvailable?: boolean }>` } ` -const ExtensionContainerStyles = css` - height: auto; - max-height: calc(100% - ${({ theme }) => theme.navHeight + 16}px); - right: 24px; - top: ${({ theme }) => theme.navHeight}px; - ${ScrollBarStyles} -` - -const AccountDrawerWrapper = styled.div<{ open: boolean; isUniExtensionAvailable?: boolean }>` - margin-right: ${({ open, isUniExtensionAvailable }) => - open ? 0 : '-' + (isUniExtensionAvailable ? MODAL_WIDTH : DRAWER_WIDTH)}; +const AccountDrawerWrapper = styled.div<{ open: boolean }>` + margin-right: ${({ open }) => (open ? 0 : '-' + DRAWER_WIDTH)}; height: 100%; overflow: hidden; @@ -143,23 +126,6 @@ const AccountDrawerWrapper = styled.div<{ open: boolean; isUniExtensionAvailable box-shadow: ${({ theme }) => theme.deprecated_deepShadow}; transition: margin-right ${({ theme }) => theme.transition.duration.medium}; - - ${({ isUniExtensionAvailable }) => isUniExtensionAvailable && ExtensionDrawerWrapperStyles} -` - -const ExtensionDrawerWrapperStyles = css<{ open: boolean }>` - height: max-content; - max-height: 100%; - width: ${MODAL_WIDTH}; - max-width: ${MODAL_WIDTH}; - border-radius: 20px; - box-shadow: ${({ theme }) => theme.deprecated_deepShadow}; - transform: scale(${({ open }) => (open ? 1 : 0.96)}); - transform-origin: top right; - opacity: ${({ open }) => (open ? 1 : 0)}; - overflow-y: scroll; - transition: ${({ theme }) => `transform ${theme.transition.duration.fast} ${theme.transition.timing.inOut}, - opacity ${theme.transition.duration.fast} ${theme.transition.timing.inOut}`}; ` const CloseIcon = styled(ChevronsRight).attrs({ size: 24 })` @@ -189,22 +155,6 @@ function AccountDrawer() { const accountDrawer = useAccountDrawer() const wasAccountDrawerOpen = usePrevious(accountDrawer.isOpen) const scrollRef = useRef(null) - const modalRef = useRef(null) - const isUniExtensionAvailable = useIsUniExtensionAvailable() - const [web3StatusRef] = useAtom(Web3StatusRef) - - useOnClickOutside( - modalRef, - () => { - if (isUniExtensionAvailable) { - accountDrawer.close() - } - }, - // Prevents quick close & re-open when tapping the Web3Status - // stopPropagation does not work here - web3StatusRef ? [web3StatusRef] : [], - ) - useEffect(() => { if (wasAccountDrawerOpen && !accountDrawer.isOpen) { scrollRef.current?.scrollTo({ top: 0, behavior: 'smooth' }) @@ -276,8 +226,8 @@ function AccountDrawer() { }) return ( - - {accountDrawer.isOpen && !isUniExtensionAvailable && ( + + {accountDrawer.isOpen && ( @@ -286,9 +236,6 @@ function AccountDrawer() { )} { - toggleModal() - openReceiveCryptoModal() - }, [toggleModal, openReceiveCryptoModal]) - - return ( - - - - - - {hasSecondaryIdentifier && ( - - - - )} - - - - - - - - - - - - - - - - - - - - ) -} diff --git a/apps/web/src/components/AddressQRModal/useAvatarColorProps.tsx b/apps/web/src/components/AddressQRModal/useAvatarColorProps.tsx deleted file mode 100644 index 9cf7c4b2381..00000000000 --- a/apps/web/src/components/AddressQRModal/useAvatarColorProps.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import useENSAvatar from 'hooks/useENSAvatar' -import { useMemo } from 'react' -import { - GradientProps, - getUniconColors, - passesContrast, - useExtractedColors, - useIsDarkMode, - useSporeColors, -} from 'ui/src' -import { useUnitagByAddress } from 'uniswap/src/features/unitags/hooks' - -// Fetches avatar for address, in priority uses: unitag avatar, ens avatar, undefined -// Note that this hook is used instead of just useENSAvatar because our implementation -// of useENSAvatar checks for reverse name resolution which Unitags does not support. -// Chose to do this because even if we used useENSAvatar without reverse name resolution, -// there is more latency because it has to go to the contract via CCIP-read first. -function useAvatar(address: string | undefined): { - avatar: Maybe - loading: boolean -} { - const { unitag, loading: unitagLoading } = useUnitagByAddress(address) - const { avatar: ensAvatar, loading: ensLoading } = useENSAvatar(address) - const unitagAvatar = unitag?.metadata?.avatar - - if (!address) { - return { loading: false, avatar: undefined } - } - - if (unitagAvatar) { - return { avatar: unitagAvatar, loading: false } - } - - if (ensAvatar) { - return { avatar: ensAvatar, loading: false } - } - - return { avatar: undefined, loading: ensLoading || unitagLoading } -} - -type AvatarColors = { - primary: string - base: string - detail: string -} - -type ColorProps = { - smartColor: string - gradientProps: GradientProps -} - -export const useAvatarColorProps = (address: Address): ColorProps => { - const colors = useSporeColors() - const isDarkMode = useIsDarkMode() - const { color: uniconColor } = getUniconColors(address, isDarkMode) as { color: string } - const { avatar, loading: avatarLoading } = useAvatar(address) - const { colors: avatarColors } = useExtractedColors(avatar) as { colors: AvatarColors } - const hasAvatar = !!avatar && !avatarLoading - - const smartColor: string = useMemo(() => { - const contrastThreshold = 3 // WCAG AA standard for contrast - const backgroundColor = colors.surface2.val // replace with your actual background color - - if (hasAvatar && avatarColors && avatarColors.primary) { - if (passesContrast(avatarColors.primary, backgroundColor, contrastThreshold)) { - return avatarColors.primary - } - if (passesContrast(avatarColors.base, backgroundColor, contrastThreshold)) { - return avatarColors.base - } - if (passesContrast(avatarColors.detail, backgroundColor, contrastThreshold)) { - return avatarColors.detail - } - // Modify the color if it doesn't pass the contrast check - // Replace 'modifiedColor' with the actual color you want to use - return colors.neutral1.val as string - } - return uniconColor - }, [avatarColors, hasAvatar, uniconColor, colors.surface2.val, colors.neutral1.val]) - - return { smartColor, gradientProps: {} } -} diff --git a/apps/web/src/components/Badge/RangeBadge.tsx b/apps/web/src/components/Badge/RangeBadge.tsx index 5befc16a237..c1a21524d40 100644 --- a/apps/web/src/components/Badge/RangeBadge.tsx +++ b/apps/web/src/components/Badge/RangeBadge.tsx @@ -1,7 +1,7 @@ import { MouseoverTooltip } from 'components/Tooltip' import { Trans } from 'i18n' -import styled, { useTheme } from 'lib/styled-components' import { AlertTriangle, Slash } from 'react-feather' +import styled, { useTheme } from 'styled-components' const BadgeWrapper = styled.div` font-size: 14px; diff --git a/apps/web/src/components/Badge/index.tsx b/apps/web/src/components/Badge/index.tsx index 7a816e62739..50ebce1f4df 100644 --- a/apps/web/src/components/Badge/index.tsx +++ b/apps/web/src/components/Badge/index.tsx @@ -1,6 +1,6 @@ -import styled, { DefaultTheme } from 'lib/styled-components' import { readableColor } from 'polished' import { PropsWithChildren } from 'react' +import styled, { DefaultTheme } from 'styled-components' export enum BadgeVariant { DEFAULT = 'DEFAULT', diff --git a/apps/web/src/components/Banner/Outage/OutageBanner.tsx b/apps/web/src/components/Banner/Outage/OutageBanner.tsx index 652b2f229e4..33bcbae705e 100644 --- a/apps/web/src/components/Banner/Outage/OutageBanner.tsx +++ b/apps/web/src/components/Banner/Outage/OutageBanner.tsx @@ -2,9 +2,9 @@ import { Container, PopupContainer, StyledXButton, TextContainer } from 'compone import { chainIdToBackendChain } from 'constants/chains' import { ChainOutageData } from 'featureFlags/flags/outageBanner' import { Trans } from 'i18n' -import styled, { useTheme } from 'lib/styled-components' import { useState } from 'react' import { Globe } from 'react-feather' +import styled, { useTheme } from 'styled-components' import { ExternalLink, ThemedText } from 'theme/components' import { capitalize } from 'tsafe' import { UniverseChainId } from 'uniswap/src/types/chains' diff --git a/apps/web/src/components/Banner/shared/styled.tsx b/apps/web/src/components/Banner/shared/styled.tsx index 71fb9a6999c..a9633549142 100644 --- a/apps/web/src/components/Banner/shared/styled.tsx +++ b/apps/web/src/components/Banner/shared/styled.tsx @@ -1,6 +1,6 @@ import { OpacityHoverState } from 'components/Common' -import styled from 'lib/styled-components' import { X } from 'react-feather' +import styled from 'styled-components' import { BREAKPOINTS } from 'theme' import { Z_INDEX } from 'theme/zIndex' diff --git a/apps/web/src/components/BreadcrumbNav/index.tsx b/apps/web/src/components/BreadcrumbNav/index.tsx index b74d044ff4e..ce151ee05ed 100644 --- a/apps/web/src/components/BreadcrumbNav/index.tsx +++ b/apps/web/src/components/BreadcrumbNav/index.tsx @@ -4,10 +4,10 @@ import Tooltip, { TooltipSize } from 'components/Tooltip' import { useScreenSize } from 'hooks/screenSize' import useCopyClipboard from 'hooks/useCopyClipboard' import { Trans, t } from 'i18n' -import styled, { useTheme } from 'lib/styled-components' import { useCallback, useState } from 'react' import { Copy } from 'react-feather' import { Link } from 'react-router-dom' +import styled, { useTheme } from 'styled-components' import { ClickableStyle } from 'theme/components' import { shortenAddress } from 'utilities/src/addresses' diff --git a/apps/web/src/components/Button/GetHelp.tsx b/apps/web/src/components/Button/GetHelp.tsx index fa242990aef..e09be814654 100644 --- a/apps/web/src/components/Button/GetHelp.tsx +++ b/apps/web/src/components/Button/GetHelp.tsx @@ -1,7 +1,7 @@ import { EnvelopeHeartIcon } from 'components/Icons/EnvelopeHeart' import Row from 'components/Row' import { Trans } from 'i18n' -import styled from 'lib/styled-components' +import styled from 'styled-components' import { ExternalLink } from 'theme/components' import { uniswapUrls } from 'uniswap/src/constants/urls' diff --git a/apps/web/src/components/Button/index.tsx b/apps/web/src/components/Button/index.tsx index 51c4e2d8a1b..67b6207650c 100644 --- a/apps/web/src/components/Button/index.tsx +++ b/apps/web/src/components/Button/index.tsx @@ -1,9 +1,9 @@ import { RowBetween } from 'components/Row' -import styled, { DefaultTheme, useTheme } from 'lib/styled-components' import { darken } from 'polished' import { forwardRef } from 'react' import { Check, ChevronDown } from 'react-feather' import { ButtonProps as ButtonPropsOriginal, Button as RebassButton } from 'rebass/styled-components' +import styled, { DefaultTheme, useTheme } from 'styled-components' export { default as LoadingButtonSpinner } from './LoadingButtonSpinner' diff --git a/apps/web/src/components/Card/index.tsx b/apps/web/src/components/Card/index.tsx index b53036bd0a0..9fb4767ff03 100644 --- a/apps/web/src/components/Card/index.tsx +++ b/apps/web/src/components/Card/index.tsx @@ -1,5 +1,5 @@ -import styled from 'lib/styled-components' import { Box } from 'rebass/styled-components' +import styled from 'styled-components' const Card = styled(Box)<{ width?: string; padding?: string; border?: string; $borderRadius?: string }>` width: ${({ width }) => width ?? '100%'}; diff --git a/apps/web/src/components/Charts/ChartHeader.tsx b/apps/web/src/components/Charts/ChartHeader.tsx index 138877d5c65..8104a75884f 100644 --- a/apps/web/src/components/Charts/ChartHeader.tsx +++ b/apps/web/src/components/Charts/ChartHeader.tsx @@ -2,9 +2,9 @@ import { useHeaderDateFormatter } from 'components/Charts/hooks' import Column from 'components/Column' import Row from 'components/Row' import { getProtocolColor, getProtocolName } from 'graphql/data/util' -import styled, { useTheme } from 'lib/styled-components' import { UTCTimestamp } from 'lightweight-charts' import { ReactElement, ReactNode } from 'react' +import styled, { useTheme } from 'styled-components' import { EllipsisStyle } from 'theme/components' import { ThemedText } from 'theme/components/text' import { textFadeIn } from 'theme/styles' diff --git a/apps/web/src/components/Charts/ChartModel.tsx b/apps/web/src/components/Charts/ChartModel.tsx index 683cbf24c94..9a34b582f53 100644 --- a/apps/web/src/components/Charts/ChartModel.tsx +++ b/apps/web/src/components/Charts/ChartModel.tsx @@ -8,7 +8,6 @@ import { useActiveLocale } from 'hooks/useActiveLocale' import { useOnClickOutside } from 'hooks/useOnClickOutside' import { Trans } from 'i18n' import { useUpdateAtom } from 'jotai/utils' -import styled, { DefaultTheme, useTheme } from 'lib/styled-components' import { BarPrice, CrosshairMode, @@ -21,6 +20,7 @@ import { createChart, } from 'lightweight-charts' import { ReactElement, useEffect, useMemo, useRef, useState } from 'react' +import styled, { DefaultTheme, useTheme } from 'styled-components' import { ThemedText } from 'theme/components' import { textFadeIn } from 'theme/styles' import { Z_INDEX } from 'theme/zIndex' diff --git a/apps/web/src/components/Charts/LoadingState.tsx b/apps/web/src/components/Charts/LoadingState.tsx index 98db0c3e61d..c09dcaaaf35 100644 --- a/apps/web/src/components/Charts/LoadingState.tsx +++ b/apps/web/src/components/Charts/LoadingState.tsx @@ -3,9 +3,9 @@ import Column from 'components/Column' import Row from 'components/Row' import { MissingDataIcon } from 'components/Table/icons' import { Trans } from 'i18n' -import styled, { useTheme } from 'lib/styled-components' import { lighten } from 'polished' import { PropsWithChildren, ReactNode } from 'react' +import styled, { useTheme } from 'styled-components' import { ThemedText } from 'theme/components' import { textFadeIn } from 'theme/styles' import { opacify } from 'theme/utils' diff --git a/apps/web/src/components/Charts/PriceChart/index.tsx b/apps/web/src/components/Charts/PriceChart/index.tsx index 5a4d6e43937..7fe21437037 100644 --- a/apps/web/src/components/Charts/PriceChart/index.tsx +++ b/apps/web/src/components/Charts/PriceChart/index.tsx @@ -9,7 +9,6 @@ import { PriceChartType } from 'components/Charts/utils' import { RowBetween } from 'components/Row' import { DeltaArrow, DeltaText, calculateDelta } from 'components/Tokens/TokenDetails/Delta' import { Trans } from 'i18n' -import styled from 'lib/styled-components' import { AreaData, AreaSeriesPartialOptions, @@ -23,6 +22,7 @@ import { UTCTimestamp, } from 'lightweight-charts' import { useMemo } from 'react' +import styled from 'styled-components' import { ThemedText } from 'theme/components' import { opacify } from 'theme/utils' import { NumberType, useFormatter } from 'utils/formatNumbers' diff --git a/apps/web/src/components/Charts/SparklineChart/LineChart.tsx b/apps/web/src/components/Charts/SparklineChart/LineChart.tsx index 6278dd6c934..3cb3fd376c9 100644 --- a/apps/web/src/components/Charts/SparklineChart/LineChart.tsx +++ b/apps/web/src/components/Charts/SparklineChart/LineChart.tsx @@ -1,8 +1,8 @@ import { Group } from '@visx/group' import { LinePath } from '@visx/shape' import { CurveFactory } from 'd3' -import { useTheme } from 'lib/styled-components' import React, { ReactNode } from 'react' +import { useTheme } from 'styled-components' interface LineChartProps { data: T[] diff --git a/apps/web/src/components/Charts/SparklineChart/index.tsx b/apps/web/src/components/Charts/SparklineChart/index.tsx index 58f8e927806..778e9e3892f 100644 --- a/apps/web/src/components/Charts/SparklineChart/index.tsx +++ b/apps/web/src/components/Charts/SparklineChart/index.tsx @@ -4,8 +4,8 @@ import { LoadingBubble } from 'components/Tokens/loading' import { curveCardinal, scaleLinear } from 'd3' import { SparklineMap, TopToken } from 'graphql/data/TopTokens' import { PricePoint } from 'graphql/data/util' -import styled, { useTheme } from 'lib/styled-components' import { memo } from 'react' +import styled, { useTheme } from 'styled-components' const LoadingContainer = styled.div` height: 100%; diff --git a/apps/web/src/components/Charts/StackedLineChart/index.tsx b/apps/web/src/components/Charts/StackedLineChart/index.tsx index 904826ec0c6..ad297d7012e 100644 --- a/apps/web/src/components/Charts/StackedLineChart/index.tsx +++ b/apps/web/src/components/Charts/StackedLineChart/index.tsx @@ -3,7 +3,6 @@ import { Chart, ChartModel, ChartModelParams } from 'components/Charts/ChartMode import { StackedAreaSeriesOptions } from 'components/Charts/StackedLineChart/stacked-area-series/options' import { StackedAreaSeries } from 'components/Charts/StackedLineChart/stacked-area-series/stacked-area-series' import { getProtocolColor } from 'graphql/data/util' -import { useTheme } from 'lib/styled-components' import { CustomStyleOptions, DeepPartial, @@ -14,6 +13,7 @@ import { WhitespaceData, } from 'lightweight-charts' import { useMemo } from 'react' +import { useTheme } from 'styled-components' import { PriceSource } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' export interface StackedLineData extends WhitespaceData { diff --git a/apps/web/src/components/Charts/TimeSelector.tsx b/apps/web/src/components/Charts/TimeSelector.tsx index 4563ec74b7e..9a8448e5c2f 100644 --- a/apps/web/src/components/Charts/TimeSelector.tsx +++ b/apps/web/src/components/Charts/TimeSelector.tsx @@ -3,7 +3,7 @@ import { MEDIUM_MEDIA_BREAKPOINT } from 'components/Tokens/constants' import { TimePeriod } from 'graphql/data/util' import { atom } from 'jotai' import { useAtomValue } from 'jotai/utils' -import styled from 'lib/styled-components' +import styled from 'styled-components' export const refitChartContentAtom = atom<(() => void) | undefined>(undefined) const DEFAULT_TIME_SELECTOR_OPTIONS = ORDERED_TIMES.map((time: TimePeriod) => ({ time, display: DISPLAYS[time] })) diff --git a/apps/web/src/components/Charts/VolumeChart/index.tsx b/apps/web/src/components/Charts/VolumeChart/index.tsx index 10a8df85615..49391813d2e 100644 --- a/apps/web/src/components/Charts/VolumeChart/index.tsx +++ b/apps/web/src/components/Charts/VolumeChart/index.tsx @@ -10,8 +10,8 @@ import { useHeaderDateFormatter } from 'components/Charts/hooks' import { BIPS_BASE } from 'constants/misc' import { TimePeriod, toHistoryDuration } from 'graphql/data/util' import { t } from 'i18n' -import { useTheme } from 'lib/styled-components' import { useMemo } from 'react' +import { useTheme } from 'styled-components' import { ThemedText } from 'theme/components' import { HistoryDuration } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { NumberType, useFormatter } from 'utils/formatNumbers' diff --git a/apps/web/src/components/Column/index.tsx b/apps/web/src/components/Column/index.tsx index 9d18001eede..a75d9d60837 100644 --- a/apps/web/src/components/Column/index.tsx +++ b/apps/web/src/components/Column/index.tsx @@ -1,7 +1,6 @@ -import styled from 'lib/styled-components' +import styled from 'styled-components' import { Gap } from 'theme' -/** @deprecated Please use `Flex` from `ui/src` going forward */ export const Column = styled.div<{ gap?: Gap | string flex?: string @@ -12,8 +11,6 @@ export const Column = styled.div<{ gap: ${({ gap, theme }) => (gap && theme.grids[gap as Gap]) || gap}; ${({ flex }) => flex && `flex: ${flex};`} ` - -/** @deprecated Please use `Flex` from `ui/src` going forward */ export const ColumnCenter = styled(Column)` width: 100%; align-items: center; diff --git a/apps/web/src/components/Common/index.tsx b/apps/web/src/components/Common/index.tsx index 150327fb54c..2def1d4a25c 100644 --- a/apps/web/src/components/Common/index.tsx +++ b/apps/web/src/components/Common/index.tsx @@ -1,4 +1,4 @@ -import { css } from 'lib/styled-components' +import { css } from 'styled-components' export const ScrollBarStyles = css<{ $isHorizontalScroll?: boolean }>` // Firefox scrollbar styling diff --git a/apps/web/src/components/ConfirmSwapModal/Head.tsx b/apps/web/src/components/ConfirmSwapModal/Head.tsx index b052b9df029..f8b485e7b26 100644 --- a/apps/web/src/components/ConfirmSwapModal/Head.tsx +++ b/apps/web/src/components/ConfirmSwapModal/Head.tsx @@ -1,7 +1,17 @@ +import GetHelpButton from 'components/Button/GetHelp' import { ConfirmModalState } from 'components/ConfirmSwapModal' -import { GetHelpHeader } from 'components/Modal/GetHelpHeader' +import Row from 'components/Row' import { Trans } from 'i18n' +import { X } from 'react-feather' +import styled from 'styled-components' +import { ClickableStyle, ThemedText } from 'theme/components' +import { FadePresence } from 'theme/components/FadePresence' +const CloseIcon = styled(X)<{ onClick: () => void }>` + color: ${({ theme }) => theme.neutral1}; + cursor: pointer; + ${ClickableStyle} +` export function SwapHead({ onDismiss, isLimitTrade, @@ -11,12 +21,21 @@ export function SwapHead({ isLimitTrade: boolean confirmModalState: ConfirmModalState }) { - const swapTitle = isLimitTrade ? : return ( - + + {confirmModalState === ConfirmModalState.REVIEWING && ( + + + + {isLimitTrade ? : } + + + + )} + + + + + ) } diff --git a/apps/web/src/components/ConfirmSwapModal/Modal.tsx b/apps/web/src/components/ConfirmSwapModal/Modal.tsx index cdf26104a70..821629c4f81 100644 --- a/apps/web/src/components/ConfirmSwapModal/Modal.tsx +++ b/apps/web/src/components/ConfirmSwapModal/Modal.tsx @@ -2,9 +2,9 @@ import { InterfaceModalName } from '@uniswap/analytics-events' import { AutoColumn } from 'components/Column' import { ConfirmModalState } from 'components/ConfirmSwapModal' import Modal from 'components/Modal' -import styled from 'lib/styled-components' import { PropsWithChildren, useRef } from 'react' import { animated, easings, useSpring } from 'react-spring' +import styled from 'styled-components' import { TRANSITION_DURATIONS } from 'theme/styles' import Trace from 'uniswap/src/features/telemetry/Trace' import useResizeObserver from 'use-resize-observer' diff --git a/apps/web/src/components/ConfirmSwapModal/Pending.tsx b/apps/web/src/components/ConfirmSwapModal/Pending.tsx index 44bc3149000..dbb545556c0 100644 --- a/apps/web/src/components/ConfirmSwapModal/Pending.tsx +++ b/apps/web/src/components/ConfirmSwapModal/Pending.tsx @@ -13,12 +13,12 @@ import { useAccount } from 'hooks/useAccount' import { SwapResult } from 'hooks/useSwapCallback' import { useUnmountingAnimation } from 'hooks/useUnmountingAnimation' import { Trans, t } from 'i18n' -import styled, { css } from 'lib/styled-components' import { ReactNode, useMemo, useRef } from 'react' import { InterfaceTrade, TradeFillType } from 'state/routing/types' import { isLimitTrade, isUniswapXTradeType } from 'state/routing/utils' import { useOrder } from 'state/signatures/hooks' import { useIsTransactionConfirmed, useSwapTransactionStatus } from 'state/transactions/hooks' +import styled, { css } from 'styled-components' import { ExternalLink } from 'theme/components' import { AnimationType } from 'theme/components/FadePresence' import { ThemedText } from 'theme/components/text' diff --git a/apps/web/src/components/ConfirmSwapModal/ProgressIndicator.tsx b/apps/web/src/components/ConfirmSwapModal/ProgressIndicator.tsx index fc1c1c2f270..2e1cb248d25 100644 --- a/apps/web/src/components/ConfirmSwapModal/ProgressIndicator.tsx +++ b/apps/web/src/components/ConfirmSwapModal/ProgressIndicator.tsx @@ -10,12 +10,12 @@ import { useColor } from 'hooks/useColor' import { SwapResult } from 'hooks/useSwapCallback' import { t } from 'i18n' import useNativeCurrency from 'lib/hooks/useNativeCurrency' -import styled, { useTheme } from 'lib/styled-components' import { useEffect, useMemo, useState } from 'react' import { InterfaceTrade } from 'state/routing/types' import { isLimitTrade, isUniswapXSwapTrade, isUniswapXTradeType } from 'state/routing/utils' import { useOrder } from 'state/signatures/hooks' import { useIsTransactionConfirmed, useSwapTransactionStatus } from 'state/transactions/hooks' +import styled, { useTheme } from 'styled-components' import { colors } from 'theme/colors' import { Divider } from 'theme/components' import { UniswapXOrderStatus } from 'types/uniswapx' diff --git a/apps/web/src/components/ConfirmSwapModal/Step.tsx b/apps/web/src/components/ConfirmSwapModal/Step.tsx index f0d398cd26b..789d5e4e397 100644 --- a/apps/web/src/components/ConfirmSwapModal/Step.tsx +++ b/apps/web/src/components/ConfirmSwapModal/Step.tsx @@ -2,8 +2,8 @@ import Column from 'components/Column' import { CheckMark } from 'components/Icons/CheckMark' import { LoaderV3 } from 'components/Icons/LoadingSpinner' import Row, { RowBetween } from 'components/Row' -import styled, { Keyframes, keyframes } from 'lib/styled-components' import { ReactElement, useEffect, useState } from 'react' +import styled, { Keyframes, keyframes } from 'styled-components' import { ExternalLink, ThemedText } from 'theme/components' export interface StepDetails { diff --git a/apps/web/src/components/ConfirmSwapModal/TradeSummary.tsx b/apps/web/src/components/ConfirmSwapModal/TradeSummary.tsx index 678b29c37fb..91971afa4fb 100644 --- a/apps/web/src/components/ConfirmSwapModal/TradeSummary.tsx +++ b/apps/web/src/components/ConfirmSwapModal/TradeSummary.tsx @@ -1,8 +1,8 @@ import CurrencyLogo from 'components/Logo/CurrencyLogo' import Row from 'components/Row' -import { useTheme } from 'lib/styled-components' import { ArrowRight } from 'react-feather' import { InterfaceTrade } from 'state/routing/types' +import { useTheme } from 'styled-components' import { ThemedText } from 'theme/components' import { useFormatter } from 'utils/formatNumbers' diff --git a/apps/web/src/components/ConfirmSwapModal/__snapshots__/Head.test.tsx.snap b/apps/web/src/components/ConfirmSwapModal/__snapshots__/Head.test.tsx.snap index 86623136beb..3ce8c20dd60 100644 --- a/apps/web/src/components/ConfirmSwapModal/__snapshots__/Head.test.tsx.snap +++ b/apps/web/src/components/ConfirmSwapModal/__snapshots__/Head.test.tsx.snap @@ -2,13 +2,72 @@ exports[`ConfirmSwapModal/Head should render correctly for a Limit order 1`] = ` - .c2 { + .c0 { + box-sizing: border-box; + margin: 0; + min-width: 0; + width: 100%; +} + +.c2 { box-sizing: border-box; margin: 0; min-width: 0; } +.c1 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + .c3 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: left; + -webkit-justify-content: left; + -ms-flex-pack: left; + justify-content: left; +} + +.c6 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: right; + -webkit-justify-content: right; + -ms-flex-pack: right; + justify-content: right; + gap: 10px; +} + +.c9 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -26,25 +85,28 @@ exports[`ConfirmSwapModal/Head should render correctly for a Limit order 1`] = ` gap: 4px; } -.c4 { +.c5 { color: #222222; - cursor: pointer; - -webkit-text-decoration: none; - text-decoration: none; - cursor: pointer; - -webkit-transition-duration: 125ms; - transition-duration: 125ms; + -webkit-letter-spacing: -0.01em; + -moz-letter-spacing: -0.01em; + -ms-letter-spacing: -0.01em; + letter-spacing: -0.01em; } -.c4:hover { - opacity: 0.6; +.c4 { + -webkit-transition: display 250ms ease-in-out, -webkit-transform 250ms ease-in-out; + -webkit-transition: display 250ms ease-in-out, transform 250ms ease-in-out; + transition: display 250ms ease-in-out, transform 250ms ease-in-out; + -webkit-animation: iCPeaJ 250ms ease-in-out forwards; + animation: iCPeaJ 250ms ease-in-out forwards; } -.c4:active { - opacity: 0.4; +.c4.exiting { + -webkit-animation: bbnGid 250ms ease-in-out; + animation: bbnGid 250ms ease-in-out; } -.c0 { +.c7 { -webkit-text-decoration: none; text-decoration: none; cursor: pointer; @@ -55,15 +117,15 @@ exports[`ConfirmSwapModal/Head should render correctly for a Limit order 1`] = ` font-weight: 500; } -.c0:hover { +.c7:hover { opacity: 0.6; } -.c0:active { +.c7:active { opacity: 0.4; } -.c1 { +.c8 { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; @@ -77,16 +139,34 @@ exports[`ConfirmSwapModal/Head should render correctly for a Limit order 1`] = ` stroke: none; } -.c1:hover { +.c8:hover { background: #22222212; color: #222222; opacity: unset; } -.c1:hover path { +.c8:hover path { fill: #222222; } +.c10 { + color: #222222; + cursor: pointer; + -webkit-text-decoration: none; + text-decoration: none; + cursor: pointer; + -webkit-transition-duration: 125ms; + transition-duration: 125ms; +} + +.c10:hover { + opacity: 0.6; +} + +.c10:active { + opacity: 0.4; +} + @@ -94,29 +174,33 @@ exports[`ConfirmSwapModal/Head should render correctly for a Limit order 1`] = ` class=" t_light _dsp_contents is_Theme" >
- - Review limit - +
+ Review limit +
+
- .c2 { + .c0 { + box-sizing: border-box; + margin: 0; + min-width: 0; + width: 100%; +} + +.c2 { box-sizing: border-box; margin: 0; min-width: 0; } +.c1 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; +} + .c3 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: left; + -webkit-justify-content: left; + -ms-flex-pack: left; + justify-content: left; +} + +.c6 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: right; + -webkit-justify-content: right; + -ms-flex-pack: right; + justify-content: right; + gap: 10px; +} + +.c9 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -192,25 +335,28 @@ exports[`ConfirmSwapModal/Head should render correctly for a classic swap 1`] = gap: 4px; } -.c4 { +.c5 { color: #222222; - cursor: pointer; - -webkit-text-decoration: none; - text-decoration: none; - cursor: pointer; - -webkit-transition-duration: 125ms; - transition-duration: 125ms; + -webkit-letter-spacing: -0.01em; + -moz-letter-spacing: -0.01em; + -ms-letter-spacing: -0.01em; + letter-spacing: -0.01em; } -.c4:hover { - opacity: 0.6; +.c4 { + -webkit-transition: display 250ms ease-in-out, -webkit-transform 250ms ease-in-out; + -webkit-transition: display 250ms ease-in-out, transform 250ms ease-in-out; + transition: display 250ms ease-in-out, transform 250ms ease-in-out; + -webkit-animation: iCPeaJ 250ms ease-in-out forwards; + animation: iCPeaJ 250ms ease-in-out forwards; } -.c4:active { - opacity: 0.4; +.c4.exiting { + -webkit-animation: bbnGid 250ms ease-in-out; + animation: bbnGid 250ms ease-in-out; } -.c0 { +.c7 { -webkit-text-decoration: none; text-decoration: none; cursor: pointer; @@ -221,15 +367,15 @@ exports[`ConfirmSwapModal/Head should render correctly for a classic swap 1`] = font-weight: 500; } -.c0:hover { +.c7:hover { opacity: 0.6; } -.c0:active { +.c7:active { opacity: 0.4; } -.c1 { +.c8 { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; @@ -243,16 +389,34 @@ exports[`ConfirmSwapModal/Head should render correctly for a classic swap 1`] = stroke: none; } -.c1:hover { +.c8:hover { background: #22222212; color: #222222; opacity: unset; } -.c1:hover path { +.c8:hover path { fill: #222222; } +.c10 { + color: #222222; + cursor: pointer; + -webkit-text-decoration: none; + text-decoration: none; + cursor: pointer; + -webkit-transition-duration: 125ms; + transition-duration: 125ms; +} + +.c10:hover { + opacity: 0.6; +} + +.c10:active { + opacity: 0.4; +} + @@ -260,29 +424,33 @@ exports[`ConfirmSwapModal/Head should render correctly for a classic swap 1`] = class=" t_light _dsp_contents is_Theme" >
- - Review swap - +
+ Review swap +
+
theme.surface1}; @@ -49,10 +49,6 @@ const StyledButton = styled(ThemeButton)<{ $color?: keyof DefaultTheme }>` border-radius: 12px; ` -const DialogHeader = styled(GetHelpHeader)` - padding: 4px 0px; -` - export enum DialogButtonType { Primary = 'primary', Error = 'error', @@ -155,7 +151,10 @@ export function Dialog(props: DialogProps) { return ( - + + + + diff --git a/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap b/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap index fb2ac6f8b3f..92fe5e2910e 100644 --- a/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap +++ b/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap @@ -1,13 +1,40 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[` renders different button types 1`] = ` -.c8 { +.c5 { box-sizing: border-box; margin: 0; min-width: 0; + width: 100%; + padding: 4px 0px; } .c9 { + box-sizing: border-box; + margin: 0; + min-width: 0; +} + +.c6 { + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 0; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: end; + -webkit-justify-content: end; + -ms-flex-pack: end; + justify-content: end; + padding: 4px 0px; + gap: 10px; +} + +.c10 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -25,7 +52,7 @@ exports[` renders different button types 1`] = ` gap: 4px; } -.c18 { +.c19 { width: 100%; display: -webkit-box; display: -webkit-flex; @@ -43,7 +70,7 @@ exports[` renders different button types 1`] = ` gap: 12px; } -.c14 { +.c15 { color: #222222; -webkit-letter-spacing: -0.01em; -moz-letter-spacing: -0.01em; @@ -51,7 +78,7 @@ exports[` renders different button types 1`] = ` letter-spacing: -0.01em; } -.c16 { +.c17 { color: #7D7D7D; -webkit-letter-spacing: -0.01em; -moz-letter-spacing: -0.01em; @@ -59,7 +86,7 @@ exports[` renders different button types 1`] = ` letter-spacing: -0.01em; } -.c10 { +.c11 { color: #222222; cursor: pointer; -webkit-text-decoration: none; @@ -69,15 +96,15 @@ exports[` renders different button types 1`] = ` transition-duration: 125ms; } -.c10:hover { +.c11:hover { opacity: 0.6; } -.c10:active { +.c11:active { opacity: 0.4; } -.c6 { +.c7 { -webkit-text-decoration: none; text-decoration: none; cursor: pointer; @@ -88,15 +115,15 @@ exports[` renders different button types 1`] = ` font-weight: 500; } -.c6:hover { +.c7:hover { opacity: 0.6; } -.c6:active { +.c7:active { opacity: 0.4; } -.c22 { +.c23 { background-color: transparent; bottom: 0; border-radius: inherit; @@ -110,7 +137,7 @@ exports[` renders different button types 1`] = ` width: 100%; } -.c19 { +.c20 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -145,30 +172,30 @@ exports[` renders different button types 1`] = ` user-select: none; } -.c19:active .c21 { +.c20:active .c22 { background-color: #B8C0DC3d; } -.c19:focus .c21 { +.c20:focus .c22 { background-color: #B8C0DC3d; } -.c19:hover .c21 { +.c20:hover .c22 { background-color: #98A1C014; } -.c19:disabled { +.c20:disabled { cursor: default; opacity: 0.6; } -.c19:disabled:active .c21, -.c19:disabled:focus .c21, -.c19:disabled:hover .c21 { +.c20:disabled:active .c22, +.c20:disabled:focus .c22, +.c20:disabled:hover .c22 { background-color: transparent; } -.c23 { +.c24 { -webkit-align-items: center; -webkit-box-align: center; -ms-flex-align: center; @@ -203,29 +230,53 @@ exports[` renders different button types 1`] = ` user-select: none; } -.c23:active .c21 { +.c24:active .c22 { background-color: #B8C0DC3d; } -.c23:focus .c21 { +.c24:focus .c22 { background-color: #B8C0DC3d; } -.c23:hover .c21 { +.c24:hover .c22 { background-color: #98A1C014; } -.c23:disabled { +.c24:disabled { cursor: default; opacity: 0.6; } -.c23:disabled:active .c21, -.c23:disabled:focus .c21, -.c23:disabled:hover .c21 { +.c24:disabled:active .c22, +.c24:disabled:focus .c22, +.c24:disabled:hover .c22 { background-color: transparent; } +.c8 { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + border-radius: 16px; + padding: 4px 8px; + font-size: 14px; + font-weight: 485; + line-height: 20px; + background: #F9F9F9; + color: #7D7D7D; + stroke: none; +} + +.c8:hover { + background: #22222212; + color: #222222; + opacity: unset; +} + +.c8:hover path { + fill: #222222; +} + .c2 { display: -webkit-box; display: -webkit-flex; @@ -241,7 +292,7 @@ exports[` renders different button types 1`] = ` gap: 24px; } -.c11 { +.c12 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -256,7 +307,7 @@ exports[` renders different button types 1`] = ` gap: 16px; } -.c13 { +.c14 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -322,30 +373,6 @@ exports[` renders different button types 1`] = ` border-radius: 20px; } -.c7 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; - border-radius: 16px; - padding: 4px 8px; - font-size: 14px; - font-weight: 485; - line-height: 20px; - background: #F9F9F9; - color: #7D7D7D; - stroke: none; -} - -.c7:hover { - background: #22222212; - color: #222222; - opacity: unset; -} - -.c7:hover path { - fill: #222222; -} - .c4 { background-color: #FFFFFF; outline: 1px solid #22222212; @@ -354,7 +381,7 @@ exports[` renders different button types 1`] = ` width: 100%; } -.c12 { +.c13 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -373,14 +400,14 @@ exports[` renders different button types 1`] = ` border-radius: 12px; } -.c15 { +.c16 { font-size: 24px; line-height: 32px; text-align: center; font-weight: 500; } -.c17 { +.c18 { font-size: 16px; font-weight: 500; line-height: 24px; @@ -391,7 +418,7 @@ exports[` renders different button types 1`] = ` text-align: center; } -.c20 { +.c21 { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -404,10 +431,6 @@ exports[` renders different button types 1`] = ` border-radius: 12px; } -.c5 { - padding: 4px 0px; -} - @media screen and (max-width:640px) { .c0[data-reach-dialog-overlay] { -webkit-align-items: flex-end; @@ -478,88 +501,85 @@ exports[` renders different button types 1`] = ` class="c2 c3 c4" >
- + + + Get help +
+ + + + +
Mock Icon
Mock Title
Mock Description @@ -571,24 +591,24 @@ exports[` renders different button types 1`] = `
+ ) +} diff --git a/apps/extension/src/store/PrimaryAppInstanceDebuggerLazy.tsx b/apps/extension/src/store/PrimaryAppInstanceDebuggerLazy.tsx new file mode 100644 index 00000000000..42ff1f81cc5 --- /dev/null +++ b/apps/extension/src/store/PrimaryAppInstanceDebuggerLazy.tsx @@ -0,0 +1,7 @@ +import { lazy } from 'react' + +const PrimaryAppInstanceDebugger = lazy(() => import('src/store/PrimaryAppInstanceDebugger')) + +export function PrimaryAppInstanceDebuggerLazy(): JSX.Element | null { + return __DEV__ ? : null +} diff --git a/apps/extension/src/store/constants.ts b/apps/extension/src/store/constants.ts new file mode 100644 index 00000000000..68d633df8a9 --- /dev/null +++ b/apps/extension/src/store/constants.ts @@ -0,0 +1,2 @@ +export const PERSIST_KEY = 'root' +export const STATE_STORAGE_KEY = `persist:${PERSIST_KEY}` diff --git a/apps/extension/src/store/enhancePersistReducer.ts b/apps/extension/src/store/enhancePersistReducer.ts new file mode 100644 index 00000000000..acb1910c4cc --- /dev/null +++ b/apps/extension/src/store/enhancePersistReducer.ts @@ -0,0 +1,46 @@ +import { Action, Reducer } from 'redux' +import { logger } from 'utilities/src/logger/logger' + +// We use `any` in a few places in this file because those values truly can be anything, so that's the proper type. + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type PersistPartial = { _persist: undefined } | any + +export function enhancePersistReducer( + reducer: Reducer, +): Reducer { + return forceRehydrationFromDiskWhenResumingPersistence(reducer) +} + +/** + * Whenever the `persist/PERSIST` action is dispatched, we reset the `_persist` state in order to trigger rehydration from disk + * regardless of whether it had already rehydrated during startup. + * + * Whenever another app becomes the primary instance, `storeSynchronization.ts` calls `persistor.pause()`, + * and then when this app becomes primary again we need to not only re-start persistance but also rehydrate from disk. + * We do this by calling `persistor.persist()`, which by default will just continue persisting and skip rehydration. + * This custom enhancer ensures that the `_persist` state is reset whenever the `persist/PERSIST` action is dispatched, + * so that the internal `redux-persist` logic will rehydrate from disk again. + * + * See relevat `redux-persist` code here: https://github.com/rt2zz/redux-persist/blob/9c0baee/src/persistReducer.ts#L110 + */ +function forceRehydrationFromDiskWhenResumingPersistence( + reducer: Reducer, +): Reducer { + return (state, action) => { + if (action.type !== 'persist/PERSIST') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return reducer(state, action) + } + + logger.debug('store-synchronization', 'enhancePersistReducer', 'Resetting redux _persist state') + + const newState = { + ...state, + _persist: undefined, + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return reducer(newState, action) + } +} diff --git a/apps/extension/src/store/migrations.test.ts b/apps/extension/src/store/migrations.test.ts new file mode 100644 index 00000000000..a03b9139f51 --- /dev/null +++ b/apps/extension/src/store/migrations.test.ts @@ -0,0 +1,182 @@ +import { BigNumber } from 'ethers' +import { toIncludeSameMembers } from 'jest-extended' +import { EXTENSION_STATE_VERSION, migrations } from 'src/store/migrations' +import { getSchema, initialSchema, v0Schema, v1Schema, v2Schema, v3Schema } from 'src/store/schema' +import { UniverseChainId } from 'uniswap/src/types/chains' +import { initialBehaviorHistoryState } from 'wallet/src/features/behaviorHistory/slice' +import { initialFavoritesState } from 'wallet/src/features/favorites/slice' +import { initialFiatCurrencyState } from 'wallet/src/features/fiatCurrency/slice' +import { initialLanguageState } from 'wallet/src/features/language/slice' +import { initialNotificationsState } from 'wallet/src/features/notifications/slice' +import { initialSearchHistoryState } from 'wallet/src/features/search/searchHistorySlice' +import { initialTokensState } from 'wallet/src/features/tokens/tokensSlice' +import { initialTransactionsState } from 'wallet/src/features/transactions/slice' +import { TransactionStatus, TransactionType } from 'wallet/src/features/transactions/types' +import { initialWalletState } from 'wallet/src/features/wallet/slice' +import { createMigrate } from 'wallet/src/state/createMigrate' +import { testActivatePendingAccounts } from 'wallet/src/state/sharedMigrationsTests' +import { getAllKeysOfNestedObject } from 'wallet/src/state/testUtils' + +expect.extend({ toIncludeSameMembers }) + +describe('Redux state migrations', () => { + it('is able to perform all migrations starting from the initial schema', async () => { + const initialSchemaStub = { + ...initialSchema, + _persist: { version: -1, rehydrated: false }, + } + + const migrate = createMigrate(migrations) + const migratedSchema = await migrate(initialSchemaStub, EXTENSION_STATE_VERSION) + expect(typeof migratedSchema).toBe('object') + }) + + // If this test fails then it's likely a required property was added to the Redux state but a migration was not defined + it('migrates all the properties correctly', async () => { + const initialSchemaStub = { + ...initialSchema, + _persist: { version: -1, rehydrated: false }, + } + + const migrate = createMigrate(migrations) + const migratedSchema = await migrate(initialSchemaStub, EXTENSION_STATE_VERSION) + + // Add new slices here! + const initialState = { + appearanceSettings: { selectedAppearanceSettings: 'system' }, + blocks: { byChainId: {} }, + chains: { + byChainId: { + '1': { isActive: true }, + '10': { isActive: true }, + '137': { isActive: true }, + '42161': { isActive: true }, + }, + }, + dapp: {}, + ens: { ensForAddress: {} }, + favorites: initialFavoritesState, + fiatCurrencySettings: initialFiatCurrencyState, + languageSettings: initialLanguageState, + notifications: initialNotificationsState, + behaviorHistory: initialBehaviorHistoryState, + providers: { isInitialized: false }, + saga: {}, + searchHistory: initialSearchHistoryState, + tokenLists: {}, + tokens: initialTokensState, + transactions: initialTransactionsState, + wallet: initialWalletState, + _persist: { + version: EXTENSION_STATE_VERSION, + rehydrated: true, + }, + } + + const migratedSchemaKeys = new Set( + getAllKeysOfNestedObject(migratedSchema as Record) + ) + const latestSchemaKeys = new Set(getAllKeysOfNestedObject(getSchema())) + const initialStateKeys = new Set(getAllKeysOfNestedObject(initialState)) + + for (const key of initialStateKeys) { + if (latestSchemaKeys.has(key)) { + latestSchemaKeys.delete(key) + } + if (migratedSchemaKeys.has(key)) { + migratedSchemaKeys.delete(key) + } + initialStateKeys.delete(key) + } + + expect(migratedSchemaKeys.size).toBe(0) + expect(latestSchemaKeys.size).toBe(0) + expect(initialStateKeys.size).toBe(0) + }) + + // This is a precaution to ensure we do not attempt to access undefined properties during migrations + // If this test fails, make sure all property references to state are using optional chaining + it('uses optional chaining when accessing old state variables', async () => { + const emptyStub = { _persist: { version: -1, rehydrated: false } } + + const migrate = createMigrate(migrations) + const migratedSchema = await migrate(emptyStub, EXTENSION_STATE_VERSION) + expect(typeof migratedSchema).toBe('object') + }) + + it('migrates from initial schema to v0', () => { + const stub = { ...initialSchema } + const v0 = migrations[0](stub) + + expect(v0.wallet.isUnlocked).toBe(undefined) + }) + + it('migrates from v0 to v1', () => { + const v0Stub = { ...v0Schema } + const v1 = migrations[1](v0Stub) + + expect(v1.behaviorHistory.hasViewedUniconV2IntroModal).toBe(undefined) + }) + + it('migrates from v1 to v2', () => { + const TEST_ADDRESS = '0xTestAddress' + const txDetails0 = { + chainId: UniverseChainId.Mainnet, + id: '0', + from: '0xTestAddress', + options: { + request: { + from: '0x123', + to: '0x456', + value: '0x0', + data: '0x789', + nonce: 10, + gasPrice: BigNumber.from('10000'), + }, + }, + typeInfo: { + type: TransactionType.Approve, + tokenAddress: '0xtokenAddress', + spender: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45', + }, + status: TransactionStatus.Pending, + addedTime: 1487076708000, + hash: '0x123', + } + + const txDetails1 = { + ...txDetails0, + chainId: UniverseChainId.Optimism, + id: '1', + } + + const transactions = { + [TEST_ADDRESS]: { + [UniverseChainId.Mainnet]: { + '0': txDetails0, + }, + [UniverseChainId.Optimism]: { + '1': txDetails1, + }, + }, + } + + const v0stub = { ...v1Schema, transactions } + + const v64 = migrations[2](v0stub) + + expect(v64.transactions[TEST_ADDRESS][UniverseChainId.Mainnet]['0'].routing).toBe('CLASSIC') + expect(v64.transactions[TEST_ADDRESS][UniverseChainId.Optimism]['1'].routing).toBe('CLASSIC') + }) + + it('migrates from v2 to v3', () => { + const v3 = migrations[3] + testActivatePendingAccounts(v3, v2Schema) + }) + + it('migrates from v3 to v4', async () => { + const v3Stub = { ...v3Schema } + const v4 = await migrations[4](v3Stub) + expect(v4.dapp).toBe(undefined) + }) +}) diff --git a/apps/extension/src/store/migrations.ts b/apps/extension/src/store/migrations.ts new file mode 100644 index 00000000000..e0007a73fd3 --- /dev/null +++ b/apps/extension/src/store/migrations.ts @@ -0,0 +1,21 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ + +import { + activatePendingAccounts, + addRoutingFieldToTransactions, + removeUniconV2BehaviorState, + removeWalletIsUnlockedState, +} from 'wallet/src/state/sharedMigrations' + +export const migrations = { + 0: removeWalletIsUnlockedState, + 1: removeUniconV2BehaviorState, + 2: addRoutingFieldToTransactions, + 3: activatePendingAccounts, + 4: function removeDappInfoToChromLocalStorage({ dapp: _dapp, ...state }: any) { + return state + }, +} + +export const EXTENSION_STATE_VERSION = 4 diff --git a/apps/extension/src/store/reduxedChromeStorageToReduxPersistMigration.ts b/apps/extension/src/store/reduxedChromeStorageToReduxPersistMigration.ts new file mode 100644 index 00000000000..4fc83fd385b --- /dev/null +++ b/apps/extension/src/store/reduxedChromeStorageToReduxPersistMigration.ts @@ -0,0 +1,29 @@ +import { WebState } from 'src/store/webReducer' + +// TODO(EXT-1028): remove this file once the migration is no longer needed. + +const REDUXED_STORAGE_KEY = 'reduxed' + +// These functions are used to migrate the redux state persistence from `reduxed-chrome-storage` to `redux-persist`. +// The actual migration happens when the sidebar initializes the redux store. See `initializeReduxStore` in `store.ts`. + +export async function readDeprecatedReduxedChromeStorage(): Promise { + const reduxedArray = (await chrome.storage.local.get(REDUXED_STORAGE_KEY))?.[REDUXED_STORAGE_KEY] + + if (!reduxedArray) { + return undefined + } + + // The `reduxed` storage is an array: [id, timestamp, state] + const [, , state] = reduxedArray + + if (!state) { + return undefined + } + + return state as WebState +} + +export async function deleteDeprecatedReduxedChromeStorage(): Promise { + await chrome.storage.local.remove(REDUXED_STORAGE_KEY) +} diff --git a/apps/extension/src/store/schema.ts b/apps/extension/src/store/schema.ts new file mode 100644 index 00000000000..34b91a0430c --- /dev/null +++ b/apps/extension/src/store/schema.ts @@ -0,0 +1,88 @@ +// only add fields that are persisted +export const initialSchema = { + dapp: {}, + favorites: { + tokens: [], + watchedAddresses: [], + tokensVisibility: {}, + nftsVisibility: {}, + }, + notifications: { + notificationQueue: [], + notificationStatus: {}, + lastTxNotificationUpdate: {}, + }, + saga: {}, + tokens: { + dismissedWarningTokens: {}, + }, + transactions: {}, + wallet: { + accounts: {}, + activeAccountAddress: null, + hardwareDevices: [], + isUnlocked: false, + settings: { + swapProtection: 'on', + hideSmallBalances: true, + hideSpamTokens: true, + }, + }, + searchHistory: { + results: [], + }, + appearanceSettings: { + selectedAppearanceSettings: 'system', + }, + languageSettings: { + currentLanguage: 'en', + }, + fiatCurrencySettings: { + currentCurrency: 'USD', + }, + behaviorHistory: { + hasViewedReviewScreen: false, + hasSubmittedHoldToSwap: false, + hasSkippedUnitagPrompt: false, + hasCompletedUnitagsIntroModal: false, + extensionOnboardingState: 0, + }, +} + +const v0SchemaIntermediate = { + ...initialSchema, + wallet: { + ...initialSchema.wallet, + isUnlocked: undefined, + }, +} + +// We will no longer keep track of this in the redux state. +delete v0SchemaIntermediate.wallet.isUnlocked + +export const v0Schema = v0SchemaIntermediate + +const v1SchemaIntermediate = { + ...v0Schema, + behaviorHistory: { + ...v0Schema.behaviorHistory, + hasViewedUniconV2IntroModal: undefined, + }, +} + +delete v1SchemaIntermediate.behaviorHistory.hasViewedUniconV2IntroModal + +export const v1Schema = v1SchemaIntermediate +export const v2Schema = { ...v1Schema } +export const v3Schema = { ...v2Schema } + +const v4SchemaIntermediate = { + ...v3Schema, + dapp: undefined, +} + +delete v4SchemaIntermediate.dapp + +export const v4Schema = v4SchemaIntermediate + +export const getSchema = (): typeof v4Schema => v4Schema diff --git a/apps/extension/src/store/store.ts b/apps/extension/src/store/store.ts new file mode 100644 index 00000000000..93c40f09cc4 --- /dev/null +++ b/apps/extension/src/store/store.ts @@ -0,0 +1,107 @@ +import { createReduxEnhancer } from '@sentry/react' +import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux' +import { PreloadedState } from 'redux' +import { persistReducer, persistStore } from 'redux-persist' +import { localStorage } from 'redux-persist-webextension-storage' +import { webRootSaga } from 'src/app/saga' +import { loggerMiddleware } from 'src/background/utils/loggerMiddleware' +import { PERSIST_KEY } from 'src/store/constants' +import { enhancePersistReducer } from 'src/store/enhancePersistReducer' +import { EXTENSION_STATE_VERSION, migrations } from 'src/store/migrations' +import { + deleteDeprecatedReduxedChromeStorage, + readDeprecatedReduxedChromeStorage, +} from 'src/store/reduxedChromeStorageToReduxPersistMigration' +import { ReducerNames, WebState, webReducer } from 'src/store/webReducer' +import { SagaGenerator, select } from 'typed-redux-saga' +import { createStore } from 'wallet/src/state' +import { createMigrate } from 'wallet/src/state/createMigrate' +import { RootReducerNames, sharedPersistedStateWhitelist } from 'wallet/src/state/reducer' + +// Only include here things that need to be persisted and shared between different instances of the sidebar. +// Only one sidebar can write to the storage at a time, so we need to be careful about what we persist. +// Things that only belong to a single instance of the sidebar (for example, dapp requests) should not be whitelisted. +const whitelist: Array = [...sharedPersistedStateWhitelist, 'dappRequests', 'alerts'] + +const persistConfig = { + key: PERSIST_KEY, + storage: localStorage, + whitelist, + version: EXTENSION_STATE_VERSION, + migrate: createMigrate(migrations), +} + +const persistedReducer = enhancePersistReducer(persistReducer(persistConfig, webReducer)) + +const sentryReduxEnhancer = createReduxEnhancer({ + // TODO(EXT-1022): uncomment this once we add an analytics opt-out setting. + // stateTransformer: (state: WebState): Maybe => { + // Do not log the state if a user has opted out of analytics. + // if (state.telemetry.allowAnalytics) { + // return state + // } else { + // return null + // } + // }, +}) + +const setupStore = (preloadedState?: PreloadedState): ReturnType => { + return createStore({ + reducer: persistedReducer, + preloadedState, + additionalSagas: [webRootSaga], + middlewareBefore: __DEV__ ? [loggerMiddleware] : [], + enhancers: [sentryReduxEnhancer], + }) +} + +let store: ReturnType | undefined +let persistor: ReturnType | undefined + +export async function initializeReduxStore(): Promise<{ + store: ReturnType + persistor: ReturnType +}> { + // Migrate the old `reduxed-chrome-storage` persisted state to `redux-persist`. + // TODO(EXT-985): we might need to pass the old store through `createMigrations` when we implement migrations. + const oldStore = await readDeprecatedReduxedChromeStorage() + + store = setupStore(oldStore) + persistor = persistStore(store) + + // We wait a few seconds to make sure the store is fully initialized and persisted before deleting the old storage. + // This is needed because otherwise the background script might think the user is not onboarded if it reads the storage while it's being migrated. + if (oldStore) { + setTimeout(deleteDeprecatedReduxedChromeStorage, 5000) + } + + return { store, persistor } +} + +export function getReduxStore(): ReturnType { + if (!store) { + throw new Error('Invalid call to `getReduxStore` before store has been initialized') + } + return store +} + +export function getReduxPersistor(): ReturnType { + if (!persistor) { + throw new Error('Invalid call to `getReduxPersistor` before store has been initialized') + } + return persistor +} + +// TODO(EXT-1021): consider removing this helper in favor of using `useDispatch` directly. +export const useAppDispatch: () => AppDispatch = useDispatch +export const useAppSelector: TypedUseSelectorHook = useSelector + +// Use in sagas for better typing when selecting from redux state +export function* appSelect(fn: (state: WebState) => T): SagaGenerator { + const state = yield* select(fn) + return state +} + +export type AppDispatch = ReturnType['dispatch'] +export type AppStore = ReturnType +export type AppSelector = (state: WebState) => T diff --git a/apps/extension/src/store/storeSynchronization.ts b/apps/extension/src/store/storeSynchronization.ts new file mode 100644 index 00000000000..8c114e0a459 --- /dev/null +++ b/apps/extension/src/store/storeSynchronization.ts @@ -0,0 +1,156 @@ +import { useEffect, useState } from 'react' +import { getReduxPersistor, initializeReduxStore } from 'src/store/store' +import { logger } from 'utilities/src/logger/logger' +import { v4 as uuid } from 'uuid' +import { PersistedStorage } from 'wallet/src/utils/persistedStorage' + +/** + * We want only one instance of the app to be persisting the redux store to disk at a time. + * To accomplish this, we use the concept of "primary instance", which is the instance of the app that is currently being used. + * + * An instance of the app is the primary instance when: + * - It is the only instance of the app running. + * - There are multiple instances of the app running, and this is the instance of the sidebar that lives in the window that is currently (or was last) focused. + * - When there is a sidebar and an onboarding instance running on the same window, whichever is currently focused will be the primary. + */ + +const PRIMARY_APP_INSTANCE_ID_KEY = 'primaryAppInstanceId' + +const isInitialized = false +let isPrimaryAppInstance = false +const terminate: (() => Promise) | null = null + +const STORAGE_NAMESPACE = 'session' +const sessionStorage = new PersistedStorage(STORAGE_NAMESPACE) +const currentAppInstanceId = uuid() + +// These listeners are meant for `useIsPrimaryAppInstance()` to listen for changes. +const primaryAppInstanceListeners = new Set<(isPrimary: boolean) => void>() + +export enum ExtensionAppLocation { + SidePanel, + Tab, +} + +async function initPrimaryInstanceHandler(appLocation: ExtensionAppLocation): Promise { + if (isInitialized) { + // This is just to prevent bugs being introduced in the future. + logger.error(new Error('`initPrimaryInstanceHandler` called when already initialized'), { + tags: { + file: 'storeSynchronization.ts', + function: 'initPrimaryInstanceHandler', + }, + }) + return + } + + await initializeReduxStore() + + const onStorageChangedListener: Parameters[0] = async ( + changes, + namespace, + ) => { + if (namespace === STORAGE_NAMESPACE && changes[PRIMARY_APP_INSTANCE_ID_KEY]) { + const wasPrimaryAppInstance = isPrimaryAppInstance + isPrimaryAppInstance = currentAppInstanceId === changes[PRIMARY_APP_INSTANCE_ID_KEY].newValue + + if (wasPrimaryAppInstance === isPrimaryAppInstance) { + return + } + + const persistor = getReduxPersistor() + + if (isPrimaryAppInstance) { + logger.debug('store-synchronization', 'chrome.storage.onChanged', 'Resuming redux persistor') + + persistor.persist() + } else { + logger.debug('store-synchronization', 'chrome.storage.onChanged', 'Pausing redux persistor') + await persistor.flush() + persistor.pause() + } + + primaryAppInstanceListeners.forEach((listener) => listener(isPrimaryAppInstance)) + } + } + + const onFocusChangedListener: Parameters[0] = async ( + focusedWindowId, + ) => { + const { id: currentWindowId } = await chrome.windows.getCurrent() + + if (focusedWindowId === currentWindowId) { + logger.debug('store-synchronization', 'chrome.windows.onFocusChanged', 'Window focused') + await sessionStorage.setItem(PRIMARY_APP_INSTANCE_ID_KEY, currentAppInstanceId) + } + } + + const onWindowFocusListener: Parameters[1] = async () => { + // We set a slight delay to ensure that the `chrome.windows.onFocusChanged` listener runs first. + // This is to handle the case where we have a sidebar and an onboarding instance running on the same window. + setTimeout(async () => { + logger.debug('store-synchronization', 'window.onFocus', 'Window focused') + await sessionStorage.setItem(PRIMARY_APP_INSTANCE_ID_KEY, currentAppInstanceId) + }, 25) + } + + chrome.storage.onChanged.addListener(onStorageChangedListener) + + if (appLocation === ExtensionAppLocation.SidePanel) { + chrome.windows.onFocusChanged.addListener(onFocusChangedListener) + } + + window.addEventListener('focus', onWindowFocusListener) + + // We always set the current app instance as the primary when it first launches. + await sessionStorage.setItem(PRIMARY_APP_INSTANCE_ID_KEY, currentAppInstanceId) + + // This will be used in the onboarding flow when the user completes onboarding but the tab remains open. + // We don't want this tab to become the primary ever again when it's focused. + StoreSynchronization.terminate = async (): Promise => { + chrome.storage.onChanged.removeListener(onStorageChangedListener) + chrome.windows.onFocusChanged.removeListener(onFocusChangedListener) + window.removeEventListener('focus', onWindowFocusListener) + + const persistor = getReduxPersistor() + await persistor.flush() + persistor.pause() + + isPrimaryAppInstance = false + primaryAppInstanceListeners.forEach((listener) => listener(isPrimaryAppInstance)) + } +} + +export function useIsPrimaryAppInstance(): boolean { + const [isPrimary, setIsPrimary] = useState(isPrimaryAppInstance) + + useEffect(() => { + const listener = (_isPrimary: boolean): void => { + setIsPrimary(_isPrimary) + } + + primaryAppInstanceListeners.add(listener) + + return () => { + primaryAppInstanceListeners.delete(listener) + } + }, []) + + return isPrimary +} + +export function terminateStoreSynchronization(): void { + StoreSynchronization.terminate?.().catch((error) => { + logger.error(error, { + tags: { file: 'storeSynchronization.ts', function: 'useTerminateStoreSynchronization' }, + }) + }) +} + +export const StoreSynchronization: { + init: typeof initPrimaryInstanceHandler + terminate: (() => Promise) | null +} = { + init: initPrimaryInstanceHandler, + terminate, +} diff --git a/apps/extension/src/store/webReducer.ts b/apps/extension/src/store/webReducer.ts new file mode 100644 index 00000000000..2606cdc3941 --- /dev/null +++ b/apps/extension/src/store/webReducer.ts @@ -0,0 +1,20 @@ +import { combineReducers } from 'redux' +import { dappRequestReducer } from 'src/app/features/dappRequests/slice' +import { alertsReducer } from 'src/app/features/onboarding/alerts/slice' +import { popupsReducer } from 'src/app/features/popups/slice' +import { monitoredSagaReducers } from 'src/app/saga' +import { RootState } from 'wallet/src/state' +import { sharedReducers } from 'wallet/src/state/reducer' + +export const webReducers = { + ...sharedReducers, + saga: monitoredSagaReducers, + dappRequests: dappRequestReducer, + popups: popupsReducer, + alerts: alertsReducer, +} as const + +export const webReducer = combineReducers(webReducers) + +export type WebState = ReturnType & RootState +export type ReducerNames = keyof typeof webReducers diff --git a/apps/extension/src/test/__mocks__/@react-native-masked-view/masked-view.ts b/apps/extension/src/test/__mocks__/@react-native-masked-view/masked-view.ts new file mode 100644 index 00000000000..66e67ac38c1 --- /dev/null +++ b/apps/extension/src/test/__mocks__/@react-native-masked-view/masked-view.ts @@ -0,0 +1,13 @@ +import React, { PropsWithChildren, ReactNode } from 'react' +import { View, ViewProps } from 'react-native' + +// react-native-masked-view for Storybook web +// https://github.com/react-native-masked-view/masked-view/issues/70#issuecomment-1171801526 +function MaskedViewWeb({ + maskElement, + ...props +}: PropsWithChildren<{ maskElement: ReactNode }>): React.CElement { + return React.createElement(View, props, maskElement) +} + +export default MaskedViewWeb diff --git a/apps/extension/src/test/__mocks__/@shopify/react-native-skia.ts b/apps/extension/src/test/__mocks__/@shopify/react-native-skia.ts new file mode 100644 index 00000000000..766d3d19967 --- /dev/null +++ b/apps/extension/src/test/__mocks__/@shopify/react-native-skia.ts @@ -0,0 +1,19 @@ +import React, { PropsWithChildren } from 'react' +import { View, ViewProps } from 'react-native' + +// Source: https://github.com/Shopify/react-native-skia/issues/548#issuecomment-1157609472 + +const PlainView = ({ children, ...props }: PropsWithChildren): React.CElement => { + return React.createElement(View, props, children) +} +const noop = (): null => null + +export const BlurMask = PlainView +export const Canvas = PlainView +export const Circle = PlainView +export const Group = PlainView +export const LinearGradient = PlainView +export const Mask = PlainView +export const Path = PlainView +export const Rect = PlainView +export const vec = noop diff --git a/apps/extension/src/test/babel.config.js b/apps/extension/src/test/babel.config.js new file mode 100644 index 00000000000..7d99c5aa06b --- /dev/null +++ b/apps/extension/src/test/babel.config.js @@ -0,0 +1,25 @@ +// This file is used only by jest in the test environment. To check the extension +// build set up, see the webpack.config.js file. + +module.exports = function (api) { + api.cache.using(() => process.env.NODE_ENV) + var plugins = [ + "react-native-web", + [ + 'module:react-native-dotenv', + { + moduleName: 'react-native-dotenv', + path: '../../.env.defaults', + safe: true, + allowUndefined: false, + }, + ], + // https://github.com/software-mansion/react-native-reanimated/issues/3364#issuecomment-1268591867 + '@babel/plugin-proposal-export-namespace-from', + ].filter(Boolean) + + return { + presets: ['module:@react-native/babel-preset'], + plugins, + } +} diff --git a/apps/extension/src/test/fixtures/redux.ts b/apps/extension/src/test/fixtures/redux.ts new file mode 100644 index 00000000000..3a33c1cffd4 --- /dev/null +++ b/apps/extension/src/test/fixtures/redux.ts @@ -0,0 +1,13 @@ +import { PreloadedState } from 'redux' +import { WebState } from 'src/store/webReducer' +import { SharedState } from 'wallet/src/state/reducer' +import { preloadedSharedState } from 'wallet/src/test/fixtures' +import { createFixture } from 'wallet/src/test/utils' + +type PreloadedExtensionStateOptions = Record + +export const preloadedExtensionState = createFixture, PreloadedExtensionStateOptions>({})( + () => ({ + ...(preloadedSharedState() as PreloadedState), + }), +) diff --git a/apps/extension/src/test/jest-resolver.js b/apps/extension/src/test/jest-resolver.js new file mode 100644 index 00000000000..c7a1c69072d --- /dev/null +++ b/apps/extension/src/test/jest-resolver.js @@ -0,0 +1,33 @@ +const fs = require('fs') +const path = require('path') + +const platformExtensions = ['native', 'ios', 'android'] +const targetExtensions = ['web', ''] + +module.exports = (request, options) => { + const { defaultResolver } = options + const resolvedPath = defaultResolver(request, options) + + const parsedPath = path.parse(resolvedPath) + const isPlatformSpecific = platformExtensions.some((ext) => parsedPath.name.endsWith(`.${ext}`)) + + if (isPlatformSpecific) { + const index = parsedPath.name.lastIndexOf('.') + const strippedName = parsedPath.name.slice(0, index) + + for (const targetExt of targetExtensions) { + const candidatePath = path.format({ + dir: parsedPath.dir, + name: targetExt ? `${strippedName}.${targetExt}` : strippedName, + ext: parsedPath.ext, + }) + + if (fs.existsSync(candidatePath)) { + return candidatePath + } + } + } + + // Return default resolved path if no replacement is found + return resolvedPath +} diff --git a/apps/extension/src/test/render.tsx b/apps/extension/src/test/render.tsx new file mode 100644 index 00000000000..ae21971273c --- /dev/null +++ b/apps/extension/src/test/render.tsx @@ -0,0 +1,132 @@ +import type { EnhancedStore, PreloadedState } from '@reduxjs/toolkit' +import { configureStore } from '@reduxjs/toolkit' +import { + render as ReactRender, + renderHook as ReactRenderHook, + RenderHookOptions, + RenderHookResult, + RenderOptions, + RenderResult, +} from '@testing-library/react' +import React, { PropsWithChildren } from 'react' +import { AppStore } from 'src/store/store' +import { WebState, webReducer } from 'src/store/webReducer' +import { Resolvers } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' +import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context' +import { SharedProvider } from 'wallet/src/provider' +import { AutoMockedApolloProvider } from 'wallet/src/test/mocks' + +// This type extends the default options for render from RTL, as well +// as allows the user to specify other things such as initialState, store. +type ExtendedRenderOptions = RenderOptions & { + resolvers?: Resolvers + preloadedState?: PreloadedState + store?: AppStore +} + +/** + * + * @param ui Component to render + * @param resolvers Custom resolvers that override the default ones + * @param preloadedState and store + * @returns `ui` wrapped with providers + */ +export function renderWithProviders( + ui: React.ReactElement, + { + resolvers, + preloadedState = {}, + // Automatically create a store instance if no store was passed in + store = configureStore({ + reducer: webReducer, + preloadedState, + middleware: (getDefaultMiddleware) => getDefaultMiddleware(), + }), + ...renderOptions + }: ExtendedRenderOptions = {}, +): RenderResult & { + store: EnhancedStore +} { + function Wrapper({ children }: PropsWithChildren): JSX.Element { + return ( + + + {children} + + + ) + } + + // Return an object with the store and all of RTL's query functions + return { store, ...ReactRender(ui, { wrapper: Wrapper, ...renderOptions }) } +} + +// This type extends the default options for render from RTL, as well +// as allows the user to specify other things such as initialState, store. +type ExtendedRenderHookOptions

= RenderHookOptions

& { + resolvers?: Resolvers + preloadedState?: PreloadedState + store?: AppStore +} + +type RenderHookWithProvidersResult = Omit, 'rerender'> & { + store: EnhancedStore + rerender: (args?: P) => void +} + +// Don't require hookOptions if hook doesn't take any arguments +export function renderHookWithProviders( + hook: () => R, + hookOptions?: ExtendedRenderHookOptions, +): RenderHookWithProvidersResult + +// Require hookOptions if hook takes arguments +export function renderHookWithProviders( + hook: (args: P) => R, + hookOptions: ExtendedRenderHookOptions

, +): RenderHookWithProvidersResult + +/** + * + * @param hook Hook to render + * @param resolvers Custom resolvers that override the default ones + * @param preloadedState and store + * @returns `hook` wrapped with providers + */ +export function renderHookWithProviders( + hook: (args: P) => R, + hookOptions?: ExtendedRenderHookOptions

, +): RenderHookWithProvidersResult { + const { + resolvers, + preloadedState = {}, + // Automatically create a store instance if no store was passed in + store = configureStore({ + reducer: webReducer, + preloadedState, + middleware: (getDefaultMiddleware) => getDefaultMiddleware(), + }), + ...renderOptions + } = (hookOptions ?? {}) as ExtendedRenderHookOptions

+ + function Wrapper({ children }: PropsWithChildren): JSX.Element { + return ( + + {children} + + ) + } + + const options: RenderHookOptions

= { + wrapper: Wrapper, + ...(renderOptions as RenderHookOptions

), + } + + const { ...rest } = ReactRenderHook((args: P) => hook(args), options) + + // Return an object with the store and all of RTL's query functions + return { + store, + ...rest, + } +} diff --git a/apps/extension/src/test/test-utils.ts b/apps/extension/src/test/test-utils.ts new file mode 100644 index 00000000000..2abe0a1491a --- /dev/null +++ b/apps/extension/src/test/test-utils.ts @@ -0,0 +1,6 @@ +import { renderHookWithProviders, renderWithProviders } from 'src/test/render' + +// re-export everything +export * from '@testing-library/react' +// override render method +export { renderWithProviders as render, renderHookWithProviders as renderHook } diff --git a/apps/extension/tsconfig.json b/apps/extension/tsconfig.json new file mode 100644 index 00000000000..c87e5f89d74 --- /dev/null +++ b/apps/extension/tsconfig.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Web App", + "extends": "tsconfig/nextjs.json", + "include": [ + "**/*.ts", + "**/*.tsx", + "**/*.json", + "../../declarations.d.ts", + ], + "exclude": [ + "node_modules" + ], + "references": [ + { + "path": "../../packages/ui" + }, + { + "path": "../../packages/utilities" + }, + { + "path": "../../packages/wallet" + } + ], + "compilerOptions": { + "baseUrl": "./", + "types": [ + "chrome", + "jest" + ] + } +} diff --git a/apps/extension/webpack.config.js b/apps/extension/webpack.config.js new file mode 100644 index 00000000000..096cb64fd24 --- /dev/null +++ b/apps/extension/webpack.config.js @@ -0,0 +1,361 @@ +const { CleanWebpackPlugin } = require('clean-webpack-plugin') +const { ProgressPlugin, ProvidePlugin, DefinePlugin } = require('webpack') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const path = require('path') +const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin') +const fs = require('fs') +const DotenvPlugin = require('dotenv-webpack') +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') +const { sentryWebpackPlugin } = require('@sentry/webpack-plugin') + +const NODE_ENV = process.env.NODE_ENV || 'development' + +// if not set tamagui wont add nice data-at, data-in etc debug attributes +process.env.NODE_ENV = NODE_ENV + +const isDevelopment = NODE_ENV === 'development' +const appDirectory = path.resolve(__dirname) +const manifest = require('./src/manifest.json') + +// Add all node modules that have to be compiled +const compileNodeModules = [ + // These libraries export JSX code from files with .js extension, which aren't transpiled + // in the library to code that doesn't use JSX syntax. This file extension is not automatically + // recognized as extension for files containing JSX, so we have to manually add them to + // the build proess (to the appropriate loader) and don't exclude them with other node_modules + 'expo-clipboard', + 'expo-linear-gradient', +] + +// This is needed for webpack to compile JavaScript. +// Many OSS React Native packages are not compiled to ES5 before being +// published. If you depend on uncompiled packages they may cause webpack build +// errors. To fix this webpack can be configured to compile to the necessary +// `node_module`. +const babelLoaderConfiguration = { + test: /\.js$/, + // Add every directory that needs to be compiled by Babel during the build. + include: [ + // path.resolve(appDirectory, "index.web.js"), + // path.resolve(appDirectory, "src"), + path.resolve(appDirectory, 'node_modules/react-native-uncompiled'), + ], + use: { + loader: 'babel-loader', + options: { + cacheDirectory: true, + // The 'metro-react-native-babel-preset' preset is recommended to match React Native's packager + presets: ['module:@react-native/babel-preset'], + // Re-write paths to import only the modules needed by the app + plugins: ['react-native-web'], + }, + }, +} + +const swcLoader = { + loader: 'swc-loader', + options: { + // parseMap: true, // required when using with babel-loader + env: { + targets: require('./package.json').browserslist, + }, + sourceMap: isDevelopment, + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + dynamicImport: true, + }, + transform: { + react: { + development: isDevelopment, + refresh: isDevelopment, + }, + }, + }, + }, +} + +const swcLoaderConfiguration = { + test: ['.jsx', '.js', '.tsx', '.ts'].map((ext) => new RegExp(`${ext}$`)), + exclude: new RegExp(`node_modules/(?!(${compileNodeModules.join('|')})/)`), + use: swcLoader, +} + +const fileExtensions = ['eot', 'gif', 'jpeg', 'jpg', 'otf', 'png', 'ttf', 'woff', 'woff2', 'mp4'] + +const { + dir, + plugins = [], + ...extras +} = isDevelopment + ? { + dir: 'dev', + devServer: { + // watchFiles: ['src/**/*', 'webpack.config.js'], + host: '127.0.0.1', + port: 9997, + server: fs.existsSync('localhost.pem') + ? { + type: 'https', + options: { + key: 'localhost-key.pem', + cert: 'localhost.pem', + }, + } + : {}, + compress: false, + static: { + directory: path.join(__dirname, '../dev'), + }, + client: { + // logging: "info", + progress: true, + reconnect: false, + overlay: { + errors: true, + warnings: false, + // disable resize observer error + // NOTE: ideally would use the function format (error) => boolean + // however, I was not able to get past CSP with that solution + runtimeErrors: false, + }, + }, + devMiddleware: { + writeToDisk: true, + }, + }, + devtool: 'cheap-module-source-map', + plugins: [new ReactRefreshWebpackPlugin()], + } + : { + dir: 'build', + plugins: [], + } + +module.exports = (env) => { + // Build env is either 'dev', 'beta', or 'prod' + if (!isDevelopment && env.BUILD_ENV !== 'prod' && env.BUILD_ENV !== 'beta' && env.BUILD_ENV !== 'dev') { + throw new Error('Must set BUILD_ENV env variable to either prod, beta or dev') + } + + // Build num is the fourth number in the extension version (...). It will come from GH actions when building this to publish + if (!isDevelopment && (env.BUILD_NUM === undefined || env.BUILD_NUM < 0)) { + throw new Error('Must set BUILD_NUM env variable to a number >= 0') + } + + const BUILD_ENV = env.BUILD_ENV + const BUILD_NUM = env.BUILD_NUM || 0 + + // Title Postfix + const EXTENSION_NAME_POSTFIX = BUILD_ENV === 'dev' ? 'DEV' : BUILD_ENV === 'beta' ? 'BETA' : '' + + // Description + let EXTENSION_DESCRIPTION = manifest.description + if (BUILD_ENV === 'beta') { + EXTENSION_DESCRIPTION = 'THIS EXTENSION IS FOR BETA TESTING' + } + if (BUILD_ENV === 'dev') { + EXTENSION_DESCRIPTION = 'THIS EXTENSION IS FOR DEV TESTING' + } + + // Version + const EXTENSION_VERSION = manifest.version + '.' + BUILD_NUM + + return { + mode: NODE_ENV, + entry: { + background: './src/background/background.ts', + onboarding: './src/onboarding/onboarding.tsx', + loadSidebar: './src/sidebar/loadSidebar.ts', + sidebar: './src/sidebar/sidebar.tsx', + injected: './src/contentScript/injected.ts', + ethereum: './src/contentScript/ethereum.ts', + }, + output: { + filename: '[name].js', + chunkFilename: '[name].js', + path: path.resolve(__dirname, dir), + clean: true, + publicPath: '', + }, + // https://webpack.js.org/configuration/other-options/#level + infrastructureLogging: { level: 'warn' }, + module: { + rules: [ + // Use this rule together with other rules specified for the same pattern + { + test: /\.m?js$/, + resolve: { + fullySpecified: false, // disable the behaviour + }, + }, + { + oneOf: [ + { + test: /\.(woff|woff2)$/, + use: { loader: 'file-loader' }, + }, + + { + test: /\.css$/, + use: [ + { + loader: 'style-loader', + }, + { + loader: 'css-loader', + }, + ], + }, + + { + type: 'javascript/auto', + test: /\.json$/, + use: ['file-loader'], + include: /tokenlist/, + }, + + // Used for creating SVG React components (similar to react=native-svg-transformer on mobile) + { + test: /\.svg$/, + use: ['@svgr/webpack'], + }, + + { + test: new RegExp('.(' + fileExtensions.join('|') + ')$'), + type: 'asset/resource', + }, + + { + test: /.tsx?$/, + exclude: (file) => file.includes('node_modules'), + use: [ + // one after to remove the jsx + swcLoader, + + // tamagui optimizes the jsx + { + loader: 'tamagui-loader', + options: { + config: '../../packages/ui/src/tamagui.config.ts', + components: ['ui'], + // add files here that should be parsed by the compiler from within any of the apps/* + // for example if you have constants.ts then constants.js goes here and it will eval them + // at build time and if it can flatten views even if they use imports from that file + importsWhitelist: ['constants.js'], + disableExtraction: process.env.NODE_ENV === 'development', + }, + }, + + // one before to remove types + { + loader: 'esbuild-loader', + options: { + target: 'es2022', + jsx: 'preserve', + minify: false, + }, + }, + ], + }, + + babelLoaderConfiguration, + swcLoaderConfiguration, + ], + }, + ], + }, + resolve: { + alias: { + 'react-native$': 'react-native-web', + 'react-native-reanimated$': require.resolve('react-native-reanimated'), + 'react-native-vector-icons$': 'react-native-vector-icons/dist', + src: path.resolve(__dirname, 'src'), // absolute imports in apps/web + 'react-native-gesture-handler$': require.resolve('react-native-gesture-handler'), + }, + // Add support for web-based extensions so we can share code between mobile/extension + extensions: [ + '.web.js', + '.web.jsx', + '.web.ts', + '.web.tsx', + ...fileExtensions.map((e) => `.${e}`), + ...['.js', '.jsx', '.ts', '.tsx', '.css'], + ], + fallback: { + fs: false, + }, + }, + devtool: 'source-map', + plugins: [ + new DotenvPlugin({ + path: '../../.env', + defaults: true, + }), + new DefinePlugin({ + __DEV__: NODE_ENV === 'development' ? 'true' : 'false', + 'process.env.IS_STATIC': '""', + 'process.env.NODE_ENV': JSON.stringify(NODE_ENV), + 'process.env.DEBUG': JSON.stringify(process.env.DEBUG || '0'), + 'process.env.VERSION': JSON.stringify(EXTENSION_VERSION), + 'process.env.IS_UNISWAP_EXTENSION': '"true"', + }), + new CleanWebpackPlugin(), + new NodePolyfillPlugin(), // necessary to compile with reactnative-dotenv + ...plugins, + new MiniCssExtractPlugin(), + new ProgressPlugin(), + new ProvidePlugin({ + process: 'process/browser', + React: 'react', + Buffer: ['buffer', 'Buffer'], + }), + new CopyWebpackPlugin({ + patterns: [ + { + from: 'src/manifest.json', + force: true, + transform(content) { + return Buffer.from( + JSON.stringify( + { + ...manifest, + description: EXTENSION_DESCRIPTION, + version: EXTENSION_VERSION, + name: EXTENSION_NAME_POSTFIX ? manifest.name + ' ' + EXTENSION_NAME_POSTFIX : manifest.name, + }, + null, + 2, + ), + ) + }, + }, + { + from: 'src/assets/fonts/*.{woff,woff2,ttf}', + to: 'assets/fonts/[name][ext]', + force: true, + }, + { + from: 'src/assets/*.{html,png,svg}', + to: 'assets/[name][ext]', + force: true, + }, + { + from: 'src/*.{html,png,svg}', + to: '[name][ext]', + force: true, + }, + ], + }), + sentryWebpackPlugin({ + authToken: env.SENTRY_AUTH_TOKEN, + org: 'uniswap-labs', + project: 'extension-wallet', + telemetry: process.env.NODE_ENV === 'production', + }), + ], + ...extras, + } +} diff --git a/apps/mobile/__mocks__/@react-navigation/native.js b/apps/mobile/__mocks__/@react-navigation/native.js deleted file mode 100644 index ce368193060..00000000000 --- a/apps/mobile/__mocks__/@react-navigation/native.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copied from: -// https://gist.github.com/phcbarros/bd90825863c3573cc0a28e90db17d1a4 -const RNN = require('@react-navigation/native') -let listeners = {} -const setOptions = jest.fn() -const navigate = jest.fn() - -const navigation = { - setOptions, - navigate, - addListener: jest.fn((name, l) => (listeners[name] = l)), - getListener: (name) => listeners[name], - triggerListener: (name, ...params) => listeners[name](...params), - resetListeners: () => { - listeners = {} - }, -} - -const useNavigation = () => navigation -let params = {} -const useRoute = () => ({ - params, -}) - -module.exports = { - ...RNN, - useNavigation, - useRoute, - setParams: (p) => (params = { ...params, ...p }), -} diff --git a/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInput.kt b/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInput.kt index 0770108f68b..7f7bda84d6d 100644 --- a/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInput.kt +++ b/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInput.kt @@ -25,7 +25,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester @@ -142,29 +141,26 @@ fun SeedPhraseInput( private fun SeedPhraseError(viewModel: SeedPhraseInputViewModel) { val status = viewModel.status val rnStrings = viewModel.rnStrings - var text = "" if (status is Error) { - text = when (val error = status.error) { + val text = when (val error = status.error) { is InvalidWord -> "${rnStrings.errorInvalidWord} ${error.word}" is NotEnoughWords, TooManyWords -> rnStrings.errorPhraseLength is WrongRecoveryPhrase -> rnStrings.errorWrongPhrase is InvalidPhrase -> rnStrings.errorInvalidPhrase } - } - - Row( - horizontalArrangement = Arrangement.spacedBy(UniswapTheme.spacing.spacing4), - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.alpha(if (text.isEmpty()) 0f else 1f) - ) { - Icon( - painter = painterResource(id = R.drawable.uniswap_icon_alert_triangle), - tint = UniswapTheme.colors.statusCritical, - contentDescription = null, - modifier = Modifier.size(16.dp) - ) - Text(text, style = UniswapTheme.typography.body3, color = UniswapTheme.colors.statusCritical) + Row( + horizontalArrangement = Arrangement.spacedBy(UniswapTheme.spacing.spacing4), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.uniswap_icon_alert_triangle), + tint = UniswapTheme.colors.statusCritical, + contentDescription = null, + modifier = Modifier.size(16.dp) + ) + Text(text, style = UniswapTheme.typography.body3, color = UniswapTheme.colors.statusCritical) + } } } diff --git a/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInputViewModel.kt b/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInputViewModel.kt index f9d839e1dda..32768d11bf8 100644 --- a/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInputViewModel.kt +++ b/apps/mobile/android/app/src/main/java/com/uniswap/onboarding/import/SeedPhraseInputViewModel.kt @@ -6,13 +6,8 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import com.uniswap.EthersRs import com.uniswap.RnEthersRs -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch class SeedPhraseInputViewModel( private val ethersRs: RnEthersRs, @@ -60,26 +55,13 @@ class SeedPhraseInputViewModel( private set var status by mutableStateOf(Status.None) private set - private var validateLastWordTimeout: Long = 1000 - private var validateLastWordJob: Job? = null fun handleInputChange(value: TextFieldValue) { input = value val normalized = normalizeInput(value) val skipLastWord = normalized.lastOrNull() != ' ' - validateInput(normalized, skipLastWord) - - validateLastWordJob?.cancel() - - validateLastWordJob = viewModelScope.launch(Dispatchers.Default) { - delay(validateLastWordTimeout) - validateInput(normalized, false) - } - } - - private fun validateInput(normalizedInput: String, skipLastWord: Boolean) { - val mnemonic = normalizedInput.trim() + val mnemonic = normalized.trim() val words = mnemonic.split(" ") if (words.isEmpty()) { @@ -89,14 +71,14 @@ class SeedPhraseInputViewModel( val isValidLength = words.size in MIN_LENGTH..MAX_LENGTH val firstInvalidWord = EthersRs.findInvalidWord(mnemonic) - status = if (firstInvalidWord == words.last() && skipLastWord) { - Status.None + if (firstInvalidWord == words.last() && skipLastWord) { + status = Status.None } else if (firstInvalidWord.isEmpty() && isValidLength) { - Status.Valid + status = Status.Valid } else if (firstInvalidWord.isNotEmpty()) { - Status.Error(MnemonicError.InvalidWord(firstInvalidWord)) + status = Status.Error(MnemonicError.InvalidWord(firstInvalidWord)) } else { - Status.None + status = Status.None } val canSubmit = status !is Status.Error && mnemonic != "" && firstInvalidWord.isEmpty() diff --git a/apps/mobile/android/settings.gradle b/apps/mobile/android/settings.gradle index abce13dff8c..556232de3e9 100644 --- a/apps/mobile/android/settings.gradle +++ b/apps/mobile/android/settings.gradle @@ -8,6 +8,6 @@ apply from: new File(["node", "--print", "require.resolve('../../../node_modules useExpoModules() include ':@sentry_react-native' - +project(':@sentry_react-native').projectDir = new File('../../../node_modules/@sentry/react-native/android') include ':detox' project(':detox').projectDir = new File('../../../node_modules/detox/android/detox') diff --git a/apps/mobile/e2e/Home.e2e.ts b/apps/mobile/e2e/Home.e2e.ts deleted file mode 100644 index b3ecd4a6112..00000000000 --- a/apps/mobile/e2e/Home.e2e.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { HomeBasicInteractions } from 'e2e/usecases/home/HomeBasicInteractions' -import { WatchWallet } from 'e2e/usecases/onboarding/WatchWallet' - -describe('Home', () => { - beforeEach(async () => { - await device.launchApp() - await WatchWallet() - }) - - it('tests basic home screen interactions', HomeBasicInteractions) -}) diff --git a/apps/mobile/e2e/Onboarding.e2e.ts b/apps/mobile/e2e/Onboarding.e2e.ts index 8a23dd2871b..efb67731ed3 100644 --- a/apps/mobile/e2e/Onboarding.e2e.ts +++ b/apps/mobile/e2e/Onboarding.e2e.ts @@ -1,5 +1,4 @@ import { CreateNewWallet } from 'e2e/usecases/onboarding/CreateNewWallet' -import { ImportWallet } from 'e2e/usecases/onboarding/ImportWallet' import { WatchWallet } from 'e2e/usecases/onboarding/WatchWallet' describe('Onboarding', () => { @@ -8,12 +7,13 @@ describe('Onboarding', () => { }) afterEach(async () => { - await device.clearKeychain() await device.uninstallApp() await device.installApp() }) it('creates a new wallet', CreateNewWallet) it('watches wallet', WatchWallet) - it('imports a testing wallet using recovery phrase', ImportWallet) + // TODO: find the way to test native input + // eslint-disable-next-line jest/no-commented-out-tests + // it('imports a testing wallet using recovery phrase', ImportWallet) }) diff --git a/apps/mobile/e2e/README.md b/apps/mobile/e2e/README.md index 881e91cc6d2..89b2fc88a4e 100644 --- a/apps/mobile/e2e/README.md +++ b/apps/mobile/e2e/README.md @@ -29,12 +29,6 @@ Run ios e2e tests in debug mode: yarn mobile e2e:ios:test:debug ``` -Useful perameters: - -`--testNamePattern test-name` to run a single test, replace `test-name` with test file name without extension e.g.: `Swap` or `Onboarding`. - -`--reuse` to start the test from a current app state. Useful for testing nested screen behaviour without going through onboarding and navigation steps. - #### Release mode To run tests in release mode: @@ -51,10 +45,6 @@ E2E tests should remain as close as possible to production, but sometimes mockin Only mocking entire files is supported at the moment, so you may need to reorganize functions. To mock a file, create a new one with the same name and extension `mock.ts` (e.g. `AnimatedHeader.ts` -> `AnimatedHeader.mock.ts`) in the same directory. The metro bundler will override any file that has a `mock.ts` equivalent in Detox runs. -Android native views based on jetpack compose and libraries utilizing long-running asynchronouse background processes like sentry are not supported by detox currently. Imports mocking is unfortunatelly not supported by detox yet. If such problems occur, the entire component using problematic library needs to be mocked or a component exposing only targeted library needs to be created and then it can be mocked, precisely replacing only targeted library. - -To mock a component for specific platform follow this pattern: -iOS: `AnimatedHeader.ts` -> `AnimatedHeader.ios.mock.ts` -Android: `AnimatedHeader.ts` -> `AnimatedHeader.android.mock.ts` +Native views, libraries relying on the native code and libraries utilizing long-running asynchronouse background processes like sentry are not supported by detox currently. Imports mocking is unfortunatelly not supported by detox yet. If such problems occur, the entire component using problematic library needs to be mocked or a component exposing only targeted library needs to be created and then it can be mocked, precisely replacing only targeted library. Read more here https://wix.github.io/Detox/docs/guide/mocking/ diff --git a/apps/mobile/e2e/usecases/home/HomeBasicInteractions.ts b/apps/mobile/e2e/usecases/home/HomeBasicInteractions.ts deleted file mode 100644 index 339b10d1cd1..00000000000 --- a/apps/mobile/e2e/usecases/home/HomeBasicInteractions.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { by, element, expect } from 'detox' -import { TestWatchedWallet } from 'e2e/utils/fixtures' -import { TestID } from 'uniswap/src/test/fixtures/testIDs' - -export async function HomeBasicInteractions(): Promise { - await expect(element(by.text(TestWatchedWallet.displayName))).toBeVisible() - await expect(element(by.id(TestID.Swap))).toBeVisible() - await expect(element(by.id(TestID.SearchTokensAndWallets))).toBeVisible() - - // opens AccountSwitcherModal by clicking on account avatar - await expect(element(by.id(TestID.AccountHeaderAvatar))).toBeVisible() - - // checks if portfolio balance is visible - await expect(element(by.id(TestID.PortfolioBalance))).toBeVisible() - - // copies wallet address from AccountSwitcherModal - await element(by.id(TestID.AccountHeaderCopyAddress)).tap() - - // checks if notification toast is visible with title "Address copied" - await expect(element(by.id(TestID.NotificationToastTitle))).toBeVisible() - await expect(element(by.id(TestID.NotificationToastTitle))).toHaveText('Address copied') - - // checks if list was rendered properly by checking if the first item is visible - await expect(element(by.id('token-list-item-0'))).toBeVisible() - - // scrolls to the bottom of the token list - await element(by.id('token-list-item-0')).swipe('up') - - // checks if only tabs headers are visible then scrolled to bottom - await expect(element(by.id(TestID.AccountHeaderAvatar))).not.toBeVisible() - await expect(element(by.id(TestID.PortfolioBalance))).not.toBeVisible() - // for some reason react-native-tab-view renders headers twice, thats why first matching item was picked - await expect(element(by.id('home-tab-Tokens')).atIndex(0)).toBeVisible() - await expect(element(by.id('home-tab-NFTs')).atIndex(0)).toBeVisible() - await expect(element(by.id('home-tab-Activity')).atIndex(0)).toBeVisible() - - // checks if the first item of hidden list is not visible - await expect(element(by.id('token-list-item-0'))).not.toBeVisible() - - // hidden item does not exist - await expect(element(by.id('token-list-item-25'))).not.toExist() - - // taps on "show" button to show hidden elements - await element(by.id(TestID.ShowHiddenTokens)).tap() - - // checks if first hidden element is visible - await expect(element(by.id('token-list-item-25'))).toExist() - - // taps on "hide" button to show hidden elements - await element(by.id(TestID.ShowHiddenTokens)).tap() - - // checks if first item of the hidden item is not visible again - await expect(element(by.id('token-list-item-25'))).not.toExist() - - // switches to NFTs tab - await element(by.id('home-tab-NFTs')).atIndex(0).tap() - - // checks is if tokens are visible - await expect(element(by.id('nfts-list-item-0'))).toBeVisible() - - // switches to Activity tab - await element(by.id('home-tab-Activity')).atIndex(0).tap() - - // checks is if tokens are visible - await expect(element(by.id('activity-list-item-0'))).toBeVisible() - - // switches back to tokens tab - await element(by.id('home-tab-Tokens')).atIndex(0).tap() - - // scrolls to the bottom of the token list - await element(by.id('token-list-item-16')).swipe('down') - - // checks if list of tokens was rendered properly by checking first token visibility - await expect(element(by.id('token-list-item-0'))).toBeVisible() -} diff --git a/apps/mobile/e2e/usecases/onboarding/ImportWallet.ts b/apps/mobile/e2e/usecases/onboarding/ImportWallet.ts index 539b64cb548..70b742b7a34 100644 --- a/apps/mobile/e2e/usecases/onboarding/ImportWallet.ts +++ b/apps/mobile/e2e/usecases/onboarding/ImportWallet.ts @@ -10,6 +10,7 @@ export async function ImportWallet(): Promise { await element(by.id(TestID.OnboardingImportSeedPhrase)).tap() // Checks if recovery phase input is in focus and types recovery phrase in + await expect(element(by.id(TestID.ImportAccountInput))).toBeFocused() await element(by.id(TestID.ImportAccountInput)).typeText(TestWallet.recoveryPhrase) // Taps continue navigating to SelectWalletScreen diff --git a/apps/mobile/e2e/usecases/swap/SwapBasicInteractions.ts b/apps/mobile/e2e/usecases/swap/SwapBasicInteractions.ts index 7d7414f0c65..4fb54b3deef 100644 --- a/apps/mobile/e2e/usecases/swap/SwapBasicInteractions.ts +++ b/apps/mobile/e2e/usecases/swap/SwapBasicInteractions.ts @@ -18,43 +18,41 @@ export async function SwapBasicInteractions(): Promise { // Picks usdc output token await element(by.text('USDC')).atIndex(0).tap() - // Taps .98765432101 into the swap input - await element(by.id('decimal-pad-.')).tap() - await element(by.id('decimal-pad-9')).tap() - await element(by.id('decimal-pad-8')).tap() - await element(by.id('decimal-pad-7')).tap() - await element(by.id('decimal-pad-6')).tap() - await element(by.id('decimal-pad-5')).tap() - await element(by.id('decimal-pad-4')).tap() - await element(by.id('decimal-pad-3')).tap() - await element(by.id('decimal-pad-2')).tap() + // Taps 1234567890 number into swap input await element(by.id('decimal-pad-1')).tap() + await element(by.id('decimal-pad-2')).tap() + await element(by.id('decimal-pad-3')).tap() + await element(by.id('decimal-pad-4')).tap() + await element(by.id('decimal-pad-5')).tap() + await element(by.id('decimal-pad-6')).tap() + await element(by.id('decimal-pad-7')).tap() + await element(by.id('decimal-pad-8')).tap() + await element(by.id('decimal-pad-.')).tap() await element(by.id('decimal-pad-0')).tap() + await element(by.id('decimal-pad-9')).tap() await element(by.id('decimal-pad-1')).tap() - - // Taps a backspace button leaving .9876543210 value in the input field await element(by.id('decimal-pad-backspace')).tap() - // Checks if expected input expected value: ".9876543210" - await expect(element(by.id(TestID.AmountInputIn))).toHaveText('.9876543210') + // Checks if expected input expected value: "12345678.09" + await expect(element(by.id(TestID.AmountInputIn))).toHaveValue('12345678.09') // Checks if expected error is displayed await expect(element(by.text('You don’t have enough ETH'))).toBeVisible() // Checks if expected output expected value: "0" - await expect(element(by.id(TestID.AmountInputOut))).not.toHaveText('0') + await expect(element(by.id(TestID.AmountInputOut))).not.toHaveValue('0') // Swaps input and output currencies await element(by.id(TestID.SwitchCurrenciesButton)).tap() // Checks if expected input expected value: "0" - await expect(element(by.id(TestID.AmountInputIn))).not.toHaveText('0') + await expect(element(by.id(TestID.AmountInputIn))).toHaveValue('0') // Checks if expected error is displayed - await expect(element(by.text('You don’t have enough USDC'))).toBeVisible() + await expect(element(by.text('Not enough liquidity'))).toBeVisible() - // Checks if expected output expected value: ".9876543210" - await expect(element(by.id(TestID.AmountInputOut))).toHaveText('.9876543210') + // Checks if expected output expected value: "12345678.09" + await expect(element(by.id(TestID.AmountInputOut))).toHaveValue('12345678.09') // Swaps input and output currencies await element(by.id(TestID.SwitchCurrenciesButton)).tap() @@ -70,10 +68,10 @@ export async function SwapBasicInteractions(): Promise { await element(by.id('decimal-pad-3')).tap() // Checks if output has expected value: "123" - await expect(element(by.id(TestID.AmountInputOut))).toHaveText('123') + await expect(element(by.id(TestID.AmountInputOut))).toHaveValue('123') // Checks if expected input value to be cleared - await expect(element(by.id(TestID.AmountInputIn))).not.toHaveText('0') + await expect(element(by.id(TestID.AmountInputIn))).not.toHaveValue('0') // Checks dollar value to be visible await expect(element(by.text('$123.00'))).toBeVisible() diff --git a/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputManager.m b/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputManager.m index 71430dc2682..2342c17486a 100644 --- a/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputManager.m +++ b/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputManager.m @@ -16,7 +16,6 @@ @interface RCT_EXTERN_MODULE(SeedPhraseInputManager, RCTViewManager) RCT_EXPORT_VIEW_PROPERTY(onPasteStart, RCTDirectEventBlock); RCT_EXPORT_VIEW_PROPERTY(onPasteEnd, RCTDirectEventBlock); RCT_EXPORT_VIEW_PROPERTY(onHeightMeasured, RCTDirectEventBlock); -RCT_EXPORT_VIEW_PROPERTY(testID, NSString?) RCT_EXTERN_METHOD(handleSubmit: (nonnull NSNumber *)node) @end diff --git a/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputView.swift b/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputView.swift index 55781b4ef48..f2dda700695 100644 --- a/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputView.swift +++ b/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputView.swift @@ -78,12 +78,6 @@ class SeedPhraseInputView: UIView { set { vc.rootView.viewModel.onHeightMeasured = newValue } get { return vc.rootView.viewModel.onHeightMeasured } } - - @objc - var testID: String? { - get { vc.rootView.viewModel.testID } - set { vc.rootView.viewModel.testID = newValue } - } @objc var handleSubmit: () -> Void { @@ -118,14 +112,12 @@ struct SeedPhraseInput: View { VStack(spacing: 12) { VStack { VStack { - ZStack(alignment: .topLeading) { + ZStack(alignment: .leading) { TextEditor(text: $viewModel.input) .focused($focused) .autocorrectionDisabled() .textInputAutocapitalization(.never) .modifier(TextEditModifier()) - .frame(minHeight: 96) // 120 - 2 * 12 for padding - .accessibility(identifier: viewModel.testID ?? "import-account-input") if (viewModel.input.isEmpty) { Text(viewModel.strings.inputPlaceholder) @@ -139,6 +131,7 @@ struct SeedPhraseInput: View { .fixedSize(horizontal: false, vertical: true) .background(Colors.surface1) .padding(12) // Adds to default TextEditor padding 8 + .frame(minHeight: 120, alignment: .top) .cornerRadius(16) .overlay( RoundedRectangle(cornerRadius: 16) @@ -148,7 +141,7 @@ struct SeedPhraseInput: View { .onTapGesture { focused = true } - .onAppear { + .onAppear() { DispatchQueue.main.async { focused = true } @@ -196,7 +189,7 @@ struct SeedPhraseInput: View { } ) } - .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) + .frame(maxWidth:.infinity, maxHeight: .infinity, alignment: .top) .font(font) } diff --git a/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputViewModel.swift b/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputViewModel.swift index b6d9f2fc896..62432057f05 100644 --- a/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputViewModel.swift +++ b/apps/mobile/ios/Uniswap/Onboarding/Import/SeedPhraseInputViewModel.swift @@ -36,9 +36,6 @@ class SeedPhraseInputViewModel: ObservableObject { // Following block of variables will come from RN @Published var targetMnemonicId: String? = nil - - @Published var testID: String? = nil - @Published var rawRNStrings: Dictionary = Dictionary() { didSet { strings = ReactNativeStrings( @@ -65,15 +62,11 @@ class SeedPhraseInputViewModel: ObservableObject { @Published var onPasteEnd: RCTDirectEventBlock = { _ in } @Published var onHeightMeasured: RCTDirectEventBlock = { _ in } - private var lastWordValidationTimer: Timer? - private let lastWordValidationTimeout: TimeInterval = 1.0 - @Published var input = "" { didSet { - handleInputChange() + validateInput() } } - @Published var skipLastWord = true @Published var status: Status = .none @Published var error: MnemonicError? = nil @@ -142,26 +135,10 @@ class SeedPhraseInputViewModel: ObservableObject { return value.trimmingCharacters(in: .whitespacesAndNewlines) } - private func handleInputChange() { + private func validateInput() { let normalized = normalizeInput(value: input) let skipLastWord = normalized.last != " " - validateInput(normalizedInput: normalized, skipLastWord: skipLastWord) - - lastWordValidationTimer?.invalidate() - - if (skipLastWord) { - lastWordValidationTimer = Timer.scheduledTimer( - withTimeInterval: lastWordValidationTimeout, - repeats: false) { _ in - DispatchQueue.global(qos: .background).async { - self.validateInput(normalizedInput: normalized, skipLastWord: false) - } - } - } - } - - private func validateInput(normalizedInput: String, skipLastWord: Bool) { - let mnemonic = trimInput(value: normalizedInput) + let mnemonic = trimInput(value: normalized) let words = mnemonic.components(separatedBy: " ") diff --git a/apps/mobile/jest-setup.js b/apps/mobile/jest-setup.js index eead5ec6431..084c8648abc 100644 --- a/apps/mobile/jest-setup.js +++ b/apps/mobile/jest-setup.js @@ -122,3 +122,8 @@ jest.mock('wallet/src/features/appearance/hooks', () => { useSelectedColorScheme: () => 'light', } }) + +jest.mock('wallet/src/features/fiatOnRamp/api', () => ({ + ...jest.requireActual('wallet/src/features/fiatOnRamp/api'), + useFiatOnRampIpAddressQuery: jest.fn().mockReturnValue({}), +})) diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 26f39ae3b5a..4cc4190305a 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -33,7 +33,7 @@ "link:assets": "react-native-asset", "graphql:generate:swift": "cd ios && ./Pods/Apollo/apollo-ios-cli generate", "hardhat": "hardhat node", - "check:circular": "../../scripts/check-circular-imports.sh ./src/app/App.tsx 5", + "check:circular": "../../scripts/check-circular-imports.sh ./src/app/App.tsx 6", "ios": "yarn ios:prebuild && SKIP_BUNDLING=1 react-native run-ios", "ios:prebuild": "yarn graphql:generate:swift && cd ios/WidgetsCore/MobileSchema && rm -rf !(README.md) && cd ../../.. && yarn graphql:generate:swift && yarn env:local:copy:swift", "ios:smol": "SKIP_BUNDLING=1 react-native run-ios --simulator=\"iPhone SE (3rd generation)\"", @@ -83,7 +83,7 @@ "@shopify/react-native-performance-navigation": "3.0.0", "@shopify/react-native-skia": "1.2.0", "@uniswap/analytics": "1.7.0", - "@uniswap/analytics-events": "2.34.0", + "@uniswap/analytics-events": "2.32.0", "@uniswap/ethers-rs-mobile": "0.0.5", "@uniswap/sdk-core": "5.3.0", "@uniswap/v3-sdk": "3.13.0", @@ -171,7 +171,7 @@ "babel-plugin-module-resolver": "5.0.0", "babel-plugin-react-native-web": "0.17.5", "core-js": "2.6.12", - "detox": "20.23.0", + "detox": "20.18.1", "eslint": "8.44.0", "expo-modules-core": "1.11.13", "hardhat": "2.14.0", diff --git a/apps/mobile/scripts/podinstall.sh b/apps/mobile/scripts/podinstall.sh index fc7d144225a..e6b5f42feaa 100755 --- a/apps/mobile/scripts/podinstall.sh +++ b/apps/mobile/scripts/podinstall.sh @@ -1,26 +1,2 @@ #!/bin/bash - -set -e - -REQUIRED_XCODE_VERSION="15.2" - -check_xcode_version() { - local current_version=$(xcodebuild -version | grep "Xcode" | cut -d' ' -f2) - if [ "$current_version" != "$REQUIRED_XCODE_VERSION" ]; then - echo "Error: Xcode version mismatch" - echo "Required: $REQUIRED_XCODE_VERSION" - echo "Current: $current_version" - exit 1 - fi - echo "Xcode version check passed: $current_version" -} - -# Check Xcode version -check_xcode_version - -# Install pods -cd ios/ -bundle install -bundle exec pod install -cd .. - +cd ios/ && bundle install && bundle exec pod install && cd .. diff --git a/apps/mobile/src/app/App.tsx b/apps/mobile/src/app/App.tsx index 95b75963cda..8e1520e9ac3 100644 --- a/apps/mobile/src/app/App.tsx +++ b/apps/mobile/src/app/App.tsx @@ -12,10 +12,9 @@ import { GestureHandlerRootView } from 'react-native-gesture-handler' import { MMKV } from 'react-native-mmkv' import { SafeAreaProvider } from 'react-native-safe-area-context' import { enableFreeze } from 'react-native-screens' -import { useDispatch } from 'react-redux' import { PersistGate } from 'redux-persist/integration/react' import { MobileWalletNavigationProvider } from 'src/app/MobileWalletNavigationProvider' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { AppModals } from 'src/app/modals/AppModals' import { NavigationContainer } from 'src/app/navigation/NavigationContainer' import { useIsPartOfNavigationTree } from 'src/app/navigation/hooks' @@ -256,7 +255,7 @@ function AppOuter(): JSX.Element | null { } function AppInner(): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isDarkMode = useIsDarkMode() const themeSetting = useCurrentAppearanceSetting() const allowAnalytics = useAppSelector(selectAllowAnalytics) diff --git a/apps/mobile/src/app/MobileWalletNavigationProvider.tsx b/apps/mobile/src/app/MobileWalletNavigationProvider.tsx index 567bc98e84b..f39d6ceb534 100644 --- a/apps/mobile/src/app/MobileWalletNavigationProvider.tsx +++ b/apps/mobile/src/app/MobileWalletNavigationProvider.tsx @@ -1,6 +1,6 @@ import { PropsWithChildren, useCallback } from 'react' import { Share } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { exploreNavigationRef } from 'src/app/navigation/navigation' import { useAppStackNavigation } from 'src/app/navigation/types' import { closeModal, openModal } from 'src/features/modals/modalSlice' @@ -24,6 +24,7 @@ import { getNavigateToSendFlowArgsInitialState, getNavigateToSwapFlowArgsInitialState, } from 'wallet/src/contexts/WalletNavigationContext' +import { useFiatOnRampIpAddressQuery } from 'wallet/src/features/fiatOnRamp/api' import { getNftUrl, getTokenUrl } from 'wallet/src/utils/linking' export function MobileWalletNavigationProvider({ children }: PropsWithChildren): JSX.Element { @@ -113,7 +114,7 @@ function useNavigateToHomepageTab(tab: HomeScreenTabIndex): () => void { } function useNavigateToReceive(): () => void { - const dispatch = useDispatch() + const dispatch = useAppDispatch() return useCallback((): void => { dispatch(openModal({ name: ModalName.WalletConnectScan, initialState: ScannerModalState.WalletQr })) @@ -121,7 +122,7 @@ function useNavigateToReceive(): () => void { } function useNavigateToSend(): (args: NavigateToSendFlowArgs) => void { - const dispatch = useDispatch() + const dispatch = useAppDispatch() return useCallback( (args: NavigateToSendFlowArgs) => { @@ -133,7 +134,7 @@ function useNavigateToSend(): (args: NavigateToSendFlowArgs) => void { } function useNavigateToSwapFlow(): (args: NavigateToSwapFlowArgs) => void { - const dispatch = useDispatch() + const dispatch = useAppDispatch() return useCallback( (args: NavigateToSwapFlowArgs): void => { @@ -191,8 +192,10 @@ function useNavigateToNftCollection(): (args: NavigateToNftCollectionArgs) => vo } function useNavigateToBuyOrReceiveWithEmptyWallet(): () => void { - const dispatch = useDispatch() - // This flag is enabled only for supported countries. + const dispatch = useAppDispatch() + + const { data } = useFiatOnRampIpAddressQuery() + const moonpayFiatOnRampEligible = Boolean(data?.isBuyAllowed) const forAggregatorEnabled = useFeatureFlag(FeatureFlags.ForAggregator) return useCallback((): void => { @@ -200,6 +203,8 @@ function useNavigateToBuyOrReceiveWithEmptyWallet(): () => void { if (forAggregatorEnabled) { dispatch(openModal({ name: ModalName.FiatOnRampAggregator })) + } else if (moonpayFiatOnRampEligible) { + dispatch(openModal({ name: ModalName.FiatOnRamp })) } else { dispatch( openModal({ @@ -208,5 +213,5 @@ function useNavigateToBuyOrReceiveWithEmptyWallet(): () => void { }), ) } - }, [dispatch, forAggregatorEnabled]) + }, [dispatch, forAggregatorEnabled, moonpayFiatOnRampEligible]) } diff --git a/apps/mobile/src/app/hooks.ts b/apps/mobile/src/app/hooks.ts index 639606da04f..050c29e024b 100644 --- a/apps/mobile/src/app/hooks.ts +++ b/apps/mobile/src/app/hooks.ts @@ -1,13 +1,16 @@ import { useFocusEffect } from '@react-navigation/core' +import { ThunkDispatch } from '@reduxjs/toolkit' import { useCallback, useRef, useState } from 'react' import { LayoutChangeEvent } from 'react-native' -import { TypedUseSelectorHook, useSelector } from 'react-redux' +import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux' import type { MobileState } from 'src/app/reducer' +import type { AppDispatch } from 'src/app/store' import { SagaGenerator, select } from 'typed-redux-saga' import { spacing } from 'ui/src/theme' // Use throughout the app instead of plain `useDispatch` and `useSelector` - +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const useAppDispatch = (): ThunkDispatch => useDispatch() export const useAppSelector: TypedUseSelectorHook = useSelector // Use in sagas for better typing when selecting from redux state diff --git a/apps/mobile/src/app/migrations.test.ts b/apps/mobile/src/app/migrations.test.ts index fc3078f59a8..82073bc0c06 100644 --- a/apps/mobile/src/app/migrations.test.ts +++ b/apps/mobile/src/app/migrations.test.ts @@ -81,7 +81,10 @@ import { initialWalletConnectState } from 'src/features/walletConnect/walletConn import { ModalName } from 'uniswap/src/features/telemetry/constants' import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants' -import { ExtensionOnboardingState, initialBehaviorHistoryState } from 'wallet/src/features/behaviorHistory/slice' +import { + ExtensionOnboardingState, + initialBehaviorHistoryState, +} from 'wallet/src/features/behaviorHistory/slice' import { initialFavoritesState } from 'wallet/src/features/favorites/slice' import { initialFiatCurrencyState } from 'wallet/src/features/fiatCurrency/slice' import { initialLanguageState } from 'wallet/src/features/language/slice' @@ -91,12 +94,20 @@ import { initialTelemetryState } from 'wallet/src/features/telemetry/slice' import { initialTokensState } from 'wallet/src/features/tokens/tokensSlice' import { initialTransactionsState } from 'wallet/src/features/transactions/slice' import { TransactionStatus, TransactionType } from 'wallet/src/features/transactions/types' -import { Account, AccountType, SignerMnemonicAccount } from 'wallet/src/features/wallet/accounts/types' +import { + Account, + AccountType, + SignerMnemonicAccount, +} from 'wallet/src/features/wallet/accounts/types' import { initialWalletState, SwapProtectionSetting } from 'wallet/src/features/wallet/slice' import { createMigrate } from 'wallet/src/state/createMigrate' import { testActivatePendingAccounts } from 'wallet/src/state/sharedMigrationsTests' import { getAllKeysOfNestedObject } from 'wallet/src/state/testUtils' -import { fiatPurchaseTransactionInfo, signerMnemonicAccount, transactionDetails } from 'wallet/src/test/fixtures' +import { + fiatPurchaseTransactionInfo, + signerMnemonicAccount, + transactionDetails, +} from 'wallet/src/test/fixtures' expect.extend({ toIncludeSameMembers }) @@ -278,17 +289,21 @@ describe('Redux state migrations', () => { expect(newSchema.transactions[UniverseChainId.Mainnet]).toBeUndefined() expect(newSchema.transactions.lastTxHistoryUpdate).toBeUndefined() - expect(newSchema.transactions['0xShadowySuperCoder'][UniverseChainId.Mainnet]['0'].status).toEqual( - TransactionStatus.Pending, - ) + expect( + newSchema.transactions['0xShadowySuperCoder'][UniverseChainId.Mainnet]['0'].status + ).toEqual(TransactionStatus.Pending) expect(newSchema.transactions['0xKingHodler'][UniverseChainId.Mainnet]).toBeUndefined() expect(newSchema.transactions['0xKingHodler'][UniverseChainId.Goerli]['0']).toBeUndefined() - expect(newSchema.transactions['0xKingHodler'][UniverseChainId.Goerli]['1'].from).toEqual('0xKingHodler') + expect(newSchema.transactions['0xKingHodler'][UniverseChainId.Goerli]['1'].from).toEqual( + '0xKingHodler' + ) expect(newSchema.notifications.lastTxNotificationUpdate).toBeDefined() - expect(newSchema.notifications.lastTxNotificationUpdate['0xShadowySuperCoder'][UniverseChainId.Mainnet]).toEqual( - 12345678912345, - ) + expect( + newSchema.notifications.lastTxNotificationUpdate['0xShadowySuperCoder'][ + UniverseChainId.Mainnet + ] + ).toEqual(12345678912345) }) it('migrates from v0 to v1', () => { @@ -393,7 +408,12 @@ describe('Redux state migrations', () => { }) it('migrates from v6 to v7', () => { - const TEST_ADDRESSES: [string, string, string, string] = ['0xTest', '0xTest2', '0xTest3', '0xTest4'] + const TEST_ADDRESSES: [string, string, string, string] = [ + '0xTest', + '0xTest2', + '0xTest3', + '0xTest4', + ] const TEST_IMPORT_TIME_MS = 12345678912345 const v6SchemaStub = { @@ -451,7 +471,12 @@ describe('Redux state migrations', () => { }) it('migrates from v8 to v9', () => { - const TEST_ADDRESSES: [string, string, string, string] = ['0xTest', '0xTest2', '0xTest3', '0xTest4'] + const TEST_ADDRESSES: [string, string, string, string] = [ + '0xTest', + '0xTest2', + '0xTest3', + '0xTest4', + ] const TEST_IMPORT_TIME_MS = 12345678912345 const v8SchemaStub = { @@ -487,18 +512,15 @@ describe('Redux state migrations', () => { const TEST_ADDRESSES = ['0xTest', OLD_DEMO_ACCOUNT_ADDRESS, '0xTest2', '0xTest3'] const TEST_IMPORT_TIME_MS = 12345678912345 - const accounts = TEST_ADDRESSES.reduce( - (acc, address) => { - acc[address] = { - address, - timeImportedMs: TEST_IMPORT_TIME_MS, - type: 'native', - } as unknown as Account + const accounts = TEST_ADDRESSES.reduce((acc, address) => { + acc[address] = { + address, + timeImportedMs: TEST_IMPORT_TIME_MS, + type: 'native', + } as unknown as Account - return acc - }, - {} as { [address: string]: Account }, - ) + return acc + }, {} as { [address: string]: Account }) const v9SchemaStub = { ...v9Schema, @@ -976,18 +998,34 @@ describe('Redux state migrations', () => { const v30 = migrations[30](v29Stub) // expect fiat onramp txdetails to change - expect(v30.transactions[account.address][UniverseChainId.Mainnet]['0'].typeInfo).toEqual(expectedTypeInfo) + expect(v30.transactions[account.address][UniverseChainId.Mainnet]['0'].typeInfo).toEqual( + expectedTypeInfo + ) expect(v30.transactions[account.address][UniverseChainId.Goerli]['0']).toBeUndefined() expect(v30.transactions[account.address][UniverseChainId.ArbitrumOne]).toBeUndefined() // does not create an object for chain - expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.ArbitrumOne]['0'].typeInfo).toEqual(expectedTypeInfo) - expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.Optimism]['0'].typeInfo).toEqual(expectedTypeInfo) - expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.Optimism]['1'].typeInfo).toEqual(expectedTypeInfo) + expect( + v30.transactions['0xshadowySuperCoder'][UniverseChainId.ArbitrumOne]['0'].typeInfo + ).toEqual(expectedTypeInfo) + expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.Optimism]['0'].typeInfo).toEqual( + expectedTypeInfo + ) + expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.Optimism]['1'].typeInfo).toEqual( + expectedTypeInfo + ) expect(v30.transactions['0xdeleteMe']).toBe(undefined) // expect non-for txDetails to not change - expect(v30.transactions[account.address][UniverseChainId.Mainnet]['1']).toEqual(txDetailsConfirmed) - expect(v30.transactions[account.address][UniverseChainId.Goerli]['1']).toEqual(txDetailsConfirmed) - expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.ArbitrumOne]['1']).toEqual(txDetailsConfirmed) - expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.Optimism]['2']).toEqual(txDetailsConfirmed) + expect(v30.transactions[account.address][UniverseChainId.Mainnet]['1']).toEqual( + txDetailsConfirmed + ) + expect(v30.transactions[account.address][UniverseChainId.Goerli]['1']).toEqual( + txDetailsConfirmed + ) + expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.ArbitrumOne]['1']).toEqual( + txDetailsConfirmed + ) + expect(v30.transactions['0xshadowySuperCoder'][UniverseChainId.Optimism]['2']).toEqual( + txDetailsConfirmed + ) }) it('migrates from v31 to 32', () => { @@ -1060,16 +1098,24 @@ describe('Redux state migrations', () => { const v36Stub = { ...v36Schema, transactions } - expect(v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id1].typeInfo.id).toBeUndefined() - expect(v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id2].typeInfo.id).toBeUndefined() + expect( + v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id1].typeInfo.id + ).toBeUndefined() + expect( + v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id2].typeInfo.id + ).toBeUndefined() const v37 = migrations[37](v36Stub) expect(v37.transactions[account.address]?.[UniverseChainId.Mainnet][id1].typeInfo.id).toEqual( - fiatOnRampTxDetailsFailed.typeInfo.id, + fiatOnRampTxDetailsFailed.typeInfo.id + ) + expect( + v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id2].typeInfo.id + ).toBeUndefined() + expect(v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id3]).toEqual( + txDetailsConfirmed ) - expect(v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id2].typeInfo.id).toBeUndefined() - expect(v36Stub.transactions[account.address]?.[UniverseChainId.Mainnet][id3]).toEqual(txDetailsConfirmed) }) it('migrates from v37 to 38', () => { diff --git a/apps/mobile/src/app/modals/AccountSwitcherModal.tsx b/apps/mobile/src/app/modals/AccountSwitcherModal.tsx index deedeec4b0c..6e16db031bc 100644 --- a/apps/mobile/src/app/modals/AccountSwitcherModal.tsx +++ b/apps/mobile/src/app/modals/AccountSwitcherModal.tsx @@ -1,9 +1,8 @@ import React, { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { Alert } from 'react-native' -import { useDispatch } from 'react-redux' import { Action } from 'redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { AccountList } from 'src/components/accounts/AccountList' import { isCloudStorageAvailable } from 'src/features/CloudBackup/RNCloudStorageBackupsManager' @@ -31,7 +30,7 @@ import { setAccountAsActive } from 'wallet/src/features/wallet/slice' import { openSettings } from 'wallet/src/utils/linking' export function AccountSwitcherModal(): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() return ( @@ -60,7 +59,7 @@ export function AccountSwitcher({ onClose }: { onClose: () => void }): JSX.Eleme const dimensions = useDeviceDimensions() const { t } = useTranslation() const activeAccountAddress = useActiveAccountAddress() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const hasImportedSeedPhrase = useNativeAccountExists() const modalState = useAppSelector(selectModalState(ModalName.AccountSwitcher)) const sortedMnemonicAccounts = useAppSelector(selectSortedSignerMnemonicAccounts) diff --git a/apps/mobile/src/app/modals/AppModals.tsx b/apps/mobile/src/app/modals/AppModals.tsx index 005668f9205..450c5ae231a 100644 --- a/apps/mobile/src/app/modals/AppModals.tsx +++ b/apps/mobile/src/app/modals/AppModals.tsx @@ -1,5 +1,4 @@ import React, { useCallback } from 'react' -import { useDispatch } from 'react-redux' import { AccountSwitcherModal } from 'src/app/modals/AccountSwitcherModal' import { ExperimentsModal } from 'src/app/modals/ExperimentsModal' import { ExploreModal } from 'src/app/modals/ExploreModal' @@ -8,13 +7,14 @@ import { TransferTokenModal } from 'src/app/modals/TransferTokenModal' import { ViewOnlyExplainerModal } from 'src/app/modals/ViewOnlyExplainerModal' import { LazyModalRenderer } from 'src/app/modals/utils' import { RemoveWalletModal } from 'src/components/RemoveWallet/RemoveWalletModal' -import { WalletConnectModals } from 'src/components/Requests/WalletConnectModals' import { RestoreWalletModal } from 'src/components/RestoreWalletModal/RestoreWalletModal' +import { WalletConnectModals } from 'src/components/WalletConnect/WalletConnectModals' import { ForceUpgradeModal } from 'src/components/forceUpgrade/ForceUpgradeModal' import { UnitagsIntroModal } from 'src/components/unitags/UnitagsIntroModal' import { LockScreenModal } from 'src/features/authentication/LockScreenModal' import { ExchangeTransferModal } from 'src/features/fiatOnRamp/ExchangeTransferModal' import { FiatOnRampAggregatorModal } from 'src/features/fiatOnRamp/FiatOnRampAggregatorModal' +import { FiatOnRampModal } from 'src/features/fiatOnRamp/FiatOnRampModal' import { closeModal } from 'src/features/modals/modalSlice' import { ScantasticModal } from 'src/features/scantastic/ScantasticModal' import { ReceiveCryptoModal } from 'src/screens/ReceiveCryptoModal' @@ -22,9 +22,10 @@ import { SettingsFiatCurrencyModal } from 'src/screens/SettingsFiatCurrencyModal import { ModalName } from 'uniswap/src/features/telemetry/constants' import { SettingsLanguageModal } from 'wallet/src/components/settings/language/SettingsLanguageModal' import { QueuedOrderModal } from 'wallet/src/features/transactions/swap/modals/QueuedOrderModal' +import { useAppDispatch } from 'wallet/src/state' export function AppModals(): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const onCloseLanguageModal = useCallback(() => { dispatch(closeModal({ name: ModalName.LanguageSelector })) @@ -40,6 +41,10 @@ export function AppModals(): JSX.Element { + + + + diff --git a/apps/mobile/src/app/modals/ExperimentsModal.tsx b/apps/mobile/src/app/modals/ExperimentsModal.tsx index 55d42893e1a..61107c204a3 100644 --- a/apps/mobile/src/app/modals/ExperimentsModal.tsx +++ b/apps/mobile/src/app/modals/ExperimentsModal.tsx @@ -1,9 +1,8 @@ import { useApolloClient } from '@apollo/client' import React, { useState } from 'react' import { ScrollView } from 'react-native-gesture-handler' -import { useDispatch } from 'react-redux' import { Action } from 'redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { closeModal } from 'src/features/modals/modalSlice' import { selectCustomEndpoint } from 'src/features/tweaks/selectors' import { setCustomEndpoint } from 'src/features/tweaks/slice' @@ -16,7 +15,7 @@ import { AccordionHeader, GatingOverrides } from 'wallet/src/components/gating/G export function ExperimentsModal(): JSX.Element { const insets = useDeviceInsets() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const customEndpoint = useAppSelector(selectCustomEndpoint) const apollo = useApolloClient() diff --git a/apps/mobile/src/app/modals/ExploreModal.tsx b/apps/mobile/src/app/modals/ExploreModal.tsx index fcd7fda8845..8b5229d0903 100644 --- a/apps/mobile/src/app/modals/ExploreModal.tsx +++ b/apps/mobile/src/app/modals/ExploreModal.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { ExploreStackNavigator } from 'src/app/navigation/navigation' import { closeModal } from 'src/features/modals/modalSlice' import { useSporeColors } from 'ui/src' @@ -8,7 +8,7 @@ import { ModalName } from 'uniswap/src/features/telemetry/constants' export function ExploreModal(): JSX.Element { const colors = useSporeColors() - const appDispatch = useDispatch() + const appDispatch = useAppDispatch() const onClose = (): void => { appDispatch(closeModal({ name: ModalName.Explore })) diff --git a/apps/mobile/src/app/modals/SwapModal.tsx b/apps/mobile/src/app/modals/SwapModal.tsx index a54f83c9486..581bf3fba20 100644 --- a/apps/mobile/src/app/modals/SwapModal.tsx +++ b/apps/mobile/src/app/modals/SwapModal.tsx @@ -1,6 +1,5 @@ import React, { useCallback, useEffect } from 'react' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { BiometricsIcon } from 'src/components/icons/BiometricsIcon' import { useBiometricAppSettings, useBiometricPrompt, useOsBiometricAuthEnabled } from 'src/features/biometrics/hooks' import { closeModal } from 'src/features/modals/modalSlice' @@ -12,7 +11,7 @@ import { SwapFlow } from 'wallet/src/features/transactions/swap/SwapFlow' import { useSwapPrefilledState } from 'wallet/src/features/transactions/swap/hooks/useSwapPrefilledState' export function SwapModal(): JSX.Element { - const appDispatch = useDispatch() + const appDispatch = useAppDispatch() const { initialState } = useAppSelector(selectModalState(ModalName.Swap)) const onClose = useCallback((): void => { diff --git a/apps/mobile/src/app/modals/TransferTokenModal.tsx b/apps/mobile/src/app/modals/TransferTokenModal.tsx index 95bc22c9265..a98009dd521 100644 --- a/apps/mobile/src/app/modals/TransferTokenModal.tsx +++ b/apps/mobile/src/app/modals/TransferTokenModal.tsx @@ -1,6 +1,5 @@ import React, { useCallback } from 'react' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { closeModal } from 'src/features/modals/modalSlice' import { selectModalState } from 'src/features/modals/selectModalState' import { TransferFlow } from 'src/features/transactions/transfer/TransferFlow' @@ -13,7 +12,7 @@ import { ModalName } from 'uniswap/src/features/telemetry/constants' export function TransferTokenModal(): JSX.Element { const colors = useSporeColors() - const appDispatch = useDispatch() + const appDispatch = useAppDispatch() const modalState = useAppSelector(selectModalState(ModalName.Send)) const onClose = useCallback((): void => { diff --git a/apps/mobile/src/app/modals/ViewOnlyExplainerModal.tsx b/apps/mobile/src/app/modals/ViewOnlyExplainerModal.tsx index 5266bad6bd3..0acabb272ce 100644 --- a/apps/mobile/src/app/modals/ViewOnlyExplainerModal.tsx +++ b/apps/mobile/src/app/modals/ViewOnlyExplainerModal.tsx @@ -1,5 +1,4 @@ import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' import { navigate } from 'src/app/navigation/rootNavigation' import { closeModal, openModal } from 'src/features/modals/modalSlice' import { Button, Flex, Text, useIsDarkMode } from 'ui/src' @@ -10,13 +9,14 @@ import { ModalName } from 'uniswap/src/features/telemetry/constants' import { ImportType, OnboardingEntryPoint } from 'uniswap/src/types/onboarding' import { MobileScreens, OnboardingScreens } from 'uniswap/src/types/screens/mobile' import { useActiveAccountAddress, useNativeAccountExists } from 'wallet/src/features/wallet/hooks' +import { useAppDispatch } from 'wallet/src/state' const WALLET_IMAGE_ASPECT_RATIO = 327 / 215 export function ViewOnlyExplainerModal(): JSX.Element { const { t } = useTranslation() const activeAccountAddress = useActiveAccountAddress() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const hasImportedSeedPhrase = useNativeAccountExists() const isDarkMode = useIsDarkMode() diff --git a/apps/mobile/src/app/navigation/NavBar.tsx b/apps/mobile/src/app/navigation/NavBar.tsx index ca600672974..a6ddcc0bc3d 100644 --- a/apps/mobile/src/app/navigation/NavBar.tsx +++ b/apps/mobile/src/app/navigation/NavBar.tsx @@ -11,7 +11,7 @@ import { useAnimatedStyle, useSharedValue, } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { pulseAnimation } from 'src/components/buttons/utils' import { openModal } from 'src/features/modals/modalSlice' import { @@ -32,11 +32,11 @@ import { ElementName, ModalName } from 'uniswap/src/features/telemetry/constants import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { MobileScreens } from 'uniswap/src/types/screens/mobile' -import { opacify } from 'uniswap/src/utils/colors' import { isAndroid, isIOS } from 'utilities/src/platform' import { useHighestBalanceNativeCurrencyId } from 'wallet/src/features/dataApi/balances' import { prepareSwapFormState } from 'wallet/src/features/transactions/swap/utils' import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' +import { opacify } from 'wallet/src/utils/colors' export const NAV_BAR_HEIGHT_XS = 52 export const NAV_BAR_HEIGHT_SM = 72 @@ -106,7 +106,7 @@ type SwapTabBarButtonProps = { const SwapFAB = memo(function _SwapFAB({ activeScale = 0.96 }: SwapTabBarButtonProps) { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isDarkMode = useIsDarkMode() @@ -182,7 +182,7 @@ type ExploreTabBarButtonProps = { } function ExploreTabBarButton({ activeScale = 0.98 }: ExploreTabBarButtonProps): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() const isDarkMode = useIsDarkMode() const { t } = useTranslation() diff --git a/apps/mobile/src/app/navigation/NavigationContainer.tsx b/apps/mobile/src/app/navigation/NavigationContainer.tsx index f2bbb93034b..1d46a5feb89 100644 --- a/apps/mobile/src/app/navigation/NavigationContainer.tsx +++ b/apps/mobile/src/app/navigation/NavigationContainer.tsx @@ -7,7 +7,7 @@ import { import { SharedEventName } from '@uniswap/analytics-events' import React, { FC, PropsWithChildren, useCallback, useState } from 'react' import { Linking } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { RootParamList } from 'src/app/navigation/types' import { openDeepLink } from 'src/features/deepLinking/handleDeepLinkSaga' import { DIRECT_LOG_ONLY_SCREENS } from 'src/features/telemetry/directLogScreens' @@ -82,7 +82,7 @@ export const NavigationContainer: FC> = ({ children, on } export const useManageDeepLinks = (): void => { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const manageDeepLinks = useCallback(async () => { const url = await Linking.getInitialURL() if (url) { diff --git a/apps/mobile/src/app/navigation/components.tsx b/apps/mobile/src/app/navigation/components.tsx deleted file mode 100644 index ea31bfb4a44..00000000000 --- a/apps/mobile/src/app/navigation/components.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { BackButton } from 'src/components/buttons/BackButton' -import { RotatableChevron } from 'ui/src/components/icons' -import { iconSizes } from 'ui/src/theme' - -export const renderHeaderBackButton = (): JSX.Element => - -export const renderHeaderBackImage = (): JSX.Element => ( - -) diff --git a/apps/mobile/src/app/navigation/navigation.tsx b/apps/mobile/src/app/navigation/navigation.tsx index cbb449b805b..460483d4ff2 100644 --- a/apps/mobile/src/app/navigation/navigation.tsx +++ b/apps/mobile/src/app/navigation/navigation.tsx @@ -3,7 +3,6 @@ import { createNativeStackNavigator } from '@react-navigation/native-stack' import { createStackNavigator, TransitionPresets } from '@react-navigation/stack' import React from 'react' import { useAppSelector } from 'src/app/hooks' -import { renderHeaderBackButton, renderHeaderBackImage } from 'src/app/navigation/components' import { AppStackParamList, AppStackScreenProp, @@ -13,6 +12,7 @@ import { SettingsStackParamList, UnitagStackParamList, } from 'src/app/navigation/types' +import { BackButton } from 'src/components/buttons/BackButton' import { HorizontalEdgeGestureTarget } from 'src/components/layout/screens/EdgeGestureTarget' import { useBiometricCheck } from 'src/features/biometrics/useBiometricCheck' import { FiatOnRampProvider } from 'src/features/fiatOnRamp/FiatOnRampContext' @@ -65,6 +65,7 @@ import { SettingsWalletManageConnection } from 'src/screens/SettingsWalletManage import { TokenDetailsScreen } from 'src/screens/TokenDetailsScreen' import { WebViewScreen } from 'src/screens/WebViewScreen' import { useDeviceInsets, useSporeColors } from 'ui/src' +import { RotatableChevron } from 'ui/src/components/icons' import { spacing } from 'ui/src/theme' import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' @@ -200,6 +201,8 @@ export function FiatOnRampStackNavigator(): JSX.Element { ) } +const renderHeaderBackButton = (): JSX.Element => + export function OnboardingStackNavigator(): JSX.Element { const colors = useSporeColors() const seedPhraseRefactorEnabled = useFeatureFlag(FeatureFlags.SeedPhraseRefactorNative) @@ -213,8 +216,7 @@ export function OnboardingStackNavigator(): JSX.Element { + export function UnitagStackNavigator(): JSX.Element { const colors = useSporeColors() const insets = useDeviceInsets() diff --git a/apps/mobile/src/app/store.ts b/apps/mobile/src/app/store.ts index 9d0cc056850..7305e6bef0e 100644 --- a/apps/mobile/src/app/store.ts +++ b/apps/mobile/src/app/store.ts @@ -6,9 +6,10 @@ import { Storage, persistReducer, persistStore } from 'redux-persist' import { MOBILE_STATE_VERSION, migrations } from 'src/app/migrations' import { MobileState, ReducerNames, mobileReducer } from 'src/app/reducer' import { mobileSaga } from 'src/app/saga' -import { fiatOnRampAggregatorApi } from 'uniswap/src/features/fiatOnRamp/api' +import { fiatOnRampAggregatorApi as sharedFiatOnRampAggregatorApi } from 'uniswap/src/features/fiatOnRamp/api' import { isNonJestDev } from 'utilities/src/environment/constants' import { logger } from 'utilities/src/logger/logger' +import { fiatOnRampAggregatorApi, fiatOnRampApi } from 'wallet/src/features/fiatOnRamp/api' import { createStore } from 'wallet/src/state' import { createMigrate } from 'wallet/src/state/createMigrate' import { RootReducerNames, sharedPersistedStateWhitelist } from 'wallet/src/state/reducer' @@ -81,7 +82,11 @@ const sentryReduxEnhancer = Sentry.createReduxEnhancer({ }, }) -const middlewares: Middleware[] = [fiatOnRampAggregatorApi.middleware] +const middlewares: Middleware[] = [ + fiatOnRampApi.middleware, + fiatOnRampAggregatorApi.middleware, + sharedFiatOnRampAggregatorApi.middleware, +] if (isNonJestDev) { const createDebugger = require('redux-flipper').default middlewares.push(createDebugger()) @@ -102,3 +107,6 @@ export const setupStore = ( export const store = setupStore() export const persistor = persistStore(store) + +export type AppDispatch = typeof store.dispatch +export type AppStore = typeof store diff --git a/apps/mobile/src/components/NFT/NftView.tsx b/apps/mobile/src/components/NFT/NftView.tsx index 2884773ec21..d7996c2a047 100644 --- a/apps/mobile/src/components/NFT/NftView.tsx +++ b/apps/mobile/src/components/NFT/NftView.tsx @@ -7,17 +7,7 @@ import { ESTIMATED_NFT_LIST_ITEM_SIZE, MAX_NFT_IMAGE_SIZE } from 'wallet/src/fea import { NFTItem } from 'wallet/src/features/nfts/types' import { useNFTContextMenu } from 'wallet/src/features/nfts/useNftContextMenu' -export function NftView({ - owner, - item, - onPress, - index, -}: { - owner: Address - item: NFTItem - index?: number - onPress: () => void -}): JSX.Element { +export function NftView({ owner, item, onPress }: { owner: Address; item: NFTItem; onPress: () => void }): JSX.Element { const { menuActions, onContextMenuPress } = useNFTContextMenu({ contractAddress: item.contractAddress, tokenId: item.tokenId, @@ -37,7 +27,6 @@ export function NftView({ hapticFeedback activeOpacity={1} hapticStyle={ImpactFeedbackStyle.Light} - testID={`nfts-list-item-${index ?? 0}`} // Needed to fix long press issue with context menu on Android onLongPress={noop} onPress={onPress} diff --git a/apps/mobile/src/components/PriceExplorer/useChartDimensions.test.ts b/apps/mobile/src/components/PriceExplorer/useChartDimensions.test.ts index 91cb356dedd..463fca48452 100644 --- a/apps/mobile/src/components/PriceExplorer/useChartDimensions.test.ts +++ b/apps/mobile/src/components/PriceExplorer/useChartDimensions.test.ts @@ -12,7 +12,9 @@ const sharedDimensions = { describe(useChartDimensions, () => { it('returns small chart height for small screens', () => { - jest.spyOn(Dimensions, 'get').mockReturnValue({ ...sharedDimensions, height: heightBreakpoints.short - 1 }) + jest + .spyOn(Dimensions, 'get') + .mockReturnValue({ ...sharedDimensions, height: heightBreakpoints.short - 1 }) const { result } = renderHook(() => useChartDimensions()) expect(result.current).toEqual({ @@ -24,7 +26,9 @@ describe(useChartDimensions, () => { }) it('returns large chart height for large screens', () => { - jest.spyOn(Dimensions, 'get').mockReturnValue({ ...sharedDimensions, height: heightBreakpoints.short }) + jest + .spyOn(Dimensions, 'get') + .mockReturnValue({ ...sharedDimensions, height: heightBreakpoints.short }) const { result } = renderHook(() => useChartDimensions()) expect(result.current).toEqual({ diff --git a/apps/mobile/src/components/PriceExplorer/usePrice.test.ts b/apps/mobile/src/components/PriceExplorer/usePrice.test.ts index 563ea30d6fc..83ed0a3307f 100644 --- a/apps/mobile/src/components/PriceExplorer/usePrice.test.ts +++ b/apps/mobile/src/components/PriceExplorer/usePrice.test.ts @@ -6,7 +6,10 @@ import { useLineChartPrice as useRNWagmiChartLineChartPrice, } from 'react-native-wagmi-charts' import { act } from 'react-test-renderer' -import { useLineChartPrice, useLineChartRelativeChange } from 'src/components/PriceExplorer/usePrice' +import { + useLineChartPrice, + useLineChartRelativeChange, +} from 'src/components/PriceExplorer/usePrice' import { renderHookWithProviders } from 'src/test/render' jest.mock('react-native-wagmi-charts') @@ -17,7 +20,9 @@ const cursorFormattedValue = makeMutable('-') const currentIndex = makeMutable(0) const isActive = makeMutable(false) -const mockData = (args: { data?: TLineChartData; currentIndex?: number; isActive?: boolean } = {}): void => { +const mockData = ( + args: { data?: TLineChartData; currentIndex?: number; isActive?: boolean } = {} +): void => { currentIndex.value = args.currentIndex ?? 0 isActive.value = args.isActive ?? false // react-native-wagmi-charts is mocked so we can mock the return @@ -47,7 +52,9 @@ describe(useLineChartPrice, () => { beforeEach(() => { const originalModule = jest.requireActual('react-native-wagmi-charts') ;(useLineChart as ReturnType).mockImplementation(originalModule.useLineChart) - ;(useRNWagmiChartLineChartPrice as ReturnType).mockImplementation(originalModule.useLineChartPrice) + ;(useRNWagmiChartLineChartPrice as ReturnType).mockImplementation( + originalModule.useLineChartPrice + ) }) afterAll(() => { @@ -165,7 +172,7 @@ describe(useLineChartPrice, () => { expect.objectContaining({ value: expect.objectContaining({ value: 1 }), formatted: expect.objectContaining({ value: '$1.00' }), - }), + }) ) mockCursorPrice('2') // updates shared values @@ -175,7 +182,7 @@ describe(useLineChartPrice, () => { expect.objectContaining({ value: expect.objectContaining({ value: 2 }), formatted: expect.objectContaining({ value: '$2.00' }), - }), + }) ) }) }) @@ -192,7 +199,7 @@ describe(useLineChartPrice, () => { expect.objectContaining({ value: expect.objectContaining({ value: 1 }), shouldAnimate: expect.objectContaining({ value: true }), - }), + }) ) }) @@ -205,7 +212,7 @@ describe(useLineChartPrice, () => { expect.objectContaining({ value: expect.objectContaining({ value: 2 }), shouldAnimate: expect.objectContaining({ value: false }), - }), + }) ) }) }) @@ -260,7 +267,7 @@ describe(useLineChartRelativeChange, () => { expect.objectContaining({ value: expect.objectContaining({ value: 400 }), formatted: expect.objectContaining({ value: '400.00%' }), - }), + }) ) currentIndex.value = 2 @@ -272,7 +279,7 @@ describe(useLineChartRelativeChange, () => { expect.objectContaining({ value: expect.objectContaining({ value: 900 }), formatted: expect.objectContaining({ value: '900.00%' }), - }), + }) ) }) }) diff --git a/apps/mobile/src/components/PriceExplorer/usePriceHistory.test.ts b/apps/mobile/src/components/PriceExplorer/usePriceHistory.test.ts index 3d9347d4c95..173d629de2e 100644 --- a/apps/mobile/src/components/PriceExplorer/usePriceHistory.test.ts +++ b/apps/mobile/src/components/PriceExplorer/usePriceHistory.test.ts @@ -161,7 +161,12 @@ describe(useTokenPriceHistory, () => { const { resolvers } = queryResolvers({ tokenProjects: () => [ usdcTokenProject({ - priceHistory: [undefined, timestampedAmount({ value: 1 }), undefined, timestampedAmount({ value: 2 })], + priceHistory: [ + undefined, + timestampedAmount({ value: 1 }), + undefined, + timestampedAmount({ value: 2 }), + ], }), ], }) @@ -217,7 +222,10 @@ describe(useTokenPriceHistory, () => { describe('when duration is set to default value (day)', () => { it('returns correct price history', async () => { - const { result } = renderHookWithProviders(() => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), { resolvers }) + const { result } = renderHookWithProviders( + () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), + { resolvers } + ) await waitFor(() => { expect(result.current).toEqual( @@ -227,13 +235,16 @@ describe(useTokenPriceHistory, () => { spot: expect.anything(), }, selectedDuration: HistoryDuration.Day, - }), + }) ) }) }) it('returns correct spot price', async () => { - const { result } = renderHookWithProviders(() => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), { resolvers }) + const { result } = renderHookWithProviders( + () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), + { resolvers } + ) await waitFor(() => { expect(result.current.data?.spot).toEqual({ @@ -250,7 +261,7 @@ describe(useTokenPriceHistory, () => { it('returns correct price history', async () => { const { result } = renderHookWithProviders( () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1, jest.fn(), HistoryDuration.Year), - { resolvers }, + { resolvers } ) await waitFor(() => { @@ -261,7 +272,7 @@ describe(useTokenPriceHistory, () => { spot: expect.anything(), }, selectedDuration: HistoryDuration.Year, - }), + }) ) }) }) @@ -269,7 +280,7 @@ describe(useTokenPriceHistory, () => { it('returns correct spot price', async () => { const { result } = renderHookWithProviders( () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1, jest.fn(), HistoryDuration.Year), - { resolvers }, + { resolvers } ) await waitFor(() => { expect(result.current.data?.spot).toEqual({ @@ -285,9 +296,10 @@ describe(useTokenPriceHistory, () => { describe('when duration is changed', () => { it('re-fetches data', async () => { const onCompleted = jest.fn() - const { result } = renderHookWithProviders(() => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1, onCompleted), { - resolvers, - }) + const { result } = renderHookWithProviders( + () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1, onCompleted), + { resolvers } + ) await waitFor(() => { expect(result.current).toEqual( @@ -295,7 +307,7 @@ describe(useTokenPriceHistory, () => { loading: false, error: false, selectedDuration: HistoryDuration.Day, - }), + }) ) }) @@ -312,7 +324,7 @@ describe(useTokenPriceHistory, () => { loading: false, error: false, selectedDuration: HistoryDuration.Week, - }), + }) ) }) @@ -320,7 +332,10 @@ describe(useTokenPriceHistory, () => { }) it('returns new price history and spot price', async () => { - const { result } = renderHookWithProviders(() => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), { resolvers }) + const { result } = renderHookWithProviders( + () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), + { resolvers } + ) await waitFor(() => { expect(result.current.data).toEqual({ @@ -361,9 +376,10 @@ describe(useTokenPriceHistory, () => { throw new Error('error') }, }) - const { result } = renderHookWithProviders(() => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), { - resolvers: errorResolvers, - }) + const { result } = renderHookWithProviders( + () => useTokenPriceHistory(SAMPLE_CURRENCY_ID_1), + { resolvers: errorResolvers } + ) await waitFor(() => { expect(result.current.loading).toBe(false) diff --git a/apps/mobile/src/components/PriceExplorer/usePriceHistory.ts b/apps/mobile/src/components/PriceExplorer/usePriceHistory.ts index 601a89000de..94e7474609a 100644 --- a/apps/mobile/src/components/PriceExplorer/usePriceHistory.ts +++ b/apps/mobile/src/components/PriceExplorer/usePriceHistory.ts @@ -9,8 +9,8 @@ import { useTokenPriceHistoryQuery, } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { GqlResult } from 'uniswap/src/data/types' -import { currencyIdToContractInput } from 'uniswap/src/features/dataApi/utils' import { isError, isNonPollingRequestInFlight } from 'wallet/src/data/utils' +import { currencyIdToContractInput } from 'wallet/src/features/dataApi/utils' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' export type TokenSpotData = { diff --git a/apps/mobile/src/components/QRCodeScanner/QRCodeScanner.tsx b/apps/mobile/src/components/QRCodeScanner/QRCodeScanner.tsx index b132c5c7939..b548fd02e67 100644 --- a/apps/mobile/src/components/QRCodeScanner/QRCodeScanner.tsx +++ b/apps/mobile/src/components/QRCodeScanner/QRCodeScanner.tsx @@ -13,9 +13,9 @@ import { Global, Photo } from 'ui/src/components/icons' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { useDeviceDimensions } from 'ui/src/hooks/useDeviceDimensions' import { iconSizes, spacing } from 'ui/src/theme' -import PasteButton from 'uniswap/src/components/buttons/PasteButton' import { Sentry } from 'utilities/src/logger/Sentry' import { DevelopmentOnly } from 'wallet/src/components/DevelopmentOnly/DevelopmentOnly' +import PasteButton from 'wallet/src/components/buttons/PasteButton' import { openSettings } from 'wallet/src/utils/linking' type QRCodeScannerProps = { diff --git a/apps/mobile/src/components/RecipientSelect/RecipientScanModal.tsx b/apps/mobile/src/components/RecipientSelect/RecipientScanModal.tsx index ad42e86c55f..9607054f176 100644 --- a/apps/mobile/src/components/RecipientSelect/RecipientScanModal.tsx +++ b/apps/mobile/src/components/RecipientSelect/RecipientScanModal.tsx @@ -4,7 +4,7 @@ import { Alert } from 'react-native' import 'react-native-reanimated' import { useAppSelector } from 'src/app/hooks' import { QRCodeScanner } from 'src/components/QRCodeScanner/QRCodeScanner' -import { getSupportedURI, URIType } from 'src/components/Requests/ScanSheet/util' +import { getSupportedURI, URIType } from 'src/components/WalletConnect/ScanSheet/util' import { Flex, HapticFeedback, Text, TouchableArea, useIsDarkMode, useSporeColors } from 'ui/src' import Scan from 'ui/src/assets/icons/receive.svg' import ScanQRIcon from 'ui/src/assets/icons/scan.svg' diff --git a/apps/mobile/src/components/RecipientSelect/RecipientSelect.tsx b/apps/mobile/src/components/RecipientSelect/RecipientSelect.tsx index eb1c26b97cc..14b6a26a772 100644 --- a/apps/mobile/src/components/RecipientSelect/RecipientSelect.tsx +++ b/apps/mobile/src/components/RecipientSelect/RecipientSelect.tsx @@ -75,7 +75,6 @@ export function _RecipientSelect({ value={pattern ?? ''} onBack={recipient ? onHideRecipientSelector : undefined} onChangeText={setPattern} - onDismiss={() => Keyboard.dismiss()} /> {!sections.length ? ( diff --git a/apps/mobile/src/components/RecipientSelect/hooks.test.ts b/apps/mobile/src/components/RecipientSelect/hooks.test.ts index 0157de8eeb3..6221a1b8e61 100644 --- a/apps/mobile/src/components/RecipientSelect/hooks.test.ts +++ b/apps/mobile/src/components/RecipientSelect/hooks.test.ts @@ -140,8 +140,10 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ - sections: expect.not.arrayContaining([expect.objectContaining({ title: 'Search results' })]), - }), + sections: expect.not.arrayContaining([ + expect.objectContaining({ title: 'Search results' }), + ]), + }) ) }) @@ -168,7 +170,7 @@ describe(useRecipients, () => { data: expect.objectContaining({ address: SAMPLE_SEED_ADDRESS_1 }), key: SAMPLE_SEED_ADDRESS_1, }, - ]), + ]) ) }) }) @@ -183,7 +185,7 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ sections: expect.not.arrayContaining([expect.objectContaining({ title: 'Recent' })]), - }), + }) ) }) @@ -212,7 +214,7 @@ describe(useRecipients, () => { ], }, ]), - }), + }) ) }) @@ -221,9 +223,18 @@ describe(useRecipients, () => { preloadedState: getPreloadedState({ transactions: { [activeAccount.address]: { - [UniverseChainId.Base as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], - [UniverseChainId.Mainnet as WalletChainId]: [sendTxDetailsConfirmed, sendTxDetailsFailed], - [UniverseChainId.Bnb as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], + [UniverseChainId.Base as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], + [UniverseChainId.Mainnet as WalletChainId]: [ + sendTxDetailsConfirmed, + sendTxDetailsFailed, + ], + [UniverseChainId.Bnb as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], }, }, }), @@ -254,7 +265,11 @@ describe(useRecipients, () => { preloadedState: getPreloadedState({ transactions: { [activeAccount.address]: { - [sendTxDetailsPending.chainId]: [sendTxDetailsPending, sendTxDetailsFailed, sendTxDetailsConfirmed], + [sendTxDetailsPending.chainId]: [ + sendTxDetailsPending, + sendTxDetailsFailed, + sendTxDetailsConfirmed, + ], }, }, }), @@ -264,7 +279,7 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ sections: expect.arrayContaining([recentRecipientsSectionResult]), - }), + }) ) }) @@ -273,9 +288,18 @@ describe(useRecipients, () => { preloadedState: getPreloadedState({ transactions: { [activeAccount.address]: { - [UniverseChainId.Base as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], - [UniverseChainId.Mainnet as WalletChainId]: [sendTxDetailsConfirmed, sendTxDetailsFailed], - [UniverseChainId.Bnb as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], + [UniverseChainId.Base as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], + [UniverseChainId.Mainnet as WalletChainId]: [ + sendTxDetailsConfirmed, + sendTxDetailsFailed, + ], + [UniverseChainId.Bnb as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], }, }, }), @@ -295,8 +319,10 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ - sections: expect.not.arrayContaining([expect.objectContaining({ title: 'Your wallets' })]), - }), + sections: expect.not.arrayContaining([ + expect.objectContaining({ title: 'Your wallets' }), + ]), + }) ) }) @@ -309,7 +335,7 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ sections: expect.arrayContaining([inactiveWalletsSectionResult]), - }), + }) ) }) @@ -322,7 +348,7 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ searchableRecipientOptions: [{ data: inactiveAccount, key: inactiveAccount.address }], - }), + }) ) }) }) @@ -336,8 +362,10 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ - sections: expect.not.arrayContaining([expect.objectContaining({ title: 'Favorite wallets' })]), - }), + sections: expect.not.arrayContaining([ + expect.objectContaining({ title: 'Favorite wallets' }), + ]), + }) ) }) @@ -352,7 +380,7 @@ describe(useRecipients, () => { expect(result.current).toEqual( expect.objectContaining({ sections: expect.arrayContaining([favoriteWalletsSectionResult]), - }), + }) ) }) }) @@ -365,9 +393,18 @@ describe(useRecipients, () => { hasInactiveAccounts: true, transactions: { [activeAccount.address]: { - [UniverseChainId.Base as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], - [UniverseChainId.Mainnet as WalletChainId]: [sendTxDetailsConfirmed, sendTxDetailsFailed], - [UniverseChainId.Bnb as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], + [UniverseChainId.Base as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], + [UniverseChainId.Mainnet as WalletChainId]: [ + sendTxDetailsConfirmed, + sendTxDetailsFailed, + ], + [UniverseChainId.Bnb as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], }, }, }), @@ -383,7 +420,7 @@ describe(useRecipients, () => { inactiveWalletsSectionResult, favoriteWalletsSectionResult, ]), - }), + }) ) }) }) @@ -395,9 +432,18 @@ describe(useRecipients, () => { hasInactiveAccounts: true, transactions: { [activeAccount.address]: { - [UniverseChainId.Base as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], - [UniverseChainId.Mainnet as WalletChainId]: [sendTxDetailsConfirmed, sendTxDetailsFailed], - [UniverseChainId.Bnb as WalletChainId]: [sendTxDetailsPending, sendTxDetailsConfirmed], + [UniverseChainId.Base as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], + [UniverseChainId.Mainnet as WalletChainId]: [ + sendTxDetailsConfirmed, + sendTxDetailsFailed, + ], + [UniverseChainId.Bnb as WalletChainId]: [ + sendTxDetailsPending, + sendTxDetailsConfirmed, + ], }, }, }), diff --git a/apps/mobile/src/components/RemoveWallet/RemoveWalletModal.tsx b/apps/mobile/src/components/RemoveWallet/RemoveWalletModal.tsx index 896dc9e9af5..758c391223c 100644 --- a/apps/mobile/src/components/RemoveWallet/RemoveWalletModal.tsx +++ b/apps/mobile/src/components/RemoveWallet/RemoveWalletModal.tsx @@ -1,8 +1,7 @@ import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { useAnimatedStyle, withTiming } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { AssociatedAccountsList } from 'src/components/RemoveWallet/AssociatedAccountsList' import { RemoveLastMnemonicWalletFooter } from 'src/components/RemoveWallet/RemoveLastMnemonicWalletFooter' @@ -30,7 +29,7 @@ import { setFinishedOnboarding } from 'wallet/src/features/wallet/slice' export function RemoveWalletModal(): JSX.Element | null { const { t } = useTranslation() const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const addressToAccount = useAccounts() const associatedAccounts = useAppSelector(selectSignerMnemonicAccounts) diff --git a/apps/mobile/src/components/RestoreWalletModal/RestoreWalletModal.tsx b/apps/mobile/src/components/RestoreWalletModal/RestoreWalletModal.tsx index 6445b7550db..82051d7da9d 100644 --- a/apps/mobile/src/components/RestoreWalletModal/RestoreWalletModal.tsx +++ b/apps/mobile/src/components/RestoreWalletModal/RestoreWalletModal.tsx @@ -1,6 +1,6 @@ import React from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { closeAllModals, closeModal } from 'src/features/modals/modalSlice' import { Button, Flex, Text, useSporeColors } from 'ui/src' @@ -15,7 +15,7 @@ import { MobileScreens, OnboardingScreens } from 'uniswap/src/types/screens/mobi export function RestoreWalletModal(): JSX.Element | null { const { t } = useTranslation() const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const onDismiss = (): void => { dispatch(closeModal({ name: ModalName.RestoreWallet })) diff --git a/apps/mobile/src/components/Settings/SettingsRow.tsx b/apps/mobile/src/components/Settings/SettingsRow.tsx index 01d7dbf911b..b3895b5e547 100644 --- a/apps/mobile/src/components/Settings/SettingsRow.tsx +++ b/apps/mobile/src/components/Settings/SettingsRow.tsx @@ -1,7 +1,6 @@ import { NavigatorScreenParams } from '@react-navigation/core' import React from 'react' import { ValueOf } from 'react-native-gesture-handler/lib/typescript/typeUtils' -import { useDispatch } from 'react-redux' import { OnboardingStackNavigationProp, OnboardingStackParamList, @@ -14,9 +13,10 @@ import { RotatableChevron } from 'ui/src/components/icons' import { iconSizes } from 'ui/src/theme' import { ModalName } from 'uniswap/src/features/telemetry/constants' import { MobileScreens } from 'uniswap/src/types/screens/mobile' -import { openUri } from 'uniswap/src/utils/linking' import { Switch } from 'wallet/src/components/buttons/Switch' import { Arrow } from 'wallet/src/components/icons/Arrow' +import { useAppDispatch } from 'wallet/src/state' +import { openUri } from 'wallet/src/utils/linking' export interface SettingsSection { subTitle: string @@ -67,7 +67,7 @@ export function SettingsRow({ navigation, }: SettingsRowProps): JSX.Element { const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const handleRow = async (): Promise => { if (onToggle) { diff --git a/apps/mobile/src/components/TokenBalanceList/TokenBalanceItemContextMenu.tsx b/apps/mobile/src/components/TokenBalanceList/TokenBalanceItemContextMenu.tsx index 09b3cc3d30c..f19d8be83bd 100644 --- a/apps/mobile/src/components/TokenBalanceList/TokenBalanceItemContextMenu.tsx +++ b/apps/mobile/src/components/TokenBalanceList/TokenBalanceItemContextMenu.tsx @@ -1,7 +1,6 @@ import React, { memo, useMemo } from 'react' import ContextMenu from 'react-native-context-menu-view' import { borderRadii } from 'ui/src/theme' -import { SafetyLevel } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { PortfolioBalance } from 'uniswap/src/features/dataApi/types' import { useTokenContextMenu } from 'wallet/src/features/portfolio/useTokenContextMenu' @@ -14,7 +13,6 @@ export const TokenBalanceItemContextMenu = memo(function _TokenBalanceItem({ }) { const { menuActions, onContextMenuPress } = useTokenContextMenu({ currencyId: portfolioBalance.currencyInfo.currencyId, - isBlocked: portfolioBalance.currencyInfo.safetyLevel === SafetyLevel.Blocked, portfolioBalance, }) diff --git a/apps/mobile/src/components/TokenBalanceList/TokenBalanceList.tsx b/apps/mobile/src/components/TokenBalanceList/TokenBalanceList.tsx index 09eb1ea3e1f..6dba5b58aa6 100644 --- a/apps/mobile/src/components/TokenBalanceList/TokenBalanceList.tsx +++ b/apps/mobile/src/components/TokenBalanceList/TokenBalanceList.tsx @@ -61,7 +61,6 @@ export const TokenBalanceListInner = forwardRef, T refreshing, headerHeight = 0, onRefresh, - testID, }, ref, ) { @@ -125,9 +124,7 @@ export const TokenBalanceListInner = forwardRef, T // In order to avoid unnecessary re-renders of the entire FlatList, the `renderItem` function should never change. // That's why we use a context provider so that each row can read from there instead of passing down new props every time the data changes. const renderItem = useCallback( - ({ item, index }: { item: TokenBalanceListRow; index: number }): JSX.Element => ( - - ), + ({ item }: { item: TokenBalanceListRow }): JSX.Element => , [], ) @@ -212,7 +209,6 @@ export const TokenBalanceListInner = forwardRef, T renderItem={renderItem} scrollEventThrottle={containerProps?.scrollEventThrottle ?? TAB_VIEW_SCROLL_THROTTLE} showsVerticalScrollIndicator={false} - testID={testID} updateCellsBatchingPeriod={10} windowSize={isFocused ? 10 : 3} onContentSizeChange={onContentSizeChange} @@ -226,13 +222,7 @@ export const TokenBalanceListInner = forwardRef, T }, ) -const TokenBalanceItemRow = memo(function TokenBalanceItemRow({ - item, - index, -}: { - item: TokenBalanceListRow - index?: number -}) { +const TokenBalanceItemRow = memo(function TokenBalanceItemRow({ item }: { item: TokenBalanceListRow }) { const { balancesById, hiddenTokensCount, @@ -272,7 +262,6 @@ const TokenBalanceItemRow = memo(function TokenBalanceItemRow({ => { diff --git a/apps/mobile/src/components/TokenDetails/TokenBalances.tsx b/apps/mobile/src/components/TokenDetails/TokenBalances.tsx index 91bbe252934..e07f223e637 100644 --- a/apps/mobile/src/components/TokenDetails/TokenBalances.tsx +++ b/apps/mobile/src/components/TokenDetails/TokenBalances.tsx @@ -5,13 +5,13 @@ import { useTokenDetailsNavigation } from 'src/components/TokenDetails/hooks' import { Flex, Separator, Text, TouchableArea, useSporeColors } from 'ui/src' import { iconSizes } from 'ui/src/theme' import { TokenLogo } from 'uniswap/src/components/CurrencyLogo/TokenLogo' -import { InlineNetworkPill } from 'uniswap/src/components/network/NetworkPill' import { PortfolioBalance } from 'uniswap/src/features/dataApi/types' import Trace from 'uniswap/src/features/telemetry/Trace' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { CurrencyId } from 'uniswap/src/types/currency' import { getSymbolDisplayText } from 'uniswap/src/utils/currency' import { NumberType } from 'utilities/src/format/types' +import { InlineNetworkPill } from 'wallet/src/components/network/NetworkPill' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' import { AccountType } from 'wallet/src/features/wallet/accounts/types' import { useActiveAccount, useDisplayName } from 'wallet/src/features/wallet/hooks' diff --git a/apps/mobile/src/components/TokenDetails/TokenDetailsActionButtons.tsx b/apps/mobile/src/components/TokenDetails/TokenDetailsActionButtons.tsx index 862fc21a98d..fc9aa3cb5ec 100644 --- a/apps/mobile/src/components/TokenDetails/TokenDetailsActionButtons.tsx +++ b/apps/mobile/src/components/TokenDetails/TokenDetailsActionButtons.tsx @@ -4,7 +4,7 @@ import { Button, Flex, useSporeColors } from 'ui/src' import { opacify, validColor } from 'ui/src/theme' import Trace from 'uniswap/src/features/telemetry/Trace' import { ElementName, ElementNameType, SectionName } from 'uniswap/src/features/telemetry/constants' -import { getContrastPassingTextColor } from 'uniswap/src/utils/colors' +import { getContrastPassingTextColor } from 'wallet/src/utils/colors' function CTAButton({ title, diff --git a/apps/mobile/src/components/TokenDetails/hooks.test.ts b/apps/mobile/src/components/TokenDetails/hooks.test.ts index e585980d644..0360234c757 100644 --- a/apps/mobile/src/components/TokenDetails/hooks.test.ts +++ b/apps/mobile/src/components/TokenDetails/hooks.test.ts @@ -1,8 +1,8 @@ import { useCrossChainBalances, useTokenDetailsNavigation } from 'src/components/TokenDetails/hooks' import { preloadedMobileState } from 'src/test/fixtures' import { act, renderHook, waitFor } from 'src/test/test-utils' -import { currencyIdToContractInput } from 'uniswap/src/features/dataApi/utils' import { MobileScreens } from 'uniswap/src/types/screens/mobile' +import { currencyIdToContractInput } from 'wallet/src/features/dataApi/utils' import { SAMPLE_CURRENCY_ID_1, portfolio, @@ -41,7 +41,7 @@ describe(useCrossChainBalances, () => { expect(result.current).toEqual( expect.objectContaining({ currentChainBalance: null, - }), + }) ) }) @@ -51,16 +51,19 @@ describe(useCrossChainBalances, () => { const { resolvers } = queryResolvers({ portfolios: () => [Portfolio], }) - const { result } = renderHook(() => useCrossChainBalances(currentChainBalance.currencyInfo.currencyId, null), { - preloadedState: preloadedMobileState(), - resolvers, - }) + const { result } = renderHook( + () => useCrossChainBalances(currentChainBalance.currencyInfo.currencyId, null), + { + preloadedState: preloadedMobileState(), + resolvers, + } + ) await waitFor(() => { expect(result.current).toEqual( expect.objectContaining({ currentChainBalance, - }), + }) ) }) }) @@ -77,12 +80,15 @@ describe(useCrossChainBalances, () => { expect(result.current).toEqual( expect.objectContaining({ otherChainBalances: null, - }), + }) ) }) it('does not include current chain balance in other chain balances', async () => { - const tokenBalances = [tokenBalance({ token: usdcBaseToken() }), tokenBalance({ token: usdcArbitrumToken() })] + const tokenBalances = [ + tokenBalance({ token: usdcBaseToken() }), + tokenBalance({ token: usdcArbitrumToken() }), + ] const bridgeInfo = tokenBalances.map((balance) => ({ chain: balance.token.chain, @@ -101,11 +107,13 @@ describe(useCrossChainBalances, () => { { preloadedState: preloadedMobileState(), resolvers, - }, + } ) await waitFor(() => { - expect(result.current).toEqual(expect.objectContaining({ currentChainBalance, otherChainBalances })) + expect(result.current).toEqual( + expect.objectContaining({ currentChainBalance, otherChainBalances }) + ) }) }) }) diff --git a/apps/mobile/src/components/TokenDetails/hooks.ts b/apps/mobile/src/components/TokenDetails/hooks.ts index 1e5775b0a1e..17347681a22 100644 --- a/apps/mobile/src/components/TokenDetails/hooks.ts +++ b/apps/mobile/src/components/TokenDetails/hooks.ts @@ -7,9 +7,9 @@ import { } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' import { PortfolioBalance } from 'uniswap/src/features/dataApi/types' -import { currencyIdToContractInput } from 'uniswap/src/features/dataApi/utils' import { CurrencyId } from 'uniswap/src/types/currency' import { MobileScreens } from 'uniswap/src/types/screens/mobile' +import { currencyIdToContractInput } from 'wallet/src/features/dataApi/utils' import { buildCurrencyId, buildNativeCurrencyId, currencyIdToChain } from 'wallet/src/utils/currencyId' /** Helper hook to retrieve balances across chains for a given currency, for the active account. */ diff --git a/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx b/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx index 092fe8f62e0..b7f196bbb98 100644 --- a/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx +++ b/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx @@ -1,17 +1,14 @@ import { BottomSheetFlatList } from '@gorhom/bottom-sheet' import React, { memo, useCallback, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' -import { Keyboard, ListRenderItemInfo } from 'react-native' +import { ListRenderItemInfo } from 'react-native' import { Flex, Inset, Loader } from 'ui/src' import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard' -import { TokenOptionItem } from 'uniswap/src/components/TokenSelector/TokenOptionItem' -import { useBottomSheetFocusHook } from 'uniswap/src/components/modals/hooks' import { FiatOnRampCurrency } from 'uniswap/src/features/fiatOnRamp/types' import { UniverseChainId } from 'uniswap/src/types/chains' import { CurrencyId } from 'uniswap/src/types/currency' -import { NumberType } from 'utilities/src/format/types' -import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' -import { useTokenWarningDismissed } from 'wallet/src/features/tokens/safetyHooks' +import { TokenOptionItem } from 'wallet/src/components/TokenSelector/TokenOptionItem' +import { useBottomSheetFocusHook } from 'wallet/src/components/modals/hooks' interface Props { onSelectCurrency: (currency: FiatOnRampCurrency) => void @@ -37,8 +34,6 @@ function TokenOptionItemWrapper({ [currencyInfo], ) const onPress = useCallback(() => onSelectCurrency?.(currency), [currency, onSelectCurrency]) - const { tokenWarningDismissed, dismissWarningCallback } = useTokenWarningDismissed(currencyInfo?.currencyId) - const { convertFiatAmountFormatted, formatNumberOrString } = useLocalizationContext() if (!option) { return null @@ -46,15 +41,9 @@ function TokenOptionItemWrapper({ return ( Keyboard.dismiss()} onPress={onPress} /> ) diff --git a/apps/mobile/src/components/Requests/ConnectedDapps/ConnectedDappsList.tsx b/apps/mobile/src/components/WalletConnect/ConnectedDapps/ConnectedDappsList.tsx similarity index 93% rename from apps/mobile/src/components/Requests/ConnectedDapps/ConnectedDappsList.tsx rename to apps/mobile/src/components/WalletConnect/ConnectedDapps/ConnectedDappsList.tsx index c87a625b624..d0259062591 100644 --- a/apps/mobile/src/components/Requests/ConnectedDapps/ConnectedDappsList.tsx +++ b/apps/mobile/src/components/WalletConnect/ConnectedDapps/ConnectedDappsList.tsx @@ -2,9 +2,9 @@ import React, { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { FlatList, StyleSheet } from 'react-native' import { FadeIn, FadeOut } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { DappConnectedNetworkModal } from 'src/components/Requests/ConnectedDapps/DappConnectedNetworksModal' -import { DappConnectionItem } from 'src/components/Requests/ConnectedDapps/DappConnectionItem' +import { useAppDispatch } from 'src/app/hooks' +import { DappConnectedNetworkModal } from 'src/components/WalletConnect/ConnectedDapps/DappConnectedNetworksModal' +import { DappConnectionItem } from 'src/components/WalletConnect/ConnectedDapps/DappConnectionItem' import { BackButton } from 'src/components/buttons/BackButton' import { openModal } from 'src/features/modals/modalSlice' import { WalletConnectSession, removePendingSession } from 'src/features/walletConnect/walletConnectSlice' @@ -22,7 +22,7 @@ type ConnectedDappsProps = { } export function ConnectedDappsList({ backButton, sessions }: ConnectedDappsProps): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const { fullHeight } = useDeviceDimensions() const [isEditing, setIsEditing] = useState(false) diff --git a/apps/mobile/src/components/Requests/ConnectedDapps/DappConnectedNetworksModal.tsx b/apps/mobile/src/components/WalletConnect/ConnectedDapps/DappConnectedNetworksModal.tsx similarity index 96% rename from apps/mobile/src/components/Requests/ConnectedDapps/DappConnectedNetworksModal.tsx rename to apps/mobile/src/components/WalletConnect/ConnectedDapps/DappConnectedNetworksModal.tsx index bce5adb51ec..0409dd49391 100644 --- a/apps/mobile/src/components/Requests/ConnectedDapps/DappConnectedNetworksModal.tsx +++ b/apps/mobile/src/components/WalletConnect/ConnectedDapps/DappConnectedNetworksModal.tsx @@ -2,8 +2,8 @@ import { getSdkError } from '@walletconnect/utils' import React from 'react' import { Trans, useTranslation } from 'react-i18next' import 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { DappHeaderIcon } from 'src/components/Requests/DappHeaderIcon' +import { useAppDispatch } from 'src/app/hooks' +import { DappHeaderIcon } from 'src/components/WalletConnect/DappHeaderIcon' import { wcWeb3Wallet } from 'src/features/walletConnect/saga' import { WalletConnectSession, removeSession } from 'src/features/walletConnect/walletConnectSlice' import { Button, Flex, Text } from 'ui/src' @@ -26,7 +26,7 @@ interface DappConnectedNetworkModalProps { export function DappConnectedNetworkModal({ session, onClose }: DappConnectedNetworkModalProps): JSX.Element { const { t } = useTranslation() const address = useActiveAccountAddressWithThrow() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { dapp, id } = session const onDisconnect = async (): Promise => { diff --git a/apps/mobile/src/components/Requests/ConnectedDapps/DappConnectionItem.tsx b/apps/mobile/src/components/WalletConnect/ConnectedDapps/DappConnectionItem.tsx similarity index 95% rename from apps/mobile/src/components/Requests/ConnectedDapps/DappConnectionItem.tsx rename to apps/mobile/src/components/WalletConnect/ConnectedDapps/DappConnectionItem.tsx index 70fac046a8a..ba21b45ba84 100644 --- a/apps/mobile/src/components/Requests/ConnectedDapps/DappConnectionItem.tsx +++ b/apps/mobile/src/components/WalletConnect/ConnectedDapps/DappConnectionItem.tsx @@ -5,18 +5,18 @@ import { NativeSyntheticEvent, StyleSheet } from 'react-native' import ContextMenu, { ContextMenuOnPressNativeEvent } from 'react-native-context-menu-view' import 'react-native-reanimated' import { FadeIn, FadeOut } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { DappHeaderIcon } from 'src/components/Requests/DappHeaderIcon' +import { useAppDispatch } from 'src/app/hooks' +import { DappHeaderIcon } from 'src/components/WalletConnect/DappHeaderIcon' import { wcWeb3Wallet } from 'src/features/walletConnect/saga' import { WalletConnectSession, removeSession } from 'src/features/walletConnect/walletConnectSlice' import { disableOnPress } from 'src/utils/disableOnPress' import { AnimatedTouchableArea, Flex, ImpactFeedbackStyle, Text, TouchableArea } from 'ui/src' import { iconSizes, spacing } from 'ui/src/theme' -import { NetworkLogos } from 'uniswap/src/components/network/NetworkLogos' import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { WalletConnectEvent } from 'uniswap/src/types/walletConnect' import { logger } from 'utilities/src/logger/logger' import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { NetworkLogos } from 'wallet/src/components/network/NetworkLogos' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType } from 'wallet/src/features/notifications/types' import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' @@ -32,7 +32,7 @@ export function DappConnectionItem({ }): JSX.Element { const { t } = useTranslation() const { dapp } = session - const dispatch = useDispatch() + const dispatch = useAppDispatch() const address = useActiveAccountAddressWithThrow() const onDisconnect = async (): Promise => { @@ -134,7 +134,6 @@ export function DappConnectionItem({ borderRadius="$roundedFull" chains={session.chains} p="$spacing8" - size={iconSizes.icon16} /> diff --git a/apps/mobile/src/components/Requests/DappHeaderIcon.tsx b/apps/mobile/src/components/WalletConnect/DappHeaderIcon.tsx similarity index 100% rename from apps/mobile/src/components/Requests/DappHeaderIcon.tsx rename to apps/mobile/src/components/WalletConnect/DappHeaderIcon.tsx diff --git a/apps/mobile/src/components/Requests/ModalWithOverlay/ModalWithOverlay.tsx b/apps/mobile/src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay.tsx similarity index 98% rename from apps/mobile/src/components/Requests/ModalWithOverlay/ModalWithOverlay.tsx rename to apps/mobile/src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay.tsx index b0b5550e94e..6be33be4328 100644 --- a/apps/mobile/src/components/Requests/ModalWithOverlay/ModalWithOverlay.tsx +++ b/apps/mobile/src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay.tsx @@ -12,7 +12,7 @@ import { ViewStyle, } from 'react-native' import { AnimatedStyle, useDerivedValue } from 'react-native-reanimated' -import { ScrollDownOverlay } from 'src/components/Requests/ModalWithOverlay/ScrollDownOverlay' +import { ScrollDownOverlay } from 'src/components/WalletConnect/ModalWithOverlay/ScrollDownOverlay' import { Button, Flex, useDeviceInsets } from 'ui/src' import { spacing } from 'ui/src/theme' import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' diff --git a/apps/mobile/src/components/Requests/ModalWithOverlay/ScrollDownOverlay.tsx b/apps/mobile/src/components/WalletConnect/ModalWithOverlay/ScrollDownOverlay.tsx similarity index 100% rename from apps/mobile/src/components/Requests/ModalWithOverlay/ScrollDownOverlay.tsx rename to apps/mobile/src/components/WalletConnect/ModalWithOverlay/ScrollDownOverlay.tsx diff --git a/apps/mobile/src/components/Requests/RequestModal/ClientDetails.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/ClientDetails.tsx similarity index 89% rename from apps/mobile/src/components/Requests/RequestModal/ClientDetails.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/ClientDetails.tsx index 156a8c25602..61a947265cc 100644 --- a/apps/mobile/src/components/Requests/RequestModal/ClientDetails.tsx +++ b/apps/mobile/src/components/WalletConnect/RequestModal/ClientDetails.tsx @@ -1,7 +1,7 @@ import React from 'react' import { LinkButton } from 'src/components/buttons/LinkButton' -import { DappHeaderIcon } from 'src/components/Requests/DappHeaderIcon' -import { HeaderText } from 'src/components/Requests/RequestModal/HeaderText' +import { DappHeaderIcon } from 'src/components/WalletConnect/DappHeaderIcon' +import { HeaderText } from 'src/components/WalletConnect/RequestModal/HeaderText' import { WalletConnectRequest } from 'src/features/walletConnect/walletConnectSlice' import { Flex, useSporeColors } from 'ui/src' import { iconSizes } from 'ui/src/theme' diff --git a/apps/mobile/src/components/Requests/RequestModal/HeaderText.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/HeaderText.tsx similarity index 100% rename from apps/mobile/src/components/Requests/RequestModal/HeaderText.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/HeaderText.tsx diff --git a/apps/mobile/src/components/Requests/RequestModal/KidSuperCheckinModal.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/KidSuperCheckinModal.tsx similarity index 89% rename from apps/mobile/src/components/Requests/RequestModal/KidSuperCheckinModal.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/KidSuperCheckinModal.tsx index 5db87b36a44..0e4b2ccef7d 100644 --- a/apps/mobile/src/components/Requests/RequestModal/KidSuperCheckinModal.tsx +++ b/apps/mobile/src/components/WalletConnect/RequestModal/KidSuperCheckinModal.tsx @@ -1,9 +1,9 @@ import { useBottomSheetInternal } from '@gorhom/bottom-sheet' import { useTranslation } from 'react-i18next' import Animated, { useAnimatedStyle } from 'react-native-reanimated' -import { ModalWithOverlay } from 'src/components/Requests/ModalWithOverlay/ModalWithOverlay' -import { RequestDetailsContent } from 'src/components/Requests/RequestModal/RequestDetails' -import { useUwuLinkContractAllowlist } from 'src/components/Requests/ScanSheet/util' +import { ModalWithOverlay } from 'src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay' +import { RequestDetailsContent } from 'src/components/WalletConnect/RequestModal/RequestDetails' +import { useUwuLinkContractAllowlist } from 'src/components/WalletConnect/ScanSheet/util' import { SignRequest } from 'src/features/walletConnect/walletConnectSlice' import { Flex, useIsDarkMode } from 'ui/src' import { spacing } from 'ui/src/theme' diff --git a/apps/mobile/src/components/Requests/RequestModal/RequestDetails.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/RequestDetails.tsx similarity index 94% rename from apps/mobile/src/components/Requests/RequestModal/RequestDetails.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/RequestDetails.tsx index e1834f6d89d..e1bdbc3249e 100644 --- a/apps/mobile/src/components/Requests/RequestModal/RequestDetails.tsx +++ b/apps/mobile/src/components/WalletConnect/RequestModal/RequestDetails.tsx @@ -55,7 +55,7 @@ const MAX_TYPED_DATA_PARSE_DEPTH = 3 // eslint-disable-next-line @typescript-eslint/no-explicit-any const getParsedObjectDisplay = (chainId: number, obj: any, depth = 0): JSX.Element => { if (depth === MAX_TYPED_DATA_PARSE_DEPTH + 1) { - return ... + return ... } return ( @@ -66,7 +66,7 @@ const getParsedObjectDisplay = (chainId: number, obj: any, depth = 0): JSX.Eleme if (typeof childValue === 'object') { return ( - + {objKey} {getParsedObjectDisplay(chainId, childValue, depth + 1)} @@ -76,17 +76,15 @@ const getParsedObjectDisplay = (chainId: number, obj: any, depth = 0): JSX.Eleme if (typeof childValue === 'string') { return ( - - + + {objKey} {getValidAddress(childValue, true) ? ( - - - + ) : ( - + {childValue} )} diff --git a/apps/mobile/src/components/Requests/RequestModal/UwULinkErc20SendModal.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/UwULinkErc20SendModal.tsx similarity index 97% rename from apps/mobile/src/components/Requests/RequestModal/UwULinkErc20SendModal.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/UwULinkErc20SendModal.tsx index 1eefd9fdda1..d25fc089c3c 100644 --- a/apps/mobile/src/components/Requests/RequestModal/UwULinkErc20SendModal.tsx +++ b/apps/mobile/src/components/WalletConnect/RequestModal/UwULinkErc20SendModal.tsx @@ -2,7 +2,7 @@ import { useBottomSheetInternal } from '@gorhom/bottom-sheet' import { formatUnits } from 'ethers/lib/utils' import { useTranslation } from 'react-i18next' import Animated, { useAnimatedStyle } from 'react-native-reanimated' -import { ModalWithOverlay } from 'src/components/Requests/ModalWithOverlay/ModalWithOverlay' +import { ModalWithOverlay } from 'src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay' import { UwuLinkErc20Request } from 'src/features/walletConnect/walletConnectSlice' import { Flex, SpinningLoader, Text, useIsDarkMode } from 'ui/src' import { iconSizes, spacing } from 'ui/src/theme' @@ -10,7 +10,6 @@ import { TokenLogo } from 'uniswap/src/components/CurrencyLogo/TokenLogo' import { UNIVERSE_CHAIN_INFO } from 'uniswap/src/constants/chains' import { CurrencyInfo } from 'uniswap/src/features/dataApi/types' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { NativeCurrency } from 'uniswap/src/features/tokens/NativeCurrency' import { buildCurrencyId } from 'uniswap/src/utils/currencyId' import { NumberType } from 'utilities/src/format/types' import { NetworkFee } from 'wallet/src/components/network/NetworkFee' @@ -18,6 +17,7 @@ import { GasFeeResult } from 'wallet/src/features/gas/types' import { RemoteImage } from 'wallet/src/features/images/RemoteImage' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' import { useOnChainCurrencyBalance } from 'wallet/src/features/portfolio/api' +import { NativeCurrency } from 'wallet/src/features/tokens/NativeCurrency' import { useCurrencyInfo } from 'wallet/src/features/tokens/useCurrencyInfo' import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' diff --git a/apps/mobile/src/components/Requests/RequestModal/WalletConnectRequestModal.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/WalletConnectRequestModal.tsx similarity index 92% rename from apps/mobile/src/components/Requests/RequestModal/WalletConnectRequestModal.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/WalletConnectRequestModal.tsx index db9d610cf01..07a5ca086ab 100644 --- a/apps/mobile/src/components/Requests/RequestModal/WalletConnectRequestModal.tsx +++ b/apps/mobile/src/components/WalletConnect/RequestModal/WalletConnectRequestModal.tsx @@ -3,16 +3,15 @@ import { getSdkError } from '@walletconnect/utils' import { providers } from 'ethers' import React, { useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' -import { ModalWithOverlay } from 'src/components/Requests/ModalWithOverlay/ModalWithOverlay' -import { KidSuperCheckinModal } from 'src/components/Requests/RequestModal/KidSuperCheckinModal' -import { UwULinkErc20SendModal } from 'src/components/Requests/RequestModal/UwULinkErc20SendModal' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' +import { ModalWithOverlay } from 'src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay' +import { KidSuperCheckinModal } from 'src/components/WalletConnect/RequestModal/KidSuperCheckinModal' +import { UwULinkErc20SendModal } from 'src/components/WalletConnect/RequestModal/UwULinkErc20SendModal' import { WalletConnectRequestModalContent, methodCostsGas, -} from 'src/components/Requests/RequestModal/WalletConnectRequestModalContent' -import { useHasSufficientFunds } from 'src/components/Requests/RequestModal/hooks' +} from 'src/components/WalletConnect/RequestModal/WalletConnectRequestModalContent' +import { useHasSufficientFunds } from 'src/components/WalletConnect/RequestModal/hooks' import { useBiometricAppSettings, useBiometricPrompt } from 'src/features/biometrics/hooks' import { returnToPreviousApp } from 'src/features/walletConnect/WalletConnect' import { wcWeb3Wallet } from 'src/features/walletConnect/saga' @@ -99,7 +98,7 @@ export function WalletConnectRequestModal({ onClose, request }: Props): JSX.Elem } const confirmEnabled = checkConfirmEnabled() - const dispatch = useDispatch() + const dispatch = useAppDispatch() /** * TODO: [MOB-239] implement this behavior in a less janky way. Ideally if we can distinguish between `onClose` being called programmatically and `onClose` as a results of a user dismissing the modal then we can determine what this value should be without this class variable. * Indicates that the modal can reject the request when the modal happens. This will be false when the modal closes as a result of the user explicitly confirming or rejecting a request and true otherwise. @@ -137,14 +136,11 @@ export function WalletConnectRequestModal({ onClose, request }: Props): JSX.Elem } const onConfirm = async (): Promise => { - if (!confirmEnabled || !signerAccount) { + if (!confirmEnabled || !signerAccount || !tx) { return } if (request.type === EthMethod.EthSendTransaction || request.type === UwULinkMethod.Erc20Send) { - if (!tx) { - return - } const txnWithFormattedGasEstimates = formatExternalTxnWithGasEstimates({ transaction: tx, gasFeeResult: gasFee, diff --git a/apps/mobile/src/components/Requests/RequestModal/WalletConnectRequestModalContent.tsx b/apps/mobile/src/components/WalletConnect/RequestModal/WalletConnectRequestModalContent.tsx similarity index 95% rename from apps/mobile/src/components/Requests/RequestModal/WalletConnectRequestModalContent.tsx rename to apps/mobile/src/components/WalletConnect/RequestModal/WalletConnectRequestModalContent.tsx index 253121d298e..f1fd7ad1aa1 100644 --- a/apps/mobile/src/components/Requests/RequestModal/WalletConnectRequestModalContent.tsx +++ b/apps/mobile/src/components/WalletConnect/RequestModal/WalletConnectRequestModalContent.tsx @@ -4,8 +4,8 @@ import React, { PropsWithChildren } from 'react' import { useTranslation } from 'react-i18next' import { StyleProp, ViewStyle } from 'react-native' import Animated, { useAnimatedStyle } from 'react-native-reanimated' -import { ClientDetails, PermitInfo } from 'src/components/Requests/RequestModal/ClientDetails' -import { RequestDetails } from 'src/components/Requests/RequestModal/RequestDetails' +import { ClientDetails, PermitInfo } from 'src/components/WalletConnect/RequestModal/ClientDetails' +import { RequestDetails } from 'src/components/WalletConnect/RequestModal/RequestDetails' import { SignRequest, TransactionRequest, @@ -16,12 +16,12 @@ import { Flex, Text, useSporeColors } from 'ui/src' import AlertTriangle from 'ui/src/assets/icons/alert-triangle.svg' import { iconSizes } from 'ui/src/theme' import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard' -import { NativeCurrency } from 'uniswap/src/features/tokens/NativeCurrency' import { EthMethod, isPrimaryTypePermit } from 'uniswap/src/types/walletConnect' import { buildCurrencyId } from 'uniswap/src/utils/currencyId' import { logger } from 'utilities/src/logger/logger' import { useUSDValue } from 'wallet/src/features/gas/hooks' import { GasFeeResult } from 'wallet/src/features/gas/types' +import { NativeCurrency } from 'wallet/src/features/tokens/NativeCurrency' import { AddressFooter } from 'wallet/src/features/transactions/TransactionRequest/AddressFooter' import { NetworkFeeFooter } from 'wallet/src/features/transactions/TransactionRequest/NetworkFeeFooter' import { BlockedAddressWarning } from 'wallet/src/features/trm/BlockedAddressWarning' diff --git a/apps/mobile/src/components/Requests/RequestModal/hooks.ts b/apps/mobile/src/components/WalletConnect/RequestModal/hooks.ts similarity index 94% rename from apps/mobile/src/components/Requests/RequestModal/hooks.ts rename to apps/mobile/src/components/WalletConnect/RequestModal/hooks.ts index 2f8066028ac..f741c31bbde 100644 --- a/apps/mobile/src/components/Requests/RequestModal/hooks.ts +++ b/apps/mobile/src/components/WalletConnect/RequestModal/hooks.ts @@ -1,8 +1,8 @@ import { useMemo } from 'react' -import { NativeCurrency } from 'uniswap/src/features/tokens/NativeCurrency' import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' import { GasFeeResult } from 'wallet/src/features/gas/types' import { useOnChainNativeCurrencyBalance } from 'wallet/src/features/portfolio/api' +import { NativeCurrency } from 'wallet/src/features/tokens/NativeCurrency' import { hasSufficientFundsIncludingGas } from 'wallet/src/features/transactions/utils' import { ValueType, getCurrencyAmount } from 'wallet/src/utils/getCurrencyAmount' diff --git a/apps/mobile/src/components/Requests/ScanSheet/PendingConnectionModal.tsx b/apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionModal.tsx similarity index 95% rename from apps/mobile/src/components/Requests/ScanSheet/PendingConnectionModal.tsx rename to apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionModal.tsx index 551fa807775..480b0c61421 100644 --- a/apps/mobile/src/components/Requests/ScanSheet/PendingConnectionModal.tsx +++ b/apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionModal.tsx @@ -3,12 +3,11 @@ import { getSdkError } from '@walletconnect/utils' import React, { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import Animated, { useAnimatedStyle } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' -import { DappHeaderIcon } from 'src/components/Requests/DappHeaderIcon' -import { ModalWithOverlay } from 'src/components/Requests/ModalWithOverlay/ModalWithOverlay' -import { PendingConnectionSwitchAccountModal } from 'src/components/Requests/ScanSheet/PendingConnectionSwitchAccountModal' -import { truncateQueryParams } from 'src/components/Requests/ScanSheet/util' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' +import { DappHeaderIcon } from 'src/components/WalletConnect/DappHeaderIcon' +import { ModalWithOverlay } from 'src/components/WalletConnect/ModalWithOverlay/ModalWithOverlay' +import { PendingConnectionSwitchAccountModal } from 'src/components/WalletConnect/ScanSheet/PendingConnectionSwitchAccountModal' +import { truncateQueryParams } from 'src/components/WalletConnect/ScanSheet/util' import { LinkButton } from 'src/components/buttons/LinkButton' import { returnToPreviousApp } from 'src/features/walletConnect/WalletConnect' import { wcWeb3Wallet } from 'src/features/walletConnect/saga' @@ -22,7 +21,6 @@ import { import { Flex, Text, TouchableArea, useSporeColors } from 'ui/src' import { Check, RotatableChevron, X } from 'ui/src/components/icons' import { iconSizes } from 'ui/src/theme' -import { NetworkLogos } from 'uniswap/src/components/network/NetworkLogos' import { MobileEventName, ModalName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { TestID } from 'uniswap/src/test/fixtures/testIDs' @@ -30,6 +28,7 @@ import { WalletChainId } from 'uniswap/src/types/chains' import { WCEventType, WCRequestOutcome, WalletConnectEvent } from 'uniswap/src/types/walletConnect' import { formatDappURL } from 'utilities/src/format/urls' import { ONE_SECOND_MS } from 'utilities/src/time/time' +import { NetworkLogos } from 'wallet/src/components/network/NetworkLogos' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType } from 'wallet/src/features/notifications/types' import { AddressFooter } from 'wallet/src/features/transactions/TransactionRequest/AddressFooter' @@ -151,7 +150,7 @@ const SwitchAccountRow = ({ activeAddress, setModalState }: SwitchAccountProps): export const PendingConnectionModal = ({ pendingSession, onClose }: Props): JSX.Element => { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const activeAddress = useActiveAccountAddressWithThrow() const activeAccount = useActiveAccountWithThrow() const didOpenFromDeepLink = useAppSelector(selectDidOpenFromDeepLink) diff --git a/apps/mobile/src/components/Requests/ScanSheet/PendingConnectionSwitchAccountModal.tsx b/apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionSwitchAccountModal.tsx similarity index 93% rename from apps/mobile/src/components/Requests/ScanSheet/PendingConnectionSwitchAccountModal.tsx rename to apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionSwitchAccountModal.tsx index 85263b4621b..a46e395af34 100644 --- a/apps/mobile/src/components/Requests/ScanSheet/PendingConnectionSwitchAccountModal.tsx +++ b/apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionSwitchAccountModal.tsx @@ -1,6 +1,6 @@ import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' -import { SwitchAccountOption } from 'src/components/Requests/ScanSheet/SwitchAccountOption' +import { SwitchAccountOption } from 'src/components/WalletConnect/ScanSheet/SwitchAccountOption' import { Flex, Text } from 'ui/src' import { ActionSheetModal } from 'uniswap/src/components/modals/ActionSheetModal' import { ElementName, ModalName } from 'uniswap/src/features/telemetry/constants' diff --git a/apps/mobile/src/components/Requests/ScanSheet/PendingConnectionSwitchNetworkModal.tsx b/apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionSwitchNetworkModal.tsx similarity index 100% rename from apps/mobile/src/components/Requests/ScanSheet/PendingConnectionSwitchNetworkModal.tsx rename to apps/mobile/src/components/WalletConnect/ScanSheet/PendingConnectionSwitchNetworkModal.tsx diff --git a/apps/mobile/src/components/Requests/ScanSheet/SwitchAccountOption.tsx b/apps/mobile/src/components/WalletConnect/ScanSheet/SwitchAccountOption.tsx similarity index 100% rename from apps/mobile/src/components/Requests/ScanSheet/SwitchAccountOption.tsx rename to apps/mobile/src/components/WalletConnect/ScanSheet/SwitchAccountOption.tsx diff --git a/apps/mobile/src/components/Requests/ScanSheet/WalletConnectModal.tsx b/apps/mobile/src/components/WalletConnect/ScanSheet/WalletConnectModal.tsx similarity index 98% rename from apps/mobile/src/components/Requests/ScanSheet/WalletConnectModal.tsx rename to apps/mobile/src/components/WalletConnect/ScanSheet/WalletConnectModal.tsx index 39a40355dd2..7bf42b92845 100644 --- a/apps/mobile/src/components/Requests/ScanSheet/WalletConnectModal.tsx +++ b/apps/mobile/src/components/WalletConnect/ScanSheet/WalletConnectModal.tsx @@ -2,10 +2,10 @@ import React, { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { Alert } from 'react-native' import 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { useEagerExternalProfileRootNavigation } from 'src/app/navigation/hooks' import { QRCodeScanner } from 'src/components/QRCodeScanner/QRCodeScanner' -import { ConnectedDappsList } from 'src/components/Requests/ConnectedDapps/ConnectedDappsList' +import { ConnectedDappsList } from 'src/components/WalletConnect/ConnectedDapps/ConnectedDappsList' import { URIType, UWULINK_PREFIX, @@ -14,7 +14,7 @@ import { isAllowedUwuLinkRequest, toTokenTransferRequest, useUwuLinkContractAllowlist, -} from 'src/components/Requests/ScanSheet/util' +} from 'src/components/WalletConnect/ScanSheet/util' import { BackButtonView } from 'src/components/layout/BackButtonView' import { openDeepLink } from 'src/features/deepLinking/handleDeepLinkSaga' import { useWalletConnect } from 'src/features/walletConnect/useWalletConnect' @@ -54,7 +54,7 @@ export function WalletConnectModal({ const [currentScreenState, setCurrentScreenState] = useState(initialScreenState) const [shouldFreezeCamera, setShouldFreezeCamera] = useState(false) const { preload, navigate } = useEagerExternalProfileRootNavigation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isUwULinkEnabled = useFeatureFlag(FeatureFlags.UwULink) const isScantasticEnabled = useFeatureFlag(FeatureFlags.Scantastic) diff --git a/apps/mobile/src/components/Requests/ScanSheet/util.test.ts b/apps/mobile/src/components/WalletConnect/ScanSheet/util.test.ts similarity index 97% rename from apps/mobile/src/components/Requests/ScanSheet/util.test.ts rename to apps/mobile/src/components/WalletConnect/ScanSheet/util.test.ts index fe61ac39333..d6f94a93e30 100644 --- a/apps/mobile/src/components/Requests/ScanSheet/util.test.ts +++ b/apps/mobile/src/components/WalletConnect/ScanSheet/util.test.ts @@ -1,5 +1,9 @@ import * as wcUtils from '@walletconnect/utils' -import { CUSTOM_UNI_QR_CODE_PREFIX, URIType, getSupportedURI } from 'src/components/Requests/ScanSheet/util' +import { + CUSTOM_UNI_QR_CODE_PREFIX, + URIType, + getSupportedURI, +} from 'src/components/WalletConnect/ScanSheet/util' import { wcAsParamInUniwapScheme, wcInUniwapScheme, diff --git a/apps/mobile/src/components/Requests/ScanSheet/util.ts b/apps/mobile/src/components/WalletConnect/ScanSheet/util.ts similarity index 92% rename from apps/mobile/src/components/Requests/ScanSheet/util.ts rename to apps/mobile/src/components/WalletConnect/ScanSheet/util.ts index 4567cd8461a..1eba555ae17 100644 --- a/apps/mobile/src/components/Requests/ScanSheet/util.ts +++ b/apps/mobile/src/components/WalletConnect/ScanSheet/util.ts @@ -6,9 +6,8 @@ import { UNISWAP_URL_SCHEME_WALLETCONNECT_AS_PARAM, UNISWAP_WALLETCONNECT_URL, } from 'src/features/deepLinking/constants' -import { AssetType } from 'uniswap/src/entities/assets' -import { DynamicConfigs, UwuLinkConfigKey } from 'uniswap/src/features/gating/configs' -import { useDynamicConfigValue } from 'uniswap/src/features/gating/hooks' +import { DynamicConfigs } from 'uniswap/src/features/gating/configs' +import { useDynamicConfig } from 'uniswap/src/features/gating/hooks' import { RPCType } from 'uniswap/src/types/chains' import { EthMethod, @@ -19,6 +18,7 @@ import { } from 'uniswap/src/types/walletConnect' import { areAddressesEqual, getValidAddress } from 'uniswap/src/utils/addresses' import { logger } from 'utilities/src/logger/logger' +import { AssetType } from 'wallet/src/entities/assets' import { ContractManager } from 'wallet/src/features/contracts/ContractManager' import { ProviderManager } from 'wallet/src/features/providers' import { ScantasticParams, ScantasticParamsSchema } from 'wallet/src/features/scantastic/types' @@ -151,26 +151,8 @@ function isUwULink(uri: string): boolean { // Gets the UWULink contract allow list from statsig dynamic config. // We can safely cast as long as the statsig config format matches our `UwuLinkAllowlist` type. export function useUwuLinkContractAllowlist(): UwULinkAllowlist { - return useDynamicConfigValue( - DynamicConfigs.UwuLink, - UwuLinkConfigKey.Allowlist, - { - contracts: [], - tokenRecipients: [], - }, - (x: unknown) => { - const hasFields = - x !== null && typeof x === 'object' && Object.hasOwn(x, 'contracts') && Object.hasOwn(x, 'tokenRecipients') - - if (!hasFields) { - return false - } - - const castedObj = x as { contracts: unknown; tokenRecipients: unknown } - - return Array.isArray(castedObj.contracts) && Array.isArray(castedObj.tokenRecipients) - }, - ) + const uwuLinkConfig = useDynamicConfig(DynamicConfigs.UwuLink) + return uwuLinkConfig.getValue('allowlist') as UwULinkAllowlist } export function findAllowedTokenRecipient( diff --git a/apps/mobile/src/components/Requests/WalletConnectModals.tsx b/apps/mobile/src/components/WalletConnect/WalletConnectModals.tsx similarity index 91% rename from apps/mobile/src/components/Requests/WalletConnectModals.tsx rename to apps/mobile/src/components/WalletConnect/WalletConnectModals.tsx index 8a0bf942ecb..46490cf4667 100644 --- a/apps/mobile/src/components/Requests/WalletConnectModals.tsx +++ b/apps/mobile/src/components/WalletConnect/WalletConnectModals.tsx @@ -1,9 +1,9 @@ import React, { useEffect } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' -import { WalletConnectRequestModal } from 'src/components/Requests/RequestModal/WalletConnectRequestModal' -import { PendingConnectionModal } from 'src/components/Requests/ScanSheet/PendingConnectionModal' -import { WalletConnectModal } from 'src/components/Requests/ScanSheet/WalletConnectModal' +import { useAppDispatch } from 'src/app/hooks' +import { WalletConnectRequestModal } from 'src/components/WalletConnect/RequestModal/WalletConnectRequestModal' +import { PendingConnectionModal } from 'src/components/WalletConnect/ScanSheet/PendingConnectionModal' +import { WalletConnectModal } from 'src/components/WalletConnect/ScanSheet/WalletConnectModal' import { closeModal } from 'src/features/modals/modalSlice' import { useWalletConnect } from 'src/features/walletConnect/useWalletConnect' import { @@ -25,7 +25,7 @@ import { useActiveAccount, useActiveAccountAddressWithThrow, useSignerAccounts } export function WalletConnectModals(): JSX.Element { const activeAccount = useActiveAccount() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { pendingRequests, modalState, pendingSession } = useWalletConnect(activeAccount?.address) @@ -80,7 +80,7 @@ function RequestModal({ currRequest }: RequestModalProps): JSX.Element { const signerAccounts = useSignerAccounts() const activeAccountAddress = useActiveAccountAddressWithThrow() const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() // TODO: Move returnToPreviousApp() call to onClose but ensure it is not called twice diff --git a/apps/mobile/src/components/accounts/AccountCardItem.tsx b/apps/mobile/src/components/accounts/AccountCardItem.tsx index ec1dcf25355..8d9affed99e 100644 --- a/apps/mobile/src/components/accounts/AccountCardItem.tsx +++ b/apps/mobile/src/components/accounts/AccountCardItem.tsx @@ -2,7 +2,7 @@ import { SharedEventName } from '@uniswap/analytics-events' import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' import ContextMenu from 'react-native-context-menu-view' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { NotificationBadge } from 'src/components/notifications/Badge' import { closeModal, openModal } from 'src/features/modals/modalSlice' @@ -12,13 +12,13 @@ import { iconSizes } from 'ui/src/theme' import { ElementName, ModalName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { MobileScreens } from 'uniswap/src/types/screens/mobile' -import { setClipboard } from 'uniswap/src/utils/clipboard' import { NumberType } from 'utilities/src/format/types' import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' import { useAccountList } from 'wallet/src/features/accounts/hooks' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType, CopyNotificationType } from 'wallet/src/features/notifications/types' +import { setClipboard } from 'wallet/src/utils/clipboard' type AccountCardItemProps = { address: Address @@ -73,7 +73,7 @@ export function AccountCardItem({ }: AccountCardItemProps): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const onPressCopyAddress = async (): Promise => { await HapticFeedback.impact() diff --git a/apps/mobile/src/components/accounts/AccountHeader.test.tsx b/apps/mobile/src/components/accounts/AccountHeader.test.tsx index 10369dd039f..9bc71ffe413 100644 --- a/apps/mobile/src/components/accounts/AccountHeader.test.tsx +++ b/apps/mobile/src/components/accounts/AccountHeader.test.tsx @@ -5,7 +5,6 @@ import { AccountHeader } from 'src/components/accounts/AccountHeader' import { fireEvent, render, screen, waitFor, within } from 'src/test/test-utils' import { ModalName } from 'uniswap/src/features/telemetry/constants' import { ON_PRESS_EVENT_PAYLOAD } from 'uniswap/src/test/fixtures' -import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { sanitizeAddressText, shortenAddress } from 'uniswap/src/utils/addresses' import { ACCOUNT, preloadedSharedState, signerMnemonicAccount } from 'wallet/src/test/fixtures' @@ -35,7 +34,7 @@ describe(AccountHeader, () => { it('renders shortened address within section address without name section', () => { render(, { preloadedState: stateWithoutName }) - const addressSection = screen.getByTestId(TestID.AccountHeaderCopyAddress) + const addressSection = screen.getByTestId('account-header/address-only') const addressText = within(addressSection).queryByText(shortenedAddress) expect(addressText).toBeTruthy() @@ -46,7 +45,7 @@ describe(AccountHeader, () => { jest.spyOn(ExpoClipboard, 'setStringAsync').mockImplementation(setStringAsync) render(, { preloadedState: stateWithoutName }) - const addressSection = screen.getByTestId(TestID.AccountHeaderCopyAddress) + const addressSection = screen.getByTestId('account-header/address-only') fireEvent.press(addressSection, ON_PRESS_EVENT_PAYLOAD) await waitFor(() => { diff --git a/apps/mobile/src/components/accounts/AccountHeader.tsx b/apps/mobile/src/components/accounts/AccountHeader.tsx index a169672f6bf..3c8c3915c0a 100644 --- a/apps/mobile/src/components/accounts/AccountHeader.tsx +++ b/apps/mobile/src/components/accounts/AccountHeader.tsx @@ -1,7 +1,6 @@ import { SharedEventName } from '@uniswap/analytics-events' import React, { useCallback, useEffect } from 'react' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { openModal } from 'src/features/modals/modalSlice' import { Flex, HapticFeedback, ImpactFeedbackStyle, Text, TouchableArea } from 'ui/src' @@ -12,7 +11,6 @@ import { MobileUserPropertyName, setUserProperty } from 'uniswap/src/features/te import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { sanitizeAddressText, shortenAddress } from 'uniswap/src/utils/addresses' -import { setClipboard } from 'uniswap/src/utils/clipboard' import { isDevEnv } from 'utilities/src/environment' import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' import { AnimatedUnitagDisplayName } from 'wallet/src/components/accounts/AnimatedUnitagDisplayName' @@ -22,11 +20,12 @@ import { AccountType } from 'wallet/src/features/wallet/accounts/types' import { useAvatar, useDisplayName } from 'wallet/src/features/wallet/hooks' import { selectActiveAccount, selectActiveAccountAddress } from 'wallet/src/features/wallet/selectors' import { DisplayNameType } from 'wallet/src/features/wallet/types' +import { setClipboard } from 'wallet/src/utils/clipboard' export function AccountHeader(): JSX.Element { const activeAddress = useAppSelector(selectActiveAccountAddress) const account = useAppSelector(selectActiveAccount) - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { avatar } = useAvatar(activeAddress) const displayName = useDisplayName(activeAddress) @@ -84,7 +83,7 @@ export function AccountHeader(): JSX.Element { flexDirection="row" hapticStyle={ImpactFeedbackStyle.Medium} hitSlop={20} - testID={TestID.AccountHeaderAvatar} + testID={TestID.Manage} onLongPress={async (): Promise => { if (isDevEnv()) { await HapticFeedback.selection() @@ -126,7 +125,7 @@ export function AccountHeader(): JSX.Element { diff --git a/apps/mobile/src/components/accounts/__snapshots__/AccountHeader.test.tsx.snap b/apps/mobile/src/components/accounts/__snapshots__/AccountHeader.test.tsx.snap index 8c8e8ede1cc..3c1b670cc09 100644 --- a/apps/mobile/src/components/accounts/__snapshots__/AccountHeader.test.tsx.snap +++ b/apps/mobile/src/components/accounts/__snapshots__/AccountHeader.test.tsx.snap @@ -60,7 +60,7 @@ exports[`AccountHeader renders correctly 1`] = ` ], } } - testID="account-header-avatar" + testID="manage" > void }): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const { fullWidth } = useDeviceDimensions() const colors = useSporeColors() diff --git a/apps/mobile/src/components/buttons/CopyTextButton.test.tsx b/apps/mobile/src/components/buttons/CopyTextButton.test.tsx index 423572ec10a..e7bfd831c60 100644 --- a/apps/mobile/src/components/buttons/CopyTextButton.test.tsx +++ b/apps/mobile/src/components/buttons/CopyTextButton.test.tsx @@ -1,8 +1,8 @@ import { CopyTextButton } from 'src/components/buttons/CopyTextButton' import { act, fireEvent, render } from 'src/test/test-utils' -import { setClipboard } from 'uniswap/src/utils/clipboard' +import { setClipboard } from 'wallet/src/utils/clipboard' -jest.mock('uniswap/src/utils/clipboard') +jest.mock('wallet/src/utils/clipboard') describe(CopyTextButton, () => { beforeEach(() => { diff --git a/apps/mobile/src/components/buttons/CopyTextButton.tsx b/apps/mobile/src/components/buttons/CopyTextButton.tsx index 12c22aa58a6..88c95621e18 100644 --- a/apps/mobile/src/components/buttons/CopyTextButton.tsx +++ b/apps/mobile/src/components/buttons/CopyTextButton.tsx @@ -4,8 +4,8 @@ import { Button, useSporeColors } from 'ui/src' import CheckCircle from 'ui/src/assets/icons/check-circle.svg' import CopySheets from 'ui/src/assets/icons/copy-sheets.svg' import { iconSizes } from 'ui/src/theme' -import { setClipboard } from 'uniswap/src/utils/clipboard' import { useTimeout } from 'utilities/src/time/timing' +import { setClipboard } from 'wallet/src/utils/clipboard' interface Props { copyText?: string diff --git a/apps/mobile/src/components/buttons/LinkButton.test.tsx b/apps/mobile/src/components/buttons/LinkButton.test.tsx index 457bf9e46c3..d7bee3d2088 100644 --- a/apps/mobile/src/components/buttons/LinkButton.test.tsx +++ b/apps/mobile/src/components/buttons/LinkButton.test.tsx @@ -2,7 +2,7 @@ import { LinkButton } from 'src/components/buttons/LinkButton' import { fireEvent, render } from 'src/test/test-utils' import { ON_PRESS_EVENT_PAYLOAD } from 'uniswap/src/test/fixtures' -jest.mock('uniswap/src/utils/linking') +jest.mock('wallet/src/utils/linking') describe(LinkButton, () => { it('renders without error', () => { @@ -38,7 +38,7 @@ describe(LinkButton, () => { const button = getByText('link text') fireEvent.press(button, ON_PRESS_EVENT_PAYLOAD) - expect(require('uniswap/src/utils/linking').openUri).toHaveBeenCalledWith( + expect(require('wallet/src/utils/linking').openUri).toHaveBeenCalledWith( 'https://example.com', openExternalBrowser, isSafeUri, diff --git a/apps/mobile/src/components/buttons/LinkButton.tsx b/apps/mobile/src/components/buttons/LinkButton.tsx index cc6cedd8932..6132dec98ac 100644 --- a/apps/mobile/src/components/buttons/LinkButton.tsx +++ b/apps/mobile/src/components/buttons/LinkButton.tsx @@ -2,7 +2,7 @@ import React, { useMemo } from 'react' import { Flex, FlexProps, Text, TouchableArea, TouchableAreaProps, useSporeColors } from 'ui/src' import ExternalLinkIcon from 'ui/src/assets/icons/external-link.svg' import { TextVariantTokens, iconSizes } from 'ui/src/theme' -import { openUri } from 'uniswap/src/utils/linking' +import { openUri } from 'wallet/src/utils/linking' interface LinkButtonProps extends Omit { label: string diff --git a/apps/mobile/src/components/explore/ExploreSections.tsx b/apps/mobile/src/components/explore/ExploreSections.tsx index 3e59299f77c..d6dae1f4b92 100644 --- a/apps/mobile/src/components/explore/ExploreSections.tsx +++ b/apps/mobile/src/components/explore/ExploreSections.tsx @@ -26,10 +26,10 @@ import { useExploreTokensTabQuery, } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' -import { usePersistedError } from 'uniswap/src/features/dataApi/utils' import { UniverseChainId } from 'uniswap/src/types/chains' import { areAddressesEqual } from 'uniswap/src/utils/addresses' import { buildCurrencyId, buildNativeCurrencyId } from 'uniswap/src/utils/currencyId' +import { usePersistedError } from 'wallet/src/features/dataApi/utils' import { selectHasFavoriteTokens, selectHasWatchedWallets } from 'wallet/src/features/favorites/selectors' import { selectTokensOrderBy } from 'wallet/src/features/wallet/selectors' @@ -191,7 +191,6 @@ export function ExploreSections({ listRef }: ExploreSectionsProps): JSX.Element contentContainerStyle={{ paddingBottom: insets.bottom }} data={showLoading ? undefined : topTokenItems} keyExtractor={tokenKey} - removeClippedSubviews={false} renderItem={renderItem} scrollEventThrottle={16} showsHorizontalScrollIndicator={false} diff --git a/apps/mobile/src/components/explore/FavoriteTokenCard.tsx b/apps/mobile/src/components/explore/FavoriteTokenCard.tsx index 73f3cdfa608..e1ec81dc633 100644 --- a/apps/mobile/src/components/explore/FavoriteTokenCard.tsx +++ b/apps/mobile/src/components/explore/FavoriteTokenCard.tsx @@ -2,7 +2,7 @@ import React, { memo, useCallback } from 'react' import { ViewProps } from 'react-native' import ContextMenu from 'react-native-context-menu-view' import { FadeIn, SharedValue } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { useTokenDetailsNavigation } from 'src/components/TokenDetails/hooks' import RemoveButton from 'src/components/explore/RemoveButton' import { useAnimatedCardDragStyle, useExploreTokenContextMenu } from 'src/components/explore/hooks' @@ -17,13 +17,13 @@ import { TokenLogo } from 'uniswap/src/components/CurrencyLogo/TokenLogo' import { PollingInterval } from 'uniswap/src/constants/misc' import { useFavoriteTokenCardQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' -import { currencyIdToContractInput } from 'uniswap/src/features/dataApi/utils' import { SectionName } from 'uniswap/src/features/telemetry/constants' import { UniverseChainId } from 'uniswap/src/types/chains' import { getSymbolDisplayText } from 'uniswap/src/utils/currency' import { NumberType } from 'utilities/src/format/types' import { RelativeChange } from 'wallet/src/components/text/RelativeChange' import { isNonPollingRequestInFlight } from 'wallet/src/data/utils' +import { currencyIdToContractInput } from 'wallet/src/features/dataApi/utils' import { removeFavoriteToken } from 'wallet/src/features/favorites/slice' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' @@ -45,7 +45,7 @@ function FavoriteTokenCard({ setIsEditing, ...rest }: FavoriteTokenCardProps): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const tokenDetailsNavigation = useTokenDetailsNavigation() const { convertFiatAmountFormatted } = useLocalizationContext() diff --git a/apps/mobile/src/components/explore/FavoriteTokensGrid.tsx b/apps/mobile/src/components/explore/FavoriteTokensGrid.tsx index c018560a890..f9e46081ec2 100644 --- a/apps/mobile/src/components/explore/FavoriteTokensGrid.tsx +++ b/apps/mobile/src/components/explore/FavoriteTokensGrid.tsx @@ -1,7 +1,6 @@ import React, { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { FadeIn, useAnimatedStyle, useSharedValue } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' import { useAppSelector } from 'src/app/hooks' import { FavoriteHeaderRow } from 'src/components/explore/FavoriteHeaderRow' import FavoriteTokenCard, { FAVORITE_TOKEN_CARD_LOADER_HEIGHT } from 'src/components/explore/FavoriteTokenCard' @@ -16,6 +15,7 @@ import { Flex } from 'ui/src' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { selectFavoriteTokens } from 'wallet/src/features/favorites/selectors' import { setFavoriteTokens } from 'wallet/src/features/favorites/slice' +import { useAppDispatch } from 'wallet/src/state' const NUM_COLUMNS = 2 const ITEM_FLEX = { flex: 1 / NUM_COLUMNS } @@ -27,7 +27,7 @@ type FavoriteTokensGridProps = AutoScrollProps & { /** Renders the favorite tokens section on the Explore tab */ export function FavoriteTokensGrid({ showLoading, ...rest }: FavoriteTokensGridProps): JSX.Element | null { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const [isEditing, setIsEditing] = useState(false) const isTokenDragged = useSharedValue(false) diff --git a/apps/mobile/src/components/explore/FavoriteWalletCard.tsx b/apps/mobile/src/components/explore/FavoriteWalletCard.tsx index 0a248995836..e7299c5cf65 100644 --- a/apps/mobile/src/components/explore/FavoriteWalletCard.tsx +++ b/apps/mobile/src/components/explore/FavoriteWalletCard.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next' import { ViewProps } from 'react-native' import ContextMenu from 'react-native-context-menu-view' import { SharedValue } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { useEagerExternalProfileNavigation } from 'src/app/navigation/hooks' import RemoveButton from 'src/components/explore/RemoveButton' import { useAnimatedCardDragStyle } from 'src/components/explore/hooks' @@ -35,7 +35,7 @@ function FavoriteWalletCard({ ...rest }: FavoriteWalletCardProps): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { preload, navigate } = useEagerExternalProfileNavigation() const displayName = useDisplayName(address) diff --git a/apps/mobile/src/components/explore/FavoriteWalletsGrid.tsx b/apps/mobile/src/components/explore/FavoriteWalletsGrid.tsx index a72d91eb5ae..314cd6b0d87 100644 --- a/apps/mobile/src/components/explore/FavoriteWalletsGrid.tsx +++ b/apps/mobile/src/components/explore/FavoriteWalletsGrid.tsx @@ -1,7 +1,6 @@ import { default as React, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { FadeIn, useAnimatedStyle, useSharedValue } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' import { useAppSelector } from 'src/app/hooks' import { FavoriteHeaderRow } from 'src/components/explore/FavoriteHeaderRow' import FavoriteWalletCard from 'src/components/explore/FavoriteWalletCard' @@ -16,6 +15,7 @@ import { Flex } from 'ui/src' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { selectWatchedAddressSet } from 'wallet/src/features/favorites/selectors' import { setFavoriteWallets } from 'wallet/src/features/favorites/slice' +import { useAppDispatch } from 'wallet/src/state' const NUM_COLUMNS = 2 const ITEM_FLEX = { flex: 1 / NUM_COLUMNS } @@ -27,7 +27,7 @@ type FavoriteWalletsGridProps = AutoScrollProps & { /** Renders the favorite wallets section on the Explore tab */ export function FavoriteWalletsGrid({ showLoading, ...rest }: FavoriteWalletsGridProps): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const [isEditing, setIsEditing] = useState(false) const isTokenDragged = useSharedValue(false) diff --git a/apps/mobile/src/components/explore/RemoveButton.tsx b/apps/mobile/src/components/explore/RemoveButton.tsx index af9f6248873..d03f9f543ac 100644 --- a/apps/mobile/src/components/explore/RemoveButton.tsx +++ b/apps/mobile/src/components/explore/RemoveButton.tsx @@ -17,7 +17,6 @@ export default function RemoveButton({ visible = true, ...rest }: RemoveButtonPr alignItems="center" backgroundColor="$neutral3" borderRadius="$roundedFull" - disabled={!visible} height={imageSizes.image24} justifyContent="center" style={animatedVisibilityStyle} diff --git a/apps/mobile/src/components/explore/SortButton.tsx b/apps/mobile/src/components/explore/SortButton.tsx index 1c6bfae4674..e0d00720fe6 100644 --- a/apps/mobile/src/components/explore/SortButton.tsx +++ b/apps/mobile/src/components/explore/SortButton.tsx @@ -1,7 +1,7 @@ import React, { memo, useMemo } from 'react' import { useTranslation } from 'react-i18next' import ContextMenu from 'react-native-context-menu-view' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { getTokensOrderByMenuLabel, getTokensOrderBySelectedLabel } from 'src/features/explore/utils' import { disableOnPress } from 'src/utils/disableOnPress' import { Flex, Text, TouchableArea, useIsDarkMode } from 'ui/src' @@ -19,7 +19,7 @@ interface FilterGroupProps { function _SortButton({ orderBy }: FilterGroupProps): JSX.Element { const isDarkMode = useIsDarkMode() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const menuActions = useMemo(() => { diff --git a/apps/mobile/src/components/explore/__snapshots__/FavoriteWalletCard.test.tsx.snap b/apps/mobile/src/components/explore/__snapshots__/FavoriteWalletCard.test.tsx.snap index 1062aedd8ca..62aca13bb0b 100644 --- a/apps/mobile/src/components/explore/__snapshots__/FavoriteWalletCard.test.tsx.snap +++ b/apps/mobile/src/components/explore/__snapshots__/FavoriteWalletCard.test.tsx.snap @@ -232,16 +232,11 @@ exports[`FavoriteWalletCard renders without error 1`] = ` - diff --git a/apps/mobile/src/components/explore/hooks.test.ts b/apps/mobile/src/components/explore/hooks.test.ts index 96e42dc0d5f..20c366e7d3f 100644 --- a/apps/mobile/src/components/explore/hooks.test.ts +++ b/apps/mobile/src/components/explore/hooks.test.ts @@ -5,9 +5,9 @@ import { useExploreTokenContextMenu } from 'src/components/explore/hooks' import { renderHookWithProviders } from 'src/test/render' import { Resolvers } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { SectionName } from 'uniswap/src/features/telemetry/constants' -import { CurrencyField } from 'uniswap/src/features/transactions/transactionState/types' import { FavoritesState } from 'wallet/src/features/favorites/slice' -import { SAMPLE_SEED_ADDRESS_1 } from 'wallet/src/test/fixtures' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' +import { SAMPLE_SEED_ADDRESS_1 } from 'wallet/src/test/fixtures/constants' import { cleanup } from 'wallet/src/test/test-utils' const tokenId = SAMPLE_SEED_ADDRESS_1 @@ -30,7 +30,10 @@ describe(useExploreTokenContextMenu, () => { describe('editing favorite tokens', () => { it('renders proper context menu items when onEditFavorites is not provided', async () => { - const { result } = renderHookWithProviders(() => useExploreTokenContextMenu(tokenMenuParams), { resolvers }) + const { result } = renderHookWithProviders( + () => useExploreTokenContextMenu(tokenMenuParams), + { resolvers } + ) expect(result.current.menuActions).toEqual([ expect.objectContaining({ @@ -57,7 +60,7 @@ describe(useExploreTokenContextMenu, () => { const onEditFavorites = jest.fn() const { result } = renderHookWithProviders( () => useExploreTokenContextMenu({ ...tokenMenuParams, onEditFavorites }), - { resolvers }, + { resolvers } ) expect(result.current.menuActions).toEqual([ @@ -85,11 +88,11 @@ describe(useExploreTokenContextMenu, () => { const onEditFavorites = jest.fn() const { result } = renderHookWithProviders( () => useExploreTokenContextMenu({ ...tokenMenuParams, onEditFavorites }), - { resolvers }, + { resolvers } ) const editFavoritesActionIndex = result.current.menuActions.findIndex( - (action: ContextMenuAction) => action.title === 'Edit favorites', + (action: ContextMenuAction) => action.title === 'Edit favorites' ) result.current.onContextMenuPress({ nativeEvent: { index: editFavoritesActionIndex }, @@ -102,12 +105,15 @@ describe(useExploreTokenContextMenu, () => { describe('adding / removing favorite tokens', () => { it('renders proper context menu items when token is favorited', async () => { - const { result } = renderHookWithProviders(() => useExploreTokenContextMenu(tokenMenuParams), { - preloadedState: { - favorites: { tokens: [tokenMenuParams.currencyId.toLowerCase()] } as FavoritesState, - }, - resolvers, - }) + const { result } = renderHookWithProviders( + () => useExploreTokenContextMenu(tokenMenuParams), + { + preloadedState: { + favorites: { tokens: [tokenMenuParams.currencyId.toLowerCase()] } as FavoritesState, + }, + resolvers, + } + ) expect(result.current.menuActions).toEqual([ expect.objectContaining({ @@ -132,13 +138,13 @@ describe(useExploreTokenContextMenu, () => { it("dispatches add to favorites redux action when 'Favorite token' is pressed", async () => { const store = mockStore({ favorites: { tokens: [] }, appearance: { theme: 'system' } }) - const { result } = renderHookWithProviders(() => useExploreTokenContextMenu(tokenMenuParams), { - resolvers, - store, - }) + const { result } = renderHookWithProviders( + () => useExploreTokenContextMenu(tokenMenuParams), + { resolvers, store } + ) const favoriteTokenActionIndex = result.current.menuActions.findIndex( - (action: ContextMenuAction) => action.title === 'Favorite token', + (action: ContextMenuAction) => action.title === 'Favorite token' ) result.current.onContextMenuPress({ nativeEvent: { index: favoriteTokenActionIndex }, @@ -159,13 +165,13 @@ describe(useExploreTokenContextMenu, () => { favorites: { tokens: [tokenMenuParams.currencyId.toLowerCase()] }, appearance: { theme: 'system' }, }) - const { result } = renderHookWithProviders(() => useExploreTokenContextMenu(tokenMenuParams), { - resolvers, - store, - }) + const { result } = renderHookWithProviders( + () => useExploreTokenContextMenu(tokenMenuParams), + { resolvers, store } + ) const removeFavoriteTokenActionIndex = result.current.menuActions.findIndex( - (action: ContextMenuAction) => action.title === 'Remove favorite', + (action: ContextMenuAction) => action.title === 'Remove favorite' ) result.current.onContextMenuPress({ nativeEvent: { index: removeFavoriteTokenActionIndex }, @@ -192,7 +198,9 @@ describe(useExploreTokenContextMenu, () => { resolvers, }) - const swapActionIndex = result.current.menuActions.findIndex((action: ContextMenuAction) => action.title === 'Swap') + const swapActionIndex = result.current.menuActions.findIndex( + (action: ContextMenuAction) => action.title === 'Swap' + ) result.current.onContextMenuPress({ nativeEvent: { index: swapActionIndex }, } as NativeSyntheticEvent) @@ -227,7 +235,7 @@ describe(useExploreTokenContextMenu, () => { jest.spyOn(Share, 'share') const shareActionIndex = result.current.menuActions.findIndex( - (action: ContextMenuAction) => action.title === 'Share', + (action: ContextMenuAction) => action.title === 'Share' ) result.current.onContextMenuPress({ nativeEvent: { index: shareActionIndex }, diff --git a/apps/mobile/src/components/explore/hooks.ts b/apps/mobile/src/components/explore/hooks.ts index e422a93953f..16986f14310 100644 --- a/apps/mobile/src/components/explore/hooks.ts +++ b/apps/mobile/src/components/explore/hooks.ts @@ -4,18 +4,18 @@ import { useTranslation } from 'react-i18next' import { NativeSyntheticEvent } from 'react-native' import { ContextMenuAction, ContextMenuOnPressNativeEvent } from 'react-native-context-menu-view' import { SharedValue, StyleProps, interpolate, useAnimatedStyle } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' import { useSelectHasTokenFavorited, useToggleFavoriteCallback } from 'src/features/favorites/hooks' import { openModal } from 'src/features/modals/modalSlice' -import { AssetType } from 'uniswap/src/entities/assets' import { ElementName, ModalName, SectionNameType } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' -import { CurrencyField, TransactionState } from 'uniswap/src/features/transactions/transactionState/types' import { WalletChainId } from 'uniswap/src/types/chains' import { CurrencyId } from 'uniswap/src/types/currency' import { currencyIdToAddress } from 'uniswap/src/utils/currencyId' import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants' import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' +import { AssetType } from 'wallet/src/entities/assets' +import { CurrencyField, TransactionState } from 'wallet/src/features/transactions/transactionState/types' +import { useAppDispatch } from 'wallet/src/state' interface TokenMenuParams { currencyId: CurrencyId @@ -37,7 +37,7 @@ export function useExploreTokenContextMenu({ } { const { t } = useTranslation() const isFavorited = useSelectHasTokenFavorited(currencyId) - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { handleShareToken } = useWalletNavigation() diff --git a/apps/mobile/src/components/explore/search/SearchEmptySection.tsx b/apps/mobile/src/components/explore/search/SearchEmptySection.tsx index 35874264ebe..4972dccc2fb 100644 --- a/apps/mobile/src/components/explore/search/SearchEmptySection.tsx +++ b/apps/mobile/src/components/explore/search/SearchEmptySection.tsx @@ -2,8 +2,7 @@ import React from 'react' import { useTranslation } from 'react-i18next' import { FlatList } from 'react-native' import { FadeIn, FadeOut } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { SearchPopularNFTCollections } from 'src/components/explore/search/SearchPopularNFTCollections' import { SearchPopularTokens } from 'src/components/explore/search/SearchPopularTokens' import { renderSearchItem } from 'src/components/explore/search/SearchResultsSection' @@ -13,8 +12,7 @@ import ClockIcon from 'ui/src/assets/icons/clock.svg' import { TrendUp } from 'ui/src/components/icons' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { iconSizes } from 'ui/src/theme' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' -import { WalletSearchResult } from 'wallet/src/features/search/SearchResult' +import { SearchResultType, WalletSearchResult } from 'wallet/src/features/search/SearchResult' import { clearSearchHistory } from 'wallet/src/features/search/searchHistorySlice' import { selectSearchHistory } from 'wallet/src/features/search/selectSearchHistory' @@ -35,7 +33,7 @@ export const SUGGESTED_WALLETS: WalletSearchResult[] = [ export function SearchEmptySection(): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const searchHistory = useAppSelector(selectSearchHistory) const onPressClearSearchHistory = (): void => { diff --git a/apps/mobile/src/components/explore/search/SearchPopularNFTCollections.tsx b/apps/mobile/src/components/explore/search/SearchPopularNFTCollections.tsx index 4a78b2c2531..b7edf4c754e 100644 --- a/apps/mobile/src/components/explore/search/SearchPopularNFTCollections.tsx +++ b/apps/mobile/src/components/explore/search/SearchPopularNFTCollections.tsx @@ -2,10 +2,9 @@ import React, { useMemo } from 'react' import { FlatList, ListRenderItemInfo } from 'react-native' import { SearchNFTCollectionItem } from 'src/components/explore/search/items/SearchNFTCollectionItem' import { getSearchResultId, gqlNFTToNFTCollectionSearchResult } from 'src/components/explore/search/utils' -import { Flex, Loader } from 'ui/src' +import { Inset, Loader } from 'ui/src' import { useSearchPopularNftCollectionsQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' -import { NFTCollectionSearchResult } from 'wallet/src/features/search/SearchResult' +import { NFTCollectionSearchResult, SearchResultType } from 'wallet/src/features/search/SearchResult' function isNFTCollectionSearchResult(result: NFTCollectionSearchResult | null): result is NFTCollectionSearchResult { return (result as NFTCollectionSearchResult).type === SearchResultType.NFTCollection @@ -26,9 +25,9 @@ export function SearchPopularNFTCollections(): JSX.Element { if (loading) { return ( - + - + ) } diff --git a/apps/mobile/src/components/explore/search/SearchPopularTokens.tsx b/apps/mobile/src/components/explore/search/SearchPopularTokens.tsx index 58ba3f57a92..5b4b60f54af 100644 --- a/apps/mobile/src/components/explore/search/SearchPopularTokens.tsx +++ b/apps/mobile/src/components/explore/search/SearchPopularTokens.tsx @@ -2,10 +2,9 @@ import React, { useMemo } from 'react' import { FlatList, ListRenderItemInfo } from 'react-native' import { SearchTokenItem } from 'src/components/explore/search/items/SearchTokenItem' import { getSearchResultId } from 'src/components/explore/search/utils' -import { Flex, Loader } from 'ui/src' +import { Inset, Loader } from 'ui/src' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' -import { TokenSearchResult } from 'wallet/src/features/search/SearchResult' +import { SearchResultType, TokenSearchResult } from 'wallet/src/features/search/SearchResult' import { TopToken, usePopularTokens } from 'wallet/src/features/tokens/hooks' function gqlTokenToTokenSearchResult(token: Maybe): TokenSearchResult | null { @@ -40,9 +39,9 @@ export function SearchPopularTokens(): JSX.Element { if (loading) { return ( - + - + ) } diff --git a/apps/mobile/src/components/explore/search/SearchResultsLoader.tsx b/apps/mobile/src/components/explore/search/SearchResultsLoader.tsx index 544f856694e..b69014155da 100644 --- a/apps/mobile/src/components/explore/search/SearchResultsLoader.tsx +++ b/apps/mobile/src/components/explore/search/SearchResultsLoader.tsx @@ -15,7 +15,7 @@ export const SearchResultsLoader = (): JSX.Element => { icon={} title={t('explore.search.section.tokens')} /> - + @@ -24,7 +24,7 @@ export const SearchResultsLoader = (): JSX.Element => { icon={} title={t('explore.search.section.nft')} /> - + @@ -33,7 +33,7 @@ export const SearchResultsLoader = (): JSX.Element => { icon={} title={t('explore.search.section.wallets')} /> - + diff --git a/apps/mobile/src/components/explore/search/SearchResultsSection.tsx b/apps/mobile/src/components/explore/search/SearchResultsSection.tsx index 506a85991af..dd8a3eb1aec 100644 --- a/apps/mobile/src/components/explore/search/SearchResultsSection.tsx +++ b/apps/mobile/src/components/explore/search/SearchResultsSection.tsx @@ -24,13 +24,12 @@ import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { BaseCard } from 'uniswap/src/components/BaseCard/BaseCard' import { UNIVERSE_CHAIN_INFO } from 'uniswap/src/constants/chains' import { useExploreSearchQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' -import { SearchContext } from 'uniswap/src/features/search/SearchContext' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' import i18n from 'uniswap/src/i18n/i18n' import { UniverseChainId } from 'uniswap/src/types/chains' import { getValidAddress } from 'uniswap/src/utils/addresses' import { logger } from 'utilities/src/logger/logger' -import { NFTCollectionSearchResult, TokenSearchResult } from 'wallet/src/features/search/SearchResult' +import { SearchContext } from 'wallet/src/features/search/SearchContext' +import { NFTCollectionSearchResult, SearchResultType, TokenSearchResult } from 'wallet/src/features/search/SearchResult' const ICON_SIZE = '$icon.24' const ICON_COLOR = '$neutral2' diff --git a/apps/mobile/src/components/explore/search/SearchSectionHeader.tsx b/apps/mobile/src/components/explore/search/SearchSectionHeader.tsx index 6f537ca6e33..1952d47cca1 100644 --- a/apps/mobile/src/components/explore/search/SearchSectionHeader.tsx +++ b/apps/mobile/src/components/explore/search/SearchSectionHeader.tsx @@ -8,7 +8,7 @@ interface SectionHeaderTextProps { export const SectionHeaderText = ({ title, icon, ...rest }: SectionHeaderTextProps & TextProps): JSX.Element => { return ( - + {icon && icon} {title} diff --git a/apps/mobile/src/components/explore/search/hooks.ts b/apps/mobile/src/components/explore/search/hooks.ts index 46628095830..e66cad8c955 100644 --- a/apps/mobile/src/components/explore/search/hooks.ts +++ b/apps/mobile/src/components/explore/search/hooks.ts @@ -1,10 +1,9 @@ import { useMemo } from 'react' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' import { useUnitagByAddress, useUnitagByName } from 'uniswap/src/features/unitags/hooks' import { UniverseChainId } from 'uniswap/src/types/chains' import { getValidAddress } from 'uniswap/src/utils/addresses' import { useENS } from 'wallet/src/features/ens/useENS' -import { WalletSearchResult } from 'wallet/src/features/search/SearchResult' +import { SearchResultType, WalletSearchResult } from 'wallet/src/features/search/SearchResult' import { useIsSmartContractAddress } from 'wallet/src/features/transactions/transfer/hooks/useIsSmartContractAddress' // eslint-disable-next-line complexity diff --git a/apps/mobile/src/components/explore/search/items/SearchENSAddressItem.tsx b/apps/mobile/src/components/explore/search/items/SearchENSAddressItem.tsx index b96593250ea..4ebc857a132 100644 --- a/apps/mobile/src/components/explore/search/items/SearchENSAddressItem.tsx +++ b/apps/mobile/src/components/explore/search/items/SearchENSAddressItem.tsx @@ -3,11 +3,11 @@ import { useTranslation } from 'react-i18next' import { SearchWalletItemBase } from 'src/components/explore/search/items/SearchWalletItemBase' import { Flex, Text } from 'ui/src' import { imageSizes } from 'ui/src/theme' -import { SearchContext } from 'uniswap/src/features/search/SearchContext' import { sanitizeAddressText, shortenAddress } from 'uniswap/src/utils/addresses' import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' import { useENSAvatar, useENSName } from 'wallet/src/features/ens/api' import { getCompletedENSName } from 'wallet/src/features/ens/useENS' +import { SearchContext } from 'wallet/src/features/search/SearchContext' import { ENSAddressSearchResult } from 'wallet/src/features/search/SearchResult' type SearchENSAddressItemProps = { @@ -47,7 +47,7 @@ export function SearchENSAddressItem({ searchResult, searchContext }: SearchENSA return ( - + diff --git a/apps/mobile/src/components/explore/search/items/SearchEtherscanItem.tsx b/apps/mobile/src/components/explore/search/items/SearchEtherscanItem.tsx index 28b155634dc..abfe50bed48 100644 --- a/apps/mobile/src/components/explore/search/items/SearchEtherscanItem.tsx +++ b/apps/mobile/src/components/explore/search/items/SearchEtherscanItem.tsx @@ -1,16 +1,15 @@ import { default as React } from 'react' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { getBlockExplorerIcon } from 'src/components/icons/BlockExplorerIcon' import { Flex, ImpactFeedbackStyle, Text, TouchableArea, useSporeColors } from 'ui/src' import { iconSizes } from 'ui/src/theme' import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { UniverseChainId } from 'uniswap/src/types/chains' import { shortenAddress } from 'uniswap/src/utils/addresses' -import { openUri } from 'uniswap/src/utils/linking' import { Arrow } from 'wallet/src/components/icons/Arrow' import { EtherscanSearchResult } from 'wallet/src/features/search/SearchResult' import { addToSearchHistory } from 'wallet/src/features/search/searchHistorySlice' -import { ExplorerDataType, getExplorerLink } from 'wallet/src/utils/linking' +import { ExplorerDataType, getExplorerLink, openUri } from 'wallet/src/utils/linking' type SearchEtherscanItemProps = { etherscanResult: EtherscanSearchResult @@ -18,7 +17,7 @@ type SearchEtherscanItemProps = { export function SearchEtherscanItem({ etherscanResult }: SearchEtherscanItemProps): JSX.Element { const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { address } = etherscanResult @@ -41,7 +40,7 @@ export function SearchEtherscanItem({ etherscanResult }: SearchEtherscanItemProp testID={TestID.SearchEtherscanItem} onPress={onPressViewEtherscan} > - + {shortenAddress(address)} diff --git a/apps/mobile/src/components/explore/search/items/SearchNFTCollectionItem.tsx b/apps/mobile/src/components/explore/search/items/SearchNFTCollectionItem.tsx index 8361107aefb..9ed4f71654b 100644 --- a/apps/mobile/src/components/explore/search/items/SearchNFTCollectionItem.tsx +++ b/apps/mobile/src/components/explore/search/items/SearchNFTCollectionItem.tsx @@ -1,17 +1,16 @@ import { default as React } from 'react' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { useAppStackNavigation } from 'src/app/navigation/types' import { Flex, ImpactFeedbackStyle, Text, TouchableArea } from 'ui/src' import { Verified } from 'ui/src/components/icons' import { iconSizes } from 'ui/src/theme' -import { SearchContext } from 'uniswap/src/features/search/SearchContext' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { NFTViewer } from 'wallet/src/features/images/NFTViewer' -import { NFTCollectionSearchResult } from 'wallet/src/features/search/SearchResult' +import { SearchContext } from 'wallet/src/features/search/SearchContext' +import { NFTCollectionSearchResult, SearchResultType } from 'wallet/src/features/search/SearchResult' import { addToSearchHistory } from 'wallet/src/features/search/searchHistorySlice' type NFTCollectionItemProps = { @@ -21,7 +20,7 @@ type NFTCollectionItemProps = { export function SearchNFTCollectionItem({ collection, searchContext }: NFTCollectionItemProps): JSX.Element { const { name, address, chainId, isVerified, imageUrl } = collection - const dispatch = useDispatch() + const dispatch = useAppDispatch() const navigation = useAppStackNavigation() const onPress = (): void => { @@ -63,7 +62,7 @@ export function SearchNFTCollectionItem({ collection, searchContext }: NFTCollec testID={TestID.SearchNFTCollectionItem} onPress={onPress} > - + - + diff --git a/apps/mobile/src/components/explore/search/items/SearchUnitagItem.tsx b/apps/mobile/src/components/explore/search/items/SearchUnitagItem.tsx index d8331ff4d13..3ec3d1ed0ea 100644 --- a/apps/mobile/src/components/explore/search/items/SearchUnitagItem.tsx +++ b/apps/mobile/src/components/explore/search/items/SearchUnitagItem.tsx @@ -2,10 +2,10 @@ import React from 'react' import { SearchWalletItemBase } from 'src/components/explore/search/items/SearchWalletItemBase' import { Flex, Text } from 'ui/src' import { imageSizes } from 'ui/src/theme' -import { SearchContext } from 'uniswap/src/features/search/SearchContext' import { sanitizeAddressText, shortenAddress } from 'uniswap/src/utils/addresses' import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' import { DisplayNameText } from 'wallet/src/components/accounts/DisplayNameText' +import { SearchContext } from 'wallet/src/features/search/SearchContext' import { UnitagSearchResult } from 'wallet/src/features/search/SearchResult' import { useAvatar } from 'wallet/src/features/wallet/hooks' import { DisplayNameType } from 'wallet/src/features/wallet/types' @@ -23,7 +23,7 @@ export function SearchUnitagItem({ searchResult, searchContext }: SearchUnitagIt return ( - + diff --git a/apps/mobile/src/components/explore/search/items/SearchWalletByAddressItem.tsx b/apps/mobile/src/components/explore/search/items/SearchWalletByAddressItem.tsx index dceb54b26c1..ae682cd32f1 100644 --- a/apps/mobile/src/components/explore/search/items/SearchWalletByAddressItem.tsx +++ b/apps/mobile/src/components/explore/search/items/SearchWalletByAddressItem.tsx @@ -2,10 +2,10 @@ import React from 'react' import { SearchWalletItemBase } from 'src/components/explore/search/items/SearchWalletItemBase' import { Flex, Text } from 'ui/src' import { imageSizes } from 'ui/src/theme' -import { SearchContext } from 'uniswap/src/features/search/SearchContext' import { sanitizeAddressText, shortenAddress } from 'uniswap/src/utils/addresses' import { AccountIcon } from 'wallet/src/components/accounts/AccountIcon' import { useENSAvatar, useENSName } from 'wallet/src/features/ens/api' +import { SearchContext } from 'wallet/src/features/search/SearchContext' import { WalletByAddressSearchResult } from 'wallet/src/features/search/SearchResult' type SearchWalletByAddressItemProps = { @@ -24,7 +24,7 @@ export function SearchWalletByAddressItem({ return ( - + diff --git a/apps/mobile/src/components/explore/search/items/SearchWalletItemBase.tsx b/apps/mobile/src/components/explore/search/items/SearchWalletItemBase.tsx index ead2cf54655..88c599857c8 100644 --- a/apps/mobile/src/components/explore/search/items/SearchWalletItemBase.tsx +++ b/apps/mobile/src/components/explore/search/items/SearchWalletItemBase.tsx @@ -1,18 +1,16 @@ import React, { PropsWithChildren, useMemo } from 'react' import { useTranslation } from 'react-i18next' import ContextMenu from 'react-native-context-menu-view' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { useEagerExternalProfileNavigation } from 'src/app/navigation/hooks' import { useToggleWatchedWalletCallback } from 'src/features/favorites/hooks' import { disableOnPress } from 'src/utils/disableOnPress' import { ImpactFeedbackStyle, TouchableArea } from 'ui/src' -import { SearchContext } from 'uniswap/src/features/search/SearchContext' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { selectWatchedAddressSet } from 'wallet/src/features/favorites/selectors' -import { WalletSearchResult, extractDomain } from 'wallet/src/features/search/SearchResult' +import { SearchContext } from 'wallet/src/features/search/SearchContext' +import { SearchResultType, WalletSearchResult, extractDomain } from 'wallet/src/features/search/SearchResult' import { addToSearchHistory } from 'wallet/src/features/search/searchHistorySlice' type SearchWalletItemBaseProps = { @@ -26,7 +24,7 @@ export function SearchWalletItemBase({ searchContext, }: PropsWithChildren): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { preload, navigate } = useEagerExternalProfileNavigation() const { address, type } = searchResult const isFavorited = useAppSelector(selectWatchedAddressSet).has(address) diff --git a/apps/mobile/src/components/explore/search/utils.test.ts b/apps/mobile/src/components/explore/search/utils.test.ts index 675f5456f15..5d5dbaa4937 100644 --- a/apps/mobile/src/components/explore/search/utils.test.ts +++ b/apps/mobile/src/components/explore/search/utils.test.ts @@ -4,9 +4,12 @@ import { formatTokenSearchResults, gqlNFTToNFTCollectionSearchResult, } from 'src/components/explore/search/utils' -import { Chain, ExploreSearchQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' +import { + Chain, + ExploreSearchQuery, +} from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' +import { SearchResultType } from 'wallet/src/features/search/SearchResult' import { amount, ethToken, @@ -96,7 +99,9 @@ describe(formatTokenSearchResults, () => { it('returns null if required data is missing', () => { expect(gqlNFTToNFTCollectionSearchResult({ ...collection, name: undefined })).toEqual(null) - expect(gqlNFTToNFTCollectionSearchResult({ ...collection, nftContracts: undefined })).toEqual(null) + expect(gqlNFTToNFTCollectionSearchResult({ ...collection, nftContracts: undefined })).toEqual( + null + ) expect(gqlNFTToNFTCollectionSearchResult({ ...collection, nftContracts: [] })).toEqual(null) }) @@ -120,7 +125,10 @@ describe(formatTokenSearchResults, () => { it('filters out nfts that cannot be formatted', () => { const topNFTCollections = createArray(2, nftCollection) const nftSearchResult = { - edges: [...topNFTCollections.map((nft) => ({ node: nft })), { node: nftCollection({ name: undefined }) }], + edges: [ + ...topNFTCollections.map((nft) => ({ node: nft })), + { node: nftCollection({ name: undefined }) }, + ], } const result = formatNFTCollectionSearchResults(nftSearchResult) diff --git a/apps/mobile/src/components/explore/search/utils.ts b/apps/mobile/src/components/explore/search/utils.ts index eb7760d6a6f..fe79efdfb4d 100644 --- a/apps/mobile/src/components/explore/search/utils.ts +++ b/apps/mobile/src/components/explore/search/utils.ts @@ -2,8 +2,7 @@ import { SEARCH_RESULT_HEADER_KEY } from 'src/components/explore/search/constant import { SearchResultOrHeader } from 'src/components/explore/search/types' import { Chain, ExploreSearchQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' -import { SearchResultType } from 'uniswap/src/features/search/SearchResult' -import { NFTCollectionSearchResult, TokenSearchResult } from 'wallet/src/features/search/SearchResult' +import { NFTCollectionSearchResult, SearchResultType, TokenSearchResult } from 'wallet/src/features/search/SearchResult' import { searchResultId } from 'wallet/src/features/search/searchHistorySlice' const MAX_TOKEN_RESULTS_COUNT = 4 diff --git a/apps/mobile/src/components/forceUpgrade/ForceUpgradeModal.tsx b/apps/mobile/src/components/forceUpgrade/ForceUpgradeModal.tsx index 8a1f069873e..8a25880442c 100644 --- a/apps/mobile/src/components/forceUpgrade/ForceUpgradeModal.tsx +++ b/apps/mobile/src/components/forceUpgrade/ForceUpgradeModal.tsx @@ -6,23 +6,19 @@ import { APP_STORE_LINK } from 'src/constants/urls' import { UpgradeStatus } from 'src/features/forceUpgrade/types' import { Flex, Text, TouchableArea, useSporeColors } from 'ui/src' import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' -import { DynamicConfigs, ForceUpgradeConfigKey } from 'uniswap/src/features/gating/configs' -import { useDynamicConfigValue } from 'uniswap/src/features/gating/hooks' +import { DynamicConfigs } from 'uniswap/src/features/gating/configs' +import { useDynamicConfig } from 'uniswap/src/features/gating/hooks' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { openUri } from 'uniswap/src/utils/linking' import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' import { WarningSeverity } from 'wallet/src/features/transactions/WarningModal/types' import { SignerMnemonicAccount } from 'wallet/src/features/wallet/accounts/types' import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { openUri } from 'wallet/src/utils/linking' export function ForceUpgradeModal(): JSX.Element { const { t } = useTranslation() const colors = useSporeColors() - const forceUpgradeStatusString = useDynamicConfigValue( - DynamicConfigs.MobileForceUpgrade, - ForceUpgradeConfigKey.Status, - '' as string, - ) + const forceUpgradeConfig = useDynamicConfig(DynamicConfigs.MobileForceUpgrade) const [isVisible, setIsVisible] = useState(false) const [upgradeStatus, setUpgradeStatus] = useState(UpgradeStatus.NotRequired) @@ -34,15 +30,17 @@ export function ForceUpgradeModal(): JSX.Element { const [showSeedPhrase, setShowSeedPhrase] = useState(false) useEffect(() => { + const statusString = forceUpgradeConfig.getValue('status')?.toString() + let status = UpgradeStatus.NotRequired - if (forceUpgradeStatusString === 'recommended') { + if (statusString === 'recommended') { status = UpgradeStatus.Recommended - } else if (forceUpgradeStatusString === 'required') { + } else if (statusString === 'required') { status = UpgradeStatus.Required } setUpgradeStatus(status) setIsVisible(status !== UpgradeStatus.NotRequired) - }, [forceUpgradeStatusString]) + }, [forceUpgradeConfig]) const onPressConfirm = async (): Promise => { await openUri(APP_STORE_LINK, /*openExternalBrowser=*/ true, /*isSafeUri=*/ true) diff --git a/apps/mobile/src/components/home/ActivityTab.tsx b/apps/mobile/src/components/home/ActivityTab.tsx index 937f792a81e..f135a6a5e04 100644 --- a/apps/mobile/src/components/home/ActivityTab.tsx +++ b/apps/mobile/src/components/home/ActivityTab.tsx @@ -1,7 +1,7 @@ import { ForwardedRef, forwardRef, memo, useMemo } from 'react' import { FlatList, RefreshControl } from 'react-native' import Animated from 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { useAdaptiveFooter } from 'src/components/home/hooks' import { AnimatedBottomSheetFlatList, AnimatedFlatList } from 'src/components/layout/AnimatedFlatList' import { TAB_BAR_HEIGHT, TabProps } from 'src/components/layout/TabHelpers' @@ -33,7 +33,7 @@ export const ActivityTab = memo( }, ref, ) { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() const insets = useDeviceInsets() diff --git a/apps/mobile/src/components/home/FeedTab.tsx b/apps/mobile/src/components/home/FeedTab.tsx index a59a7eb67b9..a4084f50641 100644 --- a/apps/mobile/src/components/home/FeedTab.tsx +++ b/apps/mobile/src/components/home/FeedTab.tsx @@ -2,8 +2,7 @@ import { ForwardedRef, forwardRef, memo, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { FlatList, RefreshControl } from 'react-native' import Animated from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { useAdaptiveFooter } from 'src/components/home/hooks' import { AnimatedFlatList } from 'src/components/layout/AnimatedFlatList' import { TAB_BAR_HEIGHT, TabProps } from 'src/components/layout/TabHelpers' @@ -41,7 +40,7 @@ export const FeedTab = memo( ref, ) { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() const insets = useDeviceInsets() diff --git a/apps/mobile/src/components/home/NftsTab.tsx b/apps/mobile/src/components/home/NftsTab.tsx index 7659607a2d2..f4a8e185a31 100644 --- a/apps/mobile/src/components/home/NftsTab.tsx +++ b/apps/mobile/src/components/home/NftsTab.tsx @@ -7,7 +7,6 @@ import { useAdaptiveFooter } from 'src/components/home/hooks' import { TAB_BAR_HEIGHT, TabProps } from 'src/components/layout/TabHelpers' import { Flex, useDeviceInsets, useSporeColors } from 'ui/src' import { GQLQueries } from 'uniswap/src/data/graphql/uniswap-data-api/queries' -import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { isAndroid } from 'utilities/src/platform' import { NftsList } from 'wallet/src/components/nfts/NftsList' @@ -38,7 +37,7 @@ export const NftsTab = memo( ) const renderNFTItem = useCallback( - (item: NFTItem, index: number) => { + (item: NFTItem) => { const onPressNft = (): void => { navigation.navigate(MobileScreens.NFTItem, { owner, @@ -49,7 +48,7 @@ export const NftsTab = memo( }) } - return + return }, [owner, navigation], ) @@ -66,7 +65,7 @@ export const NftsTab = memo( }, [refreshing, headerHeight, onRefresh, colors.neutral3, insets.top]) return ( - + { - dispatch(openModal({ name: ModalName.FiatOnRampAggregator })) - }, [dispatch]) + dispatch( + openModal({ + name: forAggregatorEnabled ? ModalName.FiatOnRampAggregator : ModalName.FiatOnRamp, + }), + ) + }, [dispatch, forAggregatorEnabled]) const onPressReceive = useCallback(() => { dispatch( @@ -86,26 +90,16 @@ export const TokensTab = memo( const renderEmpty = useMemo((): JSX.Element => { // Show different empty state on external profile pages return isExternalProfile ? ( - - } - title={t('home.tokens.empty.title')} - onPress={onPressAction} - /> - + } + title={t('home.tokens.empty.title')} + onPress={onPressAction} + /> ) : ( ) - }, [ - isExternalProfile, - onPressAction, - onPressBuy, - onPressImport, - onPressReceive, - containerProps?.emptyComponentStyle, - t, - ]) + }, [isExternalProfile, onPressAction, onPressBuy, onPressImport, onPressReceive, t]) return ( @@ -119,7 +113,6 @@ export const TokensTab = memo( refreshing={refreshing} renderedInModal={renderedInModal} scrollHandler={scrollHandler} - testID={testID} onPressToken={onPressToken} onRefresh={onRefresh} /> diff --git a/apps/mobile/src/components/layout/SafeKeyboardScreen.tsx b/apps/mobile/src/components/layout/SafeKeyboardScreen.tsx deleted file mode 100644 index ba56667f491..00000000000 --- a/apps/mobile/src/components/layout/SafeKeyboardScreen.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import React, { PropsWithChildren, useState } from 'react' -import { KeyboardAvoidingView, ScrollView, StyleSheet } from 'react-native' -import { Screen, ScreenProps } from 'src/components/layout/Screen' -import { Flex, flexStyles } from 'ui/src' -import { spacing } from 'ui/src/theme' -import { useKeyboardLayout } from 'uniswap/src/utils/useKeyboardLayout' -import { isIOS } from 'utilities/src/platform' - -type OnboardingScreenProps = ScreenProps & { - header?: JSX.Element - footer?: JSX.Element - minHeightWhenKeyboardExpanded?: boolean -} - -export function SafeKeyboardScreen({ - children, - header, - footer, - minHeightWhenKeyboardExpanded = false, - ...screenProps -}: PropsWithChildren): JSX.Element { - const [footerHeight, setFooterHeight] = useState(0) - const keyboard = useKeyboardLayout() - - const compact = keyboard.isVisible && keyboard.containerHeight !== 0 - const containerStyle = compact ? styles.compact : styles.expand - - // This makes sure this component behaves just like `behavior="padding"` when - // there's enough space on the screen to show all components. - const minHeight = minHeightWhenKeyboardExpanded && compact ? keyboard.containerHeight - footerHeight : 0 - - return ( - - - {header} - - - {children} - - - { - setFooterHeight(height) - }} - > - {footer} - - - - ) -} - -const styles = StyleSheet.create({ - base: { - flex: 1, - justifyContent: 'flex-end', - }, - compact: { - flexGrow: 0, - }, - container: { - paddingBottom: spacing.spacing12, - }, - expand: { - flexGrow: 1, - }, -}) diff --git a/apps/mobile/src/components/layout/Screen.tsx b/apps/mobile/src/components/layout/Screen.tsx index 7dd87c1d712..2e88c90432a 100644 --- a/apps/mobile/src/components/layout/Screen.tsx +++ b/apps/mobile/src/components/layout/Screen.tsx @@ -5,7 +5,7 @@ import { Flex, FlexProps, useDeviceInsets } from 'ui/src' // Used to determine amount of top padding for short screens export const SHORT_SCREEN_HEADER_HEIGHT_RATIO = 0.88 -export type ScreenProps = FlexProps & +type ScreenProps = FlexProps & // The SafeAreaView from react-native-safe-area-context also supports a `mode` prop which // lets you choose if `edges` are added as margin or padding, but we don’t use that so // our Screen component doesn't need to support it diff --git a/apps/mobile/src/components/layout/TabHelpers.tsx b/apps/mobile/src/components/layout/TabHelpers.tsx index e441424ffb4..36a0f603484 100644 --- a/apps/mobile/src/components/layout/TabHelpers.tsx +++ b/apps/mobile/src/components/layout/TabHelpers.tsx @@ -85,7 +85,6 @@ export type TabProps = { refreshing?: boolean onRefresh?: () => void headerHeight?: number - testID?: string } export type TabContentProps = Partial> & { @@ -107,7 +106,7 @@ export const TabLabel = ({ isExternalProfile?: boolean }): JSX.Element => { return ( - + {route.title} diff --git a/apps/mobile/src/components/mnemonic/HiddenMnemonicWordView.tsx b/apps/mobile/src/components/mnemonic/HiddenMnemonicWordView.tsx index 142df3b4087..2f25f72e983 100644 --- a/apps/mobile/src/components/mnemonic/HiddenMnemonicWordView.tsx +++ b/apps/mobile/src/components/mnemonic/HiddenMnemonicWordView.tsx @@ -11,22 +11,27 @@ export function HiddenMnemonicWordView(): JSX.Element { backgroundColor="$surface2" borderRadius="$rounded20" gap="$spacing36" + height="40%" mt="$spacing16" px="$spacing32" py="$spacing24" > - - + + + + + + ) } function HiddenWordViewColumn(): JSX.Element { return ( - + <> {new Array(ROW_COUNT).fill(0).map((_, idx) => ( ))} - + ) } diff --git a/apps/mobile/src/components/mnemonic/SeedPhraseDisplay.tsx b/apps/mobile/src/components/mnemonic/SeedPhraseDisplay.tsx index 1b30e231b53..5e5c238a400 100644 --- a/apps/mobile/src/components/mnemonic/SeedPhraseDisplay.tsx +++ b/apps/mobile/src/components/mnemonic/SeedPhraseDisplay.tsx @@ -65,9 +65,7 @@ export function SeedPhraseDisplay({ mnemonicId, onDismiss, walletNeedsRestore }: ) : ( - - - + )} diff --git a/apps/mobile/src/components/text/LongMarkdownText.tsx b/apps/mobile/src/components/text/LongMarkdownText.tsx index 7905472efd0..e33d6a80755 100644 --- a/apps/mobile/src/components/text/LongMarkdownText.tsx +++ b/apps/mobile/src/components/text/LongMarkdownText.tsx @@ -4,7 +4,7 @@ import { LayoutChangeEvent } from 'react-native' import Markdown, { MarkdownProps } from 'react-native-markdown-display' import { Flex, SpaceTokens, Text, useSporeColors } from 'ui/src' import { fonts } from 'ui/src/theme' -import { openUri } from 'uniswap/src/utils/linking' +import { openUri } from 'wallet/src/utils/linking' type LongMarkdownTextProps = { initialDisplayedLines?: number diff --git a/apps/mobile/src/components/unitags/ChangeUnitagModal.tsx b/apps/mobile/src/components/unitags/ChangeUnitagModal.tsx index bacaa3e5156..d58b4b39381 100644 --- a/apps/mobile/src/components/unitags/ChangeUnitagModal.tsx +++ b/apps/mobile/src/components/unitags/ChangeUnitagModal.tsx @@ -3,7 +3,6 @@ import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { ActivityIndicator, EmitterSubscription, Keyboard } from 'react-native' import { getUniqueId } from 'react-native-device-info' -import { useDispatch } from 'react-redux' import { Button, Flex, Text, useSporeColors } from 'ui/src' import { AlertTriangle } from 'ui/src/components/icons' import { fonts, spacing } from 'ui/src/theme' @@ -25,6 +24,7 @@ import { useCanAddressClaimUnitag, useCanClaimUnitagName } from 'wallet/src/feat import { parseUnitagErrorCode } from 'wallet/src/features/unitags/utils' import { useWalletSigners } from 'wallet/src/features/wallet/context' import { useAccount } from 'wallet/src/features/wallet/hooks' +import { useAppDispatch } from 'wallet/src/state' export function ChangeUnitagModal({ unitag, @@ -38,7 +38,7 @@ export function ChangeUnitagModal({ const { t } = useTranslation() const colors = useSporeColors() const navigation = useNavigation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { data: deviceId } = useAsyncData(getUniqueId) const account = useAccount(address) const signerManager = useWalletSigners() diff --git a/apps/mobile/src/components/unitags/DeleteUnitagModal.tsx b/apps/mobile/src/components/unitags/DeleteUnitagModal.tsx index a9782c14530..e36ee7f4070 100644 --- a/apps/mobile/src/components/unitags/DeleteUnitagModal.tsx +++ b/apps/mobile/src/components/unitags/DeleteUnitagModal.tsx @@ -2,7 +2,6 @@ import { useNavigation } from '@react-navigation/native' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ActivityIndicator } from 'react-native' -import { useDispatch } from 'react-redux' import { Button, Flex, Text, useSporeColors } from 'ui/src' import { AlertTriangle } from 'ui/src/components/icons' import { fonts } from 'ui/src/theme' @@ -17,6 +16,7 @@ import { AppNotificationType } from 'wallet/src/features/notifications/types' import { deleteUnitag } from 'wallet/src/features/unitags/api' import { useWalletSigners } from 'wallet/src/features/wallet/context' import { useAccount } from 'wallet/src/features/wallet/hooks' +import { useAppDispatch } from 'wallet/src/state' export function DeleteUnitagModal({ unitag, @@ -30,7 +30,7 @@ export function DeleteUnitagModal({ const { t } = useTranslation() const colors = useSporeColors() const navigation = useNavigation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { triggerRefetchUnitags } = useUnitagUpdater() const account = useAccount(address) const signerManager = useWalletSigners() diff --git a/apps/mobile/src/components/unitags/UnitagBanner.tsx b/apps/mobile/src/components/unitags/UnitagBanner.tsx index cc5efe4e0bb..8e10a952282 100644 --- a/apps/mobile/src/components/unitags/UnitagBanner.tsx +++ b/apps/mobile/src/components/unitags/UnitagBanner.tsx @@ -1,7 +1,7 @@ import React from 'react' import { Trans, useTranslation } from 'react-i18next' import { Keyboard } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { openModal } from 'src/features/modals/modalSlice' import { Flex, Image, Text, TouchableArea, TouchableAreaProps, useIsDarkMode, useIsShortMobileDevice } from 'ui/src' @@ -30,7 +30,7 @@ export function UnitagBanner({ compact?: boolean entryPoint: MobileScreens.Home | MobileScreens.Settings }): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const { fullWidth } = useDeviceDimensions() const isDarkMode = useIsDarkMode() diff --git a/apps/mobile/src/components/unitags/UnitagsIntroModal.tsx b/apps/mobile/src/components/unitags/UnitagsIntroModal.tsx index c3e2def592b..2b2472893a3 100644 --- a/apps/mobile/src/components/unitags/UnitagsIntroModal.tsx +++ b/apps/mobile/src/components/unitags/UnitagsIntroModal.tsx @@ -2,8 +2,7 @@ import { SharedEventName } from '@uniswap/analytics-events' import React from 'react' import { useTranslation } from 'react-i18next' import 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { closeModal } from 'src/features/modals/modalSlice' import { selectModalState } from 'src/features/modals/selectModalState' @@ -21,7 +20,7 @@ import { setHasCompletedUnitagsIntroModal } from 'wallet/src/features/behaviorHi export function UnitagsIntroModal(): JSX.Element { const { t } = useTranslation() const isDarkMode = useIsDarkMode() - const appDispatch = useDispatch() + const appDispatch = useAppDispatch() const modalState = useAppSelector(selectModalState(ModalName.UnitagsIntro)).initialState const address = modalState?.address const entryPoint = modalState?.entryPoint diff --git a/apps/mobile/src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext.tsx b/apps/mobile/src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext.tsx deleted file mode 100644 index 6b43b191058..00000000000 --- a/apps/mobile/src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { PropsWithChildren, createContext, useCallback, useContext, useMemo, useState } from 'react' -import { Keyboard } from 'react-native' -import { - PasswordErrors, - PasswordStrength, - getPasswordStrength, - isPasswordStrongEnough, -} from 'wallet/src/utils/password' - -export type CloudBackupPasswordFormContextType = { - password: string - passwordStrength: PasswordStrength - error: PasswordErrors | undefined - isConfirmation: boolean - isInputValid: boolean - onPressNext: () => void - onPasswordSubmitEditing: () => void - onPasswordChangeText: (newPassword: string) => void -} - -export const CloudBackupPasswordFormContext = createContext(null) - -export function useCloudBackupPasswordFormContext(): CloudBackupPasswordFormContextType { - const context = useContext(CloudBackupPasswordFormContext) - - if (!context) { - throw new Error('useCloudBackupPasswordFormContext must be used within a CloudBackupPasswordFormContextProvider') - } - - return context -} - -type CloudBackupPasswordFormContextProviderProps = PropsWithChildren<{ - isConfirmation?: boolean - passwordToConfirm?: string - navigateToNextScreen: ({ password }: { password: string }) => void -}> - -export function CloudBackupPasswordFormContextProvider({ - children, - isConfirmation = false, - passwordToConfirm, - navigateToNextScreen, -}: CloudBackupPasswordFormContextProviderProps): JSX.Element { - const [password, setPassword] = useState('') - const [error, setError] = useState(undefined) - const [passwordStrength, setPasswordStrength] = useState(PasswordStrength.NONE) - - const isStrongPassword = isPasswordStrongEnough({ - minStrength: PasswordStrength.MEDIUM, - currentStrength: passwordStrength, - }) - - const isInputValid = !error && password.length > 0 && (isConfirmation || isStrongPassword) - - const onPasswordChangeText = useCallback( - (newPassword: string): void => { - if (isConfirmation && newPassword === password) { - setError(undefined) - } - // always reset error if not confirmation - if (!isConfirmation) { - setPasswordStrength(getPasswordStrength(newPassword)) - setError(undefined) - } - setPassword(newPassword) - }, - [isConfirmation, password], - ) - - const onPasswordSubmitEditing = useCallback((): void => { - if (!isConfirmation && !isStrongPassword) { - return - } - if (isConfirmation && passwordToConfirm !== password) { - setError(PasswordErrors.PasswordsDoNotMatch) - return - } - setError(undefined) - Keyboard.dismiss() - }, [isConfirmation, isStrongPassword, password, passwordToConfirm]) - - const onPressNext = useCallback((): void => { - if (isConfirmation && passwordToConfirm !== password) { - setError(PasswordErrors.PasswordsDoNotMatch) - return - } - - if (!error) { - navigateToNextScreen({ password }) - } - }, [error, isConfirmation, navigateToNextScreen, password, passwordToConfirm]) - - const contextValue = useMemo( - () => ({ - password, - passwordStrength, - error, - isConfirmation, - isInputValid, - onPressNext, - onPasswordChangeText, - onPasswordSubmitEditing, - }), - [ - error, - passwordStrength, - isConfirmation, - isInputValid, - onPressNext, - onPasswordChangeText, - onPasswordSubmitEditing, - password, - ], - ) - - return ( - {children} - ) -} diff --git a/apps/mobile/src/features/CloudBackup/CloudBackupForm/ContinueButton.tsx b/apps/mobile/src/features/CloudBackup/CloudBackupForm/ContinueButton.tsx deleted file mode 100644 index 19776aae667..00000000000 --- a/apps/mobile/src/features/CloudBackup/CloudBackupForm/ContinueButton.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { useTranslation } from 'react-i18next' -import { useCloudBackupPasswordFormContext } from 'src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext' -import { Button } from 'ui/src' -import { TestID } from 'uniswap/src/test/fixtures/testIDs' - -export function ContinueButton(): JSX.Element { - const { isInputValid, onPressNext } = useCloudBackupPasswordFormContext() - - const { t } = useTranslation() - - return ( - - ) -} diff --git a/apps/mobile/src/features/CloudBackup/CloudBackupForm/PasswordInput.tsx b/apps/mobile/src/features/CloudBackup/CloudBackupForm/PasswordInput.tsx deleted file mode 100644 index 1726249dea1..00000000000 --- a/apps/mobile/src/features/CloudBackup/CloudBackupForm/PasswordInput.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { useRef } from 'react' -import { useTranslation } from 'react-i18next' -import { TextInput } from 'react-native' -import { PasswordInput as Input } from 'src/components/input/PasswordInput' -import { useCloudBackupPasswordFormContext } from 'src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext' -import { PasswordError } from 'src/features/onboarding/PasswordError' -import { Flex, Text } from 'ui/src' -import { DiamondExclamation } from 'ui/src/components/icons' -import { iconSizes } from 'ui/src/theme' -import { useDebounce } from 'utilities/src/time/timing' -import { - PASSWORD_VALIDATION_DEBOUNCE_MS, - PasswordErrors, - PasswordStrength, - getPasswordStrengthTextAndColor, -} from 'wallet/src/utils/password' - -export function PasswordInput(): JSX.Element { - const { password, error, passwordStrength, isConfirmation, onPasswordChangeText, onPasswordSubmitEditing } = - useCloudBackupPasswordFormContext() - const debouncedPasswordStrength = useDebounce(passwordStrength, PASSWORD_VALIDATION_DEBOUNCE_MS) - - const { t } = useTranslation() - const passwordInputRef = useRef(null) - - let errorText = '' - if (error === PasswordErrors.PasswordsDoNotMatch) { - errorText = t('settings.setting.backup.password.error.mismatch') - } else if (error) { - // use the upstream zxcvbn error message - errorText = error - } - - return ( - - - { - onPasswordChangeText(newText) - }} - onSubmitEditing={onPasswordSubmitEditing} - /> - {!isConfirmation && } - {error ? : null} - - {!isConfirmation && ( - - - - {t('settings.setting.backup.password.disclaimer')} - - - )} - - ) -} - -function PasswordStrengthText({ strength }: { strength: PasswordStrength }): JSX.Element { - const { t } = useTranslation() - const { color } = getPasswordStrengthTextAndColor(strength) - - const hasPassword = strength !== PasswordStrength.NONE - let strengthText: string = '' - switch (strength) { - case PasswordStrength.STRONG: - strengthText = t('settings.setting.backup.password.strong') - break - case PasswordStrength.MEDIUM: - strengthText = t('settings.setting.backup.password.medium') - break - case PasswordStrength.WEAK: - strengthText = t('settings.setting.backup.password.weak') - break - default: - break - } - - return ( - - - {strengthText} - - - ) -} diff --git a/apps/mobile/src/features/CloudBackup/CloudBackupForm/index.ts b/apps/mobile/src/features/CloudBackup/CloudBackupForm/index.ts deleted file mode 100644 index fa72f4b3769..00000000000 --- a/apps/mobile/src/features/CloudBackup/CloudBackupForm/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CloudBackupPasswordFormContextProvider } from 'src/features/CloudBackup/CloudBackupForm/CloudBackupPasswordFormContext' -import { ContinueButton } from 'src/features/CloudBackup/CloudBackupForm/ContinueButton' -import { PasswordInput } from 'src/features/CloudBackup/CloudBackupForm/PasswordInput' - -export const CloudBackupPassword = { - PasswordInput, - ContinueButton, - FormProvider: CloudBackupPasswordFormContextProvider, -} diff --git a/apps/mobile/src/features/CloudBackup/CloudBackupPasswordForm.tsx b/apps/mobile/src/features/CloudBackup/CloudBackupPasswordForm.tsx new file mode 100644 index 00000000000..6effc6f4d33 --- /dev/null +++ b/apps/mobile/src/features/CloudBackup/CloudBackupPasswordForm.tsx @@ -0,0 +1,155 @@ +import React, { useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Keyboard, TextInput } from 'react-native' +import { PasswordInput } from 'src/components/input/PasswordInput' +import { PasswordError } from 'src/features/onboarding/PasswordError' +import { Button, Flex, Text } from 'ui/src' +import { DiamondExclamation } from 'ui/src/components/icons' +import { iconSizes } from 'ui/src/theme' +import { TestID } from 'uniswap/src/test/fixtures/testIDs' +import { useDebounce } from 'utilities/src/time/timing' +import { + PASSWORD_VALIDATION_DEBOUNCE_MS, + PasswordErrors, + PasswordStrength, + getPasswordStrength, + getPasswordStrengthTextAndColor, + isPasswordStrongEnough, +} from 'wallet/src/utils/password' + +export type CloudBackupPasswordProps = { + navigateToNextScreen: ({ password }: { password: string }) => void + isConfirmation?: boolean + passwordToConfirm?: string +} + +export function CloudBackupPasswordForm({ + navigateToNextScreen, + isConfirmation, + passwordToConfirm, +}: CloudBackupPasswordProps): JSX.Element { + const { t } = useTranslation() + + const passwordInputRef = useRef(null) + const [password, setPassword] = useState('') + + const [error, setError] = useState(undefined) + + const [passwordStrength, setPasswordStrength] = useState(PasswordStrength.NONE) + const debouncedPasswordStrength = useDebounce(passwordStrength, PASSWORD_VALIDATION_DEBOUNCE_MS) + const isStrongPassword = isPasswordStrongEnough({ + minStrength: PasswordStrength.MEDIUM, + currentStrength: passwordStrength, + }) + + const isButtonDisabled = !!error || password.length === 0 || (!isConfirmation && !isStrongPassword) + + const onPasswordChangeText = (newPassword: string): void => { + if (isConfirmation && newPassword === password) { + setError(undefined) + } + // always reset error if not confirmation + if (!isConfirmation) { + setPasswordStrength(getPasswordStrength(newPassword)) + setError(undefined) + } + setPassword(newPassword) + } + + const onPasswordSubmitEditing = (): void => { + if (!isConfirmation && !isStrongPassword) { + return + } + if (isConfirmation && passwordToConfirm !== password) { + setError(PasswordErrors.PasswordsDoNotMatch) + return + } + setError(undefined) + Keyboard.dismiss() + } + + const onPressNext = (): void => { + if (isConfirmation && passwordToConfirm !== password) { + setError(PasswordErrors.PasswordsDoNotMatch) + return + } + + if (!error) { + navigateToNextScreen({ password }) + } + } + + let errorText = '' + if (error === PasswordErrors.PasswordsDoNotMatch) { + errorText = t('settings.setting.backup.password.error.mismatch') + } else if (error) { + // use the upstream zxcvbn error message + errorText = error + } + + return ( + <> + + + { + setError(undefined) + onPasswordChangeText(newText) + }} + onSubmitEditing={onPasswordSubmitEditing} + /> + {!isConfirmation && } + {error ? : null} + + {!isConfirmation && ( + + + + {t('settings.setting.backup.password.disclaimer')} + + + )} + + + + ) +} + +function PasswordStrengthText({ strength }: { strength: PasswordStrength }): JSX.Element { + const { t } = useTranslation() + const { color } = getPasswordStrengthTextAndColor(strength) + + const hasPassword = strength !== PasswordStrength.NONE + let strengthText: string = '' + switch (strength) { + case PasswordStrength.STRONG: + strengthText = t('settings.setting.backup.password.strong') + break + case PasswordStrength.MEDIUM: + strengthText = t('settings.setting.backup.password.medium') + break + case PasswordStrength.WEAK: + strengthText = t('settings.setting.backup.password.weak') + break + default: + break + } + + return ( + + + {strengthText} + + + ) +} diff --git a/apps/mobile/src/features/CloudBackup/CloudBackupProcessingAnimation.tsx b/apps/mobile/src/features/CloudBackup/CloudBackupProcessingAnimation.tsx index efab83194da..3396fbaa1f8 100644 --- a/apps/mobile/src/features/CloudBackup/CloudBackupProcessingAnimation.tsx +++ b/apps/mobile/src/features/CloudBackup/CloudBackupProcessingAnimation.tsx @@ -3,7 +3,6 @@ import { NativeStackNavigationProp } from '@react-navigation/native-stack' import React, { useCallback, useEffect, useReducer } from 'react' import { useTranslation } from 'react-i18next' import { ActivityIndicator, Alert } from 'react-native' -import { useDispatch } from 'react-redux' import { OnboardingStackParamList, SettingsStackParamList } from 'src/app/navigation/types' import { backupMnemonicToCloudStorage } from 'src/features/CloudBackup/RNCloudStorageBackupsManager' import { Flex, Text } from 'ui/src' @@ -18,6 +17,7 @@ import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingC import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' import { AccountType, BackupType } from 'wallet/src/features/wallet/accounts/types' import { useSignerAccountIfExists } from 'wallet/src/features/wallet/hooks' +import { useAppDispatch } from 'wallet/src/state' type Props = { accountAddress: Address @@ -38,7 +38,7 @@ export function CloudBackupProcessingAnimation({ navigation, }: Props): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { addBackupMethod, getImportedAccounts, getOnboardingAccount } = useOnboardingContext() const onboardingAccount = getOnboardingAccount() const importedAccounts = getImportedAccounts() diff --git a/apps/mobile/src/features/appRating/saga.ts b/apps/mobile/src/features/appRating/saga.ts index 3bd4a1e8de0..55a83635310 100644 --- a/apps/mobile/src/features/appRating/saga.ts +++ b/apps/mobile/src/features/appRating/saga.ts @@ -8,7 +8,6 @@ import { Statsig } from 'uniswap/src/features/gating/sdk/statsig' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import i18n from 'uniswap/src/i18n/i18n' -import { openUri } from 'uniswap/src/utils/linking' import { logger } from 'utilities/src/logger/logger' import { isAndroid } from 'utilities/src/platform' import { ONE_DAY_MS, ONE_SECOND_MS } from 'utilities/src/time/time' @@ -17,6 +16,7 @@ import { TransactionStatus, TransactionType } from 'wallet/src/features/transact import { selectActiveAccountAddress } from 'wallet/src/features/wallet/selectors' import { setAppRating } from 'wallet/src/features/wallet/slice' import { appSelect } from 'wallet/src/state' +import { openUri } from 'wallet/src/utils/linking' // at most once per reminder period (120 days) const MIN_PROMPT_REMINDER_MS = 120 * ONE_DAY_MS diff --git a/apps/mobile/src/features/appRating/selectors.test.ts b/apps/mobile/src/features/appRating/selectors.test.ts index f99afcd35c7..becc2b51cbe 100644 --- a/apps/mobile/src/features/appRating/selectors.test.ts +++ b/apps/mobile/src/features/appRating/selectors.test.ts @@ -1,7 +1,11 @@ import { hasConsecutiveRecentSwapsSelector } from 'src/features/appRating/selectors' import { UniverseChainId } from 'uniswap/src/types/chains' import { ONE_HOUR_MS, ONE_MINUTE_MS } from 'utilities/src/time/time' -import { TransactionDetails, TransactionStatus, TransactionType } from 'wallet/src/features/transactions/types' +import { + TransactionDetails, + TransactionStatus, + TransactionType, +} from 'wallet/src/features/transactions/types' import { RootState } from 'wallet/src/state' import { signerMnemonicAccount } from 'wallet/src/test/fixtures' import { preloadedWalletState } from 'wallet/src/test/fixtures/wallet/redux' diff --git a/apps/mobile/src/features/dataApi/balances.test.ts b/apps/mobile/src/features/dataApi/balances.test.ts index 0bb18abd31b..1e9d2ca605c 100644 --- a/apps/mobile/src/features/dataApi/balances.test.ts +++ b/apps/mobile/src/features/dataApi/balances.test.ts @@ -35,10 +35,10 @@ describe(useBalances, () => { const { resolvers } = queryResolvers({ portfolios: () => [Portfolio], }) - const { result } = renderHook(() => useBalances(balances.map(({ currencyInfo: { currencyId } }) => currencyId)), { - preloadedState, - resolvers, - }) + const { result } = renderHook( + () => useBalances(balances.map(({ currencyInfo: { currencyId } }) => currencyId)), + { preloadedState, resolvers } + ) await waitFor(() => { // The response contains only the first currency as the second one is not in the portfolio diff --git a/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts b/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts index bd95777755b..130001f2993 100644 --- a/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts +++ b/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts @@ -4,13 +4,13 @@ import { Alert } from 'react-native' import { URL } from 'react-native-url-polyfill' import { appSelect } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' -import { getScantasticQueryParams, parseScantasticParams } from 'src/components/Requests/ScanSheet/util' +import { getScantasticQueryParams, parseScantasticParams } from 'src/components/WalletConnect/ScanSheet/util' import { UNISWAP_URL_SCHEME, UNISWAP_URL_SCHEME_WALLETCONNECT_AS_PARAM, UNISWAP_WALLETCONNECT_URL, } from 'src/features/deepLinking/constants' -import { handleOnRampReturnLink } from 'src/features/deepLinking/handleOnRampReturnLinkSaga' +import { handleMoonpayReturnLink } from 'src/features/deepLinking/handleMoonpayReturnLinkSaga' import { handleSwapLink } from 'src/features/deepLinking/handleSwapLinkSaga' import { handleTransactionLink } from 'src/features/deepLinking/handleTransactionLinkSaga' import { closeAllModals, openModal } from 'src/features/modals/modalSlice' @@ -29,12 +29,11 @@ import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { ShareableEntity } from 'uniswap/src/types/sharing' import { WidgetType } from 'uniswap/src/types/widgets' import { buildCurrencyId, buildNativeCurrencyId } from 'uniswap/src/utils/currencyId' -import { openUri } from 'uniswap/src/utils/linking' import { logger } from 'utilities/src/logger/logger' import { ScantasticParams } from 'wallet/src/features/scantastic/types' import { selectAccounts, selectActiveAccount, selectActiveAccountAddress } from 'wallet/src/features/wallet/selectors' import { setAccountAsActive } from 'wallet/src/features/wallet/slice' -import { UNISWAP_APP_NATIVE_TOKEN } from 'wallet/src/utils/linking' +import { UNISWAP_APP_NATIVE_TOKEN, openUri } from 'wallet/src/utils/linking' export interface DeepLink { url: string @@ -288,7 +287,7 @@ export function* handleDeepLink(action: ReturnType) { switch (screen) { case 'transaction': if (fiatOnRamp) { - yield* call(handleOnRampReturnLink) + yield* call(handleMoonpayReturnLink) } else { yield* call(handleTransactionLink) } diff --git a/apps/mobile/src/features/deepLinking/handleOnRampReturnLinkSaga.test.ts b/apps/mobile/src/features/deepLinking/handleMoonpayReturnLinkSaga.test.ts similarity index 78% rename from apps/mobile/src/features/deepLinking/handleOnRampReturnLinkSaga.test.ts rename to apps/mobile/src/features/deepLinking/handleMoonpayReturnLinkSaga.test.ts index 59d4de9cf4e..0ba9a9bdae3 100644 --- a/apps/mobile/src/features/deepLinking/handleOnRampReturnLinkSaga.test.ts +++ b/apps/mobile/src/features/deepLinking/handleMoonpayReturnLinkSaga.test.ts @@ -1,15 +1,15 @@ import { call, put } from '@redux-saga/core/effects' import { expectSaga } from 'redux-saga-test-plan' import { navigate } from 'src/app/navigation/rootNavigation' -import { handleOnRampReturnLink } from 'src/features/deepLinking/handleOnRampReturnLinkSaga' +import { handleMoonpayReturnLink } from 'src/features/deepLinking/handleMoonpayReturnLinkSaga' import { HomeScreenTabIndex } from 'src/screens/HomeScreenTabIndex' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { forceFetchFiatOnRampTransactions } from 'wallet/src/features/transactions/slice' import { dismissInAppBrowser } from 'wallet/src/utils/linking' -describe(handleOnRampReturnLink, () => { - it('Navigates to the home screen activity tab when coming back from on-ramp widget', () => { - return expectSaga(handleOnRampReturnLink) +describe(handleMoonpayReturnLink, () => { + it('Navigates to the home screen activity tab when coming back from moonpay', () => { + return expectSaga(handleMoonpayReturnLink) .provide([ [put(forceFetchFiatOnRampTransactions), undefined], [call(navigate, MobileScreens.Home, { tab: HomeScreenTabIndex.Activity }), undefined], diff --git a/apps/mobile/src/features/deepLinking/handleOnRampReturnLinkSaga.ts b/apps/mobile/src/features/deepLinking/handleMoonpayReturnLinkSaga.ts similarity index 92% rename from apps/mobile/src/features/deepLinking/handleOnRampReturnLinkSaga.ts rename to apps/mobile/src/features/deepLinking/handleMoonpayReturnLinkSaga.ts index 19c0a67eeb1..adbc437ebc9 100644 --- a/apps/mobile/src/features/deepLinking/handleOnRampReturnLinkSaga.ts +++ b/apps/mobile/src/features/deepLinking/handleMoonpayReturnLinkSaga.ts @@ -5,7 +5,7 @@ import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { forceFetchFiatOnRampTransactions } from 'wallet/src/features/transactions/slice' import { dismissInAppBrowser } from 'wallet/src/utils/linking' -export function* handleOnRampReturnLink() { +export function* handleMoonpayReturnLink() { yield* put(forceFetchFiatOnRampTransactions()) yield* call(navigate, MobileScreens.Home, { tab: HomeScreenTabIndex.Activity }) yield* call(dismissInAppBrowser) diff --git a/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.test.ts b/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.test.ts index 47719d2e6e1..7a36fa7cbee 100644 --- a/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.test.ts +++ b/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.test.ts @@ -2,11 +2,14 @@ import { URL } from 'react-native-url-polyfill' import { expectSaga } from 'redux-saga-test-plan' import { handleSwapLink } from 'src/features/deepLinking/handleSwapLinkSaga' import { openModal } from 'src/features/modals/modalSlice' -import { DAI, UNI } from 'uniswap/src/constants/tokens' -import { AssetType } from 'uniswap/src/entities/assets' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { CurrencyField, TransactionState } from 'uniswap/src/features/transactions/transactionState/types' import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' +import { DAI, UNI } from 'wallet/src/constants/tokens' +import { AssetType } from 'wallet/src/entities/assets' +import { + CurrencyField, + TransactionState, +} from 'wallet/src/features/transactions/transactionState/types' import { signerMnemonicAccount } from 'wallet/src/test/fixtures' const account = signerMnemonicAccount() @@ -17,7 +20,7 @@ const formSwapUrl = ( inputAddress?: string, outputAddress?: string, currencyField?: string, - amount?: string, + amount?: string ): URL => new URL( `https://uniswap.org/app?screen=swap @@ -25,7 +28,7 @@ const formSwapUrl = ( &inputCurrencyId=${chain}-${inputAddress} &outputCurrencyId=${chain}-${outputAddress} ¤cyField=${currencyField} -&amount=${amount}`.trim(), +&amount=${amount}`.trim() ) const formTransactionState = ( @@ -33,7 +36,7 @@ const formTransactionState = ( inputAddress?: string, outputAddress?: string, currencyField?: string, - amount?: string, + amount?: string ): { input: { address: string | undefined @@ -61,8 +64,8 @@ const formTransactionState = ( exactCurrencyField: !currencyField ? currencyField : currencyField.toLowerCase() === 'output' - ? CurrencyField.OUTPUT - : CurrencyField.INPUT, + ? CurrencyField.OUTPUT + : CurrencyField.INPUT, exactAmountToken: amount, }) @@ -72,7 +75,7 @@ const swapUrl = formSwapUrl( DAI.address, UNI[UniverseChainId.Mainnet].address, 'input', - '100', + '100' ) const invalidOutputCurrencySwapUrl = formSwapUrl( @@ -81,7 +84,7 @@ const invalidOutputCurrencySwapUrl = formSwapUrl( DAI.address, undefined, 'input', - '100', + '100' ) const invalidInputTokenSwapURl = formSwapUrl( @@ -90,7 +93,7 @@ const invalidInputTokenSwapURl = formSwapUrl( '0x00', UNI[UniverseChainId.Mainnet].address, 'input', - '100', + '100' ) const invalidChainSwapUrl = formSwapUrl( @@ -99,7 +102,7 @@ const invalidChainSwapUrl = formSwapUrl( DAI.address, UNI[UniverseChainId.Mainnet].address, 'input', - '100', + '100' ) const invalidAmountSwapUrl = formSwapUrl( @@ -108,7 +111,7 @@ const invalidAmountSwapUrl = formSwapUrl( DAI.address, UNI[UniverseChainId.Mainnet].address, 'input', - 'not a number', + 'not a number' ) const invalidCurrencyFieldSwapUrl = formSwapUrl( @@ -117,7 +120,7 @@ const invalidCurrencyFieldSwapUrl = formSwapUrl( DAI.address, UNI[UniverseChainId.Mainnet].address, 'token1', - '100', + '100' ) const swapFormState = formTransactionState( @@ -125,7 +128,7 @@ const swapFormState = formTransactionState( DAI.address, UNI[UniverseChainId.Mainnet].address, 'input', - '100', + '100' ) as TransactionState describe(handleSwapLink, () => { diff --git a/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.ts b/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.ts index 9a0eae1b405..263e70b6285 100644 --- a/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.ts +++ b/apps/mobile/src/features/deepLinking/handleSwapLinkSaga.ts @@ -1,13 +1,13 @@ import { BigNumber } from 'ethers' import { openModal } from 'src/features/modals/modalSlice' import { put } from 'typed-redux-saga' -import { AssetType, CurrencyAsset } from 'uniswap/src/entities/assets' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { CurrencyField, TransactionState } from 'uniswap/src/features/transactions/transactionState/types' import { WALLET_SUPPORTED_CHAIN_IDS } from 'uniswap/src/types/chains' import { getValidAddress } from 'uniswap/src/utils/addresses' import { currencyIdToAddress, currencyIdToChain } from 'uniswap/src/utils/currencyId' import { logger } from 'utilities/src/logger/logger' +import { AssetType, CurrencyAsset } from 'wallet/src/entities/assets' +import { CurrencyField, TransactionState } from 'wallet/src/features/transactions/transactionState/types' export function* handleSwapLink(url: URL) { try { diff --git a/apps/mobile/src/features/externalProfile/ProfileContextMenu.tsx b/apps/mobile/src/features/externalProfile/ProfileContextMenu.tsx index 890af5e21bb..454b1fc4e03 100644 --- a/apps/mobile/src/features/externalProfile/ProfileContextMenu.tsx +++ b/apps/mobile/src/features/externalProfile/ProfileContextMenu.tsx @@ -3,7 +3,7 @@ import React, { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { NativeSyntheticEvent, Share } from 'react-native' import ContextMenu, { ContextMenuOnPressNativeEvent } from 'react-native-context-menu-view' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { TripleDot } from 'src/components/icons/TripleDot' import { disableOnPress } from 'src/utils/disableOnPress' import { Flex, HapticFeedback, TouchableArea } from 'ui/src' @@ -16,12 +16,11 @@ import { useUnitagByAddress } from 'uniswap/src/features/unitags/hooks' import { UniverseChainId } from 'uniswap/src/types/chains' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { ShareableEntity } from 'uniswap/src/types/sharing' -import { setClipboard } from 'uniswap/src/utils/clipboard' -import { openUri } from 'uniswap/src/utils/linking' import { logger } from 'utilities/src/logger/logger' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType, CopyNotificationType } from 'wallet/src/features/notifications/types' -import { ExplorerDataType, getExplorerLink, getProfileUrl } from 'wallet/src/utils/linking' +import { setClipboard } from 'wallet/src/utils/clipboard' +import { ExplorerDataType, getExplorerLink, getProfileUrl, openUri } from 'wallet/src/utils/linking' type MenuAction = { title: string @@ -31,7 +30,7 @@ type MenuAction = { export function ProfileContextMenu({ address }: { address: Address }): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { unitag } = useUnitagByAddress(address) const onPressCopyAddress = useCallback(async () => { diff --git a/apps/mobile/src/features/externalProfile/ProfileHeader.tsx b/apps/mobile/src/features/externalProfile/ProfileHeader.tsx index 4aa3e5d963c..cf9c9644fd0 100644 --- a/apps/mobile/src/features/externalProfile/ProfileHeader.tsx +++ b/apps/mobile/src/features/externalProfile/ProfileHeader.tsx @@ -3,8 +3,7 @@ import { useTranslation } from 'react-i18next' import { StatusBar, StyleSheet } from 'react-native' import { FadeIn } from 'react-native-reanimated' import Svg, { ClipPath, Defs, RadialGradient, Rect, Stop } from 'react-native-svg' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { BackButton } from 'src/components/buttons/BackButton' import { Favorite } from 'src/components/icons/Favorite' import { LongText } from 'src/components/text/LongText' @@ -28,14 +27,14 @@ import { SendAction, XTwitter } from 'ui/src/components/icons' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { iconSizes, imageSizes } from 'ui/src/theme' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { CurrencyField } from 'uniswap/src/features/transactions/transactionState/types' import { TestID } from 'uniswap/src/test/fixtures/testIDs' -import { openUri } from 'uniswap/src/utils/linking' import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' import { useENSDescription, useENSName, useENSTwitterUsername } from 'wallet/src/features/ens/api' import { selectWatchedAddressSet } from 'wallet/src/features/favorites/selectors' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' import { useAvatar, useDisplayName } from 'wallet/src/features/wallet/hooks' import { DisplayNameType } from 'wallet/src/features/wallet/types' +import { openUri } from 'wallet/src/utils/linking' const HEADER_GRADIENT_HEIGHT = 144 const HEADER_ICON_SIZE = 72 @@ -53,7 +52,7 @@ export const solidHeaderProps = { export const ProfileHeader = memo(function ProfileHeader({ address }: ProfileHeaderProps): JSX.Element { const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isDarkMode = useIsDarkMode() const isFavorited = useAppSelector(selectWatchedAddressSet).has(address) diff --git a/apps/mobile/src/features/favorites/hooks.ts b/apps/mobile/src/features/favorites/hooks.ts index 84135cebcb7..f5adf8d5cff 100644 --- a/apps/mobile/src/features/favorites/hooks.ts +++ b/apps/mobile/src/features/favorites/hooks.ts @@ -1,6 +1,5 @@ import { useCallback, useMemo } from 'react' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { CurrencyId } from 'uniswap/src/types/currency' @@ -16,7 +15,7 @@ import { useCurrencyInfo } from 'wallet/src/features/tokens/useCurrencyInfo' import { useDisplayName } from 'wallet/src/features/wallet/hooks' export function useToggleFavoriteCallback(id: CurrencyId, isFavoriteToken: boolean): () => void { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const token = useCurrencyInfo(id) return useCallback(() => { @@ -35,7 +34,7 @@ export function useToggleFavoriteCallback(id: CurrencyId, isFavoriteToken: boole } export function useToggleWatchedWalletCallback(address: Address): () => void { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isFavoriteWallet = useAppSelector(selectWatchedAddressSet).has(address) const displayName = useDisplayName(address) diff --git a/apps/mobile/src/features/fiatOnRamp/ExchangeTransferModal.tsx b/apps/mobile/src/features/fiatOnRamp/ExchangeTransferModal.tsx index 9b6144524ca..fea6a94a538 100644 --- a/apps/mobile/src/features/fiatOnRamp/ExchangeTransferModal.tsx +++ b/apps/mobile/src/features/fiatOnRamp/ExchangeTransferModal.tsx @@ -1,5 +1,4 @@ -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { closeModal } from 'src/features/modals/modalSlice' import { selectModalState } from 'src/features/modals/selectModalState' import { ExchangeTransferConnecting } from 'src/screens/ExchangeTransferConnecting' @@ -7,7 +6,7 @@ import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal import { ModalName } from 'uniswap/src/features/telemetry/constants' export function ExchangeTransferModal(): JSX.Element | null { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const onClose = (): void => { dispatch(closeModal({ name: ModalName.ExchangeTransferModal })) } diff --git a/apps/mobile/src/features/fiatOnRamp/ExchangeTransferServiceProviderSelector.tsx b/apps/mobile/src/features/fiatOnRamp/ExchangeTransferServiceProviderSelector.tsx index 28e22caf474..7602f7aa6e0 100644 --- a/apps/mobile/src/features/fiatOnRamp/ExchangeTransferServiceProviderSelector.tsx +++ b/apps/mobile/src/features/fiatOnRamp/ExchangeTransferServiceProviderSelector.tsx @@ -1,7 +1,7 @@ import React, { useCallback } from 'react' import { FlatList, ListRenderItemInfo } from 'react-native' import { FadeIn, FadeOut } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { openModal } from 'src/features/modals/modalSlice' import { Flex, ImpactFeedbackStyle, Text, TouchableArea, useIsDarkMode } from 'ui/src' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' @@ -68,7 +68,7 @@ export function ServiceProviderSelector({ onClose: () => void serviceProviders: FORServiceProvider[] }): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const onSelectServiceProvider = useCallback( (serviceProvider: FORServiceProvider) => { diff --git a/apps/mobile/src/features/fiatOnRamp/FiatOnRampAggregatorModal.tsx b/apps/mobile/src/features/fiatOnRamp/FiatOnRampAggregatorModal.tsx index 70e5b50fde5..c2ca3fed935 100644 --- a/apps/mobile/src/features/fiatOnRamp/FiatOnRampAggregatorModal.tsx +++ b/apps/mobile/src/features/fiatOnRamp/FiatOnRampAggregatorModal.tsx @@ -1,5 +1,5 @@ import React, { useCallback } from 'react' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { FiatOnRampStackNavigator } from 'src/app/navigation/navigation' import { closeModal } from 'src/features/modals/modalSlice' import { useSporeColors } from 'ui/src' @@ -9,7 +9,7 @@ import { ModalName } from 'uniswap/src/features/telemetry/constants' export function FiatOnRampAggregatorModal(): JSX.Element { const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const onClose = useCallback((): void => { dispatch(closeModal({ name: ModalName.FiatOnRampAggregator })) }, [dispatch]) diff --git a/apps/mobile/src/features/fiatOnRamp/FiatOnRampContext.tsx b/apps/mobile/src/features/fiatOnRamp/FiatOnRampContext.tsx index 1f6ddd701e2..0a61d7d0dd1 100644 --- a/apps/mobile/src/features/fiatOnRamp/FiatOnRampContext.tsx +++ b/apps/mobile/src/features/fiatOnRamp/FiatOnRampContext.tsx @@ -5,7 +5,12 @@ import React, { createContext, useContext, useState } from 'react' import { SectionListData } from 'react-native' import { getCountry } from 'react-native-localize' import { getNativeAddress } from 'uniswap/src/constants/addresses' -import { FORQuote, FiatCurrencyInfo, FiatOnRampCurrency } from 'uniswap/src/features/fiatOnRamp/types' +import { + FORQuote, + FORServiceProvider, + FiatCurrencyInfo, + FiatOnRampCurrency, +} from 'uniswap/src/features/fiatOnRamp/types' import { UniverseChainId } from 'uniswap/src/types/chains' import { buildCurrencyId } from 'uniswap/src/utils/currencyId' import { useCurrencyInfo } from 'wallet/src/features/tokens/useCurrencyInfo' @@ -25,6 +30,8 @@ interface FiatOnRampContextType { setQuoteCurrency: (quoteCurrency: FiatOnRampCurrency) => void amount?: number setAmount: (amount: number | undefined) => void + serviceProviders?: FORServiceProvider[] + setServiceProviders: (serviceProviders: FORServiceProvider[] | undefined) => void } const initialState: FiatOnRampContextType = { @@ -35,6 +42,7 @@ const initialState: FiatOnRampContextType = { setBaseCurrencyInfo: () => undefined, setQuoteCurrency: () => undefined, setAmount: () => undefined, + setServiceProviders: () => undefined, countryCode: '', countryState: undefined, quoteCurrency: { currencyInfo: undefined }, @@ -53,6 +61,7 @@ export function FiatOnRampProvider({ children }: { children: React.ReactNode }): const [countryState, setCountryState] = useState() const [baseCurrencyInfo, setBaseCurrencyInfo] = useState() const [amount, setAmount] = useState() + const [serviceProviders, setServiceProviders] = useState() // We hardcode ETH as the starting currency const ethCurrencyInfo = useCurrencyInfo( @@ -80,6 +89,8 @@ export function FiatOnRampProvider({ children }: { children: React.ReactNode }): setQuoteCurrency, amount, setAmount, + serviceProviders, + setServiceProviders, }} > {children} diff --git a/apps/mobile/src/features/fiatOnRamp/FiatOnRampCountryListModal.tsx b/apps/mobile/src/features/fiatOnRamp/FiatOnRampCountryListModal.tsx index 4e817a492b7..c5aa0109170 100644 --- a/apps/mobile/src/features/fiatOnRamp/FiatOnRampCountryListModal.tsx +++ b/apps/mobile/src/features/fiatOnRamp/FiatOnRampCountryListModal.tsx @@ -1,7 +1,7 @@ import { BottomSheetFlatList } from '@gorhom/bottom-sheet' import React, { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' -import { Keyboard, ListRenderItemInfo } from 'react-native' +import { ListRenderItemInfo } from 'react-native' import { FadeIn, FadeOut } from 'react-native-reanimated' import { SvgUri } from 'react-native-svg' import { Loader } from 'src/components/loading' @@ -11,15 +11,15 @@ import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { useDeviceDimensions } from 'ui/src/hooks/useDeviceDimensions' import { fonts, iconSizes, spacing } from 'ui/src/theme' import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' -import { useBottomSheetFocusHook } from 'uniswap/src/components/modals/hooks' import { useFiatOnRampAggregatorCountryListQuery } from 'uniswap/src/features/fiatOnRamp/api' import { FOR_MODAL_SNAP_POINTS } from 'uniswap/src/features/fiatOnRamp/constants' import { FORCountry } from 'uniswap/src/features/fiatOnRamp/types' import { getCountryFlagSvgUrl } from 'uniswap/src/features/fiatOnRamp/utils' -import { SearchTextInput } from 'uniswap/src/features/search/SearchTextInput' import { ModalName } from 'uniswap/src/features/telemetry/constants' import { bubbleToTop } from 'utilities/src/primitives/array' import { useDebounce } from 'utilities/src/time/timing' +import { useBottomSheetFocusHook } from 'wallet/src/components/modals/hooks' +import { SearchTextInput } from 'wallet/src/features/search/SearchTextInput' const ICON_SIZE = 32 // design prefers a custom value here @@ -86,7 +86,6 @@ function CountrySelectorContent({ onSelectCountry, countryCode }: CountrySelecto py="$spacing8" value={searchText} onChangeText={setSearchText} - onDismiss={() => Keyboard.dismiss()} /> diff --git a/apps/mobile/src/features/fiatOnRamp/FiatOnRampModal.tsx b/apps/mobile/src/features/fiatOnRamp/FiatOnRampModal.tsx new file mode 100644 index 00000000000..6fa2ffc04ae --- /dev/null +++ b/apps/mobile/src/features/fiatOnRamp/FiatOnRampModal.tsx @@ -0,0 +1,320 @@ +import React, { useCallback, useEffect, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { StyleSheet, TextInput } from 'react-native' +import { FadeIn, FadeOut, FadeOutDown } from 'react-native-reanimated' +import { useAppDispatch, useShouldShowNativeKeyboard } from 'src/app/hooks' +import { FiatOnRampCtaButton } from 'src/components/fiatOnRamp/CtaButton' +import { FiatOnRampAmountSection } from 'src/features/fiatOnRamp/FiatOnRampAmountSection' +import { FiatOnRampTokenSelectorModal } from 'src/features/fiatOnRamp/FiatOnRampTokenSelector' +import { useMoonpayFiatOnRamp, useMoonpaySupportedTokens } from 'src/features/fiatOnRamp/hooks' +import { closeModal } from 'src/features/modals/modalSlice' +import { Flex, Text, useDeviceInsets, useSporeColors } from 'ui/src' +import MoonpayLogo from 'ui/src/assets/logos/svg/moonpay.svg' +import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' +import { TextInputProps } from 'uniswap/src/components/input/TextInput' +import { useBottomSheetContext } from 'uniswap/src/components/modals/BottomSheetContext' +import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' +import { HandleBar } from 'uniswap/src/components/modals/HandleBar' +import { getNativeAddress } from 'uniswap/src/constants/addresses' +import { FiatOnRampConnectingView } from 'uniswap/src/features/fiatOnRamp/FiatOnRampConnectingView' +import { ServiceProviderLogoStyles } from 'uniswap/src/features/fiatOnRamp/constants' +import { FiatOnRampCurrency } from 'uniswap/src/features/fiatOnRamp/types' +import { FiatOnRampEventName, ModalName } from 'uniswap/src/features/telemetry/constants' +import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { UniverseEventProperties } from 'uniswap/src/features/telemetry/types' +import { UniverseChainId } from 'uniswap/src/types/chains' +import { buildCurrencyId } from 'uniswap/src/utils/currencyId' +import { NumberType } from 'utilities/src/format/types' +import { useTimeout } from 'utilities/src/time/timing' +import { DecimalPadLegacy } from 'wallet/src/components/legacy/DecimalPadLegacy' +import { useLocalFiatToUSDConverter } from 'wallet/src/features/fiatCurrency/hooks' +import { useMoonpayFiatCurrencySupportInfo } from 'wallet/src/features/fiatOnRamp/hooks' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { useCurrencyInfo } from 'wallet/src/features/tokens/useCurrencyInfo' +import { openUri } from 'wallet/src/utils/linking' + +const MOONPAY_UNSUPPORTED_REGION_HELP_URL = + 'https://support.uniswap.org/hc/en-us/articles/11306664890381-Why-isn-t-MoonPay-available-in-my-region-' + +const PREDEFINED_AMOUNTS_SUPPORTED_CURRENCIES = ['USD', 'EUR', 'GBP', 'AUD', 'CAD', 'SGD'] + +const CONNECTING_TIMEOUT = 2000 + +export function FiatOnRampModal(): JSX.Element { + const colors = useSporeColors() + + const dispatch = useAppDispatch() + const onClose = useCallback((): void => { + dispatch(closeModal({ name: ModalName.FiatOnRamp })) + }, [dispatch]) + + return ( + + + + ) +} + +function FiatOnRampContent({ onClose }: { onClose: () => void }): JSX.Element { + const { t } = useTranslation() + const { formatNumberOrString } = useLocalizationContext() + const inputRef = useRef(null) + + const { isSheetReady } = useBottomSheetContext() + + const [showConnectingToMoonpayScreen, setShowConnectingToMoonpayScreen] = useState(false) + + const { showNativeKeyboard, onDecimalPadLayout, isLayoutPending, onInputPanelLayout } = useShouldShowNativeKeyboard() + + const [selection, setSelection] = useState() + + const resetSelection = (start: number, end?: number): void => { + setSelection({ start, end: end ?? start }) + } + + const [value, setValue] = useState('') + + // We hardcode ETH as the starting currency + const ethCurrencyInfo = useCurrencyInfo( + buildCurrencyId(UniverseChainId.Mainnet, getNativeAddress(UniverseChainId.Mainnet)), + ) + + const [currency, setCurrency] = useState({ + currencyInfo: ethCurrencyInfo, + moonpayCurrencyCode: 'eth', + }) + + const { appFiatCurrencySupportedInMoonpay, moonpaySupportedFiatCurrency } = useMoonpayFiatCurrencySupportInfo() + + // We only support predefined amounts for certain currencies. + // If the user's app fiat currency is not supported in Moonpay, + // we fallback to USD (which does allow for predefined amounts) + const predefinedAmountsSupported = + PREDEFINED_AMOUNTS_SUPPORTED_CURRENCIES.includes(moonpaySupportedFiatCurrency.code) || + !appFiatCurrencySupportedInMoonpay + + // We might not have ethCurrencyInfo when this component is initially rendered. + // If `ethCurrencyInfo` becomes available later while currency.currencyInfo is still unset, we update the currency state accordingly. + useEffect(() => { + if (ethCurrencyInfo && !currency.currencyInfo) { + setCurrency({ ...currency, currencyInfo: ethCurrencyInfo }) + } + }, [currency, currency.currencyInfo, ethCurrencyInfo]) + + const { + eligible, + quoteAmount, + isLoading, + isError, + externalTransactionId, + dispatchAddTransaction, + fiatOnRampHostUrl, + quoteCurrencyAmountReady, + quoteCurrencyAmountLoading, + errorText, + errorColor, + } = useMoonpayFiatOnRamp({ + baseCurrencyAmount: value, + quoteCurrencyCode: currency.moonpayCurrencyCode, + quoteChainId: currency.currencyInfo?.currency.chainId ?? UniverseChainId.Mainnet, + }) + + useTimeout( + async () => { + if (fiatOnRampHostUrl) { + if (currency?.moonpayCurrencyCode) { + sendAnalyticsEvent(FiatOnRampEventName.FiatOnRampWidgetOpened, { + externalTransactionId, + serviceProvider: 'MOONPAY', + fiatCurrency: moonpaySupportedFiatCurrency.code.toLowerCase(), + cryptoCurrency: currency.moonpayCurrencyCode.toLowerCase(), + }) + } + await openUri(fiatOnRampHostUrl) + dispatchAddTransaction() + onClose() + } + }, + // setTimeout would be called inside this hook, only when delay >= 0 + showConnectingToMoonpayScreen ? CONNECTING_TIMEOUT : -1, + ) + + const buttonEnabled = !isLoading && (!eligible || (!isError && fiatOnRampHostUrl && quoteCurrencyAmountReady)) + + const fiatToUSDConverter = useLocalFiatToUSDConverter() + + const onChangeValue = + (source: UniverseEventProperties[FiatOnRampEventName.FiatOnRampAmountEntered]['source']) => + (newAmount: string): void => { + sendAnalyticsEvent(FiatOnRampEventName.FiatOnRampAmountEntered, { + source, + amountUSD: fiatToUSDConverter(parseFloat(newAmount)), + }) + setValue(newAmount) + } + + const [showTokenSelector, setShowTokenSelector] = useState(false) + + useEffect(() => { + if (showTokenSelector) { + // hide keyboard when user goes to token selector screen + inputRef.current?.blur() + } else if (showNativeKeyboard && eligible) { + // autofocus + inputRef.current?.focus() + } + }, [showNativeKeyboard, eligible, showTokenSelector]) + + const selectTokenLoading = quoteCurrencyAmountLoading && !errorText && !!value + + const { + list: supportedTokensList, + loading: supportedTokensLoading, + error: supportedTokensError, + refetch: supportedTokensRefetch, + } = useMoonpaySupportedTokens() + + const insets = useDeviceInsets() + + const onSelectCurrency = (newCurrency: FiatOnRampCurrency): void => { + setCurrency(newCurrency) + setShowTokenSelector(false) + if (newCurrency.currencyInfo?.currency.symbol) { + sendAnalyticsEvent(FiatOnRampEventName.FiatOnRampTokenSelected, { + token: newCurrency.currencyInfo.currency.symbol.toLowerCase(), + }) + } + } + + return ( + + {!showConnectingToMoonpayScreen && ( + + {isSheetReady && ( + + + {t('common.button.buy')} + { + setShowTokenSelector(true) + }} + /> + + {!showNativeKeyboard && ( + + )} + => { + if (eligible) { + setShowConnectingToMoonpayScreen(true) + } else { + await openUri(MOONPAY_UNSUPPORTED_REGION_HELP_URL) + } + }} + /> + + + )} + {showTokenSelector && ( + setShowTokenSelector(false)} + onRetry={supportedTokensRefetch} + onSelectCurrency={onSelectCurrency} + /> + )} + + )} + {showConnectingToMoonpayScreen && ( + + + + } + serviceProviderName="MoonPay" + /> + )} + + ) +} + +const styles = StyleSheet.create({ + moonpayLogoWrapper: { + backgroundColor: '#7D00FF', + }, +}) diff --git a/apps/mobile/src/features/fiatOnRamp/aggregatorHooks.ts b/apps/mobile/src/features/fiatOnRamp/aggregatorHooks.ts new file mode 100644 index 00000000000..3f0e5e090f8 --- /dev/null +++ b/apps/mobile/src/features/fiatOnRamp/aggregatorHooks.ts @@ -0,0 +1,145 @@ +import { SerializedError } from '@reduxjs/toolkit' +import { FetchBaseQueryError, skipToken } from '@reduxjs/toolkit/query/react' +import { useTranslation } from 'react-i18next' +import { Delay } from 'src/components/layout/Delayed' +import { ColorTokens } from 'ui/src' +import { + useFiatOnRampAggregatorCryptoQuoteQuery, + useFiatOnRampAggregatorSupportedFiatCurrenciesQuery, +} from 'uniswap/src/features/fiatOnRamp/api' +import { FORQuote, FORSupportedFiatCurrency, FiatCurrencyInfo } from 'uniswap/src/features/fiatOnRamp/types' +import { + isFiatOnRampApiError, + isInvalidRequestAmountTooHigh, + isInvalidRequestAmountTooLow, +} from 'uniswap/src/features/fiatOnRamp/utils' +import { NumberType } from 'utilities/src/format/types' +import { useDebounce } from 'utilities/src/time/timing' +import { FiatCurrency } from 'wallet/src/features/fiatCurrency/constants' +import { useAppFiatCurrencyInfo, useFiatCurrencyInfo } from 'wallet/src/features/fiatCurrency/hooks' +import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' +import { useActiveAccountAddress } from 'wallet/src/features/wallet/hooks' + +export function useMeldFiatCurrencySupportInfo(countryCode: string): { + appFiatCurrencySupportedInMeld: boolean + meldSupportedFiatCurrency: FiatCurrencyInfo + supportedFiatCurrencies: FORSupportedFiatCurrency[] | undefined +} { + // Not all the currencies are supported by Meld, so we need to fallback to USD if the currency is not supported + const appFiatCurrencyInfo = useAppFiatCurrencyInfo() + const fallbackCurrencyInfo = useFiatCurrencyInfo(FiatCurrency.UnitedStatesDollar) + const appFiatCurrencyCode = appFiatCurrencyInfo.code.toLowerCase() + + const { data: supportedFiatCurrencies } = useFiatOnRampAggregatorSupportedFiatCurrenciesQuery({ + countryCode, + }) + + const appFiatCurrencySupported = + !supportedFiatCurrencies || + supportedFiatCurrencies.fiatCurrencies.some( + (currency): boolean => appFiatCurrencyCode === currency.fiatCurrencyCode.toLowerCase(), + ) + const meldSupportedFiatCurrency = appFiatCurrencySupported ? appFiatCurrencyInfo : fallbackCurrencyInfo + + return { + appFiatCurrencySupportedInMeld: appFiatCurrencySupported, + meldSupportedFiatCurrency, + supportedFiatCurrencies: supportedFiatCurrencies?.fiatCurrencies, + } +} + +/** + * Hook to load quotes + */ +export function useFiatOnRampQuotes({ + baseCurrencyAmount, + baseCurrencyCode, + quoteCurrencyCode, + countryCode, + countryState, +}: { + baseCurrencyAmount?: number + baseCurrencyCode: string | undefined + quoteCurrencyCode: string | undefined + countryCode: string | undefined + countryState: string | undefined +}): { + loading: boolean + error?: FetchBaseQueryError | SerializedError + quotes: FORQuote[] | undefined +} { + const debouncedBaseCurrencyAmount = useDebounce(baseCurrencyAmount, Delay.Short) + const walletAddress = useActiveAccountAddress() + + const { + currentData: quotesResponse, + isFetching: quotesFetching, + error: quotesError, + } = useFiatOnRampAggregatorCryptoQuoteQuery( + baseCurrencyAmount && countryCode && quoteCurrencyCode && baseCurrencyCode + ? { + sourceAmount: baseCurrencyAmount, + sourceCurrencyCode: baseCurrencyCode, + destinationCurrencyCode: quoteCurrencyCode, + countryCode, + walletAddress: walletAddress ?? '', + state: countryState, + } + : skipToken, + { + refetchOnMountOrArgChange: true, + }, + ) + + const loading = quotesFetching || debouncedBaseCurrencyAmount !== baseCurrencyAmount + + // if user is entering base amount -> ignore previous errors + const error = debouncedBaseCurrencyAmount !== baseCurrencyAmount ? undefined : quotesError + + return { + loading, + error, + quotes: quotesResponse?.quotes ?? undefined, + } +} + +export function useParseFiatOnRampError( + error: unknown, + currencyCode: string, +): { + errorText: string | undefined + errorColor: ColorTokens | undefined +} { + const { t } = useTranslation() + const { formatNumberOrString } = useLocalizationContext() + + let errorText, errorColor: ColorTokens | undefined + if (!error) { + return { errorText, errorColor } + } + + errorText = t('fiatOnRamp.error.default') + errorColor = '$DEP_accentWarning' + + if (isFiatOnRampApiError(error)) { + if (isInvalidRequestAmountTooLow(error)) { + const formattedAmount = formatNumberOrString({ + value: error.data.context.minimumAllowed, + type: NumberType.FiatStandard, + currencyCode, + }) + errorText = t('fiatOnRamp.error.min', { amount: formattedAmount }) + errorColor = '$statusCritical' + } else if (isInvalidRequestAmountTooHigh(error)) { + const formattedAmount = formatNumberOrString({ + value: error.data.context.maximumAllowed, + type: NumberType.FiatStandard, + currencyCode, + }) + errorText = t('fiatOnRamp.error.max', { amount: formattedAmount }) + errorColor = '$statusCritical' + } + } + + return { errorText, errorColor } +} diff --git a/apps/mobile/src/features/fiatOnRamp/hooks.ts b/apps/mobile/src/features/fiatOnRamp/hooks.ts index f57fbf211c8..4e95e7d8a3b 100644 --- a/apps/mobile/src/features/fiatOnRamp/hooks.ts +++ b/apps/mobile/src/features/fiatOnRamp/hooks.ts @@ -1,39 +1,32 @@ -import { SerializedError } from '@reduxjs/toolkit' -import { FetchBaseQueryError, skipToken } from '@reduxjs/toolkit/query/react' +import { skipToken } from '@reduxjs/toolkit/query/react' import { Currency } from '@uniswap/sdk-core' import { useCallback, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { Delay } from 'src/components/layout/Delayed' -import { ColorTokens } from 'ui/src' -import { toSupportedChainId } from 'uniswap/src/features/chains/utils' +import { ColorTokens, useSporeColors } from 'ui/src' +import { BRIDGED_BASE_ADDRESSES } from 'uniswap/src/constants/addresses' +import { uniswapUrls } from 'uniswap/src/constants/urls' +import { fromMoonpayNetwork, toSupportedChainId } from 'uniswap/src/features/chains/utils' import { CurrencyInfo } from 'uniswap/src/features/dataApi/types' -import { - useFiatOnRampAggregatorCryptoQuoteQuery, - useFiatOnRampAggregatorSupportedFiatCurrenciesQuery, - useFiatOnRampAggregatorSupportedTokensQuery, -} from 'uniswap/src/features/fiatOnRamp/api' -import { - FORQuote, - FORSupportedFiatCurrency, - FORSupportedToken, - FiatCurrencyInfo, - FiatOnRampCurrency, -} from 'uniswap/src/features/fiatOnRamp/types' -import { - createOnRampTransactionId, - isFiatOnRampApiError, - isInvalidRequestAmountTooHigh, - isInvalidRequestAmountTooLow, -} from 'uniswap/src/features/fiatOnRamp/utils' +import { useFiatOnRampAggregatorSupportedTokensQuery } from 'uniswap/src/features/fiatOnRamp/api' +import { FORSupportedToken, FiatOnRampCurrency } from 'uniswap/src/features/fiatOnRamp/types' import { WalletChainId } from 'uniswap/src/types/chains' +import { areAddressesEqual } from 'uniswap/src/utils/addresses' import { buildCurrencyId, buildNativeCurrencyId } from 'uniswap/src/utils/currencyId' -import { NumberType } from 'utilities/src/format/types' +import { logger } from 'utilities/src/logger/logger' import { useDebounce } from 'utilities/src/time/timing' -import { useCurrencies } from 'wallet/src/components/TokenSelector/hooks' +import { useAllCommonBaseCurrencies, useCurrencies } from 'wallet/src/components/TokenSelector/hooks' import { Routing } from 'wallet/src/data/tradingApi/__generated__/index' -import { FiatCurrency } from 'wallet/src/features/fiatCurrency/constants' -import { useAppFiatCurrencyInfo, useFiatCurrencyInfo } from 'wallet/src/features/fiatCurrency/hooks' +import { + useFiatOnRampBuyQuoteQuery, + useFiatOnRampIpAddressQuery, + useFiatOnRampLimitsQuery, + useFiatOnRampSupportedTokensQuery, + useFiatOnRampWidgetUrlQuery, +} from 'wallet/src/features/fiatOnRamp/api' +import { useMoonpayFiatCurrencySupportInfo } from 'wallet/src/features/fiatOnRamp/hooks' +import { MoonpayCurrency } from 'wallet/src/features/fiatOnRamp/types' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' import { addTransaction } from 'wallet/src/features/transactions/slice' import { @@ -42,10 +35,15 @@ import { TransactionStatus, TransactionType, } from 'wallet/src/features/transactions/types' -import { useActiveAccountAddress } from 'wallet/src/features/wallet/hooks' +import { createTransactionId } from 'wallet/src/features/transactions/utils' +import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' import { getFormattedCurrencyAmount } from 'wallet/src/utils/currency' import { ValueType } from 'wallet/src/utils/getCurrencyAmount' +const ETH_POLYGON_MOONPAY_CODE = 'eth_polygon' +const WETH_POLYGON_MOONPAY_CODE = 'weth_polygon' +const BNB_MAINNET_MOONPAY_CODE = 'bnb' + export function useFormatExactCurrencyAmount(currencyAmount: string, currency: Maybe): string | undefined { const formatter = useLocalizationContext() @@ -63,15 +61,14 @@ export function useFormatExactCurrencyAmount(currencyAmount: string, currency: M export function useFiatOnRampTransactionCreator( ownerAddress: string, chainId: WalletChainId, - serviceProvider?: string, initialTypeInfo?: Partial, ): { externalTransactionId: string dispatchAddTransaction: () => void } { - const dispatch = useDispatch() + const dispatch = useAppDispatch() - const externalTransactionId = useRef(createOnRampTransactionId(serviceProvider)) + const externalTransactionId = useRef(createTransactionId()) const dispatchAddTransaction = useCallback(() => { // adds a dummy transaction detail for now @@ -98,32 +95,195 @@ export function useFiatOnRampTransactionCreator( return { externalTransactionId: externalTransactionId.current, dispatchAddTransaction } } -export function useMeldFiatCurrencySupportInfo(countryCode: string): { - appFiatCurrencySupportedInMeld: boolean - meldSupportedFiatCurrency: FiatCurrencyInfo - supportedFiatCurrencies: FORSupportedFiatCurrency[] | undefined +const MOONPAY_FEES_INCLUDED = true + +/** + * Hook to provide data from Moonpay for Fiat On Ramp Input Amount screen. + */ +export function useMoonpayFiatOnRamp({ + baseCurrencyAmount, + quoteCurrencyCode, + quoteChainId, +}: { + baseCurrencyAmount: string + quoteCurrencyCode: string | undefined + quoteChainId: WalletChainId +}): { + eligible: boolean + quoteAmount: number + quoteCurrencyAmountReady: boolean + quoteCurrencyAmountLoading: boolean + isLoading: boolean + externalTransactionId: string + dispatchAddTransaction: () => void + fiatOnRampHostUrl?: string + isError: boolean + errorText?: string + errorColor?: ColorTokens } { - // Not all the currencies are supported by Meld, so we need to fallback to USD if the currency is not supported - const appFiatCurrencyInfo = useAppFiatCurrencyInfo() - const fallbackCurrencyInfo = useFiatCurrencyInfo(FiatCurrency.UnitedStatesDollar) - const appFiatCurrencyCode = appFiatCurrencyInfo.code.toLowerCase() + const colors = useSporeColors() + + const debouncedBaseCurrencyAmount = useDebounce(baseCurrencyAmount, Delay.Short) + + // we can consider adding `ownerAddress` as a prop to this modal in the future + // for now, always assume the user wants to fund the current account + const activeAccountAddress = useActiveAccountAddressWithThrow() + + const { externalTransactionId, dispatchAddTransaction } = useFiatOnRampTransactionCreator( + activeAccountAddress, + quoteChainId, + ) + + const { moonpaySupportedFiatCurrency: baseCurrency } = useMoonpayFiatCurrencySupportInfo() + const baseCurrencyCode = baseCurrency.code.toLowerCase() + const baseCurrencySymbol = baseCurrency.symbol + + const { + data: limitsData, + isLoading: limitsLoading, + isError: limitsLoadingQueryError, + } = useFiatOnRampLimitsQuery( + quoteCurrencyCode + ? { + baseCurrencyCode, + quoteCurrencyCode, + areFeesIncluded: MOONPAY_FEES_INCLUDED, + } + : skipToken, + ) + + const { maxBuyAmount } = limitsData?.baseCurrency ?? { + maxBuyAmount: Infinity, + } + + // we're adding +1 here because MoonPay API is not precise with limits + // and an actual lower limit is a bit above the number, they provide in limits api + const minBuyAmount = limitsData?.baseCurrency?.minBuyAmount ? limitsData.baseCurrency.minBuyAmount + 1 : 0 + + const parsedBaseCurrencyAmount = parseFloat(baseCurrencyAmount) + const amountIsTooSmall = parsedBaseCurrencyAmount < minBuyAmount + const amountIsTooLarge = parsedBaseCurrencyAmount > maxBuyAmount + const isBaseCurrencyAmountValid = !!parsedBaseCurrencyAmount && !amountIsTooSmall && !amountIsTooLarge + + const { + data: fiatOnRampHostUrl, + isError: isWidgetUrlQueryError, + isLoading: isWidgetUrlLoading, + } = useFiatOnRampWidgetUrlQuery( + // PERF: could consider skipping this call until eligibility in determined (ux tradeoffs) + // as-is, avoids waterfalling requests => better ux + quoteCurrencyCode + ? { + ownerAddress: activeAccountAddress, + colorCode: colors.accent1.val, + externalTransactionId, + amount: baseCurrencyAmount, + currencyCode: quoteCurrencyCode, + baseCurrencyCode, + redirectUrl: `${uniswapUrls.redirectUrlBase}/?screen=transaction&fiatOnRamp=true&userAddress=${activeAccountAddress}`, + } + : skipToken, + ) + const { + data: buyQuote, + isFetching: buyQuoteLoading, + isError: buyQuoteLoadingQueryError, + } = useFiatOnRampBuyQuoteQuery( + // When isBaseCurrencyAmountValid is false and the user enters any digit, + // isBaseCurrencyAmountValid becomes true. Since there were no prior calls to the API, + // it takes the debouncedBaseCurrencyAmount and immediately calls an API. + // This only truly matters in the beginning and in cases where the debouncedBaseCurrencyAmount + // is changed while isBaseCurrencyAmountValid is false." + quoteCurrencyCode && isBaseCurrencyAmountValid && debouncedBaseCurrencyAmount === baseCurrencyAmount + ? { + baseCurrencyCode, + baseCurrencyAmount: debouncedBaseCurrencyAmount, + quoteCurrencyCode, + areFeesIncluded: MOONPAY_FEES_INCLUDED, + } + : skipToken, + ) - const { data: supportedFiatCurrencies } = useFiatOnRampAggregatorSupportedFiatCurrenciesQuery({ - countryCode, + const quoteAmount = buyQuote?.quoteCurrencyAmount ?? 0 + + const { + data: ipAddressData, + isLoading: isEligibleLoading, + isError: isFiatBuyAllowedQueryError, + } = useFiatOnRampIpAddressQuery() + + const eligible = Boolean(ipAddressData?.isBuyAllowed) + + const isLoading = isEligibleLoading || isWidgetUrlLoading + const isError = + isFiatBuyAllowedQueryError || isWidgetUrlQueryError || buyQuoteLoadingQueryError || limitsLoadingQueryError + + const quoteCurrencyAmountLoading = + buyQuoteLoading || limitsLoading || debouncedBaseCurrencyAmount !== baseCurrencyAmount + + const quoteCurrencyAmountReady = isBaseCurrencyAmountValid && !quoteCurrencyAmountLoading + + const { addFiatSymbolToNumber } = useLocalizationContext() + const minBuyAmountWithFiatSymbol = addFiatSymbolToNumber({ + value: minBuyAmount, + currencyCode: baseCurrencyCode, + currencySymbol: baseCurrencySymbol, + }) + const maxBuyAmountWithFiatSymbol = addFiatSymbolToNumber({ + value: maxBuyAmount, + currencyCode: baseCurrencyCode, + currencySymbol: baseCurrencySymbol, }) - const appFiatCurrencySupported = - !supportedFiatCurrencies || - supportedFiatCurrencies.fiatCurrencies.some( - (currency): boolean => appFiatCurrencyCode === currency.fiatCurrencyCode.toLowerCase(), - ) - const meldSupportedFiatCurrency = appFiatCurrencySupported ? appFiatCurrencyInfo : fallbackCurrencyInfo + const { errorText, errorColor } = useMoonpayError( + isError, + amountIsTooSmall, + amountIsTooLarge, + minBuyAmountWithFiatSymbol, + maxBuyAmountWithFiatSymbol, + ) return { - appFiatCurrencySupportedInMeld: appFiatCurrencySupported, - meldSupportedFiatCurrency, - supportedFiatCurrencies: supportedFiatCurrencies?.fiatCurrencies, + eligible, + quoteAmount, + quoteCurrencyAmountReady, + quoteCurrencyAmountLoading, + isLoading, + externalTransactionId, + dispatchAddTransaction, + fiatOnRampHostUrl, + isError, + errorText, + errorColor, + } +} + +function useMoonpayError( + hasError: boolean, + amountIsTooSmall: boolean, + amountIsTooLarge: boolean, + minBuyAmountWithFiatSymbol: string, + maxBuyAmountWithFiatSymbol: string, +): { + errorText: string | undefined + errorColor: ColorTokens | undefined +} { + const { t } = useTranslation() + + let errorText, errorColor: ColorTokens | undefined + + if (hasError) { + errorText = t('fiatOnRamp.error.default') + errorColor = '$DEP_accentWarning' + } else if (amountIsTooSmall) { + errorText = t('fiatOnRamp.error.min', { amount: minBuyAmountWithFiatSymbol }) + errorColor = '$statusCritical' + } else if (amountIsTooLarge) { + errorText = t('fiatOnRamp.error.max', { amount: maxBuyAmountWithFiatSymbol }) + errorColor = '$statusCritical' } + + return { errorText, errorColor } } function findTokenOptionForFiatOnRampToken( @@ -141,6 +301,42 @@ function findTokenOptionForFiatOnRampToken( }) } +function findTokenOptionForMoonpayCurrency( + commonBaseCurrencies: CurrencyInfo[] | undefined = [], + moonpayCurrency: MoonpayCurrency, +): Maybe { + const currencyInfo = commonBaseCurrencies.find((item) => { + // Moonpay uses WETH on Polygon to represent ETH on Polygon + const moonpayCurrencyCode = + moonpayCurrency.code === ETH_POLYGON_MOONPAY_CODE ? WETH_POLYGON_MOONPAY_CODE : moonpayCurrency.code + const [tokenSymbol, network] = moonpayCurrencyCode.split('_') + const chainId = fromMoonpayNetwork(network) + return ( + item && + tokenSymbol && + tokenSymbol.toLowerCase() === item.currency.symbol?.toLowerCase() && + chainId === item.currency.chainId + ) + }) + if ( + !currencyInfo && + !BRIDGED_BASE_ADDRESSES.find((bridgedAddress) => + areAddressesEqual(bridgedAddress, moonpayCurrency.metadata?.contractAddress), + ) && + // We do not support BNB onboarding and Moonpay does not return an address for it so map it manually + moonpayCurrency.code !== BNB_MAINNET_MOONPAY_CODE + ) { + logger.error(`Moonpay currency ${moonpayCurrency.code} cannot be mapped`, { + tags: { file: 'fiatOnRamp/hooks', function: 'useMoonpaySupportedTokens' }, + extra: { + chainId: moonpayCurrency.metadata?.chainId, + address: moonpayCurrency.metadata?.contractAddress, + }, + }) + } + return currencyInfo +} + function buildCurrencyIdForFORSupportedToken(supportedToken: FORSupportedToken): string | undefined { const chainId = toSupportedChainId(supportedToken.chainId) return chainId @@ -209,98 +405,66 @@ export function useFiatOnRampSupportedTokens({ return { list, loading, error, refetch } } -/** - * Hook to load quotes - */ -export function useFiatOnRampQuotes({ - baseCurrencyAmount, - baseCurrencyCode, - quoteCurrencyCode, - countryCode, - countryState, -}: { - baseCurrencyAmount?: number - baseCurrencyCode: string | undefined - quoteCurrencyCode: string | undefined - countryCode: string | undefined - countryState: string | undefined -}): { +export function useMoonpaySupportedTokens(): { + error: boolean + list: FiatOnRampCurrency[] | undefined loading: boolean - error?: FetchBaseQueryError | SerializedError - quotes: FORQuote[] | undefined + refetch: () => void } { - const debouncedBaseCurrencyAmount = useDebounce(baseCurrencyAmount, Delay.Short) - const walletAddress = useActiveAccountAddress() + // this should be already cached by the time we need it + const { + data: ipAddressData, + isLoading: ipAddressLoading, + isError: ipAddressError, + refetch: refetchIpAddress, + } = useFiatOnRampIpAddressQuery() const { - currentData: quotesResponse, - isFetching: quotesFetching, - error: quotesError, - } = useFiatOnRampAggregatorCryptoQuoteQuery( - baseCurrencyAmount && countryCode && quoteCurrencyCode && baseCurrencyCode - ? { - sourceAmount: baseCurrencyAmount, - sourceCurrencyCode: baseCurrencyCode, - destinationCurrencyCode: quoteCurrencyCode, - countryCode, - walletAddress: walletAddress ?? undefined, - state: countryState, - } - : skipToken, + data: supportedTokens, + isLoading: supportedTokensLoading, + isError: supportedTokensError, + refetch: refetchSupportedTokens, + } = useFiatOnRampSupportedTokensQuery( { - refetchOnMountOrArgChange: true, + isUserInUS: ipAddressData?.alpha3 === 'USA' ?? false, + stateInUS: ipAddressData?.state, }, + { skip: !ipAddressData }, ) - const loading = quotesFetching || debouncedBaseCurrencyAmount !== baseCurrencyAmount - - // if user is entering base amount -> ignore previous errors - const error = debouncedBaseCurrencyAmount !== baseCurrencyAmount ? undefined : quotesError - - return { - loading, - error, - quotes: quotesResponse?.quotes ?? undefined, - } -} + const { + data: commonBaseCurrencies, + error: commonBaseCurrenciesError, + loading: commonBaseCurrenciesLoading, + refetch: refetchCommonBaseCurrencies, + } = useAllCommonBaseCurrencies() -export function useParseFiatOnRampError( - error: unknown, - currencyCode: string, -): { - errorText: string | undefined - errorColor: ColorTokens | undefined -} { - const { t } = useTranslation() - const { formatNumberOrString } = useLocalizationContext() + const list = useMemo(() => { + if (!commonBaseCurrencies || !supportedTokens) { + return undefined + } - let errorText, errorColor: ColorTokens | undefined - if (!error) { - return { errorText, errorColor } - } + return supportedTokens + .map((fiatOnRampToken) => ({ + currencyInfo: findTokenOptionForMoonpayCurrency(commonBaseCurrencies, fiatOnRampToken), + moonpayCurrencyCode: fiatOnRampToken.code, + })) + .filter((item) => !!item.currencyInfo) + }, [commonBaseCurrencies, supportedTokens]) - errorText = t('fiatOnRamp.error.default') - errorColor = '$DEP_accentWarning' - - if (isFiatOnRampApiError(error)) { - if (isInvalidRequestAmountTooLow(error)) { - const formattedAmount = formatNumberOrString({ - value: error.data.context.minimumAllowed, - type: NumberType.FiatStandard, - currencyCode, - }) - errorText = t('fiatOnRamp.error.min', { amount: formattedAmount }) - errorColor = '$statusCritical' - } else if (isInvalidRequestAmountTooHigh(error)) { - const formattedAmount = formatNumberOrString({ - value: error.data.context.maximumAllowed, - type: NumberType.FiatStandard, - currencyCode, - }) - errorText = t('fiatOnRamp.error.max', { amount: formattedAmount }) - errorColor = '$statusCritical' + const loading = ipAddressLoading || supportedTokensLoading || commonBaseCurrenciesLoading + const error = Boolean(ipAddressError || supportedTokensError || commonBaseCurrenciesError) + const refetch = async (): Promise => { + if (ipAddressError) { + await refetchIpAddress() + } + if (supportedTokensError) { + await refetchSupportedTokens() + } + if (commonBaseCurrenciesError) { + refetchCommonBaseCurrencies?.() } } - return { errorText, errorColor } + return { list, loading, error, refetch } } diff --git a/apps/mobile/src/features/import/GenericImportForm.tsx b/apps/mobile/src/features/import/GenericImportForm.tsx index ecad2210b2e..f0bbcac38cf 100644 --- a/apps/mobile/src/features/import/GenericImportForm.tsx +++ b/apps/mobile/src/features/import/GenericImportForm.tsx @@ -3,9 +3,9 @@ import { Keyboard, TextInput as NativeTextInput } from 'react-native' import InputWithSuffix from 'src/features/import/InputWithSuffix' import { Flex, Text, useMedia } from 'ui/src' import { fonts } from 'ui/src/theme' -import PasteButton from 'uniswap/src/components/buttons/PasteButton' import Trace from 'uniswap/src/features/telemetry/Trace' import { SectionName } from 'uniswap/src/features/telemetry/constants' +import PasteButton from 'wallet/src/components/buttons/PasteButton' interface Props { value: string | undefined diff --git a/apps/mobile/src/features/modals/ModalsState.ts b/apps/mobile/src/features/modals/ModalsState.ts index f058dd00980..631020b404b 100644 --- a/apps/mobile/src/features/modals/ModalsState.ts +++ b/apps/mobile/src/features/modals/ModalsState.ts @@ -4,9 +4,9 @@ import { ScantasticModalState } from 'src/features/scantastic/ScantasticModalSta import { ReceiveCryptoModalState } from 'src/screens/ReceiveCryptoModalState' import { FORServiceProvider } from 'uniswap/src/features/fiatOnRamp/types' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { TransactionState } from 'uniswap/src/features/transactions/transactionState/types' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants' +import { TransactionState } from 'wallet/src/features/transactions/transactionState/types' export interface AppModalState { isOpen: boolean @@ -21,6 +21,7 @@ export interface ModalsState { [ModalName.Experiments]: AppModalState [ModalName.Explore]: AppModalState [ModalName.FiatCurrencySelector]: AppModalState + [ModalName.FiatOnRamp]: AppModalState [ModalName.FiatOnRampAggregator]: AppModalState [ModalName.ReceiveCryptoModal]: AppModalState [ModalName.LanguageSelector]: AppModalState diff --git a/apps/mobile/src/features/modals/modalSlice.test.ts b/apps/mobile/src/features/modals/modalSlice.test.ts index 5bd984a145a..ae3f49dd86c 100644 --- a/apps/mobile/src/features/modals/modalSlice.test.ts +++ b/apps/mobile/src/features/modals/modalSlice.test.ts @@ -1,5 +1,10 @@ import { createStore, Store } from '@reduxjs/toolkit' -import { closeModal, initialModalsState, modalsReducer, openModal } from 'src/features/modals/modalSlice' +import { + closeModal, + initialModalsState, + modalsReducer, + openModal, +} from 'src/features/modals/modalSlice' import { ModalsState } from 'src/features/modals/ModalsState' import { ModalName } from 'uniswap/src/features/telemetry/constants' import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants' diff --git a/apps/mobile/src/features/modals/modalSlice.ts b/apps/mobile/src/features/modals/modalSlice.ts index 239333724e4..a3bd0aeb0bb 100644 --- a/apps/mobile/src/features/modals/modalSlice.ts +++ b/apps/mobile/src/features/modals/modalSlice.ts @@ -6,10 +6,10 @@ import { ModalsState } from 'src/features/modals/ModalsState' import { ScantasticModalState } from 'src/features/scantastic/ScantasticModalState' import { ReceiveCryptoModalState } from 'src/screens/ReceiveCryptoModalState' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { TransactionState } from 'uniswap/src/features/transactions/transactionState/types' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { getKeys } from 'utilities/src/primitives/objects' import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants' +import { TransactionState } from 'wallet/src/features/transactions/transactionState/types' type AccountSwitcherModalParams = { name: typeof ModalName.AccountSwitcher @@ -33,6 +33,8 @@ type FiatCurrencySelectorParams = { initialState?: undefined } +type FiatOnRampModalParams = { name: typeof ModalName.FiatOnRamp; initialState?: undefined } + type FiatOnRampAggregatorModalParams = { name: typeof ModalName.FiatOnRampAggregator initialState?: undefined @@ -85,6 +87,7 @@ export type OpenModalParams = | ExperimentsModalParams | ExploreModalParams | FiatCurrencySelectorParams + | FiatOnRampModalParams | FiatOnRampAggregatorModalParams | ReceiveCryptoModalParams | LanguageSelectorModalParams @@ -104,6 +107,10 @@ export const initialModalsState: ModalsState = { isOpen: false, initialState: undefined, }, + [ModalName.FiatOnRamp]: { + isOpen: false, + initialState: undefined, + }, [ModalName.FiatOnRampAggregator]: { isOpen: false, initialState: undefined, diff --git a/apps/mobile/src/features/nfts/collection/NFTCollectionContextMenu.tsx b/apps/mobile/src/features/nfts/collection/NFTCollectionContextMenu.tsx index 8a83ff92dae..fac0a475acd 100644 --- a/apps/mobile/src/features/nfts/collection/NFTCollectionContextMenu.tsx +++ b/apps/mobile/src/features/nfts/collection/NFTCollectionContextMenu.tsx @@ -10,9 +10,8 @@ import { iconSizes, spacing } from 'ui/src/theme' import { WalletEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { ShareableEntity } from 'uniswap/src/types/sharing' -import { openUri } from 'uniswap/src/utils/linking' import { logger } from 'utilities/src/logger/logger' -import { getNftCollectionUrl, getTwitterLink } from 'wallet/src/utils/linking' +import { getNftCollectionUrl, getTwitterLink, openUri } from 'wallet/src/utils/linking' type MenuOption = { title: string diff --git a/apps/mobile/src/features/notifications/WCNotification.tsx b/apps/mobile/src/features/notifications/WCNotification.tsx index 47087843a09..08323eb11ce 100644 --- a/apps/mobile/src/features/notifications/WCNotification.tsx +++ b/apps/mobile/src/features/notifications/WCNotification.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { openModal } from 'src/features/modals/modalSlice' import { iconSizes } from 'ui/src/theme' import { toSupportedChainId } from 'uniswap/src/features/chains/utils' @@ -14,7 +14,7 @@ import { formWCNotificationTitle } from 'wallet/src/features/notifications/utils export function WCNotification({ notification }: { notification: WalletConnectNotification }): JSX.Element { const { imageUrl, chainId, address, event, hideDelay, dappName } = notification - const dispatch = useDispatch() + const dispatch = useAppDispatch() const validChainId = toSupportedChainId(chainId) const title = formWCNotificationTitle(notification) diff --git a/apps/mobile/src/features/onboarding/OnboardingScreen.tsx b/apps/mobile/src/features/onboarding/OnboardingScreen.tsx index 0b9b8714bf2..21851e05e12 100644 --- a/apps/mobile/src/features/onboarding/OnboardingScreen.tsx +++ b/apps/mobile/src/features/onboarding/OnboardingScreen.tsx @@ -1,10 +1,7 @@ -import { useFocusEffect } from '@react-navigation/core' import { useHeaderHeight } from '@react-navigation/elements' -import React, { PropsWithChildren, useCallback } from 'react' -import { BackHandler, KeyboardAvoidingView, StyleSheet } from 'react-native' +import React, { PropsWithChildren } from 'react' +import { KeyboardAvoidingView, StyleSheet } from 'react-native' import { FadeIn, FadeOut } from 'react-native-reanimated' -import { renderHeaderBackButton } from 'src/app/navigation/components' -import { useOnboardingStackNavigation } from 'src/app/navigation/types' import { SHORT_SCREEN_HEADER_HEIGHT_RATIO, Screen } from 'src/components/layout/Screen' import { Flex, SpaceTokens, Text, useDeviceInsets, useMedia } from 'ui/src' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' @@ -17,7 +14,6 @@ type OnboardingScreenProps = { paddingTop?: SpaceTokens childrenGap?: SpaceTokens keyboardAvoidingViewEnabled?: boolean - disableGoBack?: boolean } export function OnboardingScreen({ @@ -26,29 +22,13 @@ export function OnboardingScreen({ children, paddingTop = '$none', keyboardAvoidingViewEnabled = true, - disableGoBack = false, }: PropsWithChildren): JSX.Element { - const navigation = useOnboardingStackNavigation() const headerHeight = useHeaderHeight() const insets = useDeviceInsets() const media = useMedia() const gapSize = media.short ? '$none' : '$spacing16' - useFocusEffect( - useCallback(() => { - navigation.setOptions({ - headerLeft: disableGoBack ? (): null => null : renderHeaderBackButton, - gestureEnabled: !disableGoBack, - }) - const subscription = BackHandler.addEventListener('hardwareBackPress', () => { - return disableGoBack - }) - - return subscription.remove - }, [navigation, disableGoBack]), - ) - return ( ): JSX.Element { + const [footerHeight, setFooterHeight] = useState(0) const headerHeight = useHeaderHeight() const colors = useSporeColors() const media = useMedia() + const keyboard = useKeyboardLayout() + + const header = ( + + + {title} + + {subtitle ? ( + + {subtitle} + + ) : null} + + ) + + const page = ( + + {children} + + ) const normalGradientPadding = 1.5 const responsiveGradientPadding = media.short ? 1.25 : normalGradientPadding @@ -39,54 +62,69 @@ export function SafeKeyboardOnboardingScreen({ /> ) - const page = ( - <> - {title || subtitle ? ( - - {title && ( - - {title} - - )} - {subtitle && ( - - {subtitle} - - )} - - ) : null} - - {children} - - - ) + const compact = keyboard.isVisible && keyboard.containerHeight !== 0 + const containerStyle = compact ? styles.compact : styles.expand + + // This makes sure this component behaves just like `behavior="padding"` when + // there's enough space on the screen to show all components. + const minHeight = minHeightWhenKeyboardExpanded && compact ? keyboard.containerHeight - footerHeight : 0 return ( - - + - {page} - - + + + {header} + {page} + + + { + setFooterHeight(height) + }} + > + {screenFooter} + + + {topGradient} + ) } const styles = StyleSheet.create({ + base: { + flex: 1, + justifyContent: 'flex-end', + }, + compact: { + flexGrow: 0, + }, + container: { + paddingBottom: spacing.spacing12, + }, + expand: { + flexGrow: 1, + }, gradient: { left: 0, position: 'absolute', right: 0, top: 0, - zIndex: 1, }, }) diff --git a/apps/mobile/src/features/onboarding/hooks.ts b/apps/mobile/src/features/onboarding/hooks.ts index 40debb481b5..55199d2e06f 100644 --- a/apps/mobile/src/features/onboarding/hooks.ts +++ b/apps/mobile/src/features/onboarding/hooks.ts @@ -1,5 +1,5 @@ import { SharedEventName } from '@uniswap/analytics-events' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { OnboardingStackBaseParams, useOnboardingStackNavigation } from 'src/app/navigation/types' import { MobileAppsFlyerEvents } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent, sendAppsFlyerEvent } from 'uniswap/src/features/telemetry/send' @@ -20,7 +20,7 @@ export function useCompleteOnboardingCallback({ entryPoint, importType, }: OnboardingStackBaseParams): () => Promise { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { getAllOnboardingAccounts, finishOnboarding } = useOnboardingContext() const navigation = useOnboardingStackNavigation() diff --git a/apps/mobile/src/features/scantastic/ScantasticModal.tsx b/apps/mobile/src/features/scantastic/ScantasticModal.tsx index 3d4d4a4d1d2..7d802444423 100644 --- a/apps/mobile/src/features/scantastic/ScantasticModal.tsx +++ b/apps/mobile/src/features/scantastic/ScantasticModal.tsx @@ -1,7 +1,6 @@ import React, { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { useBiometricAppSettings, useBiometricPrompt } from 'src/features/biometrics/hooks' import { closeAllModals } from 'src/features/modals/modalSlice' import { selectModalState } from 'src/features/modals/selectModalState' @@ -36,7 +35,7 @@ interface OtpStateApiResponse { export function ScantasticModal(): JSX.Element | null { const { t } = useTranslation() const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() // Use the first mnemonic account because zero-balance mnemonic accounts will fail to retrieve the mnemonic from rnEthers const account = useSignerAccounts().sort( diff --git a/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/ReceiveSummaryItem.stories.tsx b/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/ReceiveSummaryItem.stories.tsx index c7ea41de3fa..b452b27097f 100644 --- a/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/ReceiveSummaryItem.stories.tsx +++ b/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/ReceiveSummaryItem.stories.tsx @@ -1,9 +1,9 @@ import type { Meta, StoryObj } from '@storybook/react' import React from 'react' import { TokenDocument } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' -import { AssetType } from 'uniswap/src/entities/assets' import { UniverseChainId } from 'uniswap/src/types/chains' import { Routing } from 'wallet/src/data/tradingApi/__generated__/index' +import { AssetType } from 'wallet/src/entities/assets' import { ReceiveSummaryItem } from 'wallet/src/features/transactions/SummaryCards/SummaryItems/ReceiveSummaryItem' import TransactionSummaryLayout from 'wallet/src/features/transactions/SummaryCards/SummaryItems/TransactionSummaryLayout' import { diff --git a/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/SendSummaryItem.stories.tsx b/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/SendSummaryItem.stories.tsx index e459764c256..c7986bc1bbd 100644 --- a/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/SendSummaryItem.stories.tsx +++ b/apps/mobile/src/features/transactions/SummaryCards/SummaryItems/SendSummaryItem.stories.tsx @@ -1,8 +1,8 @@ import type { Meta, StoryObj } from '@storybook/react' import React from 'react' import { TokenDocument } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' -import { AssetType } from 'uniswap/src/entities/assets' import { UniverseChainId } from 'uniswap/src/types/chains' +import { AssetType } from 'wallet/src/entities/assets' import { SendSummaryItem } from 'wallet/src/features/transactions/SummaryCards/SummaryItems/SendSummaryItem' import TransactionSummaryLayout from 'wallet/src/features/transactions/SummaryCards/SummaryItems/TransactionSummaryLayout' import { diff --git a/apps/mobile/src/features/transactions/swap/hooks/useOnCloseSendModal.tsx b/apps/mobile/src/features/transactions/swap/hooks/useOnCloseSendModal.tsx index 26792643e47..c1d1cf036d4 100644 --- a/apps/mobile/src/features/transactions/swap/hooks/useOnCloseSendModal.tsx +++ b/apps/mobile/src/features/transactions/swap/hooks/useOnCloseSendModal.tsx @@ -1,10 +1,10 @@ import { useCallback } from 'react' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { closeModal } from 'src/features/modals/modalSlice' import { ModalName } from 'uniswap/src/features/telemetry/constants' export function useOnCloseSendModal(): () => void { - const appDispatch = useDispatch() + const appDispatch = useAppDispatch() const onClose = useCallback((): void => { appDispatch(closeModal({ name: ModalName.Send })) diff --git a/apps/mobile/src/features/transactions/transfer/TransferFlow.tsx b/apps/mobile/src/features/transactions/transfer/TransferFlow.tsx index c957d8c40bd..6f215340815 100644 --- a/apps/mobile/src/features/transactions/transfer/TransferFlow.tsx +++ b/apps/mobile/src/features/transactions/transfer/TransferFlow.tsx @@ -1,7 +1,7 @@ import { providers } from 'ethers' import { default as React, useCallback, useEffect, useMemo, useReducer, useState } from 'react' import { useTranslation } from 'react-i18next' -import { Keyboard, LayoutAnimation, StyleSheet, TouchableWithoutFeedback } from 'react-native' +import { StyleSheet, TouchableWithoutFeedback } from 'react-native' import Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated' import { useShouldShowNativeKeyboard } from 'src/app/hooks' import { RecipientSelect } from 'src/components/RecipientSelect/RecipientSelect' @@ -14,30 +14,15 @@ import { Flex, useDeviceInsets, useSporeColors } from 'ui/src' import EyeIcon from 'ui/src/assets/icons/eye.svg' import { useDeviceDimensions } from 'ui/src/hooks/useDeviceDimensions' import { iconSizes } from 'ui/src/theme' -import { TokenSelectorModal, TokenSelectorVariation } from 'uniswap/src/components/TokenSelector/TokenSelector' import { useBottomSheetContext } from 'uniswap/src/components/modals/BottomSheetContext' import { HandleBar } from 'uniswap/src/components/modals/HandleBar' import Trace from 'uniswap/src/features/telemetry/Trace' import { ModalName, SectionName } from 'uniswap/src/features/telemetry/constants' -import { CurrencyField, TransactionState } from 'uniswap/src/features/transactions/transactionState/types' -import { TokenSelectorFlow } from 'uniswap/src/features/transactions/transfer/types' import { currencyAddress } from 'uniswap/src/utils/currencyId' -import { - useAddToSearchHistory, - useCommonTokensOptions, - useFavoriteTokensOptions, - useFilterCallbacks, - usePopularTokensOptions, - usePortfolioTokenOptions, - useTokenSectionsForEmptySearch, - useTokenSectionsForSearchResults, -} from 'wallet/src/components/TokenSelector/hooks' +import { TokenSelectorModal, TokenSelectorVariation } from 'wallet/src/components/TokenSelector/TokenSelector' import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' -import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' import { useTransactionGasFee } from 'wallet/src/features/gas/hooks' import { GasFeeResult, GasSpeed } from 'wallet/src/features/gas/types' -import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' -import { useTokenWarningDismissed } from 'wallet/src/features/tokens/safetyHooks' import { WarningAction, WarningSeverity } from 'wallet/src/features/transactions/WarningModal/types' import { useParsedSendWarnings } from 'wallet/src/features/transactions/hooks/useParsedTransactionWarnings' import { useTokenSelectorActionHandlers } from 'wallet/src/features/transactions/hooks/useTokenSelectorActionHandlers' @@ -46,6 +31,7 @@ import { INITIAL_TRANSACTION_STATE, transactionStateReducer, } from 'wallet/src/features/transactions/transactionState/transactionState' +import { CurrencyField, TransactionState } from 'wallet/src/features/transactions/transactionState/types' import { TransferReview } from 'wallet/src/features/transactions/transfer/TransferReview' import { TransferTokenForm } from 'wallet/src/features/transactions/transfer/TransferTokenForm' import { useDerivedTransferInfo } from 'wallet/src/features/transactions/transfer/hooks/useDerivedTransferInfo' @@ -57,9 +43,8 @@ import { } from 'wallet/src/features/transactions/transfer/hooks/useTransferCallback' import { useTransferTransactionRequest } from 'wallet/src/features/transactions/transfer/hooks/useTransferTransactionRequest' import { useTransferWarnings } from 'wallet/src/features/transactions/transfer/hooks/useTransferWarnings' -import { DerivedTransferInfo } from 'wallet/src/features/transactions/transfer/types' +import { DerivedTransferInfo, TokenSelectorFlow } from 'wallet/src/features/transactions/transfer/types' import { TransactionStep, TransferFlowProps } from 'wallet/src/features/transactions/types' -import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' interface TransferFormProps { prefilledState?: TransactionState @@ -72,9 +57,6 @@ export function TransferFlow({ prefilledState, onClose }: TransferFormProps): JS const { t } = useTranslation() const { fullWidth } = useDeviceDimensions() const { isSheetReady } = useBottomSheetContext() - const { formatNumberOrString, convertFiatAmountFormatted } = useLocalizationContext() - const { navigateToBuyOrReceiveWithEmptyWallet } = useWalletNavigation() - const { registerSearch } = useAddToSearchHistory() const [state, dispatch] = useReducer(transactionStateReducer, prefilledState || INITIAL_TRANSACTION_STATE) const derivedTransferInfo = useDerivedTransferInfo(state) @@ -84,8 +66,6 @@ export function TransferFlow({ prefilledState, onClose }: TransferFormProps): JS const { isFiatInput, exactAmountToken, exactAmountFiat } = derivedTransferInfo const { showRecipientSelector } = state - const activeAccountAddress = useActiveAccountAddressWithThrow() - const onSelectRecipient = useOnSelectRecipient(dispatch) const onSetShowRecipientSelector = useSetShowRecipientSelector(dispatch) @@ -231,25 +211,10 @@ export function TransferFlow({ prefilledState, onClose }: TransferFormProps): JS {!!state.selectingCurrencyField && ( Keyboard.dismiss()} - onPressAnimation={() => LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut)} onSelectCurrency={onSelectCurrency} /> )} diff --git a/apps/mobile/src/features/transactions/transfer/TransferStatus.tsx b/apps/mobile/src/features/transactions/transfer/TransferStatus.tsx index 6264957444b..04d07fd7f7e 100644 --- a/apps/mobile/src/features/transactions/transfer/TransferStatus.tsx +++ b/apps/mobile/src/features/transactions/transfer/TransferStatus.tsx @@ -4,11 +4,11 @@ import { goBack } from 'src/app/navigation/rootNavigation' import { TransactionPending } from 'src/features/transactions/TransactionPending/TransactionPending' import { AppTFunction } from 'ui/src/i18n/types' import { FiatCurrencyInfo } from 'uniswap/src/features/fiatOnRamp/types' -import { CurrencyField } from 'uniswap/src/features/transactions/transactionState/types' import { NumberType } from 'utilities/src/format/types' import { useAppFiatCurrencyInfo } from 'wallet/src/features/fiatCurrency/hooks' import { LocalizationContextState, useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' import { useSelectTransaction } from 'wallet/src/features/transactions/hooks' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' import { DerivedTransferInfo } from 'wallet/src/features/transactions/transfer/types' import { TransactionDetails, TransactionStatus, TransactionType } from 'wallet/src/features/transactions/types' import { useActiveAccountAddressWithThrow, useDisplayName } from 'wallet/src/features/wallet/hooks' diff --git a/apps/mobile/src/features/transactions/transfer/transferRewrite/TransferFlow.tsx b/apps/mobile/src/features/transactions/transfer/transferRewrite/TransferFlow.tsx index 2aeff67f62a..9610643d296 100644 --- a/apps/mobile/src/features/transactions/transfer/transferRewrite/TransferFlow.tsx +++ b/apps/mobile/src/features/transactions/transfer/transferRewrite/TransferFlow.tsx @@ -11,10 +11,10 @@ import { import { useWalletRestore } from 'src/features/wallet/hooks' import Trace from 'uniswap/src/features/telemetry/Trace' import { ModalName, SectionName } from 'uniswap/src/features/telemetry/constants' -import { TradeProtocolPreference } from 'uniswap/src/features/transactions/transactionState/types' import { SwapFormContextProvider, SwapFormState } from 'wallet/src/features/transactions/contexts/SwapFormContext' import { TransactionModal } from 'wallet/src/features/transactions/swap/TransactionModal' import { getFocusOnCurrencyFieldFromInitialState } from 'wallet/src/features/transactions/swap/hooks/useSwapPrefilledState' +import { TradeProtocolPreference } from 'wallet/src/features/transactions/transactionState/types' /** * @todo: The screens within this flow are not implemented. diff --git a/apps/mobile/src/features/unitags/ClaimUnitagScreen.tsx b/apps/mobile/src/features/unitags/ClaimUnitagScreen.tsx index c2fbf74b3c2..6ddd4ca74ca 100644 --- a/apps/mobile/src/features/unitags/ClaimUnitagScreen.tsx +++ b/apps/mobile/src/features/unitags/ClaimUnitagScreen.tsx @@ -16,7 +16,6 @@ import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { fonts, iconSizes, imageSizes, spacing } from 'ui/src/theme' import { TextInput } from 'uniswap/src/components/input/TextInput' import { Pill } from 'uniswap/src/components/pill/Pill' -import { LearnMoreLink } from 'uniswap/src/components/text/LearnMoreLink' import { uniswapUrls } from 'uniswap/src/constants/urls' import Trace from 'uniswap/src/features/telemetry/Trace' import { ElementName, ModalName, UnitagEventName } from 'uniswap/src/features/telemetry/constants' @@ -28,6 +27,7 @@ import { shortenAddress } from 'uniswap/src/utils/addresses' import { logger } from 'utilities/src/logger/logger' import { ONE_SECOND_MS } from 'utilities/src/time/time' import { WarningModal } from 'wallet/src/components/modals/WarningModal/WarningModal' +import { LearnMoreLink } from 'wallet/src/components/text/LearnMoreLink' import { useCreateOnboardingAccountIfNone, useOnboardingContext, diff --git a/apps/mobile/src/features/unitags/EditUnitagProfileScreen.tsx b/apps/mobile/src/features/unitags/EditUnitagProfileScreen.tsx index 7adbf15502a..a8454abf5e7 100644 --- a/apps/mobile/src/features/unitags/EditUnitagProfileScreen.tsx +++ b/apps/mobile/src/features/unitags/EditUnitagProfileScreen.tsx @@ -2,7 +2,6 @@ import React, { useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { Keyboard, KeyboardAvoidingView, StyleSheet } from 'react-native' import ContextMenu from 'react-native-context-menu-view' -import { useDispatch } from 'react-redux' import { navigate } from 'src/app/navigation/rootNavigation' import { UnitagStackScreenProp } from 'src/app/navigation/types' import { BackHeader } from 'src/components/layout/BackHeader' @@ -39,6 +38,7 @@ import { useAvatarUploadCredsWithRefresh } from 'wallet/src/features/unitags/hoo import { useWalletSigners } from 'wallet/src/features/wallet/context' import { useAccount } from 'wallet/src/features/wallet/hooks' import { DisplayNameType } from 'wallet/src/features/wallet/types' +import { useAppDispatch } from 'wallet/src/state' const BIO_TEXT_INPUT_LINES = 6 @@ -71,7 +71,7 @@ export function EditUnitagProfileScreen({ route }: UnitagStackScreenProp void isModalOpen: boolean } { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const openModalImmediately = params?.openModalImmediately // Means that no private key found for mnemonic wallets const [walletNeedsRestore, setWalletNeedsRestore] = useState(false) diff --git a/apps/mobile/src/features/walletConnect/signWcRequestSaga.ts b/apps/mobile/src/features/walletConnect/signWcRequestSaga.ts index c008cd87b51..89a0fecc631 100644 --- a/apps/mobile/src/features/walletConnect/signWcRequestSaga.ts +++ b/apps/mobile/src/features/walletConnect/signWcRequestSaga.ts @@ -2,10 +2,10 @@ import { providers } from 'ethers' import { wcWeb3Wallet } from 'src/features/walletConnect/saga' import { TransactionRequest, UwuLinkErc20Request } from 'src/features/walletConnect/walletConnectSlice' import { call, put } from 'typed-redux-saga' -import { AssetType } from 'uniswap/src/entities/assets' import { UniverseChainId, WalletChainId } from 'uniswap/src/types/chains' import { DappInfo, EthMethod, EthSignMethod, UwULinkMethod, WalletConnectEvent } from 'uniswap/src/types/walletConnect' import { logger } from 'utilities/src/logger/logger' +import { AssetType } from 'wallet/src/entities/assets' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType } from 'wallet/src/features/notifications/types' import { SendTransactionParams, sendTransaction } from 'wallet/src/features/transactions/sendTransactionSaga' diff --git a/apps/mobile/src/features/walletConnect/utils.test.ts b/apps/mobile/src/features/walletConnect/utils.test.ts index d3fd396eeaa..6f027b88bae 100644 --- a/apps/mobile/src/features/walletConnect/utils.test.ts +++ b/apps/mobile/src/features/walletConnect/utils.test.ts @@ -14,11 +14,15 @@ const TEST_ADDRESS = '0xdFb84E543C39ACa3c6a39ea4e3B6c40eE7d2EBdA' describe(getAccountAddressFromEIP155String, () => { it('handles valid eip155 mainnet address', () => { - expect(getAccountAddressFromEIP155String(`${EIP155_MAINNET}:${TEST_ADDRESS}`)).toBe(TEST_ADDRESS) + expect(getAccountAddressFromEIP155String(`${EIP155_MAINNET}:${TEST_ADDRESS}`)).toBe( + TEST_ADDRESS + ) }) it('handles valid eip155 polygon address', () => { - expect(getAccountAddressFromEIP155String(`${EIP155_POLYGON}:${TEST_ADDRESS}`)).toBe(TEST_ADDRESS) + expect(getAccountAddressFromEIP155String(`${EIP155_POLYGON}:${TEST_ADDRESS}`)).toBe( + TEST_ADDRESS + ) }) it('handles invalid eip155 address', () => { @@ -28,18 +32,15 @@ describe(getAccountAddressFromEIP155String, () => { describe(getSupportedWalletConnectChains, () => { it('handles list of valid chains', () => { - expect(getSupportedWalletConnectChains([EIP155_MAINNET, EIP155_POLYGON, EIP155_OPTIMISM])).toEqual([ - UniverseChainId.Mainnet, - UniverseChainId.Polygon, - UniverseChainId.Optimism, - ]) + expect( + getSupportedWalletConnectChains([EIP155_MAINNET, EIP155_POLYGON, EIP155_OPTIMISM]) + ).toEqual([UniverseChainId.Mainnet, UniverseChainId.Polygon, UniverseChainId.Optimism]) }) it('handles list of valid chains including an invalid chain', () => { - expect(getSupportedWalletConnectChains([EIP155_MAINNET, EIP155_POLYGON, EIP155_LINEA_UNSUPPORTED])).toEqual([ - UniverseChainId.Mainnet, - UniverseChainId.Polygon, - ]) + expect( + getSupportedWalletConnectChains([EIP155_MAINNET, EIP155_POLYGON, EIP155_LINEA_UNSUPPORTED]) + ).toEqual([UniverseChainId.Mainnet, UniverseChainId.Polygon]) }) }) diff --git a/apps/mobile/src/features/widgets/widgets.ts b/apps/mobile/src/features/widgets/widgets.ts index c1768c855e6..367ee40607e 100644 --- a/apps/mobile/src/features/widgets/widgets.ts +++ b/apps/mobile/src/features/widgets/widgets.ts @@ -1,7 +1,6 @@ import { NativeModules } from 'react-native' import { getItem, reloadAllTimelines, setItem } from 'react-native-widgetkit' import { getBuildVariant } from 'src/utils/version' -import { currencyIdToContractInput } from 'uniswap/src/features/dataApi/utils' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { CurrencyId } from 'uniswap/src/types/currency' @@ -9,6 +8,7 @@ import { WidgetEvent } from 'uniswap/src/types/widgets' import { isAndroid } from 'utilities/src/platform' // eslint-disable-next-line no-restricted-imports import { analytics } from 'utilities/src/telemetry/analytics/analytics' +import { currencyIdToContractInput } from 'wallet/src/features/dataApi/utils' import { Account, AccountType } from 'wallet/src/features/wallet/accounts/types' const APP_GROUP = 'group.com.uniswap.widgets' diff --git a/apps/mobile/src/screens/AppLoadingScreen.tsx b/apps/mobile/src/screens/AppLoadingScreen.tsx index 1be91164dfb..47467f4104e 100644 --- a/apps/mobile/src/screens/AppLoadingScreen.tsx +++ b/apps/mobile/src/screens/AppLoadingScreen.tsx @@ -2,8 +2,8 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import dayjs from 'dayjs' import { isEnrolledAsync } from 'expo-local-authentication' import { t } from 'i18next' +import { isNumber } from 'lodash' import { useCallback, useEffect, useState } from 'react' -import { useDispatch } from 'react-redux' import { OnboardingStackParamList } from 'src/app/navigation/types' import { SplashScreen } from 'src/features/appLoading/SplashScreen' import { useBiometricContext } from 'src/features/biometrics/context' @@ -14,8 +14,8 @@ import { } from 'src/features/notifications/hooks/useNotificationOSPermissionsEnabled' import { RecoveryWalletInfo, useOnDeviceRecoveryData } from 'src/screens/Import/useOnDeviceRecoveryData' import { hideSplashScreen } from 'src/utils/splashScreen' -import { DynamicConfigs, OnDeviceRecoveryConfigKey } from 'uniswap/src/features/gating/configs' -import { useDynamicConfigValue } from 'uniswap/src/features/gating/hooks' +import { DynamicConfigs } from 'uniswap/src/features/gating/configs' +import { useDynamicConfig } from 'uniswap/src/features/gating/hooks' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { ImportType, OnboardingEntryPoint } from 'uniswap/src/types/onboarding' @@ -26,7 +26,7 @@ import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' import { AccountType, SignerMnemonicAccount } from 'wallet/src/features/wallet/accounts/types' import { selectAnyAddressHasNotificationsEnabled } from 'wallet/src/features/wallet/selectors' import { setFinishedOnboarding } from 'wallet/src/features/wallet/slice' -import { useAppSelector } from 'wallet/src/state' +import { useAppDispatch, useAppSelector } from 'wallet/src/state' export const SPLASH_SCREEN = { uri: 'SplashScreen' } @@ -35,7 +35,7 @@ type Props = NativeStackScreenProps void } { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { setRecoveredImportedAccounts, finishOnboarding } = useOnboardingContext() const notificationOSPermission = useNotificationOSPermissionsEnabled() @@ -120,18 +120,15 @@ function useFinishAutomatedRecovery(navigation: Props['navigation']): { const FALLBACK_APP_LOADING_TIMEOUT_MS = 15000 export function AppLoadingScreen({ navigation }: Props): JSX.Element | null { - const dispatch = useDispatch() + const dispatch = useAppDispatch() - const appLoadingTimeoutMs = useDynamicConfigValue( - DynamicConfigs.OnDeviceRecovery, - OnDeviceRecoveryConfigKey.AppLoadingTimeoutMs, + const onDeviceRecoveryConfig = useDynamicConfig(DynamicConfigs.OnDeviceRecovery) + const appLoadingTimeoutMs = onDeviceRecoveryConfig.get( + 'appLoadingTimeoutMs', FALLBACK_APP_LOADING_TIMEOUT_MS, + isNumber, ) - const maxMnemonicsToLoad = useDynamicConfigValue( - DynamicConfigs.OnDeviceRecovery, - OnDeviceRecoveryConfigKey.MaxMnemonicsToLoad, - 20, - ) + const maxMnemonicsToLoad = onDeviceRecoveryConfig.getValue('maxMnemonicsToLoad', 20) as number const [finished, setFinished] = useState(false) diff --git a/apps/mobile/src/screens/DevScreen.tsx b/apps/mobile/src/screens/DevScreen.tsx index 190e1e8102c..b7260c6dce2 100644 --- a/apps/mobile/src/screens/DevScreen.tsx +++ b/apps/mobile/src/screens/DevScreen.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react' import { I18nManager, ScrollView } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { BackButton } from 'src/components/buttons/BackButton' import { Screen } from 'src/components/layout/Screen' @@ -22,7 +22,7 @@ import { useAppSelector } from 'wallet/src/state' export function DevScreen(): JSX.Element { const insets = useDeviceInsets() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const activeAccount = useActiveAccount() const [rtlEnabled, setRTLEnabled] = useState(I18nManager.isRTL) const sortedMnemonicAccounts = useAppSelector(selectSortedSignerMnemonicAccounts) diff --git a/apps/mobile/src/screens/ExchangeTransferConnecting.tsx b/apps/mobile/src/screens/ExchangeTransferConnecting.tsx index ab3cb778675..dcb551c5474 100644 --- a/apps/mobile/src/screens/ExchangeTransferConnecting.tsx +++ b/apps/mobile/src/screens/ExchangeTransferConnecting.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { Screen } from 'src/components/layout/Screen' import { useFiatOnRampTransactionCreator } from 'src/features/fiatOnRamp/hooks' import { Flex, useIsDarkMode } from 'ui/src' @@ -13,14 +13,13 @@ import { getServiceProviderLogo } from 'uniswap/src/features/fiatOnRamp/utils' import { InstitutionTransferEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { UniverseChainId } from 'uniswap/src/types/chains' -import { openUri } from 'uniswap/src/utils/linking' import { ONE_SECOND_MS } from 'utilities/src/time/time' import { useTimeout } from 'utilities/src/time/timing' import { ImageUri } from 'wallet/src/features/images/ImageUri' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType } from 'wallet/src/features/notifications/types' -import { FiatPurchaseTransactionInfo } from 'wallet/src/features/transactions/types' import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' +import { openUri } from 'wallet/src/utils/linking' // Design decision const CONNECTING_TIMEOUT = 2 * ONE_SECOND_MS @@ -33,19 +32,15 @@ export function ExchangeTransferConnecting({ onClose: () => void }): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const activeAccountAddress = useActiveAccountAddressWithThrow() const [timeoutElapsed, setTimeoutElapsed] = useState(false) - const initialTypeInfo = useMemo>( - () => ({ serviceProviderLogo: serviceProvider.logos, serviceProvider: serviceProvider.serviceProvider }), - [serviceProvider], - ) + const initialTypeInfo = useMemo(() => ({ serviceProviderLogo: serviceProvider.logos }), [serviceProvider.logos]) const { externalTransactionId, dispatchAddTransaction } = useFiatOnRampTransactionCreator( activeAccountAddress, UniverseChainId.Mainnet, - serviceProvider.serviceProvider, initialTypeInfo, ) diff --git a/apps/mobile/src/screens/ExploreScreen.tsx b/apps/mobile/src/screens/ExploreScreen.tsx index e1caeb84407..b6b0e91cc05 100644 --- a/apps/mobile/src/screens/ExploreScreen.tsx +++ b/apps/mobile/src/screens/ExploreScreen.tsx @@ -2,7 +2,7 @@ import { useScrollToTop } from '@react-navigation/native' import { SharedEventName } from '@uniswap/analytics-events' import React, { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' -import { Keyboard, KeyboardAvoidingView, TextInput } from 'react-native' +import { KeyboardAvoidingView, TextInput } from 'react-native' import { FadeIn, FadeOut } from 'react-native-reanimated' import { useAppSelector } from 'src/app/hooks' import { useExploreStackNavigation } from 'src/app/navigation/types' @@ -16,11 +16,11 @@ import { ColorTokens, Flex, flexStyles, useIsDarkMode } from 'ui/src' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { useBottomSheetContext } from 'uniswap/src/components/modals/BottomSheetContext' import { HandleBar } from 'uniswap/src/components/modals/HandleBar' -import { SearchTextInput } from 'uniswap/src/features/search/SearchTextInput' import { ModalName, SectionName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { useDebounce } from 'utilities/src/time/timing' +import { SearchTextInput } from 'wallet/src/features/search/SearchTextInput' export function ExploreScreen(): JSX.Element { const modalInitialState = useAppSelector(selectModalState(ModalName.Explore)).initialState @@ -83,13 +83,12 @@ export function ExploreScreen(): JSX.Element { showShadow={!isSearchMode} onCancel={onSearchCancel} onChangeText={onSearchChangeText} - onDismiss={() => Keyboard.dismiss()} onFocus={onSearchFocus} /> {isSearchMode ? ( - + {debouncedSearchQuery.length === 0 ? ( diff --git a/apps/mobile/src/screens/FiatOnRampConnecting.tsx b/apps/mobile/src/screens/FiatOnRampConnecting.tsx index f15f73aed15..03e854dfcd7 100644 --- a/apps/mobile/src/screens/FiatOnRampConnecting.tsx +++ b/apps/mobile/src/screens/FiatOnRampConnecting.tsx @@ -2,7 +2,7 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import { skipToken } from '@reduxjs/toolkit/query/react' import React, { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { FiatOnRampStackParamList } from 'src/app/navigation/types' import { Screen } from 'src/components/layout/Screen' import { useFiatOnRampContext } from 'src/features/fiatOnRamp/FiatOnRampContext' @@ -14,12 +14,11 @@ import { uniswapUrls } from 'uniswap/src/constants/urls' import { FiatOnRampConnectingView } from 'uniswap/src/features/fiatOnRamp/FiatOnRampConnectingView' import { useFiatOnRampAggregatorWidgetQuery } from 'uniswap/src/features/fiatOnRamp/api' import { ServiceProviderLogoStyles } from 'uniswap/src/features/fiatOnRamp/constants' -import { getOptionalServiceProviderLogo } from 'uniswap/src/features/fiatOnRamp/utils' +import { getOptionalServiceProviderLogo, getServiceProviderForQuote } from 'uniswap/src/features/fiatOnRamp/utils' import { FiatOnRampEventName, ModalName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { UniverseChainId } from 'uniswap/src/types/chains' import { FiatOnRampScreens } from 'uniswap/src/types/screens/mobile' -import { openUri } from 'uniswap/src/utils/linking' import { ONE_SECOND_MS } from 'utilities/src/time/time' import { useTimeout } from 'utilities/src/time/timing' import { ImageUri } from 'wallet/src/features/images/ImageUri' @@ -27,8 +26,8 @@ import { useLocalizationContext } from 'wallet/src/features/language/Localizatio import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType } from 'wallet/src/features/notifications/types' import { forceFetchFiatOnRampTransactions } from 'wallet/src/features/transactions/slice' -import { FiatPurchaseTransactionInfo } from 'wallet/src/features/transactions/types' import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' +import { openUri } from 'wallet/src/utils/linking' // Design decision const CONNECTING_TIMEOUT = 2 * ONE_SECOND_MS @@ -37,27 +36,28 @@ type Props = NativeStackScreenProps>( - () => ({ - serviceProviderLogo: serviceProvider?.logos, - serviceProvider: serviceProvider?.serviceProvider, - }), - [serviceProvider], - ) + const initialTypeInfo = useMemo(() => ({ serviceProviderLogo: serviceProvider?.logos }), [serviceProvider?.logos]) const { externalTransactionId, dispatchAddTransaction } = useFiatOnRampTransactionCreator( activeAccountAddress, quoteCurrency.currencyInfo?.currency.chainId ?? UniverseChainId.Mainnet, - serviceProvider?.serviceProvider, initialTypeInfo, ) @@ -105,7 +105,7 @@ export function FiatOnRampConnectingScreen({ navigation }: Props): JSX.Element | sendAnalyticsEvent(FiatOnRampEventName.FiatOnRampWidgetOpened, { externalTransactionId, serviceProvider: serviceProvider.serviceProvider, - preselectedServiceProvider: quotesSections?.[0]?.data?.[0]?.serviceProviderDetails.serviceProvider, + preselectedServiceProvider: quotesSections?.[0]?.data?.[0]?.serviceProvider, countryCode, countryState, fiatCurrency: baseCurrencyInfo?.code.toLowerCase(), diff --git a/apps/mobile/src/screens/FiatOnRampScreen.tsx b/apps/mobile/src/screens/FiatOnRampScreen.tsx index 2b32e658140..e5854f6b8b7 100644 --- a/apps/mobile/src/screens/FiatOnRampScreen.tsx +++ b/apps/mobile/src/screens/FiatOnRampScreen.tsx @@ -4,8 +4,7 @@ import { useTranslation } from 'react-i18next' import { TextInput, TextInputProps } from 'react-native' import FastImage from 'react-native-fast-image' import { FadeIn, FadeOut, FadeOutDown } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' -import { useShouldShowNativeKeyboard } from 'src/app/hooks' +import { useAppDispatch, useShouldShowNativeKeyboard } from 'src/app/hooks' import { FiatOnRampStackParamList } from 'src/app/navigation/types' import { FiatOnRampCtaButton } from 'src/components/fiatOnRamp/CtaButton' import { Screen } from 'src/components/layout/Screen' @@ -15,19 +14,23 @@ import { FiatOnRampCountryListModal } from 'src/features/fiatOnRamp/FiatOnRampCo import { FiatOnRampTokenSelectorModal } from 'src/features/fiatOnRamp/FiatOnRampTokenSelector' import { useFiatOnRampQuotes, - useFiatOnRampSupportedTokens, useMeldFiatCurrencySupportInfo, useParseFiatOnRampError, -} from 'src/features/fiatOnRamp/hooks' +} from 'src/features/fiatOnRamp/aggregatorHooks' +import { useFiatOnRampSupportedTokens } from 'src/features/fiatOnRamp/hooks' import { Flex, Text, useIsDarkMode } from 'ui/src' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { useBottomSheetContext } from 'uniswap/src/components/modals/BottomSheetContext' import { HandleBar } from 'uniswap/src/components/modals/HandleBar' import { FiatOnRampCountryPicker } from 'uniswap/src/features/fiatOnRamp/FiatOnRampCountryPicker' -import { useFiatOnRampAggregatorGetCountryQuery } from 'uniswap/src/features/fiatOnRamp/api' +import { + useFiatOnRampAggregatorGetCountryQuery, + useFiatOnRampAggregatorServiceProvidersQuery, +} from 'uniswap/src/features/fiatOnRamp/api' import { FORQuote, FORServiceProvider, + FORTransaction, FiatOnRampCurrency, InitialQuoteSelection, } from 'uniswap/src/features/fiatOnRamp/types' @@ -40,23 +43,26 @@ import { usePrevious } from 'utilities/src/react/hooks' import { DEFAULT_DELAY, useDebounce } from 'utilities/src/time/timing' import { DecimalPadLegacy } from 'wallet/src/components/legacy/DecimalPadLegacy' import { useLocalFiatToUSDConverter } from 'wallet/src/features/fiatCurrency/hooks' +import { useFiatOnRampAggregatorTransactionQuery } from 'wallet/src/features/fiatOnRamp/api' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType } from 'wallet/src/features/notifications/types' type Props = NativeStackScreenProps -function selectInitialQuote(quotes: FORQuote[] | undefined): { - quote: FORQuote | undefined - type: InitialQuoteSelection | undefined -} { - const quoteFromLastUsedProvider = quotes?.find((q) => q.isMostRecentlyUsedProvider) - if (quoteFromLastUsedProvider) { - return { - quote: quoteFromLastUsedProvider, - type: InitialQuoteSelection.MostRecent, +function selectInitialQuote( + quotes: FORQuote[] | undefined, + lastTransaction: FORTransaction | undefined, +): { quote: FORQuote | undefined; type: InitialQuoteSelection | undefined } { + const lastUsedServiceProvider = lastTransaction?.serviceProvider + if (lastUsedServiceProvider) { + const quote = quotes?.filter((q) => q.serviceProvider === lastUsedServiceProvider)[0] + if (quote) { + return { + quote, + type: InitialQuoteSelection.MostRecent, + } } } - const bestQuote = quotes && quotes.length && quotes[0] if (bestQuote) { return { @@ -79,7 +85,7 @@ const PREDEFINED_AMOUNTS_SUPPORTED_CURRENCIES = ['usd', 'eur', 'gbp', 'aud', 'ca export function FiatOnRampScreen({ navigation }: Props): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isDarkMode = useIsDarkMode() const [selection, setSelection] = useState() const [value, setValue] = useState('') @@ -100,6 +106,7 @@ export function FiatOnRampScreen({ navigation }: Props): JSX.Element { amount, setAmount, setBaseCurrencyInfo, + setServiceProviders, quoteCurrency, setQuoteCurrency, } = useFiatOnRampContext() @@ -137,20 +144,29 @@ export function FiatOnRampScreen({ navigation }: Props): JSX.Element { } }, [ipCountryData, setCountryCode, setCountryState]) + const { + currentData: serviceProvidersResponse, + isFetching: serviceProvidersLoading, + error: serviceProvidersError, + } = useFiatOnRampAggregatorServiceProvidersQuery({ countryCode }) + // preload service provider logos for given quotes for the next screen useEffect(() => { - if (quotes) { - preloadServiceProviderLogos( - quotes.map((q) => q.serviceProviderDetails), - isDarkMode, + if (serviceProvidersResponse?.serviceProviders && quotes) { + const quotesServiceProviderNames = quotes.map((q) => q.serviceProvider) + const serviceProviders = serviceProvidersResponse.serviceProviders.filter( + (sp) => quotesServiceProviderNames.indexOf(sp.serviceProvider) !== -1, ) + preloadServiceProviderLogos(serviceProviders, isDarkMode) } - }, [quotes, isDarkMode]) + }, [serviceProvidersResponse, quotes, isDarkMode]) + + const { currentData: transactionResponse } = useFiatOnRampAggregatorTransactionQuery({}) const prevQuotes = usePrevious(quotes) useEffect(() => { if (quotes && (!selectedQuote || prevQuotes !== quotes)) { - const { quote, type } = selectInitialQuote(quotes) + const { quote, type } = selectInitialQuote(quotes, transactionResponse?.transaction) if (!quote) { return } @@ -162,14 +178,14 @@ export function FiatOnRampScreen({ navigation }: Props): JSX.Element { } setSelectedQuote(quote) } - }, [prevQuotes, quotes, selectedQuote, setQuotesSections, setSelectedQuote, t]) + }, [prevQuotes, quotes, selectedQuote, setQuotesSections, setSelectedQuote, t, transactionResponse]) useEffect(() => { - if (!quotes && (quotesError || !amount)) { + if (!quotes && (quotesError || serviceProvidersError || !amount)) { setQuotesSections(undefined) setSelectedQuote(undefined) } - }, [amount, quotesError, quotes, setQuotesSections, setSelectedQuote]) + }, [amount, quotesError, serviceProvidersError, quotes, setQuotesSections, setSelectedQuote]) const onSelectCountry: ComponentProps['onSelectCountry'] = (country): void => { dispatch( @@ -208,11 +224,22 @@ export function FiatOnRampScreen({ navigation }: Props): JSX.Element { }, [showNativeKeyboard, showTokenSelector]) // we only show loading when there are no errors and quote value is not empty - const buttonDisabled = selectTokenLoading || !!quotesError || !selectedQuote?.destinationAmount + const buttonDisabled = + serviceProvidersLoading || + !!serviceProvidersError || + selectTokenLoading || + !!quotesError || + !selectedQuote?.destinationAmount const onContinue = (): void => { - if (quotes && quoteCurrency?.currencyInfo?.currency) { + if ( + quotes && + serviceProvidersResponse?.serviceProviders && + serviceProvidersResponse?.serviceProviders.length > 0 && + quoteCurrency?.currencyInfo?.currency + ) { setBaseCurrencyInfo(meldSupportedFiatCurrency) + setServiceProviders(serviceProvidersResponse.serviceProviders) navigation.navigate(FiatOnRampScreens.ServiceProviders) } } @@ -245,7 +272,7 @@ export function FiatOnRampScreen({ navigation }: Props): JSX.Element { const notAvailableInThisRegion = supportedFiatCurrencies?.length === 0 const { errorText, errorColor } = useParseFiatOnRampError( - !notAvailableInThisRegion && quotesError, + !notAvailableInThisRegion && (quotesError || serviceProvidersError), meldSupportedFiatCurrency.code, ) diff --git a/apps/mobile/src/screens/FiatOnRampServiceProviders.tsx b/apps/mobile/src/screens/FiatOnRampServiceProviders.tsx index 2463528e366..c9cfe944a6c 100644 --- a/apps/mobile/src/screens/FiatOnRampServiceProviders.tsx +++ b/apps/mobile/src/screens/FiatOnRampServiceProviders.tsx @@ -12,14 +12,15 @@ import { ColorTokens, Flex, GeneratedIcon, Inset, Separator, Text } from 'ui/src import { TimePast } from 'ui/src/components/icons' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { HandleBar } from 'uniswap/src/components/modals/HandleBar' -import { useBottomSheetFocusHook } from 'uniswap/src/components/modals/hooks' import { FORQuoteItem } from 'uniswap/src/features/fiatOnRamp/FORQuoteItem' import { FORQuote, InitialQuoteSelection } from 'uniswap/src/features/fiatOnRamp/types' +import { getServiceProviderForQuote } from 'uniswap/src/features/fiatOnRamp/utils' import { FiatOnRampScreens } from 'uniswap/src/types/screens/mobile' +import { useBottomSheetFocusHook } from 'wallet/src/components/modals/hooks' type Props = NativeStackScreenProps -const key = (item: FORQuote): string => item.serviceProviderDetails.serviceProvider +const key = (item: FORQuote): string => item.serviceProvider function SectionHeader({ Icon, @@ -54,11 +55,11 @@ function Footer(): JSX.Element { export function FiatOnRampServiceProvidersScreen({ navigation }: Props): JSX.Element { const { t } = useTranslation() - const { setSelectedQuote, quotesSections, baseCurrencyInfo } = useFiatOnRampContext() + const { setSelectedQuote, quotesSections, baseCurrencyInfo, serviceProviders } = useFiatOnRampContext() const renderItem = ({ item }: ListRenderItemInfo): JSX.Element => { const onPress = (): void => { - const serviceProvider = item.serviceProviderDetails + const serviceProvider = getServiceProviderForQuote(item, serviceProviders) if (serviceProvider) { setSelectedQuote(item) navigation.navigate(FiatOnRampScreens.Connecting) @@ -66,7 +67,9 @@ export function FiatOnRampServiceProvidersScreen({ navigation }: Props): JSX.Ele } return ( - {baseCurrencyInfo && } + {baseCurrencyInfo && ( + + )} ) } diff --git a/apps/mobile/src/screens/HomeScreen.tsx b/apps/mobile/src/screens/HomeScreen.tsx index bd488d774ad..8e11be9ef02 100644 --- a/apps/mobile/src/screens/HomeScreen.tsx +++ b/apps/mobile/src/screens/HomeScreen.tsx @@ -18,8 +18,7 @@ import Animated, { } from 'react-native-reanimated' import { SvgProps } from 'react-native-svg' import { SceneRendererProps, TabBar } from 'react-native-tab-view' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { ExtensionPromoModal } from 'src/app/modals/ExtensionPromoModal' import { NavBar, SWAP_BUTTON_HEIGHT } from 'src/app/navigation/NavBar' import { AppStackScreenProp } from 'src/app/navigation/types' @@ -56,7 +55,6 @@ import SendIcon from 'ui/src/assets/icons/send-action.svg' import { AnimatedFlex } from 'ui/src/components/layout/AnimatedFlex' import { useDeviceDimensions } from 'ui/src/hooks/useDeviceDimensions' import { iconSizes, spacing } from 'ui/src/theme' -import { useCexTransferProviders } from 'uniswap/src/features/fiatOnRamp/useCexTransferProviders' import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' import Trace from 'uniswap/src/features/telemetry/Trace' @@ -68,11 +66,11 @@ import { SectionName, SectionNameType, } from 'uniswap/src/features/telemetry/constants' -import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { useTimeout } from 'utilities/src/time/timing' import { ScannerModalState } from 'wallet/src/components/QRCodeScanner/constants' import { selectHasSkippedUnitagPrompt } from 'wallet/src/features/behaviorHistory/selectors' +import { useCexTransferProviders } from 'wallet/src/features/fiatOnRamp/api' import { useSelectAddressHasNotifications } from 'wallet/src/features/notifications/hooks' import { setNotificationStatus } from 'wallet/src/features/notifications/slice' import { PortfolioBalance } from 'wallet/src/features/portfolio/PortfolioBalance' @@ -96,7 +94,7 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. const media = useMedia() const insets = useDeviceInsets() const dimensions = useDeviceDimensions() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const isFocused = useIsFocused() const isModalOpen = useAppSelector(selectSomeModalOpen) const isHomeScreenBlur = !isFocused || isModalOpen @@ -277,10 +275,19 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. const { sync } = useScrollSync(currentTabIndex, scrollPairs, headerConfig) + const forAggregatorEnabled = useFeatureFlag(FeatureFlags.ForAggregator) const cexTransferEnabled = useFeatureFlag(FeatureFlags.CexTransfers) const cexTransferProviders = useCexTransferProviders(cexTransferEnabled) - const onPressBuy = useCallback(() => dispatch(openModal({ name: ModalName.FiatOnRampAggregator })), [dispatch]) + const onPressBuy = useCallback( + () => + dispatch( + openModal({ + name: forAggregatorEnabled ? ModalName.FiatOnRampAggregator : ModalName.FiatOnRamp, + }), + ), + [dispatch, forAggregatorEnabled], + ) const onPressScan = useCallback(() => { // in case we received a pending session from a previous scan after closing modal dispatch(removePendingSession()) @@ -404,8 +411,7 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. const emptyComponentStyle = useMemo>( () => ({ minHeight: dimensions.fullHeight - (paddingTop + paddingBottom), - paddingTop: media.short ? spacing.spacing12 : spacing.spacing32, - paddingBottom: media.short ? spacing.spacing12 : spacing.spacing32, + paddingTop: spacing.none, paddingLeft: media.short ? spacing.none : spacing.spacing12, paddingRight: media.short ? spacing.none : spacing.spacing12, }), @@ -532,7 +538,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. owner={activeAccount?.address} refreshing={refreshing} scrollHandler={tokensTabScrollHandler} - testID={TestID.TokensTab} onRefresh={onRefreshHomeData} /> @@ -549,7 +554,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. owner={activeAccount?.address} refreshing={refreshing} scrollHandler={nftsTabScrollHandler} - testID={TestID.NFTsTab} onRefresh={onRefreshHomeData} /> @@ -564,7 +568,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. owner={activeAccount?.address} refreshing={refreshing} scrollHandler={activityTabScrollHandler} - testID={TestID.ActivityTab} onRefresh={onRefreshHomeData} /> diff --git a/apps/mobile/src/screens/Import/OnDeviceRecoveryScreen.tsx b/apps/mobile/src/screens/Import/OnDeviceRecoveryScreen.tsx index bb0830413b2..be7897e6cdd 100644 --- a/apps/mobile/src/screens/Import/OnDeviceRecoveryScreen.tsx +++ b/apps/mobile/src/screens/Import/OnDeviceRecoveryScreen.tsx @@ -1,5 +1,6 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import dayjs from 'dayjs' +import { isNumber } from 'lodash' import React, { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { ScrollView } from 'react-native-gesture-handler' @@ -15,8 +16,8 @@ import { Flex, Image, Text, TouchableArea, useSporeColors } from 'ui/src' import { UNISWAP_LOGO } from 'ui/src/assets' import { PapersText } from 'ui/src/components/icons' import { iconSizes } from 'ui/src/theme' -import { DynamicConfigs, OnDeviceRecoveryConfigKey } from 'uniswap/src/features/gating/configs' -import { useDynamicConfigValue } from 'uniswap/src/features/gating/hooks' +import { DynamicConfigs } from 'uniswap/src/features/gating/configs' +import { useDynamicConfig } from 'uniswap/src/features/gating/hooks' import Trace from 'uniswap/src/features/telemetry/Trace' import { ModalName } from 'uniswap/src/features/telemetry/constants' import { TestID } from 'uniswap/src/test/fixtures/testIDs' @@ -44,10 +45,10 @@ export function OnDeviceRecoveryScreen({ const { t } = useTranslation() const colors = useSporeColors() const { setRecoveredImportedAccounts } = useOnboardingContext() - const recoveryLoadingTimeoutMs = useDynamicConfigValue( - DynamicConfigs.OnDeviceRecovery, - OnDeviceRecoveryConfigKey.AppLoadingTimeoutMs, + const recoveryLoadingTimeoutMs = useDynamicConfig(DynamicConfigs.OnDeviceRecovery).get( + 'recoveryLoadingTimeoutMs', FALLBACK_RECOVERY_LOADING_TIMEOUT_MS, + isNumber, ) const [selectedMnemonicId, setSelectedMnemonicId] = useState() diff --git a/apps/mobile/src/screens/Import/RestoreCloudBackupLoadingScreen.tsx b/apps/mobile/src/screens/Import/RestoreCloudBackupLoadingScreen.tsx index b83b50030e5..5803b6854f7 100644 --- a/apps/mobile/src/screens/Import/RestoreCloudBackupLoadingScreen.tsx +++ b/apps/mobile/src/screens/Import/RestoreCloudBackupLoadingScreen.tsx @@ -2,7 +2,7 @@ import { useFocusEffect } from '@react-navigation/core' import { NativeStackScreenProps } from '@react-navigation/native-stack' import React, { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { OnboardingStackParamList } from 'src/app/navigation/types' import { startFetchingCloudStorageBackups, @@ -31,7 +31,7 @@ const MAX_LOADING_TIMEOUT_MS = ONE_SECOND_MS * 10 export function RestoreCloudBackupLoadingScreen({ navigation, route: { params } }: Props): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const entryPoint = params.entryPoint const importType = params.importType diff --git a/apps/mobile/src/screens/Import/RestoreCloudBackupPasswordScreen.tsx b/apps/mobile/src/screens/Import/RestoreCloudBackupPasswordScreen.tsx index c9bc6e4f421..a139dd01bee 100644 --- a/apps/mobile/src/screens/Import/RestoreCloudBackupPasswordScreen.tsx +++ b/apps/mobile/src/screens/Import/RestoreCloudBackupPasswordScreen.tsx @@ -3,8 +3,7 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import React, { useCallback, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { Keyboard, TextInput } from 'react-native' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { OnboardingStackParamList } from 'src/app/navigation/types' import { PasswordInput } from 'src/components/input/PasswordInput' import { restoreMnemonicFromCloudStorage } from 'src/features/CloudBackup/RNCloudStorageBackupsManager' @@ -70,7 +69,7 @@ function useLockoutTimeMessage(remainingLockoutTime: number): string { export function RestoreCloudBackupPasswordScreen({ navigation, route: { params } }: Props): JSX.Element { const { t } = useTranslation() const inputRef = useRef(null) - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { generateImportedAccounts } = useOnboardingContext() const passwordAttemptCount = useAppSelector(selectPasswordAttempts) diff --git a/apps/mobile/src/screens/Import/SeedPhraseInput.tsx b/apps/mobile/src/screens/Import/SeedPhraseInput.tsx index 7324bf53581..7af3a0bbddb 100644 --- a/apps/mobile/src/screens/Import/SeedPhraseInput.tsx +++ b/apps/mobile/src/screens/Import/SeedPhraseInput.tsx @@ -26,7 +26,6 @@ export enum StringKey { } interface NativeSeedPhraseInputProps { targetMnemonicId?: string - testID?: string strings: Record onInputValidated: (e: NativeSyntheticEvent) => void onMnemonicStored: (e: NativeSyntheticEvent) => void diff --git a/apps/mobile/src/screens/Import/SeedPhraseInputScreen.tsx b/apps/mobile/src/screens/Import/SeedPhraseInputScreen.tsx index 08860bc6ead..40971533d4b 100644 --- a/apps/mobile/src/screens/Import/SeedPhraseInputScreen.tsx +++ b/apps/mobile/src/screens/Import/SeedPhraseInputScreen.tsx @@ -13,11 +13,11 @@ import Trace from 'uniswap/src/features/telemetry/Trace' import { ElementName } from 'uniswap/src/features/telemetry/constants' import { ImportType } from 'uniswap/src/types/onboarding' import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' -import { openUri } from 'uniswap/src/utils/linking' import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' import { BackupType } from 'wallet/src/features/wallet/accounts/types' import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { openUri } from 'wallet/src/utils/linking' import { MnemonicValidationError, translateMnemonicErrorMessage, diff --git a/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.android.mock.tsx b/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.android.mock.tsx deleted file mode 100644 index 6dea2e459ed..00000000000 --- a/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.android.mock.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { NativeStackScreenProps } from '@react-navigation/native-stack' -import React, { useCallback, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { OnboardingStackParamList } from 'src/app/navigation/types' -import { useLockScreenOnBlur } from 'src/features/authentication/lockScreenContext' -import { GenericImportForm } from 'src/features/import/GenericImportForm' -import { SafeKeyboardOnboardingScreen } from 'src/features/onboarding/SafeKeyboardOnboardingScreen' -import { useAddBackButton } from 'src/utils/useAddBackButton' -import { Button, Flex, Text, TouchableArea } from 'ui/src' -import { QuestionInCircleFilled } from 'ui/src/components/icons' -import { uniswapUrls } from 'uniswap/src/constants/urls' -import Trace from 'uniswap/src/features/telemetry/Trace' -import { ElementName } from 'uniswap/src/features/telemetry/constants' -import { ImportType } from 'uniswap/src/types/onboarding' -import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' -import { openUri } from 'uniswap/src/utils/linking' -import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' -import { Keyring } from 'wallet/src/features/wallet/Keyring/Keyring' -import { BackupType } from 'wallet/src/features/wallet/accounts/types' -import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' -import { - MnemonicValidationError, - translateMnemonicErrorMessage, - userFinishedTypingWord, - validateMnemonic, - validateSetOfWords, -} from 'wallet/src/utils/mnemonics' - -type Props = NativeStackScreenProps - -// Original SeedPhraseInputScreen component including JS input field. Used as a mock for Android Detox e2e testing. -export function SeedPhraseInputScreenV2({ navigation, route: { params } }: Props): JSX.Element { - const { t } = useTranslation() - const { generateImportedAccountsByMnemonic } = useOnboardingContext() - - /** - * If paste permission modal is open, we need to manually disable the splash screen that appears on blur, - * since the modal triggers the same `inactive` app state as does going to app switcher - * - * Technically seed phrase will be blocked if user pastes from keyboard, - * but that is an extreme edge case. - **/ - const [pastePermissionModalOpen, setPastePermissionModalOpen] = useState(false) - useLockScreenOnBlur(pastePermissionModalOpen) - - const [value, setValue] = useState(undefined) - const [errorMessage, setErrorMessage] = useState(undefined) - - const isRestoringMnemonic = params.importType === ImportType.RestoreMnemonic - - useAddBackButton(navigation) - - const signerAccounts = useSignerAccounts() - const mnemonicId = (isRestoringMnemonic && signerAccounts[0]?.mnemonicId) || undefined - - // Add all accounts from mnemonic. - const onSubmit = useCallback(async () => { - // Check phrase validation - const { validMnemonic, error, invalidWord } = validateMnemonic(value) - - if (error) { - setErrorMessage(translateMnemonicErrorMessage(error, invalidWord, t)) - return - } - - if (!validMnemonic) { - return - } - - if (mnemonicId && validMnemonic) { - const generatedMnemonicId = await Keyring.generateAddressForMnemonic(validMnemonic, 0) - if (generatedMnemonicId !== mnemonicId) { - setErrorMessage(t('account.recoveryPhrase.error.wrong')) - return - } - } - - await generateImportedAccountsByMnemonic(validMnemonic, undefined, BackupType.Manual) - - // restore flow is handled in saga after `restoreMnemonicComplete` is dispatched - if (!isRestoringMnemonic) { - navigation.navigate({ name: OnboardingScreens.SelectWallet, params, merge: true }) - } - }, [value, mnemonicId, generateImportedAccountsByMnemonic, isRestoringMnemonic, t, navigation, params]) - - const onBlur = useCallback(() => { - const { error, invalidWord } = validateMnemonic(value) - if (error) { - setErrorMessage(translateMnemonicErrorMessage(error, invalidWord, t)) - } - }, [t, value]) - - const onChange = (text: string | undefined): void => { - const { error, invalidWord } = validateSetOfWords(text) - - // suppress error messages if the user is not done typing a word - const suppressError = - (error === MnemonicValidationError.InvalidWord && !userFinishedTypingWord(text)) || - error === MnemonicValidationError.NotEnoughWords - - if (!error || suppressError) { - setErrorMessage(undefined) - } else { - setErrorMessage(translateMnemonicErrorMessage(error, invalidWord, t)) - } - - setValue(text) - } - - const onPressRecoveryHelpButton = (): Promise => openUri(uniswapUrls.helpArticleUrls.recoveryPhraseHowToImport) - - const onPressTryAgainButton = (): void => { - navigation.replace(OnboardingScreens.RestoreCloudBackupLoading, params) - } - - return ( - - - - setPastePermissionModalOpen(false)} - beforePasteButtonPress={(): void => setPastePermissionModalOpen(true)} - errorMessage={errorMessage} - inputAlignment="flex-start" - placeholderLabel={t('account.recoveryPhrase.input')} - textAlign="left" - value={value} - onBlur={onBlur} - onChange={onChange} - /> - - - - - - - {isRestoringMnemonic - ? t('account.recoveryPhrase.helpText.restoring') - : t('account.recoveryPhrase.helpText.import')} - - - - - - - - - - ) -} diff --git a/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.tsx b/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.tsx index 65602aeba8b..c06c8eeca58 100644 --- a/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.tsx +++ b/apps/mobile/src/screens/Import/SeedPhraseInputScreenV2.tsx @@ -19,13 +19,12 @@ import { QuestionInCircleFilled } from 'ui/src/components/icons' import { uniswapUrls } from 'uniswap/src/constants/urls' import Trace from 'uniswap/src/features/telemetry/Trace' import { ElementName } from 'uniswap/src/features/telemetry/constants' -import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { ImportType } from 'uniswap/src/types/onboarding' import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' -import { openUri } from 'uniswap/src/utils/linking' import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' import { BackupType } from 'wallet/src/features/wallet/accounts/types' import { useSignerAccounts } from 'wallet/src/features/wallet/hooks' +import { openUri } from 'wallet/src/utils/linking' type Props = NativeStackScreenProps @@ -72,13 +71,14 @@ export function SeedPhraseInputScreenV2({ navigation, route: { params } }: Props return ( } - minHeightWhenKeyboardExpanded={false} subtitle={ isRestoringMnemonic ? t('account.recoveryPhrase.subtitle.restoring') @@ -110,7 +109,6 @@ export function SeedPhraseInputScreenV2({ navigation, route: { params } }: Props [StringKey.ErrorInvalidPhrase]: t('account.recoveryPhrase.error.invalid'), }} targetMnemonicId={targetMnemonicId} - testID={TestID.ImportAccountInput} onInputValidated={(e: NativeSyntheticEvent): void => setSubmitEnabled(e.nativeEvent.canSubmit) } diff --git a/apps/mobile/src/screens/Import/WatchWalletScreen.tsx b/apps/mobile/src/screens/Import/WatchWalletScreen.tsx index 8c1ced23c6f..1b82ca22579 100644 --- a/apps/mobile/src/screens/Import/WatchWalletScreen.tsx +++ b/apps/mobile/src/screens/Import/WatchWalletScreen.tsx @@ -4,7 +4,7 @@ import { TFunction } from 'i18next' import React, { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { Keyboard } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { OnboardingStackParamList } from 'src/app/navigation/types' import { GenericImportForm } from 'src/features/import/GenericImportForm' import { SafeKeyboardOnboardingScreen } from 'src/features/onboarding/SafeKeyboardOnboardingScreen' @@ -71,7 +71,7 @@ const getErrorText = ({ export function WatchWalletScreen({ navigation, route: { params } }: Props): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const accounts = useAccounts() const initialAccounts = useRef(accounts) diff --git a/apps/mobile/src/screens/NFTItemScreen.tsx b/apps/mobile/src/screens/NFTItemScreen.tsx index f8f94e583f8..ea8aaeaa9c8 100644 --- a/apps/mobile/src/screens/NFTItemScreen.tsx +++ b/apps/mobile/src/screens/NFTItemScreen.tsx @@ -5,8 +5,7 @@ import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' import { StatusBar, StyleSheet, TouchableOpacity } from 'react-native' import ContextMenu from 'react-native-context-menu-view' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { AppStackScreenProp, useAppStackNavigation } from 'src/app/navigation/types' import { HeaderScrollScreen } from 'src/components/layout/screens/HeaderScrollScreen' import { Loader } from 'src/components/loading' @@ -36,8 +35,6 @@ import { ModalName } from 'uniswap/src/features/telemetry/constants' import { UniverseChainId } from 'uniswap/src/types/chains' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { areAddressesEqual } from 'uniswap/src/utils/addresses' -import { setClipboardImage } from 'uniswap/src/utils/clipboard' -import { MIN_COLOR_CONTRAST_THRESHOLD, useNearestThemeColorFromImageUri } from 'uniswap/src/utils/colors' import { isAndroid, isIOS } from 'utilities/src/platform' import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' import { NFTViewer } from 'wallet/src/features/images/NFTViewer' @@ -46,6 +43,8 @@ import { useNFTContextMenu } from 'wallet/src/features/nfts/useNftContextMenu' import { pushNotification } from 'wallet/src/features/notifications/slice' import { AppNotificationType, CopyNotificationType } from 'wallet/src/features/notifications/types' import { useActiveAccountAddressWithThrow } from 'wallet/src/features/wallet/hooks' +import { setClipboardImage } from 'wallet/src/utils/clipboard' +import { MIN_COLOR_CONTRAST_THRESHOLD, useNearestThemeColorFromImageUri } from 'wallet/src/utils/colors' const MAX_NFT_IMAGE_HEIGHT = 375 @@ -72,7 +71,7 @@ function NFTItemScreenContents({ }: NFTItemScreenProps): JSX.Element { const { t } = useTranslation() const activeAccountAddress = useActiveAccountAddressWithThrow() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() const navigation = useAppStackNavigation() diff --git a/apps/mobile/src/screens/Onboarding/CloudBackupPasswordConfirmScreen.tsx b/apps/mobile/src/screens/Onboarding/CloudBackupPasswordConfirmScreen.tsx index 214a4bddac0..55b0c05cfef 100644 --- a/apps/mobile/src/screens/Onboarding/CloudBackupPasswordConfirmScreen.tsx +++ b/apps/mobile/src/screens/Onboarding/CloudBackupPasswordConfirmScreen.tsx @@ -1,10 +1,9 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' -import React, { useCallback } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import { OnboardingStackParamList } from 'src/app/navigation/types' -import { CloudBackupPassword } from 'src/features/CloudBackup/CloudBackupForm' +import { CloudBackupPasswordForm } from 'src/features/CloudBackup/CloudBackupPasswordForm' import { SafeKeyboardOnboardingScreen } from 'src/features/onboarding/SafeKeyboardOnboardingScreen' -import { Flex } from 'ui/src' import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' export type Props = NativeStackScreenProps @@ -13,31 +12,24 @@ export function CloudBackupPasswordConfirmScreen({ navigation, route: { params } const { t } = useTranslation() const { password } = params - const navigateToNextScreen = useCallback((): void => { + const navigateToNextScreen = (): void => { navigation.navigate({ name: OnboardingScreens.BackupCloudProcessing, params, merge: true, }) - }, [navigation, params]) + } return ( - - - - - } - subtitle={t('onboarding.cloud.confirm.description')} - title={t('onboarding.cloud.confirm.title')} - > - - - + + ) } diff --git a/apps/mobile/src/screens/Onboarding/CloudBackupPasswordCreateScreen.tsx b/apps/mobile/src/screens/Onboarding/CloudBackupPasswordCreateScreen.tsx index e71e8bb1d7f..5a22cf59288 100644 --- a/apps/mobile/src/screens/Onboarding/CloudBackupPasswordCreateScreen.tsx +++ b/apps/mobile/src/screens/Onboarding/CloudBackupPasswordCreateScreen.tsx @@ -1,10 +1,9 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' -import React, { useCallback } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import { OnboardingStackParamList } from 'src/app/navigation/types' -import { CloudBackupPassword } from 'src/features/CloudBackup/CloudBackupForm' +import { CloudBackupPasswordForm } from 'src/features/CloudBackup/CloudBackupPasswordForm' import { SafeKeyboardOnboardingScreen } from 'src/features/onboarding/SafeKeyboardOnboardingScreen' -import { Flex } from 'ui/src' import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' export type Props = NativeStackScreenProps @@ -12,33 +11,23 @@ export type Props = NativeStackScreenProps { - navigation.navigate({ - name: OnboardingScreens.BackupCloudPasswordConfirm, - params: { - ...params, - password, - }, - merge: true, - }) - }, - [navigation, params], - ) + const navigateToNextScreen = ({ password }: { password: string }): void => { + navigation.navigate({ + name: OnboardingScreens.BackupCloudPasswordConfirm, + params: { + ...params, + password, + }, + merge: true, + }) + } return ( - - - - - } - subtitle={t('onboarding.cloud.createPassword.description')} - title={t('onboarding.cloud.createPassword.title')} - > - - - + + + ) } diff --git a/apps/mobile/src/screens/Onboarding/LandingScreen.tsx b/apps/mobile/src/screens/Onboarding/LandingScreen.tsx index 1b1536467cf..e615866b3b9 100644 --- a/apps/mobile/src/screens/Onboarding/LandingScreen.tsx +++ b/apps/mobile/src/screens/Onboarding/LandingScreen.tsx @@ -2,7 +2,7 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import React, { useCallback, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { useAnimatedStyle, useSharedValue, withDelay, withTiming } from 'react-native-reanimated' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { OnboardingStackParamList } from 'src/app/navigation/types' import { Screen } from 'src/components/layout/Screen' import { openModal } from 'src/features/modals/modalSlice' @@ -16,7 +16,6 @@ import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { ImportType, OnboardingEntryPoint } from 'uniswap/src/types/onboarding' import { OnboardingScreens, UnitagScreens } from 'uniswap/src/types/screens/mobile' import { isDevEnv } from 'utilities/src/environment' -import { isDetoxBuild } from 'utilities/src/environment/constants' import { ONE_SECOND_MS } from 'utilities/src/time/time' import { useTimeout } from 'utilities/src/time/timing' import { LANDING_ANIMATION_DURATION, LandingBackground } from 'wallet/src/components/landing/LandingBackground' @@ -25,17 +24,14 @@ import { useCanAddressClaimUnitag } from 'wallet/src/features/unitags/hooks' type Props = NativeStackScreenProps export function LandingScreen({ navigation }: Props): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const actionButtonsOpacity = useSharedValue(0) const actionButtonsStyle = useAnimatedStyle(() => ({ opacity: actionButtonsOpacity.value }), [actionButtonsOpacity]) useEffect(() => { - // disables looping animation during detox e2e tests which was preventing js thread from idle - if (!isDetoxBuild) { - actionButtonsOpacity.value = withDelay(LANDING_ANIMATION_DURATION, withTiming(1, { duration: ONE_SECOND_MS })) - } + actionButtonsOpacity.value = withDelay(LANDING_ANIMATION_DURATION, withTiming(1, { duration: ONE_SECOND_MS })) }, [actionButtonsOpacity]) const { canClaimUnitag } = useCanAddressClaimUnitag() diff --git a/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx b/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx index 69eafcdb07a..915a8b1edf1 100644 --- a/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx +++ b/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx @@ -1,8 +1,9 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' -import React, { useCallback } from 'react' +import React, { useCallback, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { Alert, Image, Platform, StyleSheet } from 'react-native' import { OnboardingStackParamList } from 'src/app/navigation/types' +import { BackButton } from 'src/components/buttons/BackButton' import { useBiometricContext } from 'src/features/biometrics/context' import { useBiometricAppSettings } from 'src/features/biometrics/hooks' import { promptPushPermission } from 'src/features/notifications/Onesignal' @@ -14,7 +15,7 @@ import Trace from 'uniswap/src/features/telemetry/Trace' import { ElementName } from 'uniswap/src/features/telemetry/constants' import i18n from 'uniswap/src/i18n/i18n' import { TestID } from 'uniswap/src/test/fixtures/testIDs' -import { OnboardingEntryPoint } from 'uniswap/src/types/onboarding' +import { ImportType, OnboardingEntryPoint } from 'uniswap/src/types/onboarding' import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' import { isIOS } from 'utilities/src/platform' import { useOnboardingContext } from 'wallet/src/features/onboarding/OnboardingContext' @@ -45,6 +46,29 @@ export function NotificationsSetupScreen({ navigation, route: { params } }: Prop const onCompleteOnboarding = useCompleteOnboardingCallback(params) + const renderBackButton = useCallback( + (nav: OnboardingScreens): JSX.Element => ( + navigation.navigate({ name: nav, params, merge: true })} /> + ), + [navigation, params], + ) + + /* For some screens, we want to override the back button to go to a different screen. + * This helps avoid re-visiting loading states or confirmation views. + */ + useEffect(() => { + const shouldOverrideBackButton = [ImportType.SeedPhrase, ImportType.Restore, ImportType.CreateNew].includes( + params.importType, + ) + if (shouldOverrideBackButton) { + const nextScreen = + params.importType === ImportType.Restore ? OnboardingScreens.RestoreCloudBackup : OnboardingScreens.Backup + navigation.setOptions({ + headerLeft: () => renderBackButton(nextScreen), + }) + } + }, [navigation, params, renderBackButton]) + const navigateToNextScreen = useCallback(async () => { // Skip security setup if already enabled or already imported seed phrase if ( @@ -67,11 +91,7 @@ export function NotificationsSetupScreen({ navigation, route: { params } }: Prop }, [enableNotifications, navigateToNextScreen]) return ( - + diff --git a/apps/mobile/src/screens/Onboarding/SecuritySetupScreen.tsx b/apps/mobile/src/screens/Onboarding/SecuritySetupScreen.tsx index 1ce5957e73f..703ded63d20 100644 --- a/apps/mobile/src/screens/Onboarding/SecuritySetupScreen.tsx +++ b/apps/mobile/src/screens/Onboarding/SecuritySetupScreen.tsx @@ -3,7 +3,7 @@ import { BlurView } from 'expo-blur' import React, { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { ActivityIndicator, Alert, Image, Platform, StyleSheet } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { OnboardingStackParamList } from 'src/app/navigation/types' import { BiometricAuthWarningModal } from 'src/components/Settings/BiometricAuthWarningModal' import { enroll, tryLocalAuthenticate } from 'src/features/biometrics' @@ -26,8 +26,8 @@ import { ElementName } from 'uniswap/src/features/telemetry/constants' import { TestID } from 'uniswap/src/test/fixtures/testIDs' import { ImportType } from 'uniswap/src/types/onboarding' import { OnboardingScreens } from 'uniswap/src/types/screens/mobile' -import { opacify } from 'uniswap/src/utils/colors' import { isIOS } from 'utilities/src/platform' +import { opacify } from 'wallet/src/utils/colors' import { openSettings } from 'wallet/src/utils/linking' type Props = NativeStackScreenProps @@ -35,7 +35,7 @@ type Props = NativeStackScreenProps void }): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const activeAccountAddress = useActiveAccountAddressWithThrow() const onPressCopyAddress = async (): Promise => { @@ -98,7 +98,7 @@ function AccountCardItem({ onClose }: { onClose: () => void }): JSX.Element { export function ReceiveCryptoModal(): JSX.Element { const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const { initialState } = useAppSelector(selectModalState(ModalName.ReceiveCryptoModal)) diff --git a/apps/mobile/src/screens/SettingsAppearanceScreen.tsx b/apps/mobile/src/screens/SettingsAppearanceScreen.tsx index 0d8cfebeb58..bc0f5b4ca55 100644 --- a/apps/mobile/src/screens/SettingsAppearanceScreen.tsx +++ b/apps/mobile/src/screens/SettingsAppearanceScreen.tsx @@ -2,7 +2,7 @@ import { Action } from '@reduxjs/toolkit' import React from 'react' import { useTranslation } from 'react-i18next' import { SvgProps } from 'react-native-svg' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { BackHeader } from 'src/components/layout/BackHeader' import { Screen } from 'src/components/layout/Screen' import { Flex, Text, TouchableArea, useSporeColors } from 'ui/src' @@ -60,7 +60,7 @@ interface AppearanceOptionProps { function AppearanceOption({ active, title, subtitle, Icon, option }: AppearanceOptionProps): JSX.Element { const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const showCheckMark = active ? 1 : 0 diff --git a/apps/mobile/src/screens/SettingsBiometricAuthScreen.tsx b/apps/mobile/src/screens/SettingsBiometricAuthScreen.tsx index 436e62d703a..0435f5c303d 100644 --- a/apps/mobile/src/screens/SettingsBiometricAuthScreen.tsx +++ b/apps/mobile/src/screens/SettingsBiometricAuthScreen.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { Alert, ListRenderItemInfo } from 'react-native' import { FlatList } from 'react-native-gesture-handler' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { BiometricAuthWarningModal } from 'src/components/Settings/BiometricAuthWarningModal' import { BackHeader } from 'src/components/layout/BackHeader' import { Screen } from 'src/components/layout/Screen' @@ -38,7 +38,7 @@ type BiometricPromptTriggerArgs = { export function SettingsBiometricAuthScreen(): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const [showUnsafeWarningModal, setShowUnsafeWarningModal] = useState(false) const [unsafeWarningModalType, setUnsafeWarningModalType] = useState(null) diff --git a/apps/mobile/src/screens/SettingsCloudBackupPasswordConfirmScreen.tsx b/apps/mobile/src/screens/SettingsCloudBackupPasswordConfirmScreen.tsx index 9a7c3e4a61c..f150e6e04f1 100644 --- a/apps/mobile/src/screens/SettingsCloudBackupPasswordConfirmScreen.tsx +++ b/apps/mobile/src/screens/SettingsCloudBackupPasswordConfirmScreen.tsx @@ -1,10 +1,11 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' -import React, { useCallback } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' +import { ScrollView } from 'react-native' import { SettingsStackParamList } from 'src/app/navigation/types' import { BackHeader } from 'src/components/layout/BackHeader' -import { SafeKeyboardScreen } from 'src/components/layout/SafeKeyboardScreen' -import { CloudBackupPassword } from 'src/features/CloudBackup/CloudBackupForm' +import { Screen } from 'src/components/layout/Screen' +import { CloudBackupPasswordForm } from 'src/features/CloudBackup/CloudBackupPasswordForm' import { Flex, Text } from 'ui/src' import { MobileScreens } from 'uniswap/src/types/screens/mobile' @@ -14,29 +15,19 @@ export function SettingsCloudBackupPasswordConfirmScreen({ navigation, route: { const { t } = useTranslation() const { password } = params - const navigateToNextScreen = useCallback((): void => { + const navigateToNextScreen = (): void => { navigation.navigate({ name: MobileScreens.SettingsCloudBackupProcessing, params, merge: true, }) - }, [navigation, params]) + } return ( - - - - - } - header={} - > - + + + + {t('onboarding.cloud.confirm.title')} @@ -44,8 +35,12 @@ export function SettingsCloudBackupPasswordConfirmScreen({ navigation, route: { {t('onboarding.cloud.confirm.description')} - - - + + + ) } diff --git a/apps/mobile/src/screens/SettingsCloudBackupPasswordCreateScreen.tsx b/apps/mobile/src/screens/SettingsCloudBackupPasswordCreateScreen.tsx index 3e98b749fbe..e386b1dfd2e 100644 --- a/apps/mobile/src/screens/SettingsCloudBackupPasswordCreateScreen.tsx +++ b/apps/mobile/src/screens/SettingsCloudBackupPasswordCreateScreen.tsx @@ -1,10 +1,11 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' -import React, { useCallback, useState } from 'react' +import React, { useState } from 'react' import { useTranslation } from 'react-i18next' +import { ScrollView } from 'react-native' import { SettingsStackParamList } from 'src/app/navigation/types' import { BackHeader } from 'src/components/layout/BackHeader' -import { SafeKeyboardScreen } from 'src/components/layout/SafeKeyboardScreen' -import { CloudBackupPassword } from 'src/features/CloudBackup/CloudBackupForm' +import { Screen } from 'src/components/layout/Screen' +import { CloudBackupPasswordForm } from 'src/features/CloudBackup/CloudBackupPasswordForm' import { Button, Flex, Text, useSporeColors } from 'ui/src' import { OSDynamicCloudIcon } from 'ui/src/components/icons' import { BottomSheetModal } from 'uniswap/src/components/modals/BottomSheetModal' @@ -27,32 +28,23 @@ export function SettingsCloudBackupPasswordCreateScreen({ const [showCloudBackupInfoModal, setShowCloudBackupInfoModal] = useState(true) - const navigateToNextScreen = useCallback( - ({ password }: { password: string }): void => { - navigation.navigate({ - name: MobileScreens.SettingsCloudBackupPasswordConfirm, - params: { - password, - address, - }, - merge: true, - }) - }, - [navigation, address], - ) + const navigateToNextScreen = ({ password }: { password: string }): void => { + navigation.navigate({ + name: MobileScreens.SettingsCloudBackupPasswordConfirm, + params: { + password, + address, + }, + merge: true, + }) + } return ( - - - - - } - header={} - > - - + + + + + {t('settings.setting.backup.create.title', { cloudProviderName: getCloudProviderName(), })} @@ -63,7 +55,7 @@ export function SettingsCloudBackupPasswordCreateScreen({ })} - + {showCloudBackupInfoModal && ( @@ -93,7 +85,7 @@ export function SettingsCloudBackupPasswordCreateScreen({ )} - - + + ) } diff --git a/apps/mobile/src/screens/SettingsCloudBackupStatus.tsx b/apps/mobile/src/screens/SettingsCloudBackupStatus.tsx index b6db1368cfb..7222c295581 100644 --- a/apps/mobile/src/screens/SettingsCloudBackupStatus.tsx +++ b/apps/mobile/src/screens/SettingsCloudBackupStatus.tsx @@ -2,7 +2,7 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import React, { useState } from 'react' import { useTranslation } from 'react-i18next' import { Alert } from 'react-native' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { SettingsStackParamList } from 'src/app/navigation/types' import { BackHeader } from 'src/components/layout/BackHeader' import { Screen } from 'src/components/layout/Screen' @@ -33,7 +33,7 @@ export function SettingsCloudBackupStatus({ }: Props): JSX.Element { const { t } = useTranslation() const colors = useSporeColors() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const accounts = useAccounts() const mnemonicId = (accounts[address] as SignerMnemonicAccount)?.mnemonicId const backups = useCloudBackups(mnemonicId) diff --git a/apps/mobile/src/screens/SettingsFiatCurrencyModal.tsx b/apps/mobile/src/screens/SettingsFiatCurrencyModal.tsx index 8128ff32dad..9ed87f7be38 100644 --- a/apps/mobile/src/screens/SettingsFiatCurrencyModal.tsx +++ b/apps/mobile/src/screens/SettingsFiatCurrencyModal.tsx @@ -1,7 +1,7 @@ import React, { useCallback } from 'react' import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' import { Action } from 'redux' +import { useAppDispatch } from 'src/app/hooks' import { VirtualizedList } from 'src/components/layout/VirtualizedList' import { closeModal } from 'src/features/modals/modalSlice' import { Flex, Text, TouchableArea, useSporeColors } from 'ui/src' @@ -13,7 +13,7 @@ import { useAppFiatCurrency, useFiatCurrencyInfo } from 'wallet/src/features/fia import { setCurrentFiatCurrency } from 'wallet/src/features/fiatCurrency/slice' export function SettingsFiatCurrencyModal(): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() return ( @@ -55,7 +55,7 @@ interface FiatCurrencyOptionProps { } function FiatCurrencyOption({ active, currency, onPress }: FiatCurrencyOptionProps): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() const { name, code } = useFiatCurrencyInfo(currency) diff --git a/apps/mobile/src/screens/SettingsScreen.tsx b/apps/mobile/src/screens/SettingsScreen.tsx index bc256a75f9e..da09e9bff34 100644 --- a/apps/mobile/src/screens/SettingsScreen.tsx +++ b/apps/mobile/src/screens/SettingsScreen.tsx @@ -5,6 +5,7 @@ import { Image, ListRenderItemInfo, SectionList, StyleSheet } from 'react-native import { FadeInDown, FadeOutUp } from 'react-native-reanimated' import { SvgProps } from 'react-native-svg' import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { OnboardingStackNavigationProp, SettingsStackNavigationProp, @@ -74,7 +75,7 @@ import { export function SettingsScreen(): JSX.Element { const navigation = useNavigation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const colors = useSporeColors() const insets = useDeviceInsets() const { deviceSupportsBiometrics } = useBiometricContext() diff --git a/apps/mobile/src/screens/SettingsWallet.tsx b/apps/mobile/src/screens/SettingsWallet.tsx index 98e3e96bfcc..fcb90da361e 100644 --- a/apps/mobile/src/screens/SettingsWallet.tsx +++ b/apps/mobile/src/screens/SettingsWallet.tsx @@ -4,7 +4,7 @@ import React, { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { ListRenderItemInfo, SectionList } from 'react-native' import { SvgProps } from 'react-native-svg' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { navigate } from 'src/app/navigation/rootNavigation' import { OnboardingStackNavigationProp, @@ -54,7 +54,7 @@ export function SettingsWallet({ params: { address }, }, }: Props): JSX.Element { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const { t } = useTranslation() const colors = useSporeColors() const addressToAccount = useAccounts() diff --git a/apps/mobile/src/screens/SettingsWalletEdit.tsx b/apps/mobile/src/screens/SettingsWalletEdit.tsx index 1a01d92df45..4050c948f36 100644 --- a/apps/mobile/src/screens/SettingsWalletEdit.tsx +++ b/apps/mobile/src/screens/SettingsWalletEdit.tsx @@ -3,7 +3,7 @@ import React, { useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { Keyboard, KeyboardAvoidingView, TextInput as NativeTextInput, StyleSheet } from 'react-native' import { Gesture, GestureDetector } from 'react-native-gesture-handler' -import { useDispatch } from 'react-redux' +import { useAppDispatch } from 'src/app/hooks' import { SettingsStackParamList } from 'src/app/navigation/types' import { BackHeader } from 'src/components/layout/BackHeader' import { Screen } from 'src/components/layout/Screen' @@ -29,7 +29,7 @@ export function SettingsWalletEdit({ }, }: Props): JSX.Element { const { t } = useTranslation() - const dispatch = useDispatch() + const dispatch = useAppDispatch() const activeAccount = useAccounts()[address] const displayName = useDisplayName(address) const [nickname, setNickname] = useState(displayName?.name) diff --git a/apps/mobile/src/screens/SettingsWalletManageConnection.tsx b/apps/mobile/src/screens/SettingsWalletManageConnection.tsx index d24aa95ffee..a7e8212e68e 100644 --- a/apps/mobile/src/screens/SettingsWalletManageConnection.tsx +++ b/apps/mobile/src/screens/SettingsWalletManageConnection.tsx @@ -1,7 +1,7 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import React from 'react' import { SettingsStackParamList } from 'src/app/navigation/types' -import { ConnectedDappsList } from 'src/components/Requests/ConnectedDapps/ConnectedDappsList' +import { ConnectedDappsList } from 'src/components/WalletConnect/ConnectedDapps/ConnectedDappsList' import { Screen } from 'src/components/layout/Screen' import { useWalletConnect } from 'src/features/walletConnect/useWalletConnect' import { MobileScreens } from 'uniswap/src/types/screens/mobile' diff --git a/apps/mobile/src/screens/TokenDetailsScreen.tsx b/apps/mobile/src/screens/TokenDetailsScreen.tsx index f2518b5e759..9450be0e612 100644 --- a/apps/mobile/src/screens/TokenDetailsScreen.tsx +++ b/apps/mobile/src/screens/TokenDetailsScreen.tsx @@ -34,22 +34,22 @@ import { } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' import { PortfolioBalance } from 'uniswap/src/features/dataApi/types' -import { currencyIdToContractInput } from 'uniswap/src/features/dataApi/utils' import Trace from 'uniswap/src/features/telemetry/Trace' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import TokenWarningModal from 'uniswap/src/features/tokens/TokenWarningModal' -import { CurrencyField } from 'uniswap/src/features/transactions/transactionState/types' import { UniverseChainId } from 'uniswap/src/types/chains' import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { currencyIdToAddress, currencyIdToChain } from 'uniswap/src/utils/currencyId' import { NumberType } from 'utilities/src/format/types' import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' import { isError, isNonPollingRequestInFlight } from 'wallet/src/data/utils' +import { currencyIdToContractInput } from 'wallet/src/features/dataApi/utils' import { useLocalizationContext } from 'wallet/src/features/language/LocalizationContext' import { Language } from 'wallet/src/features/language/constants' import { useCurrentLanguage } from 'wallet/src/features/language/hooks' import { useTokenContextMenu } from 'wallet/src/features/portfolio/useTokenContextMenu' +import TokenWarningModal from 'wallet/src/features/tokens/TokenWarningModal' import { useTokenWarningDismissed } from 'wallet/src/features/tokens/safetyHooks' +import { CurrencyField } from 'wallet/src/features/transactions/transactionState/types' function HeaderTitleElement({ data, @@ -249,7 +249,6 @@ function TokenDetails({ currencyId={_currencyId} currentChainBalance={currentChainBalance} data={data} - isBlocked={safetyLevel === SafetyLevel.Blocked} setEllipsisMenuVisible={setEllipsisMenuVisible} /> ) @@ -344,13 +343,11 @@ function TokenDetailsTextPlaceholders(): JSX.Element { function HeaderRightElement({ currencyId, currentChainBalance, - isBlocked, data, setEllipsisMenuVisible, }: { currencyId: string currentChainBalance: PortfolioBalance | null - isBlocked: boolean data?: TokenDetailsScreenQuery setEllipsisMenuVisible: (visible: boolean) => void }): JSX.Element { @@ -359,7 +356,6 @@ function HeaderRightElement({ const { menuActions, onContextMenuPress } = useTokenContextMenu({ currencyId, - isBlocked, tokenSymbolForNotification: data?.token?.symbol, portfolioBalance: currentChainBalance, }) diff --git a/apps/mobile/src/test/fixtures/explore.ts b/apps/mobile/src/test/fixtures/explore.ts index e07b29ee36e..ab7a4c5f05e 100644 --- a/apps/mobile/src/test/fixtures/explore.ts +++ b/apps/mobile/src/test/fixtures/explore.ts @@ -1,9 +1,9 @@ import { TokenItemData } from 'src/components/explore/TokenItem' import { Token } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { fromGraphQLChain } from 'uniswap/src/features/chains/utils' -import { createFixture } from 'uniswap/src/test/utils' import { UniverseChainId } from 'uniswap/src/types/chains' import { token } from 'wallet/src/test/fixtures' +import { createFixture } from 'wallet/src/test/utils' type TokenItemDataOptions = { token: Token | null diff --git a/apps/mobile/src/test/fixtures/redux.ts b/apps/mobile/src/test/fixtures/redux.ts index 6490a00aefe..cc92aacb098 100644 --- a/apps/mobile/src/test/fixtures/redux.ts +++ b/apps/mobile/src/test/fixtures/redux.ts @@ -2,10 +2,10 @@ import { PreloadedState } from 'redux' import { MobileState } from 'src/app/reducer' import { ModalsState } from 'src/features/modals/ModalsState' import { initialModalsState } from 'src/features/modals/modalSlice' -import { createFixture } from 'uniswap/src/test/utils' import { Account } from 'wallet/src/features/wallet/accounts/types' import { SharedState } from 'wallet/src/state/reducer' import { preloadedSharedState } from 'wallet/src/test/fixtures' +import { createFixture } from 'wallet/src/test/utils' export const preloadedModalsState = createFixture()(() => ({ ...initialModalsState, diff --git a/apps/mobile/src/test/render.tsx b/apps/mobile/src/test/render.tsx index 2ea941ef4c8..44bc8e3a359 100644 --- a/apps/mobile/src/test/render.tsx +++ b/apps/mobile/src/test/render.tsx @@ -13,14 +13,13 @@ import React, { PropsWithChildren } from 'react' import { MobileWalletNavigationProvider } from 'src/app/MobileWalletNavigationProvider' import { navigationRef } from 'src/app/navigation/NavigationContainer' import type { MobileState } from 'src/app/reducer' -import { store as appStore, persistedReducer } from 'src/app/store' +import type { AppStore } from 'src/app/store' +import { persistedReducer } from 'src/app/store' import { Resolvers } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { UnitagUpdaterContextProvider } from 'uniswap/src/features/unitags/context' import { SharedProvider } from 'wallet/src/provider' import { AutoMockedApolloProvider } from 'wallet/src/test/mocks/gql/provider' -type AppStore = typeof appStore - // This type extends the default options for render from RTL, as well // as allows the user to specify other things such as initialState, store. type ExtendedRenderOptions = RenderOptions & { diff --git a/apps/mobile/src/utils/reanimated.test.ts b/apps/mobile/src/utils/reanimated.test.ts index ac56b746912..57304b7909d 100644 --- a/apps/mobile/src/utils/reanimated.test.ts +++ b/apps/mobile/src/utils/reanimated.test.ts @@ -28,7 +28,7 @@ describe('reanimated numberToLocaleStringWorklet', function () { numberToLocaleStringWorklet(num, 'en-US', { style: 'currency', currency: 'USD', - }), + }) ).toBe('<$0.0000000000000001') }) @@ -39,7 +39,7 @@ describe('reanimated numberToLocaleStringWorklet', function () { numberToLocaleStringWorklet(num, 'en-US', { style: 'currency', currency: 'USD', - }), + }) ).toBe('$0.0000000123') }) @@ -121,49 +121,49 @@ describe('reanimated numberToLocaleStringWorklet', function () { numberToLocaleStringWorklet(num, 'en-US', { style, currency, - }), + }) ).toBe('$1,234.56') expect( numberToLocaleStringWorklet(negative_num, 'en-US', { style, currency, - }), + }) ).toBe('-$1,234.56') expect( numberToLocaleStringWorklet(num, 'de-DE', { style, currency, - }), + }) ).toBe('1.234,56 $') expect( numberToLocaleStringWorklet(num, 'hu', { style, currency: 'huf', - }), + }) ).toBe('1\u00A0234,56 Ft') expect( numberToLocaleStringWorklet(num, 'hu-HU', { style, currency: 'huf', - }), + }) ).toBe('1\u00A0234,56 Ft') expect( numberToLocaleStringWorklet(num, 'da-DK', { style, currency: 'DKK', - }), + }) ).toBe('1.234,56 kr') expect( numberToLocaleStringWorklet(num, 'nb-NO', { style, currency: 'NOK', - }), + }) ).toBe('1\u00A0234,56 kr') }) diff --git a/apps/mobile/src/utils/useAddBackButton.test.ts b/apps/mobile/src/utils/useAddBackButton.test.ts index 80d505dfb2a..4dbb1b5f514 100644 --- a/apps/mobile/src/utils/useAddBackButton.test.ts +++ b/apps/mobile/src/utils/useAddBackButton.test.ts @@ -13,7 +13,7 @@ describe(useAddBackButton, () => { index: 0, }), setOptions: setOptionsSpy, - } as unknown as NativeStackNavigationProp), + } as unknown as NativeStackNavigationProp) ) expect(setOptionsSpy).toHaveBeenCalled() @@ -26,7 +26,7 @@ describe(useAddBackButton, () => { index: 1, }), setOptions: setOptionsSpy, - } as unknown as NativeStackNavigationProp), + } as unknown as NativeStackNavigationProp) ) expect(setOptionsSpy).not.toHaveBeenCalled() diff --git a/apps/mobile/src/utils/useSagaStatus.ts b/apps/mobile/src/utils/useSagaStatus.ts index 2b8e6129ea2..02e6c1df5e6 100644 --- a/apps/mobile/src/utils/useSagaStatus.ts +++ b/apps/mobile/src/utils/useSagaStatus.ts @@ -1,12 +1,11 @@ import { useEffect } from 'react' -import { useDispatch } from 'react-redux' -import { useAppSelector } from 'src/app/hooks' +import { useAppDispatch, useAppSelector } from 'src/app/hooks' import { monitoredSagas } from 'src/app/saga' import { SagaState, SagaStatus } from 'wallet/src/utils/saga' // Convenience hook to get the status + error of an active saga export function useSagaStatus(sagaName: string, onSuccess?: () => void, resetSagaOnSuccess = true): SagaState { - const dispatch = useDispatch() + const dispatch = useAppDispatch() const sagaState = useAppSelector((s): SagaState | undefined => s.saga[sagaName]) if (!sagaState) { throw new Error(`No saga state found, is sagaName valid? Name: ${sagaName}`) diff --git a/apps/web/.eslintrc.js b/apps/web/.eslintrc.js index 713f9fe66e3..d3201301d82 100644 --- a/apps/web/.eslintrc.js +++ b/apps/web/.eslintrc.js @@ -58,10 +58,6 @@ module.exports = { 'error', { paths: [ - { - name: 'styled-components', - message: 'Styled components is deprecated, please use Flex or styled from "ui/src" instead.' - }, { name: 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks', importNames: ['usePortfolioBalancesQuery', 'usePortfolioBalancesWebLazyQuery'], diff --git a/apps/web/functions/components/metaTagInjector.test.ts b/apps/web/functions/components/metaTagInjector.test.ts index 9fd7689e7e0..4a3bf697fef 100644 --- a/apps/web/functions/components/metaTagInjector.test.ts +++ b/apps/web/functions/components/metaTagInjector.test.ts @@ -13,7 +13,7 @@ test('should append meta tag to element', () => { image: 'testImage', description: 'testDescription', }, - new Request('http://localhost'), + new Request('http://localhost') ) injector.appendProperty(element, property, content) expect(element.append).toHaveBeenCalledWith(``, { @@ -31,7 +31,7 @@ test('should append meta tag to element', () => { ``, { html: true, - }, + } ) expect(element.append).toHaveBeenCalledWith(``, { html: true, @@ -56,7 +56,7 @@ test('should append meta tag to element', () => { ``, { html: true, - }, + } ) expect(element.append).toHaveBeenCalledWith(``, { html: true, @@ -84,7 +84,7 @@ test('should pass through header blocked paths', () => { image: 'testImage', description: 'testDescription', }, - request, + request ) injector.element(element) expect(element.append).toHaveBeenCalledWith(``, { diff --git a/apps/web/functions/default.test.ts b/apps/web/functions/default.test.ts index 386f09113dc..293ccf78d85 100644 --- a/apps/web/functions/default.test.ts +++ b/apps/web/functions/default.test.ts @@ -6,7 +6,7 @@ test.each(defaultUrls)('should inject metadata for valid collections', async (de expect(body).toContain(` { expect(body).toContain(``) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) }) diff --git a/apps/web/functions/nfts/asset/nft.test.ts b/apps/web/functions/nfts/asset/nft.test.ts index 4c7d659df8f..954c5d7c096 100644 --- a/apps/web/functions/nfts/asset/nft.test.ts +++ b/apps/web/functions/nfts/asset/nft.test.ts @@ -32,15 +32,15 @@ test.each(assets)('should inject metadata for valid assets', async (nft) => { expect(body).toContain(``) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) }) diff --git a/apps/web/functions/nfts/collection/collection.test.ts b/apps/web/functions/nfts/collection/collection.test.ts index d05d2888e97..a5987294a8a 100644 --- a/apps/web/functions/nfts/collection/collection.test.ts +++ b/apps/web/functions/nfts/collection/collection.test.ts @@ -29,15 +29,15 @@ test.each([...collections])('should inject metadata for collections', async (col expect(body).toContain(``) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) expect(body).toContain(``) expect(body).toContain( - ``, + `` ) }) @@ -69,5 +69,5 @@ test.each([...invalidCollections, ...nonexistentCollections])( expect(body).not.toContain('twitter:title') expect(body).not.toContain('twitter:image') expect(body).not.toContain('twitter:image:alt') - }, + } ) diff --git a/apps/web/package.json b/apps/web/package.json index 859aa1f5a81..b494ba04d74 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -6,7 +6,7 @@ "scripts": { "ajv": "node scripts/compile-ajv-validators.js", "check:deps:usage": "depcheck", - "check:circular": "concurrently \"../../scripts/check-circular-imports.sh ./src/pages/App.tsx 7\" \"../../scripts/check-circular-imports.sh ./src/setupTests.ts 0\"", + "check:circular": "concurrently \"../../scripts/check-circular-imports.sh ./src/pages/App.tsx 6\" \"../../scripts/check-circular-imports.sh ./src/setupTests.ts 0\"", "sitemap:generate": "node scripts/generate-sitemap.js", "i18n:upload": "./scripts/crowdin.sh upload", "i18n:download": "./scripts/crowdin.sh download", @@ -172,8 +172,8 @@ "@reach/dialog": "0.10.5", "@reach/portal": "0.10.5", "@reduxjs/toolkit": "1.9.3", - "@rive-app/canvas": "2.19.0", - "@rive-app/react-canvas": "4.13.0", + "@rive-app/canvas": "2.8.3", + "@rive-app/react-canvas": "4.6.2", "@sentry/browser": "7.80.0", "@sentry/core": "7.80.0", "@sentry/react": "7.80.0", @@ -188,7 +188,7 @@ "@types/react-scroll-sync": "0.8.7", "@types/react-window-infinite-loader": "1.0.6", "@uniswap/analytics": "1.7.0", - "@uniswap/analytics-events": "2.34.0", + "@uniswap/analytics-events": "2.32.0", "@uniswap/governance": "1.0.2", "@uniswap/liquidity-staker": "1.0.2", "@uniswap/merkle-distributor": "1.0.1", diff --git a/apps/web/public/csp.json b/apps/web/public/csp.json index a6c42c61cd3..eda10105b3c 100644 --- a/apps/web/public/csp.json +++ b/apps/web/public/csp.json @@ -5,7 +5,6 @@ "scriptSrc": [ "'self'", "data:", - "'wasm-unsafe-eval'", "https://translate.googleapis.com/", "https://www.google-analytics.com", "https://www.googletagmanager.com" @@ -54,6 +53,7 @@ "https://bsc-dataseed1.bnbchain.org", "https://buy.moonpay.com/", "https://cdn.center.app/", + "https://cdn.jsdelivr.net/npm/@rive-app/canvas@2.8.3/rive.wasm", "https://celo-org.github.io", "https://cloudflare-eth.com", "https://cloudflare-ipfs.com", diff --git a/apps/web/public/images/extension_promo/announcement_modal_desktop.png b/apps/web/public/images/extension_promo/announcement_modal_desktop.png deleted file mode 100644 index c1778ee166212aa65320fe2a390d5fe31c45bb67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274777 zcmV(zK<2-RP)_j-N)?py!-?`ik^UH9kSbKU=ZzAmflpZ3c?{dqk1Tx)%Pzh?CD zj5$AlU)Sfa#((ZV{XXBHHu1CF@6Wv%eF)CyyT{{q^xI&WA9&vH4%0L4)Bb_!>1V^~ zfrIGcc}}2dPAl;6e14vNVBIi0zt6&%>lp!O1^0&WpTF<>(@wBx%;)p&N3i*)O-$

U!is#4Y_vOVGFYvf72R(A`3w&vv*9`Cqe}7&f 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

  • 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�S532IxNlV@3iw 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%0DHf{&rlhZJ9vUQ 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

    k` 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≤5$RU zcrN*d_j=p?naEwJ#>Ohob*ZTnLA~C4W|5q_?Dkh;t038Y^lLJs2S|G-u}nAnh2QST@w2J*rBKkP{g$FqaW83FhG7Dpp*@3yoz#%p%+y z-R%HENq0^ocvZ=p5#Wot#cBHdn*k>VSr#ofH}_tf86Xl|?!YL@p^R`JtK=YE+yHS2 zW;pKQ-Rl5c?X#Cv;0V(Fp3wEG_lGIu!|9%98h9JCnx$MO` zrELRU648SV8&MVz0HdjZx?-0)=n5dj}^zu2MPl z<}g8GQayF31yf1V4!VtuDa0uQByf*CgXP^dYtRvNr?BDn#JR;9}&bfC>+-WgS66=mx+R9#oQ! zf{mFRUSG6s7%7M22$mvm25XLm#s^sOhuf`!EqeuLxWC^l9Uy{pGV6DD*6*ElhYkj* zxU9UZ901Z107Nb<>m1+|sKlT{@t5e;>mF5(<2A_+dAAD4t^NFZXn@kwPRIVv zwSY_c-RD#ph`a4CH|g;e%@>uHHw{>N{|U{U_r)x6oFt#`F0|~9Er|v+wW1wc9=leS zdH4BoqpRPd4)!qU!vN90(wgHd>8;nMueX0b=uZa;!VUROyZ=}EJ&6G#-T~?x)D6c! zXy0t;z0@=q=xNAB&z>W zJO4fUp^|=(TUCe$7n{4uP7BLi!VYI3XUDdcvwZE$^YEg4|1bt8UAmY^DJ==R^!XhgcK@sxe zh@C}Je_u9l30>S4t6tendp)+E6g1ixRT=$=Lz^p&LBzA$26%@!rNo$xplMU3!85|_ zFtxg)?@wen;lANo8qfw9)x945oVn4FU#}?}M}qKo3RO#9E!zM*tm#WJG7a&SBHKmM ztZrISG(&?ahqAz3u4Ecq=FEIcek}zxn)_Bz Sbtfn%mHi8pES_@?dFou1+kavU^ z_Q7;swTU9uC|zD}1knvUvjI2)SSD7d{+7VndLP`skRXCzV}B_Nluix`p^Hd}-O|%W zOd|kUM?H40<~iqqSWR-j=BKak=6qF%9&}kSkbr;gw2UavQOf`~H`2Tm?HFFa!O8+u z0&uNrI`JL^UY9V^)%(+wM!m19Q~o{{Fq>=(%R~c<2M(2|qa?b^4fl{66vj-FF6Cf> zaq7s^%0a7eo0?{_=8QB)j1Fw^F88g@x`|~l5U2Pg1Besn&|~n2l(}e2=rn@pX#iAm z7?sje*;`GD6QItd^#>RdnPAhTz({dW3X@~x?$zRxDd6K0+DOu@I%8-VChd8ce4#gp z?Tl9($dc<9LK{I%&Rk(|AGF^&C-A(`pOTuzNwGC-ah{Yc|4~W*NJhs_sQK;*nnh!>0W<- zmHH9}Gl;lOVe|KD-{Fq>{StGD-SIdt?j!7u!)5vrz$SLx`&7g7 z)yeORM4N1~$nNB|adUH+S5i%wi`lP@fCfzC z=<;TuP8!t?iLP{~=TR@WgIIKn42zkp68-K5w9#UQz-7@@m^bEe)6cthvER^J7wZw z#|}QnAkt;~oS%!kTXzBE_)qQc`J&hH=0;)niw^isT&H$#KI_KAdHehPq6dDx;X1Ty zuG@*{4J>M4XZ`Tl8HciK+AQbOm!Gs^PE=mERke9X1>&dlKec?nb{7ezRfskNo=d>w1pa48N|| zw05ZfUot>SVkA8Y>EEegi1dH6eg5^-UHx(>*ERiU^858+;ByxC9R1z!o4fS~w8T4 ziT>a&w$l&X^x!dR&N$=%30(6K>|G)NrvT9CF~AaF1;z66hw~G5PZ}9kFb(ZEjYK}~ zGGIA@CAFfidE9NTh7WXXU|u?@J2{9}s^_zW{Nu1j`N2Ai5YJxErP$t~-4xMKf?s6o zNNLO1gROT)JPY5+d${#f3ZLY?$v_X3AO+N$98yi8_m_3dGsoVSLpnOKL`~VGs#-BO zzCr{452FARqH!0)$N&Hp>k9WL8F~&?GFs<&7ULFRQ*tJfA zil22?HwJ?kD1sXzGoBb2;`|vTV)waa_4rS$6TSzaqkv4RH;EyoLCU#KkIp;bB-_uH z&T!&mTz&vi0^F4z2a5CF^LeJ#v@|%NH~(gLw#&!u8V0UfeoxxpPp&%SitG5SUB~g5 znEk}y)jjKcqWsn8l)mHWw3*l})E$#neqK*!p*zGnJ_r??^mjSQXjAd>U{@eDsLZ-Ck3;RzJ8J@8+M4d#MgaC|K?rmB6#yv z(s54R@I#uvlsbcoLK+bq;&bzOUflKGW{AE;IDS<9$CZY~3m!J#A`cGEMPt2u4mTd$ zWRst}@Nm0(%ZJ@#|7klJ=9I*4Z+G}S*s>}{Dy!@h1gZX9I6Vcq_J6r zsibM3tk5;T^2R;VaNOX4P-b*3=uzSpB`*hnF3YEQ{!6GsggvOzz>c!Dq2y*X;!Vxk zR-6xiVu0?6yzPPI!VHdJAwV_wk4>Tdk)E{&x4)*1?wiR$KyZx!%0`RczhLQq@;c8)z2J(Q0lw$WO~9-6`= zgPp``4kM$`5L3qhFP-Fs)k0xZRX-PlV%zR@L0`~QR`ADM`6NLyXvDMmVJ1R`I`>1UjtnONaHUCG!PlgRuQzvU}b>YMs~{!=_A$?7Xf=DVwGWqPPBcn zTCtJ?Ht@xcGYq25@wE)TaQgenA>;)8Y5R*yns$F~E6xYOvsnaCnLWPPR9&yL=0VAU z8U}6wRU?UxMP_^-Z4sg-yA@Q&*9bDCQH(zAB&8xA=BIRc!Tn$zD- zeG72iZBAmRaD0>BtQ|OFuR%8IzR|vapM2LhHsJnNdgy*~*?}61>x8lMi!@9D0z7du z-qA2`raym@9_Rm@I+(=6mjem^Dw(TY{YHC9{X0Z&b+LJyu#x+J$|Hf*e-_MOB-4Xa>4VAiab|JuJJ zgDTeF?2JmbU6@(riOh8_g>zCa3g%kB#v;k!Zmk+bs>v!YLzKH1al~u z9y%Ic+q`HS)ZpMz;=oQCA4ILvN@W`;wDg~-bE))-Tg2l5M0LXNsZ{>9+{ z)ECZ5z(Qf_BjymA!2lC-;+YWlC;%G)RAD!?T>$imTn_`crFO80^Ok_%L>9VKo5rwC zeAbXo4fTf$9N&k)=CWrNIXr?70;V&Fbf&|Kk0ChsKKY}&Xnp6<58`{hnDXdD)%#Bk z_g8WNuA**fWKkt@zzI4RCRZj4++I|#Me{%!#snk1NAF((95N5^pMgy1(ON6GC!uBr z3u-PU2k@qj;8d++YaEXy5aLHsNRXY4`U?wt53J6B7rWXWlwQI!)p2%Uc2-^SbvO4t@8jbAkO8ep z%Z^Fd-Q^ery6H11?>fh2;QDiUIF1toWWvsBXM*Y-a&gyF02N%`uRGo{PRwt60DD-Fb}H|?dR={YyRu6)EG(;4M2wX{Fx z#2X;RZh9Pm{U*#6p9lG3Q_;WO46*-b_0@jH@cte-g9zTh5RU8q-);K(D>MQ~EDR3) zGWA$Y0H(y)8!t=mv^*bG1G!KZ0hXe0K=HrWuKiZ+wUIV)6)Ix$=&=m*<_QSOn3_Y<`21s=ZN2E}jrvyFXrdqdne zW+wg~`CB!!D0%$<5LY_6?yK$d2jLjcRll0tZEurJHu#{e|3U}tN9R zKY8=>O-rad{}an$(N9PjMXFykA(%w`JMNq&d8tWRv@lD61J(f87}i*64Be&If&_;= zEY?%%{b3>pi=gA;w>xWz$Xy>b9UuwdCjiXJA%D{)xhbJ6A_MJWj3__@&>cUfkK`a7 zAcoNWdSG*+0nChGRt{;y6;RrWT%RnnbLYqbo!ArOgk*!Vx>3KDlb)^ycTw$ufdkM7 zy%n{sbsRl_Rb^BJYb(L12Y7+&Qy5+3y&4q&=glx3ZFWqW=F}KQfyHVHqeZSwQO`a<}kArEst?D$pI(nO>qWP zHk3^CP_BYeNEr2QfRsx?D?S7^4rZ|_fMWnxpfdo5i(;?> z4^JI1fo|~Nn@+6wMD9+F~&)hEHMt z%SH7d!NjMqv!KqdtPci_FbguP=?Hz#9Xw(eIk2|=jsN-@}keFW{_Wi^1=BB&e2|FCz7vn`>21UsZ#U zL7V(3Nq(iJ^{g6$fOn1K^atVY_~)tTiE{jfx6EDC%g11cZoi=x(txtB$&=yBcHMeny2Xxa?WO*Z-La!I2*?57Ba)T1x9@%R_p z-@im2Lk{xQcKqLJ=l^aSuN+SfZ-+d8e7TL)f3?j6|F7z=hx<<%`#iP$7WFv-Z`EID z$G%RRY_iFpnk2W{#Tf4|6$~b&_8yq9@evknz zu5lywsM;FTV`>YgdL)P;4+{6ySkI7UbOVeIJk^tM>@RtJ&=sKTn9B!XfsOmAPO1h37=}pUe_t`J&&tHqn0-w5N|6FjWdqqpT~9pcxDc;Nk{GK z5OWIpj_!~t&PqvHN})d12ep0C-z;y{XVq&F3|;t+JMR}uaR!v=F|hAebwgVeWI~j= zsxx#=4&DhDRP&i8-)XLBT^SHMC=jH97b9)CyC}AEuWwz)Tu!bZ14#%n&Wt8z5AiVp ziL{?`)tSx2KoJ8!>@EkU76VJXYaQ$7@goJlTG}t)blq?aCI*zAJ@Jv$)XJmR>rt$Q>KbN}O&DTSIKgca+?nWnZAoFil zVR1=X9J}Rf=|?hb3te(H0ndlTH5ggm;fiAy9W!1S9Rj&e90a!J_Z6X@PGO z>7pqX_tlnx1zFRs_WXEnRlkQS_Vv=M(X&w*J&06&arqxXrU2q`dA$=PRG7fur(%p5>6bK47f zCv78P4yAtI+pHHvsfqQGjm`CM24eP__Y!opYPwwBo$3g?IkXFuj2VV*uYk zAiua;oGH{nhd1&>U1Oii~L-#YaSgf0c^z4WFS!S7LL$qJ<(<&zuv;(M{N@ge6pyA zq~tVAcs2^Pe36L+YAF~)a(;5qB7$}(yG??n8|8qjDa;}%=-YOBL+=Rsr4u~?3h%Rb zsB>%wa{garPT39=Y3!}gR|x=7d~l#n*!d51*yt_@=2O%^-1;o9>^g?5OJH4PeHiV0 zMg^2ZKaEQnGk*Xb0)KojRB z0lpPz!me=)x^N!+;N9z9)eIzY{#;gegEQ)J`{&senQNoOpi-AU2A9qb3f#@!PcBq1 zTt2)gu<(87$|kzK?{TSK-}H1C(2}ihYu67SXC0g|h{kSjcRl^*Pc+6B>uc@?$?cJ9 zdl5-3-}>F_2Bt7esvY}?LtI`3WTbC|ikh zfbkzA1eSnE|5AGU$#>{e?bWvmyW#!%k9Ef;n{4u<2tR(_rJt@au>2dJGG5>P5yn0n z75_1LF!9F|%Bma+zl zgY6`t)f|qK2h^|*SZZ2Qs&6PvlqC4HGMDiIDgh_&?sNt9~d59iF`~g>i z|2d-h$pM(7b}IlUIplw??PCln?F*5svQ)<(c`baeCl;7rp?uL4FGPd06ovG_R08;f zVPU+G8r=Rg&7=N}-SbdSxZA}Kc8=~ZCPK>Lz&@oQkrOV3SSLeq@ioHQ+TUBpiUl57F4!z2RL zBOlS6GK2^?1{j^$`tJTd;rNn~fPSX}bxlYN5e}aE@`S>IjP;mk^i`Gu_m$6-Lk8^I`x7b(1`c z$2}s|6ZEmFH!Qb<09gU_bG=zgvHfnn>O&S{%m{32_ElT;_-YIQO9q-`SB^u!!O0bbwa&{2P+}vOr z>0&eXVP`Q{yp;xE3h9ZJI=STvqCnP@i5yL!Ohb%a1F;efzEnAs7pRV^$OHROFZZhX zSpD?8S?WZQ9fK;=U}z&LF_DS`ND*wQ6ihIfQ4c~Aoo`}VS=0RD(iYl5e_FRI=3IGPC zeAfB_7~cNAR`FD+$fB$RSka99uJ^}yjM+OGAJk688Ag-N00nHI;k0cM=i!O zXDhtBkPXqu!blw$Lp6X6T0pB??V~Efi${&_e^yUzqf;n2>J>~K$N;m4vcOpt;8zMW5*S>7HxUibe5$91u7(uqYrzOr zzo~>eCkIhvWGYw~g8Hr#?MiDEFKf+I(94N$n2>gyZ3;Rd`J8}7o03i9p zGJLqA@5`&=$$#KTX*c4mJ_e793~lFg(Xo!u1^ED7u{{8i6y8@x-y3 z7RF-Otqr>ux39<)pTJ>V02TlU?y1pVKCrY_iEF|C|f&RQd0{<@mGq zDEh0^Hx<}qlTH5gBv|{hv)oS6i}p^J)D{s|lUm_beV>xrZAo966DSgU-AqPog2~@s zS;Q+~_IGf^ZQ^&rSsDL1`GRrumVsrTV6{`QO{&{J=C@T16zlb@0Z9qQQS^ua;xYw$ z#}=WGG=z0s<8Yv0LMF#V*E*IJ_b)Z*5E`!J#abmUMcT!)^52`0MD8Bm~U<&z#`P+#(TO?e!VYXH!o8{_DO@?*=- z6m)E(pn7_6?TRx+6ys3FNmvtt8(idPM!3=dxDwha`!{9}b0wp|L_%FdS!-+$Eyt=X zATY*6m)Z3nnN337ogelW^mH6sb+!VS5(k6oV|+Kg1+wDdnYv>IgrotW(;45v*t*<_PV{%i?9gT73%`=;!CxydG* z{OL-2XROM+Px?+@nYG^lr4A7A@!J1xAW>2qrZO0X#belDlP=1ZU{B0bu#>V|@6pba zFb|oAxKKa~R<)VzdyGc4PJk2gvaKadbcu#t)uL_^dAi0D%C2XuFq}f< zV131HN(cA3>Hr=nshE8%=2BdJm|TbQaLME39=VUPZuW309#aUjBJ#7gC1n?7XEI3{ zieEQ}ne?y(I&F5{0^Y_hh?zXC6#4;a`HoA7ZN%-RyB%I=Aa53io*5+Jm_}LCW>+$> zra(GmIQyV%sJS}yk1{i>NkAxdnG=>%@gR#iw9BOi|K6)R;O!e9Q(Ol=51nw?IpFuA z0MtQuq&wVq;0M6p7oHPc-*ylQ#~57VwtM}?SFYd^DLPVC+T#m%U1Ug|b$fL#=NKT8 zt#rSCP4(${XGHD#v?9CVX#n`4|sj#7Zatgw(s|7lT9}H=Rm5)AgaooPmw~R z;W&DDR^~8un}}WODi}z7JhLlZu)--=_$7qbkkh%d| zZ}Yyudts$vpCu3*O-}H_@tm-<9AfQ!SdHb*b|A! z&Am0G1C>Q=FPh|5hBAT{QU~(;ZI7tx-j87HfYoI8g{F%6a50z2Wzc&8q_9=TCLNeg zh!0l(l;EpgkCYTh! zjmQb)(QZNMbaKm~w^c1ztqxE~3oEc9Ju-Qn<~%Zdq{WDgs#(KKKy@rjqQIOf!102{=Qcj5WFbz*jS1tN83v5)FWtaU03?92r;38UV9I15Xh>ZVsD4@^y>4MUEy=Hv>0o@uv{~w&44S@86%{_A)!b71Z#$~5BZYUrP{#(CoMa!jUGK_Jd!r@+(YMUUSE_qfa4sm&K! z7QW|j=3`KTgWvb-84#P*+j!QU?Ven8{c*V%RATo!c9;9o)4t2e&20zOa^KaYzC85Z z>MqYHwVAE9*(mXEjtlS($8PF0ZC*JF&!A2IEXWmgmzhmA*~H~vgo*4ct(sriX6#Ki z`R7&m{fo`BG$nI+lM%b?p$%&4F`4+iju#9CbOMP$7lf1TCQW3na*+TK7mx3C)d`FE z@PLs#CmOsm6wKi$3wiWIdQy^IC zKqWA(8TI2+<~dEyur`>mle1qW%dmzjDNSxx4!hDNFZQyIrZ~WuA@YfupHl=(CI_R$ z{0aAq*-bR!bwnc}Ei@YM zbztjkau5j49$+=W{mVEl)pxi%#V^qX1k54b;84p6h7k0zXqs?oLp!4FVdgU!gKjwm zaHx<2UeR!=OeENdX1}jWms#XxR5Ky6i!K zl7p?X2G|%NP7OUmfC7{~v>;e9$S3ACQ2?BDVi{rzg;8jbaPi~Og{x}$z%W`B2DAw% z%rtPFsyZ7a0Ac{Xw6$#%rx8ej?f_E3WeU9yWik*ekph=B$7KFl`!cVtl6eF1ce zTQgwx2AisCpBGm@9hr0J6Oy*N0orbF#hFUnbgn2p7GG6PEhvRwy#IDQi9Ql<_}@!y>8YYp)I=*-z- zqAPa0)ABIr^+tD|BCpPo5>kmYr z9fNtV?|ONE-eO~QlT9|+LVV^U=)ZXWlZbFl=$gGRv zb=CMyX60jHn*3c4VIkmYfi1|Q=SK>a<#)#2>}U!iQ{&y4-wW?ow*yGefo_vE9TxNO zNDtrtVb4XW!NSJFzz|F=9vSFn`|P@ff&sdq zUb5#?0ArBmPP-$YlNe5_KVfT;o8X8YC9s8lAIQsO5qrpY%`1rp#~IWaQG2Wnst>z~ zoK+?DtgZ{`>iRca=Ad4=FFRO;{%H8K-V25l_&{hEFsj4^H4wyTjYD@JdYdJdPHKbw zAgw!uUJyqlm`gt>@|bCjXmBo+iKUGBN5Ke;Bimf%s>6(OEzw(9BjZu5B3ZgOK^t+P>0zJyh|Jd zo948g4Rq4uVDH44=5%JXhY9)hllpWc+8Q2Yc3b*y*!!1WOR{8L6fzq==Zeg#I-4V| zfGZ(E0}x1b_z`qy(&vZr3y^3bBqSaU?rk8B1iFuN&fb+7Yfc|_rkB3nPH>aaV3h+z_j{Kqg0kz{Col{0 ziwHpoADPa!^@|g%xCnrlFV^RzotT;KaN~GMKA%17;Ft%rU%1t!{sQ=UZ{Q5w;K#QE zi1KIdxqA~ap|8@aqU$2!Dm|N`jCfPGg!mDY3DADIVP?2E^wDRYR_As7V+IM| z65v9b5r--J^LtK(0F!>W6JTZmeg!rA_1Ru!j#KIWhyQT6&$-SV{QBeD5li6xA>;M^ z^x)use#+Nhh{@N_^O8$0`Tpf^nHPp!a>*r^d{eQCGpe#2(1VTAaGyKY?!)GaCdB$( z+WR7&+j_nH%)@$ywasK35d|!LYx3b(gVI|3o@HR0iY1o%w5c7*z^cYUu>RC zN2wVt>oBDOALH@}iLO-?Do45Eah<6GWhRT1t6kLrs?2AN)D9C3CSOHgK|a=i1$R5- zTcM4mL9vl_geiiq1<)kSw6U7>0pO%L8KyS61j3~$J)eKy+TqW7(4#dBy_s63dIT|gP)pD&qZQ@~ZWK6S>nJMM zIg!P+3EJN2lsmKJ(gV8%lP%)%V06`Y)N_zFpC*U< z{Rfj`%?6oganEM!ihB$T^d8KSvBs&2Sqp&2Mm;YXN!6x97ULSnp`v{3+Q)b_?R>Oj zvh@rC{c;d)cCy7Nj5?rAX1=UukIdR-(6ukJ`xNmh{0v{OD3-Nd7HOv4S22~+HY^Jtb{-J`ipByZ zs+Pw}3{cbOIQl zP_#o&=}R{a_P=Y79#tBxZaA>)R2Bw~V45-~B5=q_>LUG&1bEPVAgeJW2BM@Zgct?@ zQ_*mw(?WBANrWzOXMRXFGk_Dgvw;*BQBS11%7abEOb^`?<#Rv^u4Hg+dk}a7Gg_si z?w}iTcw@ijOrf`|102EB$mF#K95u^}<_!2i`h+^P$vycG)xOefDUlW0xoJCMK_^0B z8SZEJW1~KS=fqmSfJVS?D0jSh0 z5x!G;d;%ZZZ{NFpEk_6X3r3M?>+!L7TgLt9D|pe&K51^Jz7=K7yq@U}r`&e*!iw8z zbZF`pFS~Ll%>vkh;=6G??|{#H5+*$jFTda8ZgS2#^7P*FIj@5=oE&)a;NR}D_j3jo_cRdL z8$i~demw3&U~ms)?yRPN|4&C=UZMZ&kL?!dnf>GEWOZdd9kBA*oqu*lQ@ z5C2p!y&<5yyXnpS*lGK>KZ^eQKL^P4x*>F64t~ALG~T|!X>?z4@ps83m;6d3Usr#X zU|nEx$t9OuQlfwDobp$Q731AcojaIBh5~pzr`usYYcldJ*SiYl637D)+F=}*A3@-5)O#n$!*Bkihszsc zLLrDZ@_**NFUzU|g`@jU>9QaQIZW+h3`s)?lKDV44v1mt0{68~neI&eK66NI)Xg_C z|Irp`Tdv)M%$>67qRBb|U* z^9I&Zmh)lVyGwV}a&WrUY<1o>Kr5EJ+UVYn*`WZONx+$Ot4iJ@G}A4S=d6Lnjb@G8 z)-jWq(F8q38MJmhDl=vi)!(SBcH3j70FX5jT-%huL!N;o-PoRejU9WTCvX{eg3Y0i za$B_451350x9;FV2e#1zK+o;ycX;k|#wx;nh#du1ROvYLzl{cJ!4AS0;kLi!>2&@) z;!XK!a|ovHpp4@>{?f)Nc@At94S7GV1*2&k_xtq#g|dteDB)zed!D`*Og=k+D4z`- zsPZ~G81=&^DbA}0CkJaQ7*N?BKmO^+=RZots?zP1_P_m8Z)JF$|HDslzd5_gXLtu+ z9U%J;8A$x!{P4;~BaXl~2@!sQO_yA9$yxq}d0~kvaLFZ?T;hT?{?`(mP44lSd<}a$ zSm)}onZh>k&A;0S2~A2U5wmrT`;q1(loaHCV&!?#vBBBm4wrEPwSw7JLTXNAd?R&#kr zs;s~k$}vy-`LltFZ0Rscqk zy?#E8K7lUGFOyLrbtoqyn)6O1YCxCh6uWE2xUDUHv-i za&$4{?(omdhA`9%QkAZDfhv?Ef^-{=7yu?Bloo*utl0uV5=a>Z-sO6U z<1aiNFT;=bBc2po{QSq$jR576E_bgFfBHieH)hSpLjX{!m+c=8c2&@~9h8dl=)rbM z_eOoy$NudfMSuMI0m5~YOD?(Ol121y0ik0amrE|WtTbZ!)q;QWXot#DUMJG?ZvQ>EtTtVoQz$8S!mq}Yy6f>e_Vqtfta(g=2!A@f-RA2 zS%tkJt-nf3KI)VS5q7%Hwy4p=BkKYL$F!F46&M`W{gfr&F99n?#SrQD$zn359mj4+ zm8{8v(!f08@VVza$G>Ki!(;)Ms+>luSNXvAKve*MG4Fzs7Cuo<>3)$m=}`YcHmjXX z;q#BnUE4$|K*JiCn|bfky6d5dAE>vS%C2jZ=A{FWJJq{f@}!+shV+m?*^)XC^0qbj zrgJ1*bMo&7#X?pC;v}e8Mx#Q^C_9hKi z=t*~Q9s-~yN^CFbGTo}Rc4}4xnMO}k>s|nGNvH%hI)nzS^#ml;GiIhaqzC^JwTq;B z<&cFQDIy=i4C|Vm0T$)oUuXrf9(~LsERZ7sgeL(B>~`nEu66lHxd5W&Ij}d-bUq1h z;p35h*ohKMrAcMN?t$>AmJSw;xI#|`s&eF4FT+kjvUNBw_PK`C%-}j04Y#A7)h;4S zsD9+RkuDIci)X5MZX*CE`((M-pL?RO|p=|D2 z=fKf^BVh3L{6GHr0IrIOln~JPjgKT>mEUOphK7?Y{_R)P^3B> zPa1fs@=;dE4(S!cM^D^~(T|6^^WKd>rNxXhGOhAKt|H8DfH2snhq;d8F(0JD9TUh^ z&PAh}3#K8TD90cf>`vr~*ihgO6h}mwScawoNK$!cIi9H#n4RDV7}XIvF-p_#3;z|9 zF@in2W6$tvCLnOgyU6LBt{d(5soo6v0HmvopfS_jXl9su&sq_-e{?LU zw~Vdja^HHa+@PDi-zo@XAMu{{cKpSQ`-gk?F)!O&#!^BaiWxJ@v$O~8Mty!JgU}9E zlQWn6QUCn&=i|D^V!|^x0^!HEa;@{&O!|0%MP8Rb{1_+DMc{Ds884FqRq_0O#J;lk zS26dam;k@Nm0X75C6`Da)ZW#XXs*1pw`Bs=)*-Q_xm$D9k5Y_wJF`!ca0Y|FW!`w3)_XcIz>e zi_$?HpMn#l%_I&k&CIDV&tO_w0~KZJr#=cKN|P0sr(cK5+fF*)$b{tbp=&+KLaUG4?DTb?b8Ni4_z;7&3aFSf5 z0Ue|NS?4>2fG=s#jd56n$3{AEWyC0Y#|LZv1H4=3?C{hKra=$425Pc*8fk>VAqeyUr-_e8h~Ya77#9bmKT!| z;KC(%_FTac&ZBzFkP4>FMFjf>e{-O9jPU2A*??vlZh4n49UF>g*qsgfF1AdLY7W@$ zKu-BvOOKwK9jWK#j!DmE2zah5&lCDH9@%^A5^iJ&bUqm%^ZV}v9!Za!N2UQ_XiAS< zOV9-ly=JpP@b}aOPPM!B z$#$O-P#VdQ^Jm_Y{p7*QKOIC*_3MB5BW z=mZ$Lngs+|KFp2`X<>Qa5()%%l#u;Xo(c%JVGR`Rw0?$tg9DRxvby1}$MIQ>YzhPx z2Z_N2mOJbNpAPC^}-m5avW*0nY>7v-DSU{s8beJ z$=O6L@W|S1Sqyxm^o2}$=`wJXnX~!G^$2rH+k8ZH4ulPsOq)3=DyO$I zOm&eDm~0W_2ARCtW^%BeW}ie?Cbl)mF@?-h`rak>@bP_iA2^7>oW#&YFmHfl1;m&v zv8(uC`bjzf?`7ai>GZ?ABAx%72hSs>(;L;r(|~IpmKl#M$1dHTk*+qdguFHD|IA^u zQ)4}Cg>fQ^3z@W_%?0hL}mQYXk6VtL}M3d9&kX9IkTcdny$REMhQ`i{fKnb%Fkf_(*;a zz#60e@rSp3Ho?SOy1pSO_so9bj3>#qjaWaORTsdiiA^SjL>y zL=*rrRqQ6j(e<@jvFNehrhBF}s~$|EvWLia0_z{71b{(8pj8xiw1r<0tFv+(!h|=u zMb>rrnbyLz86Xm_D{@>2vnI{a&QlhgtAxyes1L7RP<^l;FIVMsNxwi00;v;z>M|8 z?u1b?5qV03Av@};YaI$U$hHJ%0=;98NVS2jcM*>1e#BSObT&cW*1Uszmf5{aqfFX7 zhbQG(CRnEF{p<$a%VCxTXCckin-Wlz{o#>1!Edx<4FOpJF`Oz_k!)n`TcHDOP;1gP z5iNzi!Jy}0%HHZ}qhy#xQ`AKCO6!)0@6-5vlKT)!A(Wdx2lmG}O$af<^r#vp z6$Y&~1~T%wWJnw}n%(08^D+Y~T8l?Kc5{}c2 zC}o-(rM*m?D)OZmHsu0F^(e%D5|E^z{RTL)5(zv88dzC71jz%4hZ|3Jd#l$ciX@u-Wo6PMbsaWpVdQ0Oq0P zWA%3?#iz(&{mA>~bz&XTqbl(pJWMl~s`dpFdQx+gIhoj7nQR0=mDw^$EmS=?RDiLg zRDHO_!Td$@kQH9$5%Q?=5~gVN-^zthsvDb_#oW>rj6(eRCz)e6=`tgva)lS8wC1S{ zgUnKN4QB25&wJ`|370D;IDpJ)v;j9)`BI{av;l3sr%vHf!F7u zCqp2}fA~R`ZH=!jcoSUgrb{mQeaa@ktWkK)DVJPwiCdQ6VrlbQ^QnVPu+7ZU1nTv< zZd-X|XvHYaHFwceU`xmwsS;3Pm^{Ate9p(S}xwxdVpd)YuVuu6V43$BBMiEBjRMc{4Ni(8M zQRy@(=_Ri+rKQ!tjHb#bZ-5CjP8;wrN0%RIRU0)K%$+jR=10}XbE8e?GNY$_aAW}= z0`6o;JNC-0y8`s*9|8WH>nWs*3Ot^sFq}T(yELW4w37y+U}7VY0DZK166{h3llCdy zMZ?sZN8Rsv4}y)~wHZk+d+Ofvde5@s1iXS+?0Amb7>|KD<>GE`4vf8183A@ZVLD6K zIT%xVfJnC?i>n{1FVgjXBR&UU6kx^$dze&+;bMBpQGQ9i-aY_DN>E#I?`AVTkTPlw zU;wRwuNgpLCJ*zu%FRvM0OuG;JW-gej1a;ssu%AG6d))!CQM9hxDT#i{wz)=10x14 zTCuFO0i)YI3^PGhF*WmIw3eS15-8fsmwg`IC5O{&Rh2Y zo-vA9rL8-Y?p0`~0^MfERzkRYz{7aY(15L>>HUhqvH(W*PCL{9Sf9$V)GKvk`BJml z2?&f^zUF4UUSMNm;8=p$X7pwZV_K| zW&F&;#yi%K3g$jo^-2H`wnaK?tAwq$cGd-+jgQVGmUn2koC(WGGcY|`IX z`O`+L*h{&@=TqiTF6?o`92(YTDZvA>f+{Yz(R>6n&y!3} zu!mqusx*jFahC`rK{wc`{9f(?gyhh}Tbjghq6%Ot%ZV~@%%hp+XACXC2hxBMVm{@_ z>Nc4T>OmLIT0)?6%l7`^)`84}t1yoH;v6cK#n}s{HuMo}Fan-9pgQ_4PQ}A@9OziV z(MLV#ALZAdEp1=-GYZWKeSAo|($G%6?Z10aAp zVJ4Z@!Kt~OyK&bAceMxll4d-ktTP@f{c^t2?TZ;J`oyFy0&9j5Mj-bmyx?#T`jZhb z#{E2E9L??@bu@!DbLf4i>$@y)uz$qM`O~eLQgFw6ONLUp7D~S?0Se+oLokn=DFhHS zSV!8xl0OpwjvVYHubanX@&y0Q566876b_K-4?i4#gKZTvC1O}5X!Q?&5cyL+@9Fw8 zh%5E^0J-$$iF1h6QCO+=}9aafmG{Jh0 zunf6jig>-grhOZY$iUr>={jKO!!FR1oe*UiotLGlyVEn@TLe>&pqMsXV*FOFcUO|!cTfcpDCu5(PCh9fOG%e8A))-3{dXT zpyQVJ0?@kW=eJvraR-vn1{Ey)ez@KJ;Zy2h9M8V)jRlN9mdFC4Vm<>yk?@`F`b>cFX-sB{n<{5JvGgY!(NU zoPn-KOsCik#AdC+Uenb+10ql!7P+>)-`W~xzZwy;f5^6&`F+`Z(zXE($^l&kKSn4^ ziFNv0dIuz=o4%Mvd|jnY#M4iCK*GEmt?Du*&nBNpou37> zC{(O#b<5n(=Yqpx-9_A#aj>J}1xbTi09nfHly2^)bvYOu(tIA_8^gq-Hb!{jTNeCH z8#FS47=Xz>X5Wwa_NWioPjEde=q2mT@uJXOYq-b(NV(iompk19Q?*?E5(InF&>PxQ z6a$mYyaPKd^4EiqI4B>a2OS9IkG6KXRV#3>PIS9a;`0P@POV(ytZNY0bK-)#lVv_S zWQn;{BQ-U~j+Pt~3B6ck)k^(M01fxpV%tdf0`}d-=!Gtz1C0K7E(^>j(&1(p(3)ua zFj>%e9`y@fa5fk6?327q&iNhGgtFK9jr=f^W2{VkS4gHnP<7<(dfp^at7>lwsUKY zn(golY3Nm{qzkoB{JEyXz%g4xk`viv`%s~RBsU?q)i zLobTQUILiK{U2bPv#Hz#4s5nR{XlQ3?BhFu%h;9j+0tV!`RAWLA7yrcES|Rm=<>YX z=l_qNQdb!V0O0K(4i~!$RPM0^JRqe9u1pZi0vMBTFRu1iQS4RKc4ofhl1qM*;^Q4h zzWhD2@j2x+{eCo2y{uZ-)sn`ow2)FI)&}(T1n0;iX zjZ-sCTg}pf9%h3mRex>MC>&Jgac$`?dVoOTFhV9V$2|i713(i_fUCTPT=??ZlllOH zjC({B&kJcgScBM2IMt5Z3;@ts4&0G)Er zBU%Q0M+OME*P)lO>)%E?rwOK>MX)~yLlCov!8xP46bF#>hk9dX8Z>j_LyW$BVSu>? zJr|HC&0#c}CGve!aj2H^OS_(p1au~~N9b0FC#nY!0w-CVaE7$DWIch61lCu;&7Bnw&W;G!en!C_F zA4eS?`JCtXDeJVQo1DAx{lkxuuO@J8Uf&3ae$*$rpD%zM)Vt>*olN|!Tz&ZgE7 zQliU-ut<9XRD&2zFdzN<0DflSt83I5IRGU#zn_^lLX3gggeW@Yx~E-Mw`iV}C+>6c z^0=qwPW5Csq8MA+agRKmhjiUh-wo}W!}v-10;shq;klV^IHY9$@4#_0UF^MKC<4ww zj54HAtg*}x!wU>2)Gy9Ri8?6VSuRJ^Q$^MuxG*&aO&rpru9`YO5B^U3d0DgRGR)J2 zF&feh4a}|~dhi+as=&^pM|8Dpeg?pRk;WqyUg(k3r`oZTLeHC$tDh+KQtXM*{ zGT^vWnE4Pu+tauMK=Nl{sbv4gbpUa2{`GiC4q74THh@Nep||Y!5vlHWfJZ-M#9G|* z>DKLwyqFXD3w*C;*by0Hy~VN1MFex{W_4807kUB%tTB$ES1y z^jWU*-wvkI=cgbTdicA)?o|&Uj??g5Ugh!cs=lwqiS6{Z{noNw#^EKG{ANXSe1FY& zN?!}uy5y2ezL~_l^1Z}<%$P{Ag!b?Tcf@fz*-(j2Xd(!j9vtTJov==RBuxku8D7ZW z2W?Cu^Gui5Q0Kp0a2hu3kU|`kY?MLYZyjc%&=6SJ+V{Z>4KRuAL;el>Lgfq~h3s^% zk$G&V`+#QX0UFIy=-Tt1KC)#;5(XV$UKY5che`1P#8Faf8vmRJHxXHN^?OotD5)E1 zipd8L#sZJH3rPb|$P0Xpf)7*{UIm-dQ5MPGPr&k>xBb|8d|3oITJ1Zgda&$;gWOR{js!)!*N^?GA+bp!qNpn$x)wTl~Eh98zRQc zt<=YmAiF&2X=VTj!tg00+vjT{o#u02dn8ykVR&noObOUwu2xNo)T3c|11g0ULFeT1 zm$T$(7ESePj_OAPrPGMsE zs8MU@*-fco$^2Cx*Yy}*(g*s>Vzt*5m19nTpw)Ot0OfUpT88Zq6=Xdk(O9?b`o0Bb zat1_xX27ZOI;1eZKs|jQ=B>gZESr$O>=c}jGF_dZZuJHdJP<-t49CB^jen2VLiZ!m zglqN8t`r4Bv!X6^Yu#dMl{7Wogutpt1~+-m2C;K%rl&XhSMxFo^Qe8Rn(*c7;k6eJ z+Rafe5|4gz>xs@h4-U=ChR^L8x5VWAfpvguR6VrMeO#ViREj{>7z)JvicTh;PzuUXj84<z5-$zF71j{L8O{u^1daA7-cCbP>sf5;F#_{3`7bSClkFNCmv-cxP;Koc4 z5QIey><+^lK%wkx>1t>Ty|uMnfhL^YTTBqhNHu43+m_0num-V+m1pXnr@!>+M2PJ9 z)4S!v*nt5x9I{7=Oz3#P`szO?N8qM8uNpsI;$GR3NwyFA3o!4bhY> zVB=hG>Nrpon=79C#jQl51e#a$HEvMzreUnd&OQ&GEaE4luG>Wa!??FXzpDPJPvB+Az#MWzssvYtuIV?2vu z-wSXR=g$LqWu{Usl6)=t2wXf1X_c;-&4Ff1p~BNnX$ZKCL_&xV6V~*m1TX_W zQ_I^69pYT=n-DoIUO|Qy_KmJh6cbj^@kf2t?dT_`4D0XNB6ml={0EEcpoUaIqSFcu{QF-GlK$67gipJuupz5zadRhv5^b-7UIIlBk=??-lv;Ad zx~ZyYn?bYW338~&pFIpCd_UfnQaLYGV&;~Z(?m68|i=JpN9 z;J^uiN9?E`+#ksQQqDbs-B;aT0dY0<9lH$Q4IjN)c0*Yo8Kfz7z^%mmu*5G`x5Q6V z8+5;TP{AL)+_z?`C>_%Ow+S8x125}#VcRw4*ul)hQ5R{y9o;4076up$;SU5L1@nI6 ziUDd;Q9CJ-VAJ z@H$V*!#S}b3=UMRQ}0_IQ`zt?IY&gV5Cm3K0#K&Qp5L_h)r511@?+AF59)V#P>0^s zO5vxEZ@iiVn)nKo>bT*VcH;NgPzawc{9bt=e(4B6=eN3&I654anaJ^|jhi>&kYa7k zxVsQQo%#&8IB}}!bdz`-)A`-p`e9UryKfd1r{#ON{?|HE^hjRuz=0uC>}dhDObh=$ z@q28KFH=L4&|)^9TpGwkeEO0rAuiIi5I3ACfa9*IB>1qA9a@5)mEV>-1oKL-QQ*=Vc_jH_ID&2>g0zvKwhovP=Vl~2YdJqX&tc^tvi67f|80suzY8(eQTZbzm zGkP_!f~1t7WBjYF-57AeWiOi<68U?Qy|hj2{?GZ^v=yl^&!3}Kw>^dZQhDt^R#0+*d01MHf?yN0&dp)_<= zznMK`%%{C-Bc^j_O=0;)JI->()L3eQpSAYm)E*pIiAXc1*ml(-ybbt3sUKh0)6OfT zpxR*{VTH$qf)ZTC^6GOf?Y{Gw8f%ztA3`wWEp$cgu7q5I~B{c_c)Y1Iub%`WY4b_a;AZ79wGjzGSwQF#CH ze@jvsK@q#Y*&{7bU8OVRvjCi9|AYw7FUTAxk)%@=eDnRwd~o!FNz5%Xr9=_o}lCKe2- z7T2~{%ah%NyHIN~u`8CWb>0tw8Ub^*YF}wIDU1E=j32d=BO)&e{>ReTvtBTJl0wg4 z19HuQhTGU_kP;30oqKP&J+O!mC-3qAx1vpHfP;j|_PS?unMDiz&8`4skPvEW(g(`A z0KTwK$%VVRaw8Q>7yFCCrGkAzT*tBmqR0CCE#>{wlUA({*XvE(&R++cOI_^xga2me zZ*r&dFUK}X7gE61tpA82Z z&$a!$IsS`~n7(veXQ8ghIs9!xXJ5D00||@m@XIj|NvPc$L1~359z^FCLjV2oX9%HS z8kBQ5MQ!8#FT+_6<9Tyyp)x-gClTdKGjxZuIOL0Fg#Q}52{=URLh!HjYUE%%Jij$? zyjaSf*i*4pxy18|dEn8-EGewW(=#V-unD|&6$y=uOW8#VN=j_ z8+J&XTHX3&RMxUSKn2XAHx_`g`Jh4csDlC6ijeC#*u_;+NADi?cPOhQCvcUz=o24S zpKXm!&_m^v6_VK$`ytnyZwj1A#l!KNv&nZs)T0f2-eUyj8@5K^QPt@BrsV!p@Vv#2 zRvxCPlF9IY=U$~EAU1nT5HI{G+53mu8soGE+HN$#I7fW4%BkAtO zfdnNl205K+rnC<74W}!np&RE<(UA0x@N8zlaB0-;%X7U_kNL{zzeIIAf}s9|LpFzH z#I8vg!%d9h*~*{XbFo2&!J1mmE_s(ra+AKIXb$X|d0!4J`J$}$ah)VFpWB1<94_P} z3k6X(>enUJKT~qjGf)#t>G@_4;qPo? z=;G_Q(KBY=K#r&XQQjBHx(A+76mwn<#D^UbYQtEj8+(0XzEdKp*zWW0kNx%K zPwxf9l4vf6a0M8@vJ^pF?0d|`=xu!ih>|Kv37^pD9@8C0B?rnk*c~1EGs*V@2dt7V z%)Gv1ykEy`AeogMvRsm(PT8$e(8L2dcttJ29v<#18&ZR0Z1>E^t}aUoHN=_U|cEXi8&5bh>=Yj48V17Q)`T zOkV5M-GiNOwZpF`Kt`eYvCSE4dC?)uLS~=1|BO0dG9G#oiW!{($j@zo@#nA#3|E?b zE|9YLEj+F1_~=ZxTgG3KMRWS4z&63i-Ul9^0at@Scq{*}C~u`qY#IJM-Q94lLtE?& zT;RBRT{&FfeycPK@PPNkK~I#opoU;*vU%VfLaLh(1pMp1E0h~eyOSUpEFEXQMB`ECTM-6uC4_A&ijfm`!=8bzV4`*MiNpK(tZD9 zd)TN^-Fa_sXp7=1zk%UE#mk`HfA2YvqV}VRsGP~)I;_$@)y&?c377#wUq7LttnO>( zf%xmB!#^okhkVCn3r7Vw9h;sQgll0v`YPGT$GG@2wM?IK=7qRZirUpe_d$h3L-u=n zu=e`@NJtM<%qqQ!udxSMa=$roWr@jen%sV%MAh4xW@v3VYsM`tLEr5+c|497Y}dg| zT^I{wAZ#HU1$U*J2=yI4?i9!basD~*j5+f+;+pvv?rO7yD!R~~xK4BZb(RGm1>qX|rIl-Za~o>{fc|MVu1f(%)76gy>~F1) ziZslu1!d7YTDnP%=lcsDV^Z77wY@>YXjz0obWxOTcGn}n)N}FC~ zL!lr~>vT1f?d6I}a$wgESkPdkGE$)p8_|rgsA@~Cz(wVk4c4tE9BI4E(KzU4HVIwX zE*I=yt|3oJks6aYbZ7k5+a2iU*flm`$_i4v#{}K=io|=kpyaL>ih}E~DDHW8gq_)G0N&Rl&XCL5ckYjA5N3|<)ciy1Gw|z-e(kT@*LMCLS9n@DKWKdx(`TrKoY$@ zm>LFthKSkO_|`y*Z3dN zcq?`p11wutIp9i`0aYtkgaX21Bm4Uwi-nP;KgdTS0F15yLQT^OvZpLZIzYffd0Fb+uQ z5Otm2zZ`s`mN|lYqV}wumUA2ADON)%kfUzHh&e>^dsDQh&&?{ICdou!V<0_XhVfBh z`Y2H@73u(Gr;SOpkP`6}kra}`l)6b%r6_=qSv7ylDP_(L>(@fj2C8ykAAKtW7V6cv z@}!ZKLi5^RMz;>_v%RopFt^k?{VIi5TxM)XdgUPWWOO@|@`D>F@V4Pz1kRCS1*tz0 z`yd5?pNE!nmW!=pIyC*T#iaAoQ~>R#@Pt1n9$b)OA0iZAb^7-O@-|X;>lSV>yHYF< zg+NlkUzh$mG>{(n5+ymmd!$8ENh}p`$wF{}?834}%!Gcz36qC*7Iod-!({=DjhSZ_ zW{X_gz}z7bU3>;$9pdkdK%Ad%LDHALgS|LiUel5srNvAg)VeF7BxDR_JXWa^j` zBdrOA@nw$y!JfU2=*MxOANmrlC%Fx!e{#+bsh)vb;2Muw2c?~Zyj>C4WFy*3Fa5je zJYpkm(9|x-5dFqF$?=u@&}5Wf2&n$K;-Pc>keYe1ha1*|Eq0lQ$@Fr@o~Ls<`bq0K z1FsHm#vZ<0oas}T!2jWxTr`}dpPHBlBzv#ly@S<4TUOH5D?hBAm+(CtXkPmAHnZMP zfkF0qf;T2c?o3E0K~cxtbfxJgGus_O3euFqr1RsVZPSthW0R!cN%5Ny*Un7L|P{u$ihk2_}nWgn3*O%?RL=XAuL zBUF$sJ=`IdH1o`0O+F`0N)BKy*C~0}zmlzX?oS32=|bSw8XA}_EUQ@Je>R9yfecX2 zmp2;|s6Wsrt3=lUM7``cs9faEF+FTYH{GhG?6raZnu^wl1m1y1I}g5- z_fV^2bMC4{JGX*7U^RYBQ^;?LcO5igO}l!r7_8j=)mp9!CJ}>>Chg}UpJr6zMGVW4 z1B@VdFEVH%wj1iL&KdG}Lk)Sw@cAJ|kgTbZ;@5OCz!>R4?-DM^o!Hex$cR~xnYS+= zge$mAzLZk=m^6#Y>VjX@b0C9*TS28OC)iP2s@RTogl@MClA>3G$!4HPm^A9*Q z_&WrJ?bv0MESS}|dl!x?zEI`>;2pM!1)axErS>&_Mi!i2zy6u! zm)_s8&qrzlzgd~eh?kl@btv(gxZ(3@#$1Fl{}@Z=fRcJxE1)ax;!GDiqX$1LGz1D! zf8Xu*>wfV*W?t^W6)hT=D&AV}vn}XRxV_~PK3S7~Zkl8uzFu)k+Q2&?UkIEE8r|Kb zEBM;{u+j~nD$%SE`yuK39)>LTvC4&KUv!pC1)(Gru%ftn5b5i#a$YnCO{RKp@~+Vw zQi;R{4yx5C1e;j(ckgTxyfH}OIkd9P3O6r-sa>~uRBW7dCos zF}T60wj5_sXI1Er?r4_M24jn?sR$c8tA@uEJHYlMEH(-&EzeiBl@d{EMn6<$hY1> zrziWta#O$_HYHVWl*g2@{|4XOc%G`G)YhQX!u!K|iZqR!Zv5%0UprE*V*99uGgz7W z|&qp?rvCiw%vY{)?P zH@g7Q;c(>$)L!TTo*p5vI}#t}fQR~6V7@bHk84IV+J?r@bd@mWa>%FRs+pZcho%8Z z0@?>$#-9Dc2_(qnDk0h)+02&=F!r3`vh*8vlkclw#0ASQMtF;2O%Qp|*f~KN?oaf3 zKge%}>BDW}1)I@mxw%CCJ!lUHi*mFKWK7WuG7T?P=;7`W1aJmPo-3~6lyUxYqT-{S zEv-Y>nag%H_7X-JQfb`I4d|)R&2760X8GtIe=ePMg&8aa_D$KhS?~4r3tS90D3a7I zx^6N=Z4mQWO`Y=r9`B{*Di~0Xbc5*MGbw)Kk@&fG6#S>m|D+I1vtdtLIy(4o3*;nZ zk*LSW;fOvIvy`nm@rW2O?|3-ttw6+<=JC>w0zIxTk!mruM9rYBtavZCLfFm18y?!9 zb!{Wn`ndVv&6sxBq{#K0C2@q28-R?x=uQ+nWx}*WoWQ|}S@Tyii>LP&8uULg&{C&t z(qe1*0yi-v9}+i~GPx~wEsv)lqFixiUD{vuyO4*3j}Ts}j7L$|G*0p{BKfR5|J$vh zu+qJyb3!GAJAFc<;s87sHXSHb)9r@rp|A2-H8-o=8TAbv<3Our_{XC9bCW-K>t#@# z4jTZUz)|BfHw|$0D-sGyuGn+X*h6icDG+zC?(_*O&YBq(0=@QE^yl@uGStnO(5||m zQh#1d0abnbg-UKT!)DXXuXLpqMtA=pvwIrmI^{`iyaqDc^r$KToG0A_uAQX=@{BeP zwsIn0wf_ghMEkCB2-T9vm*MH?_@vn8*{E71iZe+m9WU+;v~K+c$`>QmM@PL8X0 z8VtI_pSPpZ_0I@?6sHc3jbrl6#k^c=-5) zb*E7w^1YwI5+8=KTPD1B3f(&6N8@@<`ySbp(XK?;zlD`+d7>`ZgKleM!d(SUxkpbf zk>KbAQ5TkH1u<-=VwSenW=}*31Zci&A>L00n*6)_JW$mV5chib7HBb0^~%Z_%nhMI zNOB)RSOaLz!bnHve5;~`F-zXJr*KwNGTR3Jim3E@$~efkqRkLW=y453PiV3+MM;7m zocqq?AW@kwkme1sBjG`{ekA7CCi#O&IH z6oHzWXGwz%D=T=Y!wng4bB%aaY7C3;HUn(ckYeQF`cgtdTEYvERqbGz;=+YNJi3F9g)|SH{Xuf zj-lV!AmR7;*m~c2gpI#ZJ-D6l7a{26&X6BByRNGMU=GagZIu%rWV9(}A9xN`je%?d zt^!d{=D+E_UT|air=5N?|7xqi=X#bO}|$b|I%H~W5j@uBb8E(6|I}e|0%Hl^Y~Rk#Y04K7HN@~ zAy*+9a`p07DTrG};UGN@E1q0_#VSilz>p*Z<}3*nGBu$y4%_>yoxVA3jts>&)1*#Q zx3B2u$6lIqGEgluF?Qc>n1Yh9557kIk((U^2FVU*hUHFBq}2C9^bYJI0dgjEYyl7w zyJmrz512v_zrLi0;3cLY+N*Q~%Xx7hlQNvHYCPoI zCDK;k_Bv9V6Ma<_--z4aa&gdF>ksEi&U+L5=?uvge23mU!Jiw{{wf4e_*=OE&ei5z z$a3>8WG1MB_{M!*&Q51J{f2@qP%?g<`xGpb`taBV80(D}tt{@SMgy+o>s-|ne#VBW ze3%voN*W~}G>raP3)G-#=!za%ok}W%7Eu~>F}P1Ch6$8mHI2BXP)8t-LGT&+SKC_C z_owk(Vhj*e+2ye*WQDXP;|(4yTPvuPDzPRFw3_s7T%ss*BJTMz^9+#$0I5^Tamj zi%y#!_CN2{s>E^R{++g$>@O|BJn{`oLp4MFQ8hzf3#Bxb;5FU}qBzta{4?6^#AnNt zuQYsmbJ_?=n)vS9aIZ_!C|1O7cX?ldM_ty9-?ZRkbM$kT7peu5_rdyNxq7g&ux=*` z&?-{6exYqIG_cuXh9(hBNl%zN5$GxR)@hsbpzZrWW6YPM^bkeuGez#tJ+`agGiIE( zp~rO9wK|x^zVqESjQC-q9;|hzm zMu}LzudEK@Ybyez1Wz8m3S^s3y?`~F<90p2MNsg)`t@pDQd}`yh}@d)vlheG0~AKc zKXOe*`=iB*anmaXgA+ONcGwI9&FvtQC~2|P^nRnYfUvz`Q&DCSZz3bXCau6u`P9q) z!1`$cMnX7aL|)do#1=>8JZ4((#*bx<72z zYcqh3q`h$Q?yIe@B1ma-wL$(T{%qjMY%N$#d+HE2wTGO^RtNu1YO|(yXLgD@<>JRF z5-}-~sZJ4bBtP^b5Rv-=|MQ>zcIl4LfAFg&u5J@I^ z3r!{=?JiTnHCU{_3&2+VR7qe zu4>_}RpWSgKhN{!_4SkW7L1!f9#TazM8r-K=~gVh91n4%s%mZEwLV+eAa%*r@>Vfs@%Qi!UF6*6g?k%7H=>}m}SpExA~Xb0O? z)z(q7yHvJ3G=pmIYbJb>K_kAHG&OK1#Y>yNjDqcKRW%{h>z67jiG#D=gdtRZ-5>TC z^0G<~l!DrJKv}C~wz&ZRitD8IaU?0;S<5~b<1iw$wRlwdkC<$+=rJqN_Sz;H9c;6d z_~qraRUKYO;L?DUdTh+ORA#Gv{6^`>pJyXZO@sIYCzG_d;us;aQZy*s3ONY-m0m=b zn0CHtNVBP=u_$h7w8v2!(0i8ZswGg*n4=4DOS-RWkPl#&K{ddFo}`=jL@pOQ!GX<( zyq0;5oEeJxfmT>eX!+#}NV!UR`y)Xv84~KEh9Q9J*`KnR0$Awl&&ZgO7w{4iDroM z*$0@5Rs$m{_if{_so1kd?E2+4z5#8n@d$+s>%VaUB0S7l-*rf4F%`3nsWFQ(0yr9R zE=>Gcf^Yy^Qxpg~&2mjCj7hi8%O*S(HIpCU3!ds!vo|rW=0GKaDFn}Bx-4(*djnM; zx~W(CCsi!#>9QqV zDX)2Ubea;;Hf!9I@O$yOE&Xq8F+LFt?6QVb)e{l;F6rDU^lIg|)t&f}{IIRf1~7*7 zhT`FAQZ5FgUvX_iEFtmP7az0}5zI&^eC-FE{H)D-{hc+7FL*{-#36u1GrKH7yT!fA zEDUd8e7a(7!BgF5gH}-TRy;L8LG8?0=|IzvngrJJ+rmInjhGb_0!x;=IQsGWz$mNd z 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

    &LkWDLJ*LYZDkeN0*--(J#5 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μ<8W5T7D#H)2OvN)iy7ZGLi-v48&@9v}QshzW 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 <% if (!process.env.REACT_APP_SKIP_CSP) { %> <% let cspConfig = require('./csp.json'); %> - - <% let cspStyleNonce = require('crypto').randomUUID().replaceAll('-','') %> <% if (process.env.REACT_APP_STAGING) { %> <% const cspDevConfig = require('./vercel-csp.json'); %> @@ -28,7 +26,7 @@ <% } %> <% } %> diff --git a/apps/web/public/nfts-sitemap.xml b/apps/web/public/nfts-sitemap.xml index c1c43d73ed0..5d053264215 100644 --- a/apps/web/public/nfts-sitemap.xml +++ b/apps/web/public/nfts-sitemap.xml @@ -2,682 +2,647 @@ https://app.uniswap.org/nfts/collection/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x60e4d786628fea6478f785a6d7e704777c86a7c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xed5af388653567af2f388e6224dc7c4b3241c544 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x34d85c9cdeb23fa97cb08333b511ac86e1c4e258 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x99a9b7c1116f9ceeb1652de04d5969cce509b069 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb7f7f6c52f2e2fdb1963eab30438024864c313f6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x23581767a106ae21c074b2276d25e5c3e136a68b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xba30e5f9bb24caa003e9f2f0497ad287fdf95623 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xbd3531da5cf5857e7cfaa92426877b022e612cf8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x1a92f7381b9f03921564a437210bb9396471050c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x5af0d9827e0c53e4799bb226655a1de152a425a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x3bf2922f4520a8ba0c2efc3d2a1539678dad5e9d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xe785e82358879f061bc3dcac6f0444462d4b5330 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x76be3b62873462d2142405439777e971754e8e77 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xfd43af6d3fe1b916c026f6ac35b3ede068d1ca01 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x1cb1a5e65610aeff2551a50f76a87a7d3fb649c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xff9c1b15b16263c61d017ee9f65c50e4ae0113d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x6339e5e072086621540d0362c4e3cea0d643e114 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x79fcdef22feed20eddacbb2587640e45491b757f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xa3aee8bce55beea1951ef834b99f3ac60d1abeeb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x769272677fab02575e84945f03eca517acc544cc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x4db1f25d3d98600140dfc18deb7515be5bd293af - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x34eebee6942d8def3c125458d1a86e0a897fd6f9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x59468516a8259058bad1ca5f8f4bff190d30e066 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x394e3d3044fc89fcdd966d3cb35ac0b32b0cda91 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x60bb1e2aa1c9acafb4d34f71585d7e959f387769 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x28472a58a490c5e09a238847f66a68a47cc76f0f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x341a1c534248966c4b6afad165b98daed4b964ef - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x82c7a8f707110f5fbb16184a5933e9f78a34c6ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xccc441ac31f02cd96c153db6fd5fe0a2f4e6a68d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x764aeebcf425d56800ef2c84f2578689415a2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x160c404b2b49cbc3240055ceaee026df1e8497a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xd2f668a8461d6761115daf8aeb3cdf5f40c532c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x39ee2c7b3cb80254225884ca001f57118c8f21b6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xd774557b647330c91bf44cfeab205095f7e6c367 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x1792a96e5668ad7c167ab804a100ce42395ce54d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x04afa589e2b933f9463c5639f412b183ec062505 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xe75512aa3bec8f00434bbd6ad8b0a3fbff100ad6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x348fc118bcc65a92dc033a951af153d14d945312 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x892848074ddea461a15f337250da3ce55580ca85 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x5946aeaab44e65eb370ffaa6a7ef2218cff9b47d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x282bdd42f4eb70e7a9d9f40c8fea0825b7f68c5d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x4b15a9c28034dc83db40cd810001427d3bd7163d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x7ea3cca10668b8346aec0bf1844a49e995527c8b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb852c6b5892256c264cc2c888ea462189154d8d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x9378368ba6b85c1fba5b131b530f5f5bedf21a18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x2acab3dea77832c09420663b0e1cb386031ba17b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x0c2e57efddba8c768147d1fdf9176a0a6ebd5d83 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x08d7c0242953446436f34b4c78fe9da38c73668d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x8943c7bac1914c9a7aba750bf2b6b09fd21037e0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x364c828ee171616a39897688a831c2499ad972ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x7f36182dee28c45de6072a34d29855bae76dbe2f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xf61f24c2d93bf2de187546b14425bf631f28d6dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x797a48c46be32aafcedcfd3d8992493d8a1f256b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x123b30e25973fecd8354dd5f41cc45a3065ef88c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x6632a9d63e142f17a668064d41a21193b49b41a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xf4ee95274741437636e748ddac70818b4ed7d043 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x57a204aa1042f6e66dd7730813f4024114d74f37 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xd1258db6ac08eb0e625b75b371c023da478e94a9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x75e95ba5997eb235f40ecf8347cdb11f18ff640b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xd532b88607b1877fe20c181cba2550e3bbd6b31c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xa1d4657e0e6507d5a94d06da93e94dc7c8c44b51 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xedb61f74b0d09b2558f1eeb79b247c1f363ae452 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x7d8820fa92eb1584636f4f5b8515b5476b75171a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x231d3559aa848bf10366fb9868590f01d34bf240 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xad9fd7cb4fc7a0fbce08d64068f60cbde22ed34c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x0e9d6552b85be180d941f1ca73ae3e318d2d4f1f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb716600ed99b4710152582a124c697a7fe78adbf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xaadc2d4261199ce24a4b0a57370c4fcf43bb60aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x4e1f41613c9084fdb9e34e11fae9412427480e56 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x79986af15539de2db9a5086382daeda917a9cf0c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xc99c679c50033bbc5321eb88752e89a93e9e83c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x9c8ff314c9bc7f6e59a9d9225fb22946427edc03 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x3110ef5f612208724ca51f5761a69081809f03b7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x036721e5a769cc48b3189efbb9cce4471e8a48b1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x524cab2ec69124574082676e6f654a18df49a048 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x7ab2352b1d2e185560494d5e577f9d3c238b78c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x32973908faee0bf825a343000fe412ebe56f802a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x7daec605e9e2a1717326eedfd660601e2753a057 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xc1caf0c19a8ac28c41fe59ba6c754e4b9bd54de9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x33fd426905f149f8376e227d0c9d3340aad17af1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x466cfcd0525189b573e794f554b8a751279213ac - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x6be69b2a9b153737887cfcdca7781ed1511c7e36 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x80336ad7a747236ef41f47ed2c7641828a480baa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x9401518f4ebba857baa879d9f76e1cc8b31ed197 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x4b61413d4392c806e6d0ff5ee91e6073c21d6430 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xc3f733ca98e0dad0386979eb96fb1722a1a05e69 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x09233d553058c2f42ba751c87816a8e9fae7ef10 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x960b7a6bcd451c9968473f7bbfd9be826efd549a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x36d30b3b85255473d27dd0f7fd8f35e36a9d6f06 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x698fbaaca64944376e2cdc4cad86eaa91362cf54 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x497a9a79e82e6fc0ff10a16f6f75e6fcd5ae65a8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x41a322b28d0ff354040e2cbc676f0320d8c8850d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xa9c0a07a7cb84ad1f2ffab06de3e55aab7d523e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x942bc2d3e7a589fe5bd4a5c6ef9727dfd82f5c8a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x8821bee2ba0df28761afff119d66390d594cd280 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x8c6def540b83471664edc6d5cf75883986932674 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x8d9710f0e193d3f95c0723eaaf1a81030dc9116d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x86825dfca7a6224cfbd2da48e85df2fc3aa7c4b1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x629a673a8242c2ac4b7b8c5d8735fbeac21a6205 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x9a534628b4062e123ce7ee2222ec20b86e16ca8f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xc2c747e0f7004f9e8817db2ca4997657a7746928 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x73da73ef3a6982109c4d5bdb0db9dd3e3783f313 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xc92ceddfb8dd984a89fb494c376f9a48b999aafc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x3248e8ba90facc4fdd3814518c14f8cc4d980e4b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x67d9417c9c3c250f61a83c7e8658dac487b56b09 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb6a37b5d14d502c3ab0ae6f3a0e058bc9517786e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x86c10d10eca1fca9daf87a279abccabe0063f247 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x4b3406a41399c7fd2ba65cbc93697ad9e7ea61e5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xb0640e8b5f24bedc63c33d371923d68fde020303 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xd3d9ddd0cf0a5f0bfb8f7fceae075df687eaebab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xa5c0bd78d1667c13bfb403e2a3336871396713c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x4d7d2e237d64d1484660b55c0a4cc092fa5e6716 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xfcb1315c4273954f74cb16d5b663dbf479eec62e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x66d1db16101502ed0ca428842c619ca7b62c8fef - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x128675d4fddbc4a0d3f8aa777d8ee0fb8b427c2f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x19b86299c21505cdf59ce63740b240a9c822b5e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xacf63e56fd08970b43401492a02f6f38b6635c91 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0x0bebad1ff25c623dff9605dad4a8f782d5da37df - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 https://app.uniswap.org/nfts/collection/0xdceaf1652a131f32a821468dc03a92df0edd86ea - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0x273f7f8e6489682df756151f5525576e322d51a3 - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0x77372a4cc66063575b05b44481f059be356964a4 - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0xf5b0a3efb8e8e4c201e2a935f110eaaf3ffecb8d - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0x22c36bfdcef207f9c0cc941936eff94d4246d14a - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0x59325733eb952a92e069c87f0a6168b29e80627f - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0x0e3a2a1f2146d86a604adc220b4967a898d7fe07 - 2024-07-05T19:43:14.783Z - 0.7 - - - https://app.uniswap.org/nfts/collection/0x3af2a97414d1101e2107a70e7f33955da1346305 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.7 \ No newline at end of file diff --git a/apps/web/public/pools-sitemap.xml b/apps/web/public/pools-sitemap.xml index a63ab564281..0903b0778ae 100644 --- a/apps/web/public/pools-sitemap.xml +++ b/apps/web/public/pools-sitemap.xml @@ -2,5652 +2,4357 @@ https://app.uniswap.org/explore/pools/ethereum/0xcbcdf9626bc03e24f779434178a73a0b4bad62ed - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4e68ccd3e89f51c3074ca5072bbac773960dfa36 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4585fe77225b41b697c938b018e2ac67ac5a20c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc63b0708e2f7e69cb8a1df0e1389a98c35a76d52 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x99ac8ca7087fa4a2a1fb6357269965a2014abc35 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x11b815efb8f581194ae79006d24e0d814b7697f6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa6cc3c2531fdaa6ae1a3ca84c2855806728693e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x5777d92f208679db4b9778590fa3cab3ac9e2168 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1d42064fc4beb5f8aaf85f4617ae8b3b5b8bd801 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc2e9f25be6257c210d7adf0d4cd6e3e881ba25f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x11950d141ecb863f01007add7d1a342041227b58 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc5c134a1f112efa96003f8559dba6fac0ba77692 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1df4c6e36d61416813b42fe32724ef11e363eddc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x12d6867fa648d269835cf69b49f125147754b54d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x3416cf6c708da44db2624d63ea0aaef7113527c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe8c6c9227491c0a8156a0106a0204d881bb7e531 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x04708077eca6bb527a5bbbd6358ffb043a9c1c14 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9db9e0e53058c89e5b94e29621a205198648425b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xf239009a101b6b930a527deaab6961b6e7dec8a6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xfe0df74636bc25c7f2400f22fe7dae32d39443d2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xf4c5e0f4590b6679b3030d29a84857f226087fef - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x5764a6f2212d502bc5970f9f129ffcd61e5d7563 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa3f558aebaecaf0e11ca4b2199cc5ed341edfd74 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x99132b53ab44694eeb372e87bced3929e4ab8456 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x6c6bc977e13df9b0de53b251522280bb72383700 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9d96880952b4c80a55099b9c258250f2cc5813ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x3afdc5e6dfc0b0a507a8e023c9dce2cafc310316 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x290a6a7460b308ee3f19023d2d00de604bcf5b42 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xac4b3dacb91461209ae9d41ec517c2b9cb1b7daf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x60594a405d53811d3bc4766596efd80fd545a270 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x331399c614ca67dee86733e5a2fba40dbb16827c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4b5ab61593a2401b1075b90c04cbcdd3f87ce011 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x844eb5c280f38c7462316aad3f338ef9bda62668 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe936f0073549ad8b1fa53583600d629ba9375161 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2f62f2b4c5fcd7570a709dec05d68ea19c82a9ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x381fe4eb128db1621647ca00965da3f9e09f4fac - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x97e7d56a0408570ba1a7852de36350f7713906ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xcd423f3ab39a11ff1d9208b7d37df56e902c932b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe15e6583425700993bd08f51bf6e7b73cd5da91b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x69d91b94f0aaf8e8a2586909fa77a5c2c89818d5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe42318ea3b998e8355a3da364eb9d48ec725eb45 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xad9ef19e289dcbc9ab27b83d2df53cdeff60f02d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x3b685307c8611afb2a9e83ebc8743dc20480716e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7bea39867e4169dbe237d55c8242a8f2fcdcc387 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7b1e5d984a43ee732de195628d20d05cfabc3cc7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7858e59e0c01ea06df3af3d20ac7b0003275d4bf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xae2a25cbdb19d0dc0dddd1d2f6b08a6e48c4a9a9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x14af1804dbbf7d621ecc2901eef292a24a0260ea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x80a9ae39310abf666a87c743d6ebbd0e8c42158e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc31e54c7a869b9fcbecc14363cf510d1c41fa443 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2f5e87c9312fa29aed5c179e456625d79015299c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc6962004f452be9203591991d15f6b388e09e8d0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc6f780497a95e246eb9449f5e4770916dcd6396a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x641c00a822e8b671738d32a431a4fb6074e5c79d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x92c63d0e701caae670c9415d91c474f686298f00 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1aeedd3727a6431b8f070c0afaa81cc74f273882 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xcda53b1f66614552f834ceef361a8d12a0b8dad8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x35218a1cbac5bbc3e57fd9bd38219d37571b3537 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x17c14d2c404d167802b16c450d3c99f88f2c4f4d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x468b88941e7cc0b88c1869d68ab6b570bcef62ff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xdbaeb7f0dfe3a0aafd798ccecb5b22e708f7852c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x149e36e72726e0bcea5c59d40df2c43f60f5a22d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xbaaf1fc002e31cb12b99e4119e5e350911ec575b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa67f72f21bd9f91db2da2d260590da5e6c437009 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x92fd143a8fa0c84e016c2765648b9733b0aa519e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7cf803e8d82a50504180f417b8bc7a493c0a0503 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x81c48d31365e6b526f6bbadc5c9aafd822134863 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x446bf9748b4ea044dd759d9b9311c70491df8f29 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc82819f72a9e77e2c0c3a69b3196478f44303cf4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x50c7390dfdd3756139e6efb5a461c2eb7331ceb4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1dfc1054e0e2a10e33c9ca21aad5aa8a1cce91e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc91b7b39bbb2c733f0e7459348fd0c80259c8471 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x59d72ddb29da32847a4665d08ffc8464a7185fae - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x09ba302a3f5ad2bf8853266e271b005a5b3716fe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa77d77c9773c35e910acc2e30cefe52b54a58414 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8da66e470403b3d3eee66c67e2c61fda6e248ad1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2f020e708811c054f146eebcc4d5a215fd4eec26 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7e7fb3cceca5f2ac952edf221fd2a9f62e411980 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x68c685fd52a56f04665b491d491355a624540e85 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa8328bf492ba1b77ad6381b3f7567d942b000baf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc0cf0f380ddb44dbcaf19a86d094c8bba3efa04a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa169d1ab5c948555954d38700a6cdaa7a4e0c3a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1862200e8e7ce1c0827b792d0f9546156f44f892 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x05bbaaa020ff6bea107a9a1e06d2feb7bfd79ed2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xd02a4969dc12bb889754361f8bcf3385ac1b2077 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc24f7d8e51a64dc1238880bd00bb961d54cbeb29 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7c06736e41236fecd681dd3353aa77ecd19ea565 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc473e2aee3441bf9240be85eb122abb059a3b57c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x14353445c8329df76e6f15e9ead18fa2d45a8bb6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2039f8c9cd32ba9cd2ea7e575d5b1abea93f7527 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xd3e11119d2680c963f1cdcffece0c4ade823fb58 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8e295789c9465487074a65b1ae9ce0351172393f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x97bca422ec0ee4851f2110ea743c1cd0a14835a1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xbe3ad6a5669dc0b8b12febc03608860c31e2eef6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x56ebd63a756b94d3de9cea194896b4920b64fb01 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe2ddd33585b441b9245085588169f35108f85a6e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x84436a2af97f37018db116ae8e1b691666db3d00 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x68f5c0a2de713a54991e01858fd27a3832401849 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x4533bad2dc588f0fadf8d2e72386d4cd6a19b519 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x85149247691df622eaf1a8bd0cafd40bc45154a9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0392b358ce4547601befa962680bede836606ae2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1c3140ab59d6caf9fa7459c6f83d4b52ba881d36 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd1f1bad4c9e6c44dec1e9bf3b94902205c5cd6c3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x03af20bdaaffb4cc0a521796a223f7d85e2aac31 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x73b14a78a0d396c521f954532d43fd5ffe385216 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xac85eaf55e9c60ed40a683de7e549d23fdfbeb33 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x04f6c85a1b00f6d9b75f91fd23835974cc07e65c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x730691cdac3cbd4d41fc5eb9d8abbb0cea795b94 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x535541f1aa08416e69dc4d610131099fa2ae7222 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xfc1f3296458f9b2a27a0b91dd7681c4020e09d05 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x85c31ffa3706d1cce9d525a00f1c7d4a2911754c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd52533a3309b393afebe3176620e8ccfb6159f8a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xff7fbdf7832ae524deda39ca402e03d92adff7a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb589969d38ce76d3d7aa319de7133bc9755fd840 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf334f6104a179207ddacfb41fa3567feea8595c2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1fb3cf6e48f1e7b10213e7b6d87d4c073c7fdb7b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd4344ea0c5ade7e22b9b275f0bde7a145dec5a23 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x5b42a63d6741416ce9a7b9f4f16d8c9231ccddd4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x252cbdff917169775be2b552ec9f6781af95e7f6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2ab22ac86b25bd448a4d9dc041bd2384655299c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc858a329bf053be78d6239c4a4343b8fbd21472b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa73c628eaf6e283e26a7b1f8001cf186aa4c0e8e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb533c12fb4e7b53b5524eab9b47d93ff6c7a456f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2ae3d6096d8215ac2acddf30c60caa984ea5debe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x19ea026886cbb7a900ecb2458636d72b5cae223b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x6f32061f59a21086c334d0d45f804089ce374aaf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xfaf037caafa9620bfaebc04c298bf4a104963613 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xadb35413ec50e0afe41039eac8b930d313e94fa4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe9e3893921de87b1194a8108f9d70c24bde71c27 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf1f199342687a7d78bcc16fce79fa2665ef870e1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf44acaa38be5e965c5ddf374e7a2ba270e580684 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x36e42931a765022790b797963e42c5522d6b585a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x5adba6c5589c50791dd65131df29677595c7efa7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x3249e3e3e4133ee18e65347daf586610cc265f54 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xca1b837c87c6563910c2befa48834fa2a8c3d72d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x6ef7b14bcd8d989cef8f8ec8ba4bf371b2ac95fd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x37ffd11972128fd624337ebceb167c8c0a5115ff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe62bd99a9501ca33d98913105fc2bec5bae6e5dd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb2ac2e5a3684411254d58b1c5a542212b782114d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb0efaf46a1de55c54f333f93b1f0641e73bc16d0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd0fa3b5264ccde31e8b094b86bca4a1e97d3c603 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xad4c666fc170b468b19988959eb931a3676f0e9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x790fde1fd6d2568050061a88c375d5c2e06b140b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xaefc1edaede6adadcdf3bb344577d45a80b19582 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa8a5356ee5d02fe33d72355e4f698782f8f199e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x55bc964fe3b0c8cc2d4c63d65f1be7aef9bb1a3c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x95d9d28606ee55de7667f0f176ebfc3215cfd9c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x45dda9cb7c25131df268515131f647d726f50608 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x50eaedb835021e4a108b7290636d62e9765cc6d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x167384319b41f7094e62f7506409eb38079abff8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa374094527e1673a86de625aa59517c5de346d32 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x86f1d8390222a3691c28938ec7404a1661e618e0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xeda1094f59a4781456734e5d258b95e6be20b983 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x847b64f9d3a95e977d157866447a5c0a5dfa0ee5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x94ab9e4553ffb839431e37cc79ba8905f45bfbea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0e44ceb592acfc5d3f09d996302eb4c499ff8c10 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x1e5bd2ab4c308396c06c182e1b7e7ba8b2935b83 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9b08288c3be4f62bbf8d1c20ac9c5e6f9467d8b7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xb6e57ed85c4c9dbfef2a68711e9d6f36c56e0fcb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x3e31ab7f37c048fc6574189135d108df80f0ea26 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xd36ec33c8bed5a9f7b6630855f1533455b98a418 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xdac8a8e6dbf8c690ec6815e0ff03491b2770255d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xfe343675878100b344802a6763fd373fdeed07a4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0a28c2f5e0e8463e047c203f00f649812ae67e4f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x88f3c15523544835ff6c738ddb30995339ad57d6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x98b9162161164de1ed182a0dfa08f5fbf0f733ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xeef1a9507b3d505f0062f2be9453981255b503c8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc4c06c9a239f94fc0a1d3e04d23c159ebe8316f1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x849ec65748107aedc518dbc42961f358ea1361a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2db87c4831b2fec2e35591221455834193b50d1b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa4d8c89f0c20efbe54cba9e7e7a7e509056228d9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x642f28a89fa9d0fa30e664f71804bfdd7341d21f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2aceda63b5e958c45bd27d916ba701bc1dc08f7a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x781067ef296e5c4a4203f81c593274824b7c185d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4ccd010148379ea531d6c587cfdd60180196f9b1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xd866fac7db79994d08c0ca2221fee08935595b4b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x941061770214613ba0ca3db9a700c39587bb89b6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa9077cdb3d13f45b8b9d87c43e11bce0e73d8631 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa01f64fa1b923dd9c5c7618b39a6ba8098a88863 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa830ff28bb7a46570a7e43dc24a35a663b9cfc2e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8837a61644d523cbe5216dde226f8f85e3aa9be3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xca5d44977d6de1846530eb434167b208752fba7d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4d05f2a005e6f36633778416764e82d1d12e7fbb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x41e64a5bc929fa8e6a9c8d7e3b81a13b21ff3045 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x3ea34cfc9322273311f7843826a2581c4a00fd39 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x785061ed819414dc4269d2a5d5974069c0daea96 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x3f5228d0e7d75467366be7de2c31d0d098ba2c23 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2e3f22e9a1c2470b2e293351f48c99e1fd788f32 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2a08c38c7e1fa969325e2b64047abb085dec3756 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xe6c36eed27c2e8ecb9a233bf12da06c9730b5955 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xefa98fdf168f372e5e9e9b910fcdfd65856f3986 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x76fa081e510f43ac8335efdb4db88c9ff1894413 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc6832ef0af793336aa44a936e54b992bff47e7cd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x865f456479a21e2b3d866561d7171a3d0a7b112d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xbd934a7778771a7e2d9bf80596002a214d8c9304 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9ab9f658104467604b5afa9a3e1df62f35f7b208 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x6e430d59ba145c59b73a6db674fe3d53c1f31cae - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x9e37cb775a047ae99fc5a24dded834127c4180cd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x48413707b70355597404018e7c603b261fcadf3f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xade9bcd4b968ee26bed102dd43a55f6a8c2416df - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xda679706ff21114ac9fac5198bff24543f357a16 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xba3f945812a83471d709bce9c3ca699a19fb46f7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc9034c3e7f58003e6ae0c8438e7c8f4598d5acaa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x4c36388be6f416a29c8d8eee81c771ce6be14b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa1b2457c0b627f97f6cc892946a382451e979014 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x4b0aaf3ebb163dd45f663b38b6d93f6093ebc2d3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xae2ce200bdb67c472030b31f602f0756c9aeb61c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x3bc5180d5439b500f381f9a46f15dd6608101671 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x5122e02898ece3bc62df8c1efdb29a9e914244d3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x24e1cbd6fed006ceed9af0dce688acc7951d57a9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2556230ac694093d4d3b7b965a2f2d77d4c403a4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xdaca082c2c7d052a96fa83ea9d3a7b6839e39586 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa555149210075702a734968f338d5e1cbd509354 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x10648ba41b8565907cfa1496765fa4d95390aa0d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x00bcec1526dae1e170a53017b8775a93b7810d7c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x20e068d76f9e90b90604500b84c7e19dcb923e7e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x6b93950a9b589bc32b82a5df4e5148f98a7fae27 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd9caa6dbe6791fcb7fc9fb59d1a6b3dd8c1c2339 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x62e81e93136ac42a1ada48d4098f5f9e703e7455 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x84206d33845c9d811438b6fe4e7a0c634748dc50 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd0b53d9277642d899df5c87a3966a349a798f224 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xcfa7c4bb565915f1c4f9475e2a0536d31efad776 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa7de21f28ca460b45373b217cd4eb111c3faeff8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xb64dff20dd5c47e6dbb56ead80d23568006dec1e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xad4e969f4193878e5cc89cefb57faf6c7c0048da - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xdf5eb97e3e23ca7f5a5fd2264680377c211310ba - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xf16baaae8eb7b37f4280e72924479f69e7a61f32 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xe745a591970e0fa981204cf525e170a2b9e4fb93 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x64b74c66b9ba60ca668b781289767ae7298f37ae - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x17e1ebd791e7253a5e606fd94c5b66c14d873136 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x46715bd57b9ec01deadb35fe096fb44acda79414 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x3447accd4b8e735329d1065244aad2ed630f0122 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2feb7f3ffc243f7de94d5ea5975533d301584e07 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0d5959a52e7004b601f0be70618d01ac3cdce976 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2170ca774e48a3f51559917ada6f9d7ae8f7bfea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x62a76dfa8951aefcff787e790782db3633ebf422 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x8073679e0b3b2d1d665777cf1b2b5b1c2d3d2d0c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x143f1a6f3fb32e6ab3f22d3cc6b417b5c2197599 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x82ad659c2f152aad59bb37cbc5e7663a2de0c607 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa4efe9e8e2a2d5a2ac46805f233b8e49d0e11955 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xfcc89a1f250d76de198767d33e1ca9138a7fb54b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2faa2b42b782d578a160f61bb7cd763a17476730 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xdd44c0e83c2570062d1e6fdd440b4724862e8f31 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xe3930a14641786e123e7bbe842d701fa1cbfe2df - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x6d03360ce4764e862ed81660c1f76cc2711b14b6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc055f66f228105072315247785c00299d0ce27e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xcae1d141ab11cef0a415cf0440025e1e5e962e06 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0f338ec12d3f7c3d77a4b9fcc1f95f3fb6ad0ea6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4eaa90264d6a3567228dcb5cfc242200da586437 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x6fe9e9de56356f7edbfcbb29fab7cd69471a4869 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf420603317a0996a3fce1b1a80993eaef6f7ae1a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x47a90a2d92a8367a91efa1906bfc8c1e05bf10c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x41bf5eeae051fbd2e97b76b5f8f0fdcc1a1e526b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x28df0835942396b7a1b7ae1cd068728e6ddbbafd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa3f3664a52f01b42557524bd14556e379daf5669 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x1fd22fa7274bafebdfb1881321709f1219744829 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe39cfc1a2e51a09ecbd060a24ee4eef5a97697bb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x06396509195eb9e07c38a016694dc9ff535b128a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5a1c486edefda2f09d3b349fadc38524f1743826 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5bf1cf153c102a79d9e18b7fb7c79ba57fa70d0c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2c3c320d49019d4f9a92352e947c7e5acfe47d68 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4141325bac36affe9db165e854982230a14e6d48 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x17507bef4c3abc1bc715be723ee1baf571256e05 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8149b92ea743cc382aada523b68b8834733b9015 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc98f01bf2141e1140ef8f8cad99d4b021d10718f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x7f9d307973cdabe42769d9712df8ee1cc1a28d10 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5c87da28a45e5089b762dcbbd86f743d14c54317 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2cd97604ef77bbcb1fa0cff47545dff8ec7def08 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x7862d9b4be2156b15d54f41ee4ede2d5b0b455e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x554548b404213c7efcdbab933f52edfe3c581834 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x63008c5ea4e47f5421e0e1428b1c5043a507d0d0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0350ca994791c4b07a5b02b08aaf9d6fc8ab510e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x32776ed4d96ed069a2d812773f0ad8ad9ef83cf8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x84f3ca9b7a1579ff74059bd0e8929424d3fa330e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5289a8dbf7029ee0b0498a84777ed3941d9acfec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb2bc284ab4c953b7f7a06d59c0ceb2de26405f22 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x508acf810857fefa86281499068ad5d19ebce325 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xccdfcd1aac447d5b29980f64b831c532a6a33726 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4fb87838a29b37598099ef5aa6b3fbeeef987c50 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x515e94dc736b9d8b7d28ecf1cece0aba3d75da97 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xfd6e5b7c30538dff2752058e425ad01a56b831cc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xcb99fe720124129520f7a09ca3cbef78d58ed934 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xd2f21358c1549be193537b2a4c5dc7f0228ae011 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x93094ed1c907e4bca7eb041cb659da94f7e1b58e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xd37e6ecb991d1a0e7610c89666817665713362a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x73234630bd159384c8d43f145407312d64614f43 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xad1ddf00c4ae50573e4dc98e6c5ee93baa04a0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa765593c821f7df9ad81119509a37961e7ffa6c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9b501a7ad3087d603ceb34424b7b2a6c348ad0b7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xafebb7cfa1a15fcac4121b609b456cbce3137c20 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0adaf134ae0c4583b3a38fc3168a83e33162651e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf9878a5dd55edc120fde01893ea713a4f032229c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x84e47c7f2fe86f6b5efbe14fee46b8bb871b2e05 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf3e5bec78654049990965f666b0612e116b94fb2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x33e59edd3214e97cb68450c6d3d6c167de072aba - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2ca76c7e466e560e0cb11a91269bb953e41254bc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xbb124e35ab9e85f8d59ba83500e559dc052b9368 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd88d5f9e6c10e6febc9296a454f6c2589b1e8fae - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb90fe7da36ac89448e6dfd7f2bb1e90a66659977 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xbd6313d0796984c578cae6bc5b5e23b27c5540c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1f18cd7d1c7ba0dbe3d9abe0d3ec84ce1ad10066 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7da99753ff017f1b7afb2c8c0542718dc9f15f21 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x079e7a44f42e9cd2442c3b9536244be634e8f888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1c8dafd358d308b880f71edb5170b010b106ca60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xbd0f6f34baa3c1329448a69bab90111a20756f01 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x3420720e561f3082f1e514a4545f0f2e0c955a5d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xea3fb6e3313a2a90757e4ca3d6749efd0107b0b6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xf130f72f8190f662522774c3367e6e8814f5e219 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4a46c053bd5c10a959aea258228217b9d3405f3d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb83258bf5940c98abf54f26c5a02710bd6b83b2c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6a209c5329f0a225fa1890d4177823c096016f34 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xdb24905b1b080f65dedb0ad978aad5c76363d3c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xddff2cdad11898b901a661e32e9fa010780263a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x72dd8fe09b5b493012e5816068dfc6fb26a2a9e6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x54fc722a66abfb6500a36d8b7b2646129d0e836a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x53b612b32233c80ec439a64325a29766ce95be7f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xe5edcbe72d1bc223097a1bed1fe6c0e404b4290c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb928c37b8bd9754d321dc3d3c6ef374d332fe761 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2d70cbabf4d8e61d5317b62cbe912935fd94e0fe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x953e2937f0515c43ca7995e80c84aedcbbb9385e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x84394d80830ae963b599ded7d9149b90059f182f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa1777e082fa1746eb78dd9c1fbb515419cf6e538 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x112466c8b6e5abe42c78c47eb1b9d40baa3f943c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9491d57c5687ab75726423b55ac2d87d1cda2c3f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x978799f1845c00c9a4d9fd2629b9ce18df66e488 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xdc55d1fd1c04e005051a40bd59c5f95623257bc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x34757893070b0fc5de37aaf2844255ff90f7f1e0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7faf167615419228f3f7d71d52d840dab154913c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa4d7b6a50dd4c55334ca6f175dbc6561f269d264 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0ed413cefde954d8e5c54d981d7d182b587e98e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x524375d0c6a04439128428f400b00eae81a2e9e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4b7a4530d56ff55a4dce089d917ede812e543307 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x84bb5b9bf1b6782c87cfa3e396f2f571c8e49646 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x723292eea7e1576ae482a5c317934054c0199e24 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9b42940e8184d866aac6595a91f8d8952a59d3b9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x37622453c614f625d288151101ffe48fd222ced1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4a94130b9e8eb0a0959c2c0f1ee9583213773fd9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x51514b3dc24afc1db95586242b99f0063bea17c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc130254e9196d48bbd9f91240390a6e8203132e9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x60ac25da2ada3be14a2a8c04e45b072bed965966 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4e392a3883a84225260ff857318517eb50e5d128 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xca0aa06385a42242fe9523cd7015f6d01cd8f6b2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x3e448c17043ce1481bbe53c0fd19481bad8b98a6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x81060e6bf2a683f208b8799a33c7c09830cabed1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x463fe9f646b61ccfb43a022bf947075411cd71c7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xbf16ef186e715668aa29cef57e2fd7f9d48adfe6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x5645dcb64c059aa11212707fbf4e7f984440a8cf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x3ad4913fa896391c9822a81d8d869cc0d783bdd7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7a415b19932c0105c82fdb6b720bb01b0cc2cae3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9b3423373e6e786c9ac367120533abe4ee398373 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4a25dbdf9629b1782c3e2c7de3bdce41f1c7f801 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xbe80225f09645f172b079394312220637c440a63 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x059615ebf32c946aaab3d44491f78e4f8e97e1d3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x435664008f38b0650fbc1c9fc971d0a3bc2f1e47 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4b62fa30fea125e43780dc425c2be5acb4ba743b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc3db44adc1fcdfd5671f555236eae49f4a8eea18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe5cf22ee4988d54141b77050967e1052bd9c7f7a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7f580f8a02b759c350e6b8340e7c2d4b8162b6a9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x48b0ab72c2591849e678e7d6f272b75ef9b863f7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x74d0ae8b8e1fca6039707564704a25ad2ee036b0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x5969efdde3cf5c0d9a88ae51e47d721096a97203 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe32efff8f8b5fdc53803405aa3f623f03f8a8767 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe8629b6a488f366d27dad801d1b5b445199e2ada - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x066b28f0c160935cf285f75ed600967bf8417035 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x146b020399769339509c98b7b353d19130c150ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd28f71e383e93c570d3edfe82ebbceb35ec6c412 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xadab76dd2dca7ae080a796f0ce86170e482afb4a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0fb07e6d6e1f52c839608e1436d2ea810cf07257 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x95d2483d2a0fff034004f91c53d649623d993896 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x19c5505638383337d2972ce68b493ad78e315147 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc143161ed3ed8049bb63d8da42907c08a10e2269 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc3286373599dd5af2a17a572ebb7561f05f88bec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xbb98b3d2b18aef63a3178023a920971cf5f29be4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x647fb01a63de9a551b39c7915693b25e6bcec502 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa90c1c009dc8292bd04ced30f9b53a5ff7a806a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xfb765ff72a14735550f1d798a5efd1311f2ddee7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x3537f2a5f99f08f59eb1417073db1fadbebf0c74 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xde8ed0277ee0e84c25756a73ffa7374e4aeadf46 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd8f3a72d2b2220a5067abe8c38aea57dc2d69a5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x7ec18abf80e865c6799069df91073335935c4185 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x14b1911dd6b451c2771661ae8cd70637d726c356 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x9ae8084c21752971d867597c07f2673765d949a1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xcfaf75a3d292c3535ea3acdb16ed2ee58c2bb091 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x8055e6de251e414e8393b20adab096afb3cf8399 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xffec10fe1355c2d8df4f62affcdeffdb04f06569 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc16454420f100b2e771d8bc4c5b6200068129a34 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x046f405e4ae1d0e786eda4959adadbd417d13ad8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xeccb34691c06c1c9c31ceb2228b22cbd242b5879 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xe22a2dfaaaaec8a7b2b7acb4909eaaa5c5bd6e64 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xe2dda0911e227e73d9fd94745b851c8bc6504610 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0f082a7870908f8cebbb2cd27a42a9225c19f898 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x69d667281778db0c3bc8177efea3a91ee95c3068 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x30d61bb28a6789f9f49d8c7fb198d63b6aba4b61 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x090f3fd9110621df127c3f9be5c6f58c02f2d5eb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd56f086e7b796b313d49f2bc926fac4bdd2a2b0b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x7eb847a214192aab8fa1b503f4d4c9ddd2a08db6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x81b3bc0ef974c16d71b8614adb8c22ccc045da01 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xc9b44ca4159dbaf5722a3dc8618e9d4b5f39d5b2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xbeef35a63fc62a3334630d9d3b4db27093d95317 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x3d5d143381916280ff91407febeb52f2b60f33cf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x68c9325cc268df8b9ed4a06429587f28471b5f84 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa00cc1fb7ac185222294777c6b23a13c013f07ce - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x77021e63bcbd3c5296b0cdd8a3c3770fb0ea8fa2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xcc28456d4ff980cee3457ca809a257e52cd9cdb0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xec0b7e8e44c9d60efd67a89dba1d4a6e02a7a4a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0c8fed5dd65542ca5f0add1acab14c2e470c9110 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd56da2b74ba826f19015e6b7dd9dae1903e85da1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x5482c2b11951bbb92b87858242e17abde802b398 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xd95bae63641d822dc591bd4aca7a64e53eac76f9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x06959273e9a65433de71f5a452d529544e07ddd0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x24bf2ee2e09477082d1ddf2f0603baa460b3f5f3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x56d8f846415e08c5e663d89505e79f522d33f947 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x548e923281f372d28a40287d3a2d30dce482fc66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x9d744d3d905897608d24c1b8c1c7db0d30c36cd4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/base/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xab46d39cb398fb3649ecba781180016fef75f50b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x25048028ad87484b7fce99bc4e22dcb6c3307470 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xdb2177fee5b0ebdc7b8038cb70f3964bb6d14143 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x42d749f736051d8933b118324cded52d1f92bec1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb1a1b707b143b911c36e1a0f4f901c5017791aca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x3319a81a316abd4c086f7048904e31ff86648b38 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4a978a2d4fb7393063babfb0cee741b8bcd4dd4b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xea403e36fb592fdfdc342c38e94284ddbb0d2105 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe3fb01794d6912f0773171e32e723471ee8df061 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x916d7f23ccbb1d10118dcfc6ad5a10b6446ff73e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6cde5f5a192fbf3fd84df983aa6dc30dbd9f8fac - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd80d28850bebe6208433c298334392bc940b4fc7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7f7c4335ccac291ddedcef4429a626c442b627ed - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x628cb3a5a206956423d158009612813b64b19dab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x116361f4f45e310347b43cd098fdfa459760ea7f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x5dc631ad6c26bea1a59fbf2c2680cf3df43d249f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1a810e0b6c2dd5629afa2f0c898b9512c6f78846 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xac1cb6d3d419da9ead0b53e62d6fb4bb53473523 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0115d04a88990889471a88e85817aac9e961c07b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd3409b7f3f54bb097433d0f4cd31c48ac33e569b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x493bfc1adb2e60805693197f23132350ffd2a04e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xcf4f103759770c21f945413781ca787620316988 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb135ebde27d366b0d62e579bae4118cb991b820e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xecbc2f008c20729b9239317408367377c5473812 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x96e0c440d3377c2dfe4f2a82add0b045e46cbe64 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6f5304c22ac77e228e8af4732ac6677c46e09030 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xcb037f27eb3952222810966e28e0ceb650c65cd9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x7baece5d47f1bc5e1953fbe0e9931d54dab6d810 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x83abecf7204d5afc1bea5df734f085f2535a9976 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xb2eb5849e2606f99fc492e9add0103c667f806d3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x53c6ca2597711ca7a73b6921faf4031eedf71339 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xd35937ecd47b04a1474f8569f457fc5ac395921a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x6b75f2189f0e11c52e814e09e280eb1a9a8a094a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xb372b5abdb7c2ab8ad9e614be9835a42d0009153 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xf369277650ad6654f25412ea8bfbd5942733babc - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x4898cf312fbff8814cab80a8d7f6ee5ad0dc73fb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x5e78afc6c804d4382bede3a0712d210e657e9b4f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x86b211ca7915a0c8d4659dd98242d9e801d88ab4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xb637f7c82fd774c280e23cebc725e7cd807c66d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xd249c43faabc58d6dd4b0a4de598b5a956c5d8d7 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x1fbae785ce68b79f7ed4f7b27c3af3ef0e0bc3d4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x3c1376fb8487da57d4ffb263d9d01b578c7b586b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x7b24bed19856f4bb1d4c0421cfb328026cd936bd - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x7cf887a863d81e6a483ee947dee05cb51914923c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x588c8cf031809486f015908864ee8699b44017e4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x3987d38a4ff8520a8ef6bcc6f98d6da8bcd69b89 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xde67d05242b18af00b28678db34feec883cc9cd6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x4a5a8b0108f446df7c1c8a459fcfb54e844b7343 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xf6ba006abf768ab2d1b5bba2d22d9f13eb1269d4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x7924a818013f39cf800f5589ff1f1f0def54f31f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xc1738d90e2e26c35784a0d3e3d8a9f795074bca4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xda908c0bf14ad0b61ea5ebe671ac59b2ce091cbf - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x254aa3a898071d6a2da0db11da73b02b4646078f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x41824081f2e7beb83048bf52465ddd7c8e471da2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xa0c2ce1723b3939f47ad01a293292f2f75dc629d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xc42442f6402b68626e791a447d87b35cb1c6236e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x84537db6f6aaa2afdb71f325d14b9f5f7825bef1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x13933689ed2c6c66e83aed64336df14896efb7e2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x039df62583ddc1c5fda75db152b87113d863b6d6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xcbe856765eeec3fdc505ddebf9dc612da995e593 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xc39e83fe4e412a885c0577c08eb53bdb6548004a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xdbac78be00503d10ae0074e5e5873a61fc56647c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xc1cd3d0913f4633b43fcddbcd7342bc9b71c676f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x6c4c7f46d9d4ef6bc5c9e155f011ad19fc4ef321 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xb2c86ff752f18499b70e8f642b3421405d50d6e9 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x16588709ca8f7b84829b43cc1c5cb7e84a321b16 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xd0a4c8a1a14530c7c9efdad0ba37e8cf4204d230 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xf92f2e3fca01491baba0975264362cc38b1cab7b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x3e6e23198679419cd73bb6376518dcc5168c8260 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x531b6a4b3f962208ea8ed5268c642c84bb29be0b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x553e9c493678d8606d6a5ba284643db2110df823 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xe3170d65018882a336743a9c396c52ea4b9c5563 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x1385fc1fe0418ea0b4fcf7adc61fc7535ab7f80d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x5cd0ad98ba6288ed7819246a1ebc0386c32c314b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x0ad1e922e764df5ab6d636f5d21ecc2e41e827f0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x6b3a3d6ed64faf933a7a4b1bd44b2efba47614ac - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x4ce4a1a593ea9f2e6b2c05016a00a2d300c9ffd8 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x0843e0f56b9e7fdc4fb95fabba22a01ef4088f41 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x8323d063b1d12acce4742f1e3ed9bc46d71f4222 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xe30e4dfdbb10949c27501922f845e20cfa579f09 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x7e02ae3f794ebade542c92973eb1c46d7e2e935d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xfa22d298e3b0bc1752e5ef2849cec1149d596674 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x8066ee17156e4184d69277e26fa8cbca3a845edf - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x418de8e0ab58abfe916a47821a055c59b9502deb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xfb9caae5a5c0ab91f68542124c05d1efbb97d151 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xb68606a75b117906e06caa0755896ad2b3dd0272 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x6e33c0f5e16b45114679eac217e0c0138cefcd2e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xd64fb39a5681908ad488b487d65f5d8479cb235c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x0217fc17c642d29b890bcf888e21be2378493e01 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x099d23a43da5a8a9282266dbefeaaef958150300 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xd92e0767473d1e3ff11ac036f2b1db90ad0ae55f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x40c547e7fd88f60d94788953b83d9342d8d133c6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x397433498c7befde4b4049b98a7ff081a2c17387 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xf9be03505869d719ba194757943575ed2af001f2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x18c40bb9281a07627ff25cea45b7511f68fd0076 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x270d89e983d9821a418bf193684736414fab78c5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xb125aa15ad943d96e813e4a06d0c34716f897e26 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x813c0decbb1097fff46d0ed6a39fb5f6a83043f4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x9a7ac628ba9f330341486380af729c8975388959 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xf2c9339945bff71dd0bffd3c142164112cd05dc6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x12a4619c0bd9710732fbc458e9baa73df6c3d35f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x96530dac7817f186390b64ba63d13becd079b28d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x18fc1e95adb68b556212ebbad777f3fbb644db98 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xabbeb324b090550ca6d15ec71019915813f54f90 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x86d708404d0db1d97843e66d4ed6b86d11be705b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xbfbba3de6a260c8374f8299c38898312c2d6e9a6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xd31d41dffa3589bb0c0183e46a1eed983a5e5978 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x391e8501b626c623d39474afca6f9e46c2686649 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xd0fc8ba7e267f2bc56044a7715a489d851dc6d78 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x4fd47e5102dfbf95541f64ed6fe13d4ed26d2546 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xe9033c0011f35547fa90d3f8a6ad4b666a590759 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x0c3561d3b72e17378d99684414aa8669daeb8bd0 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x14653ce9f406ba7f35a7ffa43c81fa7ecd99c788 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x3204e9734a56a4d7c6f4f5822e14182d9d1a43c4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x43faefd4c0c25e969ac211cd97a4a51e52c729b7 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xa652ab3be697c7a01fbdce4d73f8e8acd990251c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x29962083891241aad61ad97bae46d032c9c0c55c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x26bf3601b77be9c31b13b22ebca02914db9c7468 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x0d2edd335982f56662d772b93d86901eb9bd2ff9 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xbaed273edd493930711fe88690ebd1f30f7f55ab - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x16033643947bf4d8a1ae37b055edf57cb183106a - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xf59abf32c1e8c5d2c6e3faa2131533bbcd466194 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x0312187403bf72b8d2d80729894d6ac3300bd63f - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x416fdbc4fb8d4d1f48d0d3778c59dfa5352e9b15 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x5918aca9ae924e6eaaa3d293bb92bdec9ab79338 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x8270e64d22cf13e92c641c4006408c7d7e3ff341 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x16503510c58da73486950b72a12ead3d1d8355dd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x7505159f644ddc5eae21c119e328d0d5bee574b0 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xe870bfe4aacb6e234b645e535d26c53790d50e78 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x2e2d190ad4e0d7be9569baebd4d33298379b0502 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xb834093d7e46f7644be45e77281394d31003e866 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xb5a1fd804342cfb679bd8ada75718bc3ec43097e - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x9e71e2b14d7e6d30811628ab0965f28e4e2edbce - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xa011da4a0c9261ecf4694bf73a74d113aa261133 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x7ab922c1bfdf7df977c7531c5782074d866f3adc - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xe2d2050430e341a8f3988e2726e44d9370f8cd3a - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xed66ba3ea44425805a085b1ca80d00467b055b38 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x40dade19adc198125ec237a2c48b3408568b2f81 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x166bc40da621d3cb978e24334f844b84ddef25f8 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x76bf0abd20f1e0155ce40a62615a90a709a6c3d8 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x6948d6c8532c6b0006cb67c6fb9c399792c8ac91 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x4e40cf4a7d8724e5adc2b791bbf9451d1e260b93 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x90908e414d3525e33733d320798b5681508255ea - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xd6b4cce96ddf8aab2e5750983af9a901f17fbc36 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x4cef551255ec96d89fec975446301b5c4e164c59 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xdd0c6bae8ad5998c358b823df15a2a4181da1b80 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x5e6ff2fa4ca244b6b33c7286d368120822eacc11 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x98efd62b4bfbde6393b18b063c506ce5a77f4810 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x3c5096df639262db0a6cd0172f08709d4161094b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xae31f0e673fc5f33cfc0e9abb426d8051404a7c5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xd10456ce05b9af05c8eede0f93ea8aa80a0daa2f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x065c22a16f6531706681fabbc8df135fe6eb1c2e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x8ab8d851c6b31d8a4d42fd7d3e47b20861b025f2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x2982d3295a0e1a99e6e88ece0e93ffdfc5c761ae - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xc593fe9193b745447e86b45ea0bf62565ee030cc - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x88051b0eea095007d3bef21ab287be961f3d8598 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xb31273fd2dfc05e6fd91a3b8a2a681aeb0fbcf48 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xaf7b48ae2f4773fd44f9208cca3db5ae7bfa7e37 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xc2125a452115ff5a300cc2a6ffae99637f6e329d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xb08a8794a5d3ccca3725d92964696858d3201909 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xae99efe6b04bbe5b8b4ad567946fb84b35681abb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x6696710b8e3dc0d844c8b9244767962a4a61ad97 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xcde77ef185a8f886d03b109573cc1dcdcf3cf1f8 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x35f5387decce5a234da1a32ca3c9e338a48bcf37 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x4178dd7eb2eb983ba7f7e41648cf91db6be20190 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xb6c8f9490314394cfc6edacb8717bfdc1eb8dab5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x1625fe58cdb3726e5841fb2bb367dde9aaa009b3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xb1ed164c736909ba7ddbc1feb7ced4eaad854a87 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x95faa9a91cd6c1c018e4b1a6fc4c89d4f1695e5d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xa143ccf73c25eec6f38bd1b741043ebea228b8e9 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x2e067e0eab7fd31c01473c0f56f3295afb82e461 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xbc83c60e853398d263c1d88899cf5a8b408f9654 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x202a6012894ae5c288ea824cbc8a9bfb26a49b93 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x744159757cac173a7a3ecf5e97adb10d1a725377 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x127452f3f9cdc0389b0bf59ce6131aa3bd763598 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/ethereum/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/arbitrum/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x2264ba9dc0b257c69eeae7782e8ff608cc65d6a7 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/optimism/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x00a59c2d0f0f4837028d47a391decbffc1e10608 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/polygon/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xad6e8f6a34087bddfb03815e2c10e4f7bfd4395b - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xd5bb156cb73bfca62f68dc3dff7e5ec4e305b861 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0xc0d8f259578c985947a050802fb4857261af0bf3 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/base/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x74f7a360eb36a46b675ea932ea07094a3ace441f - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x626761cc5b9fafe4696bf8def4aa015576bb4bef - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/bnb/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0xc767c0b2e2e56c455fd29f9ee9b6e6f035c71ed4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x625cb959213d18a9853973c2220df7287f1e5b7d - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/pools/celo/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed - 2024-07-10T19:43:34.135Z + 2024-05-20T17:20:52.753Z 0.8 \ No newline at end of file diff --git a/apps/web/public/tokens-sitemap.xml b/apps/web/public/tokens-sitemap.xml index 24e9f6d35e0..e727529afef 100644 --- a/apps/web/public/tokens-sitemap.xml +++ b/apps/web/public/tokens-sitemap.xml @@ -2,5187 +2,3182 @@ https://app.uniswap.org/explore/tokens/ethereum/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xdac17f958d2ee523a2206206994597c13d831ec7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6982508145454ce325ddbe47a25d4ec3d2311933 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6b175474e89094c44da98b954eedeac495271d0f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6123b0049f904d730db3c36a31167d9d4121fa6b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x58cb30368ceb2d194740b144eab4c2da8a917dcb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4c9edd5852cd905f086c759e8383e09bff1e68b3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaaee1a9723aadb7afa2810263653a34ba2c21c7a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x514910771af9ca656af840dff83e8264ecf986ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5b7533812759b45c2b44c19e320ba2cd2681b542 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xae78736cd615f374d3085123a210448e74fc6393 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb9f599ce614feb2e1bbe58f180f370d05b39344e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd31a59c85ae9d8edefec411d448f90841571b89c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6a7eff1e2c355ad6eb91bebb5ded49257f3fed98 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x576e2bed8f7b46d34016198911cdf9886f78bea7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1258d60b224c0c5cd888d37bbf31aa5fcfb7e870 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x77e06c9eccf2e797fd462a92b6d7642ef85b0a44 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x24fcfc492c1393274b6bcd568ac9e225bec93584 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x27702a26126e0b3702af63ee09ac4d1a084ef628 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd46ba6d942050d489dbd938a2c909a5d5039a161 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbe9895146f7af43049ca1c1ae358b0541ea49704 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x72f713d11480dcf08b37e1898670e736688d218d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x0001a500a6b18995b03f44bb040a5ffc28e45cb0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9e9fbde7c7a83c43913bddc8779158f1368f0413 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5f98805a4e8be255a32880fdec7f6728c6568ba0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1ae7e1d0ce06364ced9ad58225a1705b3e5db92b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x046eee2cc3188071c02bfc1745a6b17c656e3f3d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x84018071282d4b2996272659d9c01cb08dd7327f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x12970e6868f88f6557b76120662c1b3e50a646bf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc01154b4ccb518232d6bbfc9b9e6c5068b766f82 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5a98fcbea516cf06857215779fd812ca3bef1b32 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x102c776ddb30c754ded4fdcc77a19230a60d4e4f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x72e4f9f808c49a2a61de9c5896298920dc4eeea9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x467719ad09025fcc6cf6f8311755809d45a5e5f3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x710287d1d39dcf62094a83ebb3e736e79400068a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf951e335afb289353dc249e82926178eac7ded78 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf017d3690346eb8234b85f74cee5e15821fee1f4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8c282c35b5e1088bb208991c151182a782637699 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xde342a3e269056fc3305f9e315f4c40d917ba521 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2dff88a56767223a5529ea5960da7a3f5f766406 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x626e8036deb333b408be468f951bdb42433cbf18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xdd66781d0e9a08d4fbb5ec7bac80b691be27f21d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb23d80f5fefcddaa212212f028021b41ded428cf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbaac2b4491727d78d2b78815144570b9f2fe8899 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf8ebf4849f1fa4faf0dff2106a173d3a6cb2eb3a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb90b2a35c65dbc466b04240097ca756ad2005295 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1614f18fc94f47967a3fbe5ffcd46d4e7da3d787 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf1df7305e4bab3885cab5b1e4dfc338452a67891 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x91fbb2503ac69702061f1ac6885759fc853e6eae - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa9e8acf069c58aec8825542845fd754e41a9489a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2c95d751da37a5c1d9c5a7fd465c1d50f3d96160 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xe453c3409f8ad2b1fe1ed08e189634d359705a5b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x89d584a1edb3a70b3b07963f9a3ea5399e38b136 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4507cef57c46789ef8d1a19ea45f4216bae2b528 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd1d2eb1b1e90b638588728b4130137d262c87cae - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xe92344b4edf545f3209094b192e46600a19e7c2d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8a0a9b663693a22235b896f70a229c4a22597623 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1bbe973bef3a977fc51cbed703e8ffdefe001fed - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa41d2f8ee4f47d3b860a149765a7df8c3287b7f0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x761d38e5ddf6ccf6cf7c55759d5210750b5d60f3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xe28b3b32b6c345a34ff64674606124dd5aceca30 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x168e209d7b2f58f1f24b8ae7b7d35e662bbf11cc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x3472a5a71965499acd81997a54bba8d852c6e53d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x19efa7d0fc88ffe461d1091f8cbe56dc2708a84f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x14fee680690900ba0cccfc76ad70fd1b95d10e16 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x3c3a81e81dc49a522a592e7622a7e711c06bf354 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa1290d69c65a6fe4df752f95823fae25cb99e5a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x92f419fb7a750aed295b0ddf536276bf5a40124f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2c06ba9e7f0daccbc1f6a33ea67e85bb68fbee3a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x3d658390460295fb963f54dc0899cfb1c30776df - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8e870d67f660d95d5be530380d0ec0bd388289e1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x853d955acef822db058eb8505911ed77f175b99e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1294f4183763743c7c9519bec51773fb3acd78fd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4e15361fd6b4bb609fa63c81a2be19d873717870 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x695d38eb4e57e0f137e36df7c1f0f2635981246b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x40a7df3df8b56147b781353d379cb960120211d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaaef88cea01475125522e117bfe45cf32044e238 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x163f8c2467924be0ae7b5347228cabf260318753 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x30672ae2680c319ec1028b69670a4a786baa0f35 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc944e90c64b2c07662a292be6244bdf05cda44a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x15e6e0d4ebeac120f9a97e71faa6a0235b85ed12 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7d225c4cc612e61d26523b099b0718d03152edef - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x82af49447d8a07e3bd95bd0d56f35241523fbab1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xaf88d065e77c8cc2239327c5edb3a432268e5831 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x912ce59144191c1204e64559fe8253a0e49e6548 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x5979d7b546e38e414f7e9822514be443a4800529 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x35751007a407ca6feffe80b3cb397736d2cf4dbe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xeb466342c4d449bc9f53a865d5cb90586f405215 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf97f4df75117a78c1a5a0dbb814af92458539fb4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9623063377ad1b27544c965ccd7342f7ea7e88c7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x539bde0d7dbd336b79148aa742883198bbf60342 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3082cc23568ea640225c2467653db90e9250aaa0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x18c11fd286c5ec11c3b683caa813b77f5163a122 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x289ba1701c2f088cf0faf8b3705246331cb8a839 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4cb9a7ae498cedcbb5eae9f25736ae7d428c9d66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x00cbcf7b3d37844e44b888bc747bdd75fcf4e555 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd79bb960dc8a206806c3a428b31bca49934d18d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3096e7bfd0878cc65be71f8899bc4cfb57187ba3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xba5ddd1f9d7f570dc94a51479a000e3bce967196 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xc8ccbd97b96834b976c995a67bf46e5754e2c48e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd07d35368e04a839dee335e213302b21ef14bb4a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x323665443cef804a3b5206103304bd4872ea4253 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x83d6c8c06ac276465e4c92e7ac8c23740f435140 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x87aaffdf26c6885f6010219208d5b161ec7609c0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1b8d516e2146d7a32aca0fcbf9482db85fd42c3a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xafccb724e3aec1657fc9514e3e53a0e71e80622d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4425742f1ec8d98779690b5a3a6276db85ddc01a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3419875b4d3bca7f3fdda2db7a476a79fd31b4fe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3b60ff35d3f7f62d636b067dd0dc0dfdad670e4e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x58b9cb810a68a7f3e1e4f8cb45d1b9b3c79705e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfa5ed56a203466cbbc2430a43c66b9d8723528e7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x95146881b86b3ee99e63705ec87afe29fcc044d9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x088cd8f5ef3652623c22d48b1605dcfe860cd704 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xbfd5206962267c7b4b4a8b3d76ac2e1b2a5c4d5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6daf586b7370b14163171544fca24abcc0862ac5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x580e933d90091b9ce380740e3a4a39c67eb85b4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x655a6beebf2361a19549a99486ff65f709bd2646 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9e64d3b9e8ec387a9a58ced80b71ed815f8d82b5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2297aebd383787a160dd0d9f71508148769342e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6694340fc020c5e6b96567843da2df01b2ce1eb6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x772598e9e62155d7fdfe65fdf01eb5a53a8465be - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x431402e8b9de9aa016c743880e04e517074d8cec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd74f5255d557944cf7dd0e45ff521520002d5748 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6fd58f5a2f3468e35feb098b5f59f04157002407 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x561877b6b3dd7651313794e5f2894b2f18be0766 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf9ca0ec182a94f6231df9b14bd147ef7fb9fa17c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd77b108d4f6cefaa0cae9506a934e825becca46e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd56734d7f9979dd94fae3d67c7e928234e71cd4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf1264873436a0771e440e2b28072fafcc5eebd01 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x5575552988a3a80504bbaeb1311674fcfd40ad4b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x0341c0c0ec423328621788d4854119b97f44e391 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x764bfc309090e7f93edce53e5befa374cdcb7b8e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9e20461bc2c4c980f62f1b279d71734207a6a356 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x7fb7ede54259cb3d4e1eaf230c7e2b1ffc951e9a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3a18dcc9745edcd1ef33ecb93b0b6eba5671e7ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x000000000026839b3f4181f2cf69336af6153b99 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x8b0e6f19ee57089f7649a455d89d7bc6314d04e8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x31c91d8fb96bff40955dd2dbc909b36e8b104dde - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x25d887ce7a35172c62febfd67a1856f20faebb00 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd4d42f0b6def4ce0383636770ef773390d85c61a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf8388c2b6edf00e2e27eef5200b1befb24ce141d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x619c82392cb6e41778b7d088860fea8447941f4c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x94025780a1ab58868d9b2dbbb775f44b32e8e6e5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xad4b9c1fbf4923061814dd9d5732eb703faa53d4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd7a892f28dedc74e6b7b33f93be08abfc394a360 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3269a3c00ab86c753856fd135d97b87facb0d848 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4568ca00299819998501914690d6010ae48a59ba - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x21e60ee73f17ac0a411ae5d690f908c3ed66fe12 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd3188e0df68559c0b63361f6160c57ad88b239d8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2b41806cbf1ffb3d9e31a9ece6b738bf9d6f645f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf19547f9ed24aa66b03c3a552d181ae334fbb8db - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x35e6a59f786d9266c7961ea28c7b768b33959cbb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x59a729658e9245b0cf1f8cb9fb37945d2b06ea27 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb56c29413af8778977093b9b4947efeea7136c36 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x43ab8f7d2a8dd4102ccea6b438f6d747b1b9f034 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1d987200df3b744cfa9c14f713f5334cb4bc4d5d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3404149e9ee6f17fb41db1ce593ee48fbdcd9506 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x080f6aed32fc474dd5717105dba5ea57268f46eb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb5a628803ee72d82098d4bcaf29a42e63531b441 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1622bf67e6e5747b81866fe0b85178a93c7f86e3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x7dd747d63b094971e6638313a6a2685e80c7fb2e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xa2f9ecf83a48b86265ff5fd36cdbaaa1f349916c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x17a8541b82bf67e10b0874284b4ae66858cb1fd5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xbcd4d5ac29e06e4973a1ddcd782cd035d04bc0b7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x42069d11a2cc72388a2e06210921e839cfbd3280 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xbbea044f9e7c0520195e49ad1e561572e7e1b948 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xe85b662fe97e8562f4099d8a1d5a92d4b453bf30 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4e51ac49bc5e2d87e0ef713e9e5ab2d71ef4f336 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x4200000000000000000000000000000000000006 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x7f5c764cbc14f9669b88837ca1490cca17c31607 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x4200000000000000000000000000000000000042 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x0b2c639c533813f4aa9d7837caf62653d097ff85 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x68f180fcce6836688e9084f035309e29bf0a2095 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x8700daec35af8ff88c16bdf0418774cb3d7599b4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x920cf626a271321c151d027030d5d08af699456b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9e1028f5f1d5ede59748ffcee5532509976840e0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xeb466342c4d449bc9f53a865d5cb90586f405215 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x17aabf6838a6303fc6e9c5a227dc1eb6d95c829a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xf467c7d5a4a9c4687ffc7986ac6ad5a4c81e1404 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x76fb31fb4af56892a25e32cfc43de717950c9278 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xc5b001dc33727f8f26880b184090d3e252470d45 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9560e827af36c94d2ac33a39bce1fe78631088db - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9bcef72be871e61ed4fbbc7630889bee758eb81d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x50c5725949a6f0c72e6c4a641f24049a917db0cb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xf98dcd95217e15e05d8638da4c91125e59590b07 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x4b03afc91295ed778320c2824bad5eb5a1d852dd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x323665443cef804a3b5206103304bd4872ea4253 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x50bce64397c75488465253c0a034b8097fea6578 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x296f55f8fb28e498b858d0bcda06d955b2cb3f97 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x2598c30330d5771ae9f983979209486ae26de875 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x0994206dfe8de6ec6920ff4d779b0d950605fb53 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xc3248a1bd9d72fa3da6e6ba701e58cbf818354eb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x6fd9d7ad17242c41f7131d257212c54a0e816691 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x14778860e937f509e651192a90589de711fb88a9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xdfa46478f9e5ea86d57387849598dbfb2e964b02 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9b88d293b7a791e40d36a39765ffd5a1b9b5c349 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x3eb398fec5f7327c6b15099a9681d9568ded2e82 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x217d47011b23bb961eb6d93ca9945b7501a5bb11 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xbfd5206962267c7b4b4a8b3d76ac2e1b2a5c4d5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x1cef2d62af4cd26673c7416957cc4ec619a696a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9fd22a17b4a96da3f83797d122172c450381fb88 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2791bca1f2de4661ed88a30c99a7a9449aa84174 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc2132d05d31c914a87c6611c10748aeb04b58e8f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x61299774020da444af134c82fa83e3810b309991 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xd6df932a45c0f255f85145f286ea0b292b21c90b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2ad2934d5bfb7912304754479dd1f096d5c807da - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc3c7d422809852031b44ab29eec9f1eff2a58756 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x750e4c4984a9e0f12978ea6742bc1c5d248f40ed - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xd0258a3fd00f38aa8090dfee343f10a9d4d30d3f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x430ef9263e76dae63c84292c3409d61c598e9682 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xb33eaad8d922b1083446dc23f610c2567fb5180f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xdc3326e71d45186f113a2f448984ca0e8d201995 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x311434160d7537be358930def317afb606c0d737 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe3f2b1b2229c0333ad17d03f179b87500e7c5e01 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xac0f66379a6d7801d7726d5a943356a172549adb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf88332547c680f755481bf489d890426248bb275 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe5417af564e4bfda1c483642db72007871397896 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe261d618a959afffd53168cd07d12e37b26761db - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xbbba073c31bf03b8acf7c28ef0738decf3695683 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe238ecb42c424e877652ad82d8a939183a04c35f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3b56a704c01d650147ade2b8cee594066b3f9421 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x5fe2b58c013d7601147dcdd68c143a77499f5531 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x172370d5cd63279efa6d502dab29171933a610af - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x53df32548214f51821cf1fe4368109ac5ddea1ff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xff76c0b48363a7c7307868a81548d340049b0023 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x50b728d8d964fd00c2d0aad81718b71311fef68a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xd93f7e271cb87c23aaa73edc008a79646d1f9912 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x200c234721b5e549c3693ccc93cf191f90dc2af9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x11cd37bb86f65419713f30673a480ea33c826872 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8a16d4bf8a0a716017e8d2262c4ac32927797a2f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x190eb8a183d22a4bdf278c6791b152228857c033 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x235737dbb56e8517391473f7c964db31fa6ef280 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0b220b82f3ea3b7f6d9a1d8ab58930c064a2b5bf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8bff1bd27e2789fe390acabc379c380a83b68e84 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xb58458c52b6511dc723d7d6f3be8c36d7383b4a8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x323665443cef804a3b5206103304bd4872ea4253 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2760e46d9bb43dafcbecaad1f64b93207f9f0ed7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x18ec0a6e18e5bc3784fdd3a3634b31245ab704f6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x431d5dff03120afa4bdf332c61a6e1766ef37bdb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x6f7c932e7684666c9fd1d44527765433e01ff61d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xeee3371b89fc43ea970e908536fcddd975135d8a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe5b49820e5a1063f6f4ddf851327b5e8b2301048 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xaa3717090cddc9b227e49d0d84a28ac0a996e6ff - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x62a872d9977db171d9e213a5dc2b782e72ca0033 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x381caf412b45dac0f62fbeec89de306d3eabe384 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe0bceef36f3a6efdd5eebfacd591423f8549b9d5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x23d29d30e35c5e8d321e1dc9a8a61bfd846d4c5c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x282d8efce846a88b159800bd4130ad77443fa1a1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x74dd45dd579cad749f9381d6227e7e02277c944b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x714db550b574b3e927af3d93e26127d15721d4c2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xfa68fb4628dff1028cfec22b4162fccd0d45efb6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe631dabef60c37a37d70d3b4f812871df663226f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xdb725f82818de83e99f1dac22a9b5b51d3d04dd4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3c59798620e5fec0ae6df1a19c6454094572ab92 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0d0b8488222f7f83b23e365320a4021b12ead608 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa380c0b01ad15c8cf6b46890bddab5f0868e87f3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8a953cfe442c5e8855cc6c61b1293fa648bae472 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x11cd72f7a4b699c67f225ca8abb20bc9f8db90c7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0c9c7712c83b3c70e7c5e11100d33d9401bdf9dd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x77a6f2e9a9e44fd5d5c3f9be9e52831fc1c3c0a0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xbfc70507384047aa74c29cdc8c5cb88d0f7213ac - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xfcb54da3f4193435184f3f647467e12b50754575 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9a6a40cdf21a0af417f1b815223fd92c85636c58 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe111178a87a3bff0c8d18decba5798827539ae99 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x82617aa52dddf5ed9bb7b370ed777b3182a30fd1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2ab0e9e4ee70fff1fb9d67031e44f6410170d00e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa486c6bc102f409180ccb8a94ba045d39f8fc7cb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc4a206a306f0db88f98a3591419bc14832536862 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf0059cc2b3e980065a906940fbce5f9db7ae40a7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x553d3d295e0f695b9228246232edf400ed3560b5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x14af1f2f02dccb1e43402339099a05a5e363b83c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7bdf330f423ea880ff95fc41a280fd5ecfd3d09f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xb7b31a6bc18e48888545ce79e83e06003be70930 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x1631244689ec1fecbdd22fb5916e920dfc9b8d30 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf6372cdb9c1d3674e83842e3800f2a62ac9f3c66 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x692ac1e363ae34b6b489148152b12e2785a3d8d6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0266f4f08d82372cf0fcbccc0ff74309089c74d1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7fbc10850cae055b27039af31bd258430e714c62 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa3fa99a148fa48d14ed51d610c367c61876997f1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9dbfc1cbf7a1e711503a29b4b5f9130ebeccac96 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf86df9b91f002cfeb2aed0e6d05c4c4eaef7cf02 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4200000000000000000000000000000000000006 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x6921b130d297cc43754afba22e5eac0fbf8db75b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x5babfc2f240bc5de90eb7e19d789412db1dec402 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x532f27101965dd16442e59d40670faf5ebb142e4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4ed4e862860bed51a9570b96d89af5e1b0efefed - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x0d97f261b1e88845184f678e2d1e7a98d9fd38de - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8129b94753f22ec4e62e2c4d099ffe6773969ebc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3f14920c99beb920afa163031c4e47a3e03b3e4a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x940181a94a35a4569e4529a3cdfb74e38fd98631 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3419875b4d3bca7f3fdda2db7a476a79fd31b4fe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xa067436db77ab18b1a315095e4b816791609897c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xafb89a09d82fbde58f18ac6437b3fc81724e4df6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x489fe42c267fe0366b16b0c39e7aeef977e841ef - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xdc46c1e93b71ff9209a0f8076a9951569dc35855 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x91f45aa2bde7393e0af1cc674ffe75d746b93567 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x524d524b4c9366be706d3a90dcf70076ca037ae3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x5b5dee44552546ecea05edea01dcd7be7aa6144a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2598c30330d5771ae9f983979209486ae26de875 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfa980ced6895ac314e7de34ef1bfae90a5add21b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x469fda1fb46fcb4befc0d8b994b516bd28c87003 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4e496c0256fb9d4cc7ba2fdf931bc9cbb7731660 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbfd5206962267c7b4b4a8b3d76ac2e1b2a5c4d5e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9e1028f5f1d5ede59748ffcee5532509976840e0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3c3aa127e6ee3d2f2e432d0184dd36f2d2076b52 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xba5e6fa2f33f3955f0cef50c63dcc84861eab663 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x97c806e7665d3afd84a8fe1837921403d59f3dcc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8ee73c484a26e0a5df2ee2a4960b789967dd0415 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x00e57ec29ef2ba7df07ad10573011647b2366f6d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8f019931375454fe4ee353427eb94e2e0c9e0a8c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x93e6407554b2f02640ab806cd57bd83e848ec65d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x55d398326f99059ff775485246999027b3197955 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x2170ed0880ac9a755fd29b2688956bd959f933f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xfdc66a08b0d0dc44c17bbd471b88f49f50cdd20f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xe9e7cea3dedca5984780bafc599bd69add087d56 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xfa54ff1a158b5189ebba6ae130ced6bbd3aea76e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x570a5d26f7765ecb712c0924e4de545b89fd43df - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x47c454ca6be2f6def6f32b638c80f91c9c3c5949 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xad86d0e9764ba90ddd68747d64bffbd79879a238 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xd691d9a68c887bdf34da8c36f63487333acfd103 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1294f4183763743c7c9519bec51773fb3acd78fd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xb04906e95ab5d797ada81508115611fee694c2b3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x111111111117dc0aa78b770fa6a738034120c302 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xcc42724c6683b7e57334c4e856f4c9965ed682bd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x90c97f71e18723b0cf0dfa30ee176ab653e89f40 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x2b72867c32cf673f7b02d208b26889fed353b1f8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x031b41e504677879370e9dbcf937283a8691fa7f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1ce0c2827e2ef14d5c4f29a091d735a204794041 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xcf3bb6ac0f6d987a5727e2d15e39c2d6061d5bec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x2dff88a56767223a5529ea5960da7a3f5f766406 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x003d87d02a2a01e9e8a20f507c83e15dd83a33d1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x4b0f1812e5df2a09796481ff14017e6005508003 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbf5140a22578168fd562dccf235e5d43a02ce9b1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xca1c644704febf4ab81f85daca488d1623c28e63 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x51e72dd1f2628295cc2ef931cb64fdbdc3a0c599 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbbca42c60b5290f2c48871a596492f93ff0ddc82 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x555296de6a86e72752e5c5dc091fe49713aa145c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0808bf94d57c905f1236212654268ef82e1e594e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8457ca5040ad67fdebbcc8edce889a335bc0fbfb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xcebef3df1f3c5bfd90fde603e71f31a53b11944d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x90ed8f1dc86388f14b64ba8fb4bbd23099f18240 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x9840652dc04fb9db2c43853633f0f62be6f00f98 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xba2ae424d960c26247dd6c32edc70b295c744c43 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0782b6d8c4551b9760e74c0545a9bcd90bdc41e5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbe2b6c5e31f292009f495ddbda88e28391c9815e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8f0528ce5ef7b51152a59745befdd91d97091d2f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xffeecbf8d7267757c2dc3d13d730e97e15bfdf7f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0eb3a705fc54725037cc9e008bdede697f62f335 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0000028a2eb8346cd5c0267856ab7594b7a55308 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x76a797a59ba2c17726896976b7b3747bfd1d220f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xc79d1fd14f514cd713b5ca43d288a782ae53eab2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xad29abb318791d579433d831ed122afeaf29dcfe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xdb021b1b247fe2f1fa57e0a87c748cc1e321f07f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x7083609fce4d1d8dc0c979aab8c869ea2c873402 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xc5f0f7b66764f6ec8c8dff7ba683102295e16409 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xe29142e14e52bdfbb8108076f66f49661f10ec10 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xb0d502e938ed5f4df2e681fe6e419ff29631d62b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x6730f7a6bbb7b9c8e60843948f7feb4b6a17b7f7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1613957159e9b0ac6c80e824f7eea748a32a0ae2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x471ece3750da237f93b8e339c536989b8978a438 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x765de816845861e75a25fca122bb6898b8b1282a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x37f750b7cc259a2f741af45294f6a16572cf5cad - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xd71ffd0940c920786ec4dbb5a12306669b5b81ef - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xe8537a3d056da446677b9e9d6c5db704eaab4787 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x02de4766c272abc10bc88c220d214a26960a7e92 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xceba9300f2b948710d2653dd7b07f33a8b32118c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xc16b81af351ba9e64c1a069e3ab18c244a1e3049 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x728f30fa2f100742c7949d1961804fa8e0b1387d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x41ea5d41eeacc2d5c4072260945118a13bb7ebce - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf21661d0d1d76d3ecb8e1b9f1c923dbfffae4097 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb0ecc6ac0073c063dcfc026ccdc9039cae2998e1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x00f932f0fe257456b32deda4758922e56a4f4b42 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xa4af354d466e8a68090dd9eb2cb7caf162f4c8c2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xba50933c268f567bdc86e1ac131be072c6b0b71a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd29da236dd4aac627346e1bba06a619e8c22d7c5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1bfce574deff725a3f483c334b790e25c8fa9779 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9e18d5bab2fa94a6a95f509ecb38f8f68322abd3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbf5495efe5db9ce00f80364c8b423567e58d2110 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x065b4e5dfd50ac12a81722fd0a0de81d78ddf7fb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x57e114b691db790c35207b2e685d4a43181e6061 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x0b7f0e51cd1739d6c96982d55ad8fa634dd43a9c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x594daad7d77592a2b97b725a7ad59d7e188b5bfa - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8355dbe8b0e275abad27eb843f3eaf3fc855e525 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2a961d752eaa791cbff05991e4613290aec0d9ac - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x38e68a37e401f7271568cecaac63c6b1e19130b4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1131d427ecd794714ed00733ac0f851e904c8398 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1495bc9e44af1f8bcb62278d2bec4540cf0c05ea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x808507121b80c02388fad14726482e061b8da827 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x44971abf0251958492fee97da3e5c5ada88b9185 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x320623b8e4ff03373931769a31fc52a4e78b5d70 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6e5970dbd6fc7eb1f29c6d2edf2bc4c36124c0c1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd40c688da9df74e03566eaf0a7c754ed98fbb8cc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8afe4055ebc86bd2afb3940c0095c9aca511d852 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9ce84f6a69986a83d92c324df10bc8e64771030f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbe4d9c8c638b5f0864017d7f6a04b66c42953847 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x68bbed6a47194eff1cf514b50ea91895597fc91e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x69420e3a3aa9e17dea102bb3a9b3b73dcddb9528 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x03aa6298f1370642642415edc0db8b957783e8d6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd533a949740bb3306d119cc777fa900ba034cd52 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf14dd7b286ce197019cba54b189d2b883e70f761 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa35923162c49cf95e6bf26623385eb431ad920d3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8cefbeb2172a9382753de431a493e21ba9694004 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x120a3879da835a5af037bb2d1456bebd6b54d4ba - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x69457a1c9ec492419344da01daf0df0e0369d5d0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf6ce4be313ead51511215f1874c898239a331e37 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x73d7c860998ca3c01ce8c808f5577d94d545d1b4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xeff49b0f56a97c7fd3b51f0ecd2ce999a7861420 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x236501327e701692a281934230af0b6be8df3353 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5026f006b85729a8b14553fae6af249ad16c9aab - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x66761fa41377003622aee3c7675fc7b5c1c2fac5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9f9c8ec3534c3ce16f928381372bfbfbfb9f4d24 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd8c978de79e12728e38aa952a6cb4166f891790f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7122985656e38bdc0302db86685bb972b145bd3c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x582d872a1b094fc48f5de31d3b73f2d9be47def1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x504624040e0642921c2c266a9ac37cafbd8cda4e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc548e90589b166e1364de744e6d35d8748996fe8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4c11249814f11b9346808179cf06e71ac328c1b5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x423f4e6138e475d85cf7ea071ac92097ed631eea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8390a1da07e376ef7add4be859ba74fb83aa02d5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf94e7d0710709388bce3161c32b4eea56d3f91cc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaa95f26e30001251fb905d264aa7b00ee9df6c18 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2416092f143378750bb29b79ed961ab195cceea5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x71eeba415a523f5c952cc2f06361d5443545ad28 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x88a269df8fe7f53e590c561954c52fccc8ec0cfb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x429fed88f10285e61b12bdf00848315fbdfcc341 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb299751b088336e165da313c33e3195b8c6663a6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf0a479c9c3378638ec603b8b6b0d75903902550b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb59c8912c83157a955f9d715e556257f432c35d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xba0dda8762c24da9487f5fa026a9b64b695a07ea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xc24a365a870821eb83fd216c9596edd89479d8d7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xa586b3b80d7e3e8d439e25fbc16bc5bcee3e2c85 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xef04804e1e474d3f9b73184d7ef5d786f3fce930 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2e9a6df78e42a30712c10a9dc4b1c8656f8f2879 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x13a7dedb7169a17be92b0e3c7c2315b46f4772b3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1dd6b5f9281c6b4f043c02a83a46c2772024636c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf525e73bdeb4ac1b0e741af3ed8a8cbb43ab0756 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xe4177c1400a8eee1799835dcde2489c6f0d5d616 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xed5740209fcf6974d6f3a5f11e295b5e468ac27c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xe10d4a4255d2d35c9e23e2c4790e073046fbaf5c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x10398abc267496e49106b07dd6be13364d10dc71 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x2218a117083f5b482b0bb821d27056ba9c04b1d3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x395ae52bb17aef68c2888d941736a71dc6d4e125 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9a601c5bb360811d96a23689066af316a30c3027 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xbac3368b5110f3a3dda8b5a0f7b66edb37c47afe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x1d3c629ca5c1d0ab3bdf74600e81b4145615df8e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe9c21de62c5c5d0ceacce2762bf655afdceb7ab3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x658cda444ac43b0a7da13d638700931319b64014 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3d2bd0e15829aa5c362a4144fdf4a1112fa29b5c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3fb83a9a2c4408909c058b0bfe5b4823f54fafe2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x00e5646f60ac6fb446f621d146b6e1886f002905 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x12a4cebf81f8671faf1ab0acea4e3429e42869e7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9ff62d1fc52a907b6dcba8077c2ddca6e6a9d3e1 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc61f39418cd27820b5d4e9ba4a7197eefaeb8b05 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7f67639ffc8c93dd558d452b8920b28815638c44 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x276c9cbaa4bdf57d7109a41e67bd09699536fa3d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x041fdf3f472d2c8a7ecc458fc3b7f543e6c57ef7 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3c281a39944a2319aa653d81cfd93ca10983d234 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x96419929d7949d6a801a6909c145c8eef6a40431 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xdb6e0e5094a25a052ab6845a9f1e486b9a9b3dde - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xcde172dc5ffc46d228838446c57c1227e0b82049 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xff0c532fdb8cd566ae169c1cb157ff2bdc83e105 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9a26f5433671751c3276a065f57e5a02d2817973 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3636a7734b669ce352e97780df361ce1f809c58c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x50c5725949a6f0c72e6c4a641f24049a917db0cb - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xe3086852a4b125803c815a158249ae468a3254ca - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbeb0fd48c2ba0f1aacad2814605f09e08a96b94e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbc45647ea894030a4e9801ec03479739fa2485f0 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x768be13e1680b5ebe0024c42c896e3db59ec0149 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x928a6a9fc62b2c94baf2992a6fba4715f5bb0066 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbf4db8b7a679f89ef38125d5f84dd1446af2ea3b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xed899bfdb28c8ad65307fa40f4acab113ae2e14c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x1b6a569dd61edce3c383f6d565e2f79ec3a12980 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x76734b57dfe834f102fb61e1ebf844adf8dd931e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4621b7a9c75199271f773ebd9a499dbd165c3191 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xaf07d812d1dcec20bf741075bc18660738d226dd - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7f12d13b34f5f4f0a9449c16bcd42f0da47af200 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x55a6f6cb50db03259f6ab17979a4891313be2f45 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x968d6a288d7b024d5012c0b25d67a889e4e3ec19 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7a8a5012022bccbf3ea4b03cd2bb5583d915fb1a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xcde90558fc317c69580deeaf3efc509428df9080 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x0028e1e60167b48a938b785aa5292917e7eaca8b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x76e7447bafa3f0acafc9692629b1d1bc937ca15d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x15ac90165f8b45a80534228bdcb124a011f62fee - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4045b33f339a3027af80013fb5451fdbb01a4492 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xddf98aad8180c3e368467782cd07ae2e3e8d36a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x698dc45e4f10966f6d1d98e3bfd7071d8144c233 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3c8665472ec5af30981b06b4e0143663ebedcc1e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x18a8bd1fe17a1bb9ffb39ecd83e9489cfd17a022 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xba0dda8762c24da9487f5fa026a9b64b695a07ea - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x13741c5df9ab03e7aa9fb3bf1f714551dd5a5f8a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xebff2db643cf955247339c8c6bcd8406308ca437 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfadb26be94c1f959f900bf88cd396b3e803481d6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x52c2b317eb0bb61e650683d2f287f56c413e4cf6 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x38d513ec43dda20f323f26c7bef74c5cf80b6477 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x33ad778e6c76237d843c52d7cafc972bb7cf8729 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x290814ad0fbd2b935f34d7b40306102313d4c63e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x5e432eecd01c12ee7071ee9219c2477a347da192 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbdf5bafee1291eec45ae3aadac89be8152d4e673 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xff62ddfa80e513114c3a0bf4d6ffff1c1d17aadf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8c81b4c816d66d36c4bf348bdec01dbcbc70e987 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x6b82297c6f1f9c3b1f501450d2ee7c37667ab70d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x42069babe14fb1802c5cb0f50bb9d2ad6fef55e2 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x72499bddb67f4ca150e1f522ca82c87bc9fb18c8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8fe815417913a93ea99049fc0718ee1647a2a07c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7d12aeb5d96d221071d176980d23c213d88d9998 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xb166e8b140d35d9d8226e40c09f757bac5a4d87d - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8853f0c059c27527d33d02378e5e4f6d5afb574a - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xf3c052f2baab885c610a748eb01dfbb643ba835b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xcd1cffa8ebc66f1a2cf7675b48ba955ffcb82d8e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xde7a416ac821c77478340eebaa21b68297025ef3 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2da56acb9ea78330f947bd57c54119debda7af71 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8972ab69d499b5537a31576725f0af8f67203d38 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x88faea256f789f8dd50de54f9c807eef24f71b16 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x42069de48741db40aef864f8764432bbccbd0b69 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9a27c6759a6de0f26ac41264f0856617dec6bc3f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfaa4f3bcfc87d791e9305951275e0f62a98bcb10 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfd9fa4f785331ce88b5af8994a047ba087c705d8 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x21eceaf3bf88ef0797e3927d855ca5bb569a47fc - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7d9ce55d54ff3feddb611fc63ff63ec01f26d15f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4229c271c19ca5f319fb67b4bc8a40761a6d6299 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x80f45eacf6537498ecc660e4e4a2d2f99e195cf4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x1a475d06d967aeb686c98de80d079d72097aeacf - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4fb9b20dafe45d91ae287f2e07b2e79709308178 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xd3741ac9b3f280b0819191e4b30be4ecd990771e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x09579452bc3872727a5d105f342645792bb8a82b - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8a24d7260cd02d3dfd8eefb66bc17ad4b17d494c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xd88611a629265c9af294ffdd2e7fa4546612273e - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9a86980d3625b4a6e69d8a4606d51cbc019e2002 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x776aaef8d8760129a0398cf8674ee28cefc0eab9 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x28e29ec91db66733a94ee8e3b86a6199117baf99 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xb9898511bd2bad8bfc23eba641ef97a08f27e730 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x76baa16ff15d61d32e6b3576c3a8c83a25c2f180 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2816a491dd0b7a88d84cbded842a618e59016888 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0xa7ea9d5d4d4c7cf7dbde5871e6d108603c6942a5 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/base/0x586e10db93630a4d2da6c6a34ba715305b556f04 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf486ad071f3bee968384d2e39e2d8af0fcf6fd46 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x76d36d44dc4595e8d2eb3ad745f175eda134284f - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1fa4a73a3f0133f0025378af00236f3abdee5d63 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xb3ed0a426155b79b898849803e3b36552f7ed507 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0ef4a107b48163ab4b57fca36e1352151a587be4 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x62694d43ccb9b64e76e38385d15e325c7712a735 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xa2b726b1145a4773f68593cf171187d8ebe4d495 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf275e1ac303a4c9d987a2c48b8e555a77fec3f1c - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x11a31b833d43853f8869c9eec17f60e3b4d2a753 - 2024-07-05T19:43:14.783Z + 2024-05-20T17:20:52.753Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x48065fbbe25f71c9282ddf5e1cd6d6a887483d5e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xbadff0ef41d2a68f22de21eabca8a59aaf495cf0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x1fdd61ef9a5c31b9a2abc7d39c139c779e8412af - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x4ade2b180f65ed752b6f1296d0418ad21eb578c0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x0c5cb676e38d6973837b9496f6524835208145a2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb69753c06bb5c366be51e73bfc0cc2e3dc07e371 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x8143182a775c54578c8b7b3ef77982498866945d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x76e222b07c53d28b89b0bac18602810fc22b49a8 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x18aaa7115705e8be94bffebde57af9bfc265b998 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7d8146cf21e8d7cbe46054e01588207b51198729 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x1ce270557c1f68cfb577b856766310bf8b47fd9c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x793a5d8b30aab326f83d20a9370c827fea8fdc51 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xff836a5821e69066c87e268bc51b849fab94240c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xf4d2888d29d722226fafa5d9b24f9164c092421e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x8ed97a637a790be1feff5e888d43629dc05408f6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x31c8eacbffdd875c74b94b077895bd78cf1e64a3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xc55126051b22ebb829d00368f4b12bde432de5da - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x8881562783028f5c1bcb985d2283d5e170d88888 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x67466be17df832165f8c80a5a120ccc652bd7e69 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd939212f16560447ed82ce46ca40a63db62419b5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x88417754ff7062c10f4e3a4ab7e9f9d9cbda6023 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x5afe3855358e112b5647b952709e6165e1c1eeee - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x02e7f808990638e9e67e1f00313037ede2362361 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd2bdaaf2b9cc6981fd273dcb7c04023bfbe0a7fe - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x112b08621e27e10773ec95d250604a041f36c582 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x32b053f2cba79f80ada5078cb6b305da92bde6e1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x5ac34c53a04b9aaa0bf047e7291fb4e8a48f2a18 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x26ebb8213fb8d66156f1af8908d43f7e3e367c1d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xe3b9cfb8ea8a4f1279fbc28d3e15b4d2d86f18a0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x8207c1ffc5b6804f6024322ccf34f29c3541ae26 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x255f1b39172f65dc6406b8bee8b08155c45fe1b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x092baadb7def4c3981454dd9c0a0d7ff07bcfc86 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x53bcf6698c911b2a7409a740eacddb901fc2a2c6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x2ac2b254bc18cd4999f64773a966e4f4869c34ee - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x17fc002b466eec40dae837fc4be5c67993ddbd6f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xc8a4eea31e9b6b61c406df013dd4fec76f21e279 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x498bf2b1e120fed3ad3d42ea2165e9b73f99c1e5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xe4dddfe67e7164b0fe14e218d80dc4c08edc01cb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x7c8a1a80fdd00c9cccd6ebd573e9ecb49bfa2a59 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x1debd73e752beaf79865fd6446b0c970eae7732f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xaf5db6e1cc585ca312e8c8f7c499033590cf5c98 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x65559aa14915a70190438ef90104769e5e890a00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x7fb688ccf682d58f86d7e38e03f9d22e7705448b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x73cb180bf0521828d8849bc8cf2b920918e23032 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x2e3d870790dc77a83dd1d18184acc7439a53f475 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0xa00e3a3511aac35ca78530c85007afcd31753819 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x528cdc92eab044e1e39fe43b9514bfdab4412b98 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x1c954e8fe737f99f68fa1ccda3e51ebdb291948c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xf50d05a1402d0adafa880d36050736f9f6ee7dee - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xab0b2ddb9c7e440fac8e140a89c0dbcbf2d7bbff - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x8bc3ec2e7973e64be582a90b08cadd13457160fe - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x64060ab139feaae7f06ca4e63189d86adeb51691 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x5ec03c1f7fa7ff05ec476d19e34a22eddb48acdc - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x9627a3d6872be48410fcece9b1ddd344bf08c53e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x1ed02954d60ba14e26c230eec40cbac55fa3aeea - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x8d3419b9a18651f3926a205ee0b1acea1e7192de - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xb56d0839998fd79efcd15c27cf966250aa58d6d3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x81f91fe59ee415735d59bd5be5cca91a0ea4fa69 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x87c211144b1d9bdaa5a791b8099ea4123dc31d21 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xf4210f93bc68d63df3286c73eba08c6414f40c0d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xece7b98bd817ee5b1f2f536daf34d0b6af8bb542 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4c96a67b0577358894407af7bc3158fc1dffbeb5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x70737489dfdf1a29b7584d40500d3561bd4fe196 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x39353a32eceafe4979a8606512c046c3b6398cc4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x92fb1b7d9730b2f1bd4e2e91368c1eb6fdd2a009 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x174e33ef2effa0a4893d97dda5db4044cc7993a3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xfdc944fb59201fb163596ee5e209ebc8fa4dcdc5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x388e543a5a491e7b42e3fbcd127dd6812ea02d0d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x56a38e7216304108e841579041249feb236c887b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x1804e3db872eed4141e482ff74c56862f2791103 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x9de16c805a3227b9b92e39a446f9d56cf59fe640 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xb8d98a102b0079b69ffbc760c8d857a31653e56e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x5d6812722c3693078e4a0dbe3e9affc27a0b2768 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x255f1b39172f65dc6406b8bee8b08155c45fe1b6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xc2fe011c3885277c7f0e7ffd45ff90cadc8ecd12 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xc1ffaef4e7d553bbaf13926e258a1a555a363a07 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4e73420dcc85702ea134d91a262c8ffc0a72aa70 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xecaf81eb42cd30014eb44130b89bcd6d4ad98b92 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x4eae52907dba9c370e9ee99f0ce810602a4f2c63 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x25d887ce7a35172c62febfd67a1856f20faebb00 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x382ea807a61a418479318efd96f1efbc5c1f2c21 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6468e79a80c0eab0f9a2b574c8d5bc374af59414 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x3106a0a076bedae847652f42ef07fd58589e001f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd015422879a1308ba557510345e944b912b9ab73 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xcf078da6e85389de507ceede0e3d217e457b9d49 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x1bbf25e71ec48b84d773809b4ba55b6f4be946fb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7039cd6d7966672f194e8139074c3d5c4e6dcf65 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x943af17c37207c9d7a27d12cb5055542a0b7afa8 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6d68015171eaa7af9a5a0a103664cf1e506ff699 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6942806d1b2d5886d95ce2f04314ece8eb825833 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x949d48eca67b17269629c7194f4b727d4ef9e5d6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x9361adf2b72f413d96f81ff40d794b47ce13b331 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x3bb1be077f3f96722ae92ec985ab37fd0a0c4c51 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xdbb7a34bf10169d6d2d0d02a6cbb436cf4381bfa - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x66bff695f3b16a824869a8018a3a6e3685241269 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x85d19fb57ca7da715695fcf347ca2169144523a7 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x069d89974f4edabde69450f9cf5cf7d8cbd2568d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x0fe13ffe64b28a172c58505e24c0c111d149bd47 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x111111111117dc0aa78b770fa6a738034120c302 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xdc7ac5d5d4a9c3b5d8f3183058a92776dc12f4f3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x482702745260ffd69fc19943f70cffe2cacd70e9 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xc555d625828c4527d477e595ff1dd5801b4a600e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x9eec1a4814323a7396c938bc86aec46b97f1bd82 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x87d73e916d7057945c9bcd8cdd94e42a6f47f776 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x067def80d66fb69c276e53b641f37ff7525162f6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xdd157bd06c1840fa886da18a138c983a7d74c1d7 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xe80772eaf6e2e18b651f160bc9158b2a5cafca65 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xb6093b61544572ab42a0e43af08abafd41bf25a6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x35ca1e5a9b1c09fa542fa18d1ba4d61c8edff852 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x83e60b9f7f4db5cdb0877659b1740e73c662c55b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x4d01397994aa636bdcc65c9e8024bc497498c3bb - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xc3abc47863524ced8daf3ef98d74dd881e131c38 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x4d15a3a2286d883af0aa1b3f21367843fac63e07 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xfb7f8a2c0526d01bfb00192781b7a7761841b16c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x3809dcdd5dde24b37abe64a5a339784c3323c44f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x85955046df4668e1dd369d2de9f3aeb98dd2a369 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x554cd6bdd03214b10aafa3e0d4d42de0c5d2937b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x4318cb63a2b8edf2de971e2f17f77097e499459d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xab9cb20a28f97e189ca0b666b8087803ad636b3c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x6a8ec2d9bfbdd20a7f5a4e89d640f7e7ceba4499 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xe161be4a74ab8fa8706a2d03e67c02318d0a0ad6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4d58608eff50b691a3b76189af2a7a123df1e9ba - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x420b0fa3de2efcf2b2fd04152eb1df36a09717cd - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x1cd38856ee0fdfd65c757e530e3b1de3061008d3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xfad8cb754230dbfd249db0e8eccb5142dd675a0d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xda761a290e01c69325d12d82ac402e5a73d62e81 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xafb5d4d474693e68df500c9c682e6a2841f9661a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xfc5462143a3178cf044e97c491f6bcb5e38f173e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xed1978d01d4a8a9d6a43ac79403d5b8dfbed739b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xba71cb8ef2d59de7399745793657838829e0b147 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x10c1b6f768e13c624a4a23337f1a5ba5c9be0e4b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x1b1514c76c54ce8807d7fdedf85c664eee734ece - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x58cd93c4a91c3940109fa27d700f5013b18b5dc2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xea6f7e7e0f46a9e0f4e2048eb129d879f609d632 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x30d19fb77c3ee5cfa97f73d72c6a1e509fa06aef - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xe2dca969624795985f2f083bcd0b674337ba130a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xbb7d61d2511fd2e63f02178ca9b663458af9fc63 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x59f4f336bf3d0c49dbfba4a74ebd2a6ace40539a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb8fda5aee55120247f16225feff266dfdb381d4c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xca530408c3e552b020a2300debc7bd18820fb42f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xcfeb09c3c5f0f78ad72166d55f9e6e9a60e96eec - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x467bccd9d29f223bce8043b84e8c8b282827790f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x2077d81d0c5258230d5a195233941547cb5f0989 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xa0bbbe391b0d0957f1d013381b643041d2ca4022 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd1b89856d82f978d049116eba8b7f9df2f342ff3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x62f03b52c377fea3eb71d451a95ad86c818755d1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x3927fb89f34bbee63351a6340558eebf51a19fb8 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xacd2c239012d17beb128b0944d49015104113650 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x86b69f38bea3e02f68ff88534bc61ec60e772b19 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6873c95307e13beb58fb8fcddf9a99667655c9e4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x18084fba666a33d37592fa2633fd49a74dd93a88 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6e79b51959cf968d87826592f46f819f92466615 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x80ee5c641a8ffc607545219a3856562f56427fe9 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x0414d8c87b271266a5864329fb4932bbe19c0c49 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x1c986661170c1834db49c3830130d4038eeeb866 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x9ed7e4b1bff939ad473da5e7a218c771d1569456 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x7f9a7db853ca816b9a138aee3380ef34c437dee0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xb1bc21f748ae2be95674876710bc6d78235480e0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xadf5dd3e51bf28ab4f07e684ecf5d00691818790 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x1eba7a6a72c894026cd654ac5cdcf83a46445b08 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x38022a157b95c52d43abcac9bd09f028a1079105 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xd2507e7b5794179380673870d88b22f94da6abe0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xc708d6f2153933daa50b2d0758955be0a93a8fec - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x0052074d3eb1429f39e5ea529b54a650c21f5aa4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x4e78011ce80ee02d2c3e649fb657e45898257815 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x7583feddbcefa813dc18259940f76a02710a8905 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xe78aee6ccb05471a69677fb74da80f5d251c042b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x04f177fcacf6fb4d2f95d41d7d3fee8e565ca1d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xa6da8c8999c094432c77e7d318951d34019af24b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x6d3b8c76c5396642960243febf736c6be8b60562 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x7cf7132ede0ca592a236b6198a681bb7b42dd5ae - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x3afeae00a594fbf2e4049f924e3c6ac93296b6e8 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x0a93a7be7e7e426fc046e204c44d6b03a302b631 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xc9b6ef062fab19d3f1eabc36b1f2e852af1acd18 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x1754e5aadce9567a95f545b146a616ce34eead53 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xdb173587d459ddb1b9b0f2d6d88febef039304a2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x10a7a84c91988138f8dbbc82a23b02c8639e2552 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x92af6f53febd6b4c6f5293840b6076a1b82c4bc2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xeb9e49fb4c33d9f6aefb1b03f9133435e24c0ec6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x1b2c141479757b8643a519be4692904088d860b2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4d25e94291fe8dcfbfa572cbb2aaa7b755087c91 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x8e0e798966382e53bfb145d474254cbe065c17dc - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4b6f82a4ed0b9e3767f53309b87819a78d041a7f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x004aa1586011f3454f487eac8d0d5c647d646c69 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x741777f6b6d8145041f73a0bddd35ae81f55a40f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xc6c58f600917de512cd02d2b6ed595ab54b4c30f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x03aa6298f1370642642415edc0db8b957783e8d6 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xa697e272a73744b343528c3bc4702f2565b2f422 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x301af3eff0c904dc5ddd06faa808f653474f7fcc - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x776f9987d9deed90eed791cbd824d971fd5ccf09 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xf7de7e8a6bd59ed41a4b5fe50278b3b7f31384df - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x19e6bfc1a6e4b042fb20531244d47e252445df01 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x4338665cbb7b2485a8855a139b75d5e34ab0db94 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x2940566eb50f15129238f4dc599adc4f742d7d8e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xbb73bb2505ac4643d5c0a99c2a1f34b3dfd09d11 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x4ea98c1999575aaadfb38237dd015c5e773f75a2 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/celo/0x1d18d0386f51ab03e7e84e71bda1681eba865f1f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x57b96d4af698605563a4653d882635da59bf11af - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd33526068d116ce69f19a9ee46f0bd304f21a51f - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x2a5fa016ffb20c70e2ef36058c08547f344677aa - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xbe0ed4138121ecfc5c0e56b40517da27e6c5226b - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x9fd9278f04f01c6a39a9d1c1cd79f7782c6ade08 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x054c9d4c6f4ea4e14391addd1812106c97d05690 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7613c48e0cd50e42dd9bf0f6c235063145f6f8dc - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x614da3b37b6f66f7ce69b4bbbcf9a55ce6168707 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x069e4aa272d17d9625aa3b6f863c7ef6cfb96713 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x24da31e7bb182cb2cabfef1d88db19c2ae1f5572 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7d4a23832fad83258b32ce4fd3109ceef4332af4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb58e61c3098d85632df34eecfb899a1ed80921cb - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x67c4d14861f9c975d004cfb3ac305bee673e996e - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x69babe9811cc86dcfc3b8f9a14de6470dd18eda4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x32f0d04b48427a14fb3cbc73db869e691a9fec6f - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x51cb253744189f11241becb29bedd3f1b5384fdb - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xcf4c91ecafc43c9f382db723ba20b82efa852821 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6968676661ac9851c38907bdfcc22d5dd77b564d - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x0d438f3b5175bebc262bf23753c1e53d03432bde - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb98d4c97425d9908e66e53a6fdf673acca0be986 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x68a47fe1cf42eba4a030a10cd4d6a1031ca3ca0a - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x8a370c951f34e295b2655b47bb0985dd08d8f718 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x525574c899a7c877a11865339e57376092168258 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd9a442856c234a39a81a089c06451ebaa4306a72 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x1c43d05be7e5b54d506e3ddb6f0305e8a66cd04e - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xb766039cc6db368759c1e56b79affe831d0cc507 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x18c14c2d707b2212e17d1579789fc06010cfca23 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xe0ee18eacafddaeb38f8907c74347c44385578ab - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x56659245931cb6920e39c189d2a0e7dd0da2d57b - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xb6a5ae40e79891e4deadad06c8a7ca47396df21c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x04565fe9aa3ae571ada8e1bebf8282c4e5247b2a - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xf8a99f2bf2ce5bb6ce4aafcf070d8723bc904aa2 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x3b9728bd65ca2c11a817ce39a6e91808cceef6fd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x6797b6244fa75f2e78cdffc3a4eb169332b730cc - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xe2c86869216ac578bd62a4b8313770d9ee359a05 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x47b464edb8dc9bc67b5cd4c9310bb87b773845bd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x28a730de97dc62a8c88363e0b1049056f1274a70 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xba5ede8d98ab88cea9f0d69918dde28dc23c2553 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x8319767a7b602f88e376368dca1b92d38869b9b4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x461ee40928677644b8195662ab91bcdaae6ef105 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x24569d33653c404f90af10a2b98d6e0030d3d267 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x22222bd682745cf032006394750739684e45a5f8 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x9124577428c5bd73ad7636cbc5014081384f29d6 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xaa6cccdce193698d33deb9ffd4be74eaa74c4898 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xe095780ba2a64a4efa7a74830f0b71656f0b0ad4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xb59c8912c83157a955f9d715e556257f432c35d7 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x7771450ece9c61430953d2646f995e33a06c91f5 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xc48823ec67720a04a9dfd8c7d109b2c3d6622094 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x9ec02756a559700d8d9e79ece56809f7bcc5dc27 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x3593d125a4f7849a1b059e64f4517a86dd60c95d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6985884c4392d348587b19cb9eaaf157f13271cd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xa045fe936e26e1e1e1fb27c1f2ae3643acde0171 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xbeef698bd78139829e540622d5863e723e8715f1 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x426a688ee72811773eb64f5717a32981b56f10c1 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x873259322be8e50d80a4b868d186cc5ab148543a - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x661c70333aa1850ccdbae82776bb436a0fcfeefb - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x0a2c375553e6965b42c135bb8b15a8914b08de0c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6fba952443be1de22232c824eb8d976b426b3c38 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x1abaea1f7c830bd89acc67ec4af516284b1bc33c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb60fdf036f2ad584f79525b5da76c5c531283a1b - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x5a3e6a77ba2f983ec0d371ea3b475f8bc0811ad5 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x55296f69f40ea6d20e478533c15a6b08b654e758 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x45804880de22913dafe09f4980848ece6ecbaf78 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xe5018913f2fdf33971864804ddb5fca25c539032 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x6985884c4392d348587b19cb9eaaf157f13271cd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x2c650dab03a59332e2e0c0c4a7f726913e5028c1 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x9aee3c99934c88832399d6c6e08ad802112ebeab - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x439c0cf1038f8002a4cad489b427e217ba4b42ad - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x6985884c4392d348587b19cb9eaaf157f13271cd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x6985884c4392d348587b19cb9eaaf157f13271cd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x6985884c4392d348587b19cb9eaaf157f13271cd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xb79dd08ea68a908a97220c76d19a6aa9cbde4376 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4b61e2f1bbdee6d746209a693156952936f1702c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x7480527815ccae421400da01e052b120cc4255e9 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x7466de7bb8b5e41ee572f4167de6be782a7fa75d - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x298d411511a05dc1b559ed8f79c56bee06687b14 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x8e16d46cb2da01cdd49601ec73d7b0344969ae33 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x18dd5b087bca9920562aff7a0199b96b9230438b - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x37f0c2915cecc7e977183b8543fc0864d03e064c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x37f24b26bcefbfac7f261b97f8036da98f81a299 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xacb5b33ce55ba7729e38b2b59677e71c0112f0d9 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x6985884c4392d348587b19cb9eaaf157f13271cd - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xc71b5f631354be6853efe9c3ab6b9590f8302e81 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x7e744bbb1a49a44dfcc795014a4ba618e418fbbe - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x0c04ff41b11065eed8c9eda4d461ba6611591395 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x636bd98fc13908e475f56d8a38a6e03616ec5563 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x590246bfbf89b113d8ac36faeea12b7589f7fe5b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x80034f803afb1c6864e3ca481ef1362c54d094b9 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x73fbd93bfda83b111ddc092aa3a4ca77fd30d380 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xff33a6b3dc0127862eedd3978609404b22298a54 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xc770eefad204b5180df6a14ee197d99d808ee52d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xa0385e7283c83e2871e9af49eec0966088421ddd - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb2617246d0c6c0087f18703d576831899ca94f01 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xba386a4ca26b85fd057ab1ef86e3dc7bdeb5ce70 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x9ebb0895bd9c7c9dfab0d8d877c66ba613ac98ea - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd12a99dbc40036cec6f1b776dccd2d36f5953b94 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x8ab2ff0116a279a99950c66a12298962d152b83c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x420698cfdeddea6bc78d59bc17798113ad278f9d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xa8c8cfb141a3bb59fea1e2ea6b79b5ecbcd7b6ca - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd8e8438cf7beed13cfabc82f300fb6573962c9e3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb1c9d42fa4ba691efe21656a7e6953d999b990c4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xdadeca1167fe47499e53eb50f261103630974905 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xa05245ade25cc1063ee50cf7c083b4524c1c4302 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x4fafad147c8cd0e52f83830484d164e960bdc6c3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x4dd9077269dd08899f2a9e73507125962b5bc87f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x8931ee05ec111325c1700b68e5ef7b887e00661d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x26f1bb40ea88b46ceb21557dc0ffac7b7c0ad40f - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x642e993fa91ffe9fb24d39a8eb0e0663145f8e92 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x0c41f1fc9022feb69af6dc666abfe73c9ffda7ce - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xf7ccb8a6e3400eb8eb0c47619134f7516e025215 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x2416092f143378750bb29b79ed961ab195cceea5 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xf0268c5f9aa95baf5c25d646aabb900ac12f0800 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x0c067fc190cde145b0c537765a78d4e19873a5cc - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xbe5614875952b1683cb0a2c20e6509be46d353a4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x87a0233a8cb4392ec3eb8fa467817fc0b6a326dd - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xdfbea88c4842d30c26669602888d746d30f9d60d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x80b3455e1db60b4cba46aba12e8b1e256dd64979 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x747747e47a48c669be384e0dfb248eee6ba04039 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/celo/0x50e85c754929840b58614f48e29c64bc78c58345 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x02f92800f57bcd74066f5709f1daa1a4302df875 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x967da4048cd07ab37855c090aaf366e4ce1b9f48 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x729031b3995538ddf6b6bce6e68d5d6fdeb3ccb5 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x97a9a15168c22b3c137e6381037e1499c8ad0978 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x5faa989af96af85384b8a938c2ede4a7378d9875 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x4691937a7508860f876c9c0a2a617e7d9e945d4b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x037a54aab062628c9bbae1fdb1583c195585fe41 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xcb8b5cd20bdcaea9a010ac1f8d835824f5c87a04 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xdfb8be6f8c87f74295a87de951974362cedcfa30 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x354a6da3fcde098f8389cad84b0182725c6c91de - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x3f56e0c36d275367b8c502090edf38289b3dea0d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0x6f9590958ce2beaf9c92a3a8fca6d1ddf310e052 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0x3e5d9d8a63cc8a88748f229999cf59487e90721e - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/optimism/0xecc68d0451e20292406967fe7c04280e5238ac7d - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xf1c1a3c2481a3a8a3f173a9ab5ade275292a6fa3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xb5e0cfe1b4db501ac003b740665bf43192cc7853 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xffa188493c15dfaf2c206c97d8633377847b6a52 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xb5c064f955d8e7f38fe0460c556a72987494ee17 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xf0949dd87d2531d665010d6274f06a357669457a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x14e5386f47466a463f85d151653e1736c0c50fc3 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0xadac33f543267c4d59a8c299cf804c303bc3e4ac - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x67ce18961c3269ca03c2e5632f1938cc53e614a1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x48164ea5df090e80a0eaee1147e466ea28669221 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x3054e8f8fba3055a42e5f5228a2a4e2ab1326933 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x42069d11a2cc72388a2e06210921e839cfbd3280 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x74ff3cbf86f95fea386f79633d7bc4460d415f34 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x2d6a3893966dda77749cc7e4003ab15f5cfa3cc1 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x51b75da3da2e413ea1b8ed3eb078dc712304761c - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x8ad5b9007556749de59e088c88801a3aaa87134b - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xbd97693278f1948c59f65f130fd87e7ff7c61d11 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x3992b27da26848c2b19cea6fd25ad5568b68ab98 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x34980c35353a8d7b1a1ba02e02e387a8383e004a - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0xdebd6e2da378784a69dc6ec99fe254223b312287 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/celo/0x456a3d042c0dbd3db53d5489e98dfb038553b0d0 - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/celo/0x9995cc8f20db5896943afc8ee0ba463259c931ed - 2024-07-05T19:43:14.783Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x30d20208d987713f46dfd34ef128bb16c404d10f - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x19848077f45356b21164c412eff3d3e4ff6ebc31 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x53206bf5b6b8872c1bb0b3c533e06fde2f7e22e4 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x07ddacf367f0d40bd68b4b80b4709a37bdc9f847 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xbdbe9f26918918bd3f43a0219d54e5fda9ce1bb3 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xb9d09bc374577dac1ab853de412a903408204ea8 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xe72b141df173b999ae7c1adcbf60cc9833ce56a8 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x214549b0317564de15770561221433fb3e8c995c - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xc82e3db60a52cf7529253b4ec688f631aad9e7c2 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x62e3b3c557c792c4a70765b3cdb5b56b1879f82d - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x2598c30330d5771ae9f983979209486ae26de875 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd4f4d0a10bcae123bb6655e8fe93a30d01eebd04 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/arbitrum/0xa0995d43901551601060447f9abf93ebc277cec2 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x40379a439d4f6795b6fc9aa5687db461677a2dba - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/polygon/0x433cde5a82b5e0658da3543b47a375dffd126eb6 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x619c4bbbd65f836b78b36cbe781513861d57f39d - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x1e0bb24ed6c806c01ef2f880a4b91adb90099ea7 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x0dd7913197bfb6d2b1f03f9772ced06298f1a644 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xfbb75a59193a3525a8825bebe7d4b56899e2f7e1 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0xc3de830ea07524a0761646a6a4e4be0e114a3c83 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/base/0x3792dbdd07e87413247df995e692806aa13d3299 - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/bnb/0x527856315a4bcd2f428ea7fa05ea251f7e96a50a - 2024-07-10T19:43:34.135Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0x292fcdd1b104de5a00250febba9bc6a5092a0076 - 2024-07-10T23:20:47.940Z - 0.8 - - - https://app.uniswap.org/explore/tokens/ethereum/0xd749b369d361396286f8cc28a99dd3425ac05619 - 2024-07-10T23:20:47.940Z + 2024-05-20T17:20:52.753Z 0.8 \ No newline at end of file diff --git a/apps/web/src/assets/images/extensionIllustration.jpg b/apps/web/src/assets/images/extensionIllustration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48f2bc5f80601a16b60c4598d8792fe3478dcd5f GIT binary patch literal 244079 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 ?-Z50_)#oT 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

    2Y#29tjA=V5FrOF($Q9;HHZy}* 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 literal 0 HcmV?d00001 diff --git a/apps/web/src/assets/images/extensionIllustration.png b/apps/web/src/assets/images/extensionIllustration.png deleted file mode 100644 index 2c53c063430a8597c95d3680178f9d81323e297c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145206 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

    %t;^ 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 zle�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

  • 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 znD

    Er~AUKV2?=p3okuY!ycVe4IO$KYvDPp2UoWK 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 z