diff --git a/.storybook/test-data.js b/.storybook/test-data.js index 0bb5a82fe7bb..590388d2c692 100644 --- a/.storybook/test-data.js +++ b/.storybook/test-data.js @@ -718,12 +718,6 @@ const state = { }, tokenNetworkFilter: {}, }, - incomingTransactionsPreferences: { - [CHAIN_IDS.MAINNET]: true, - [CHAIN_IDS.GOERLI]: false, - [CHAIN_IDS.OPTIMISM_TESTNET]: false, - [CHAIN_IDS.AVALANCHE_TESTNET]: true, - }, firstTimeFlowType: FirstTimeFlowType.create, completedOnboarding: true, knownMethodData: { diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 041b801473be..fc7600918d2a 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Wählen Sie dies aus, um das Hex-Datenfeld auf dem Sendebildschirm anzuzeigen." }, - "showIncomingTransactions": { - "message": "Eingehende Transaktionen anzeigen" - }, - "showIncomingTransactionsDescription": { - "message": "Das hängt von $1 ab, das Zugriff auf Ihre Ethereum-Adresse und Ihre IP-Adresse hat. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Dies hängt bei jedem Netzwerk von unterschiedlichen APIs Dritter ab, die Ihre Ethereum- und IP-Adresse offenlegen." - }, "showLess": { "message": "Weniger anzeigen" }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index c82ccd7f482f..e0c088690095 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Επιλέξτε το για να εμφανιστεί το πεδίο δεκαεξαδικών δεδομένων στην οθόνη αποστολής" }, - "showIncomingTransactions": { - "message": "Εμφάνιση εισερχόμενων συναλλαγών" - }, - "showIncomingTransactionsDescription": { - "message": "Αυτό βασίζεται στο $1, το οποίο θα έχει πρόσβαση στη διεύθυνση Ethereum και τη διεύθυνση IP σας. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Αυτό βασίζεται σε διαφορετικά API τρίτων για κάθε δίκτυο, τα οποία εκθέτουν τη διεύθυνση Ethereum και τη διεύθυνση IP σας." - }, "showLess": { "message": "Εμφάνιση λιγότερων" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 64d39c1a3e04..e1c60ed97458 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -4863,16 +4863,6 @@ "showHexDataDescription": { "message": "Select this to show the hex data field on the send screen" }, - "showIncomingTransactions": { - "message": "Show incoming transactions" - }, - "showIncomingTransactionsDescription": { - "message": "This relies on $1 which will have access to your Ethereum address and your IP address. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "This relies on different third-party APIs for each network, which expose your Ethereum address and your IP address." - }, "showLess": { "message": "Show less" }, diff --git a/app/_locales/en_GB/messages.json b/app/_locales/en_GB/messages.json index 10697facdf79..b603475a1173 100644 --- a/app/_locales/en_GB/messages.json +++ b/app/_locales/en_GB/messages.json @@ -4863,16 +4863,6 @@ "showHexDataDescription": { "message": "Select this to show the hex data field on the send screen" }, - "showIncomingTransactions": { - "message": "Show incoming transactions" - }, - "showIncomingTransactionsDescription": { - "message": "This relies on $1 which will have access to your Ethereum address and your IP address. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "This relies on different third-party APIs for each network, which expose your Ethereum address and your IP address." - }, "showLess": { "message": "Show less" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index eb76c8885d25..a0c8b5c7294d 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío" }, - "showIncomingTransactions": { - "message": "Mostrar transacciones entrantes" - }, - "showIncomingTransactionsDescription": { - "message": "Seleccione esta opción para usar Etherscan para mostrar las transacciones entrantes en la lista de transacciones", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Esto se basa en diferentes API de terceros para cada red, que exponen su dirección Ethereum y su dirección IP." - }, "showLess": { "message": "Mostrar menos" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index 4c89dd3d1890..db4974108bfa 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -1626,13 +1626,6 @@ "showHexDataDescription": { "message": "Seleccione esta opción para mostrar el campo de datos hexadecimales en la pantalla de envío" }, - "showIncomingTransactions": { - "message": "Mostrar transacciones entrantes" - }, - "showIncomingTransactionsDescription": { - "message": "Seleccione esta opción para usar Etherscan para mostrar las transacciones entrantes en la lista de transacciones", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, "showPermissions": { "message": "Mostrar permisos" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index e73e9e380313..8e7b4e1b33ba 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Selectionner ici pour afficher le champs de données hex dans l’écran d’envoi" }, - "showIncomingTransactions": { - "message": "Afficher les transactions entrantes" - }, - "showIncomingTransactionsDescription": { - "message": "Sélectionnez ceci pour utiliser Etherscan afin d’afficher les transactions entrantes dans la liste des transactions", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Ce processus fait appel à différentes API tierces pour chaque réseau et expose ainsi votre adresse Ethereum et votre adresse IP." - }, "showLess": { "message": "Afficher moins" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index a6d70a9bbec5..4be7350fa054 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "भेजने की स्क्रीन पर हेक्स डेटा फील्ड दिखाने के लिए इसको चुनें" }, - "showIncomingTransactions": { - "message": "आने वाले ट्रांसेक्शन दिखाएं" - }, - "showIncomingTransactionsDescription": { - "message": "लेनदेन सूची में आने वाले लेनदेन को दिखाने के लिए Etherscan का उपयोग करने के लिए इसका चयन करें", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "यह हरेक नेटवर्क के लिए अलग-अलग थर्ड-पार्टी API पर निर्भर करता है, जो आपके Ethereum एड्रेस और आपके आईपी ​​एड्रेस को एक्स्पोज़ करता है।" - }, "showLess": { "message": "कम दिखाएं" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 434aec5bb856..4c5e727a0953 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Pilih ini untuk menampilkan bidang data hex di layar kirim" }, - "showIncomingTransactions": { - "message": "Tampilkan transaksi masuk" - }, - "showIncomingTransactionsDescription": { - "message": "Pilih ini untuk menggunakan Etherscan untuk menampilkan transaksi yang masuk di daftar transaksi", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Ini bergantung pada API pihak ketiga yang berbeda untuk setiap jaringan, yang mengungkap alamat Ethereum dan alamat IP Anda." - }, "showLess": { "message": "Ciutkan" }, diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 046be230a4f5..c1ad7b9b0af9 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -1144,13 +1144,6 @@ "showHexDataDescription": { "message": "Seleziona per mostrare il campo dei dati hex nella schermata di invio" }, - "showIncomingTransactions": { - "message": "Mostra Transazioni in Ingresso" - }, - "showIncomingTransactionsDescription": { - "message": "Usa Etherscan per visualizzare le transazioni in ingresso nella lista delle transazioni", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, "showPermissions": { "message": "Mostra permessi" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 544914509b78..4b838dccc1a3 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "これを選択すると、送金画面に16進データフィールドが表示されます" }, - "showIncomingTransactions": { - "message": "受信トランザクションを表示" - }, - "showIncomingTransactionsDescription": { - "message": "これは、ユーザーのイーサリアムアドレスおよびIPアドレスにアクセスする$1に依存します。$2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "これは、ネットワークごとに異なるサードパーティAPIに依存します。これにより、イーサリアムアドレスとIPアドレスが公開されます。" - }, "showLess": { "message": "表示量を減らす" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 4e0c17d5b5ca..fe9d2c5156b9 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "이 항목을 선택하면 보내기 화면에 16진수 데이터 필드가 표시됩니다." }, - "showIncomingTransactions": { - "message": "수신되는 트랜잭션 표시" - }, - "showIncomingTransactionsDescription": { - "message": "이 항목을 선택하면 Etherscan을 사용해 거래 목록에 수신 거래를 표시할 수 있습니다.", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "이는 네트워크마다 다른 제삼자 API에 의존하며, 이더리움 주소와 IP 주소가 노출됩니다." - }, "showLess": { "message": "간략히 보기" }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index 98efbc040e6e..bb033092f475 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -1080,13 +1080,6 @@ "showHexDataDescription": { "message": "Piliin ito para ipakita ang field ng hex data sa screen ng pagpapadala" }, - "showIncomingTransactions": { - "message": "Ipakita ang Mga Papasok na Transaksyon" - }, - "showIncomingTransactionsDescription": { - "message": "Piliin ito para gamitin ang Etherscan sa pagpapakita ng mga papasok na transaksyon sa listahan ng mga transaksyon", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, "showPermissions": { "message": "Ipakita ang mga pahintulot" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index d85ebd2bfd8a..5c60a9ec7057 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Selecione essa opção para exibir o campo de dados hexa na tela de envio" }, - "showIncomingTransactions": { - "message": "Exibir transações recebidas" - }, - "showIncomingTransactionsDescription": { - "message": "Isso depende de $1, que terá acesso ao seu endereço Ethereum e ao seu endereço IP. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Isso depende de diferentes APIs de terceiros para cada rede, o que expõe seu endereço Ethereum e seu endereço IP." - }, "showLess": { "message": "Mostrar menos" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index 9d781a0ec4ab..8edd9c8358b1 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -1626,13 +1626,6 @@ "showHexDataDescription": { "message": "Selecione essa opção para mostrar o campo de dados hexadecimais na tela de envio" }, - "showIncomingTransactions": { - "message": "Mostrar transações recebidas" - }, - "showIncomingTransactionsDescription": { - "message": "Selecione essa opção para usar o Etherscan e mostrar as transações recebidas na lista de transações", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, "showPermissions": { "message": "Mostrar permissões" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 4167cfe776f8..7acd10cd2859 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Выберите эту опцию, чтобы отобразить поле шестнадцатеричных данных на экране отправки" }, - "showIncomingTransactions": { - "message": "Показать входящие транзакции" - }, - "showIncomingTransactionsDescription": { - "message": "Это использует $1, который будет иметь доступ к вашему адресу Ethereum и вашему IP-адресу. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Это базируется на различных сторонних API для каждой сети, которые раскрывают ваш адрес Ethereum и ваш IP-адрес." - }, "showLess": { "message": "Показать меньше" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index e584ba35d5c7..53856e176f71 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Piliin ito para ipakita ang field ng hex na data sa screen ng pagpapadala" }, - "showIncomingTransactions": { - "message": "Ipakita ang mga papasok na transaksyon" - }, - "showIncomingTransactionsDescription": { - "message": "Umaasa ito sa $1 na magkakaroon ng access sa iyong Ethereum address at sa iyong IP address. $2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Ito ay umaasa sa ibang third party na API para sa bawat network, na naglalantad sa iyong address sa Ethereum at iyong IP address." - }, "showLess": { "message": "Magpakita ng mas kaunti" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index 7b92ca7dea77..5678addfc6c5 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Gönder ekranında on altılı veri alanını göstermek için bunu seçin" }, - "showIncomingTransactions": { - "message": "Gelen işlemleri göster" - }, - "showIncomingTransactionsDescription": { - "message": "Etherscan'in işlemler listesinde gelecek işlemleri göstermesi için bunu seçin", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Ethereum adresinizi ve IP adresinizi açığa çıkaran her ağ için farklı üçüncü taraf API'lerine güvenir." - }, "showLess": { "message": "Daha az göster" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 8e5f722201ed..82c48eeebc7e 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "Chọn tùy chọn này để hiển thị trường dữ liệu thập lục phân trên màn hình gửi" }, - "showIncomingTransactions": { - "message": "Hiển thị các giao dịch đến" - }, - "showIncomingTransactionsDescription": { - "message": "Chọn tùy chọn này nếu bạn muốn dùng Etherscan để hiển thị các giao dịch đến trong danh sách giao dịch", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "Điều này dựa trên các API khác nhau của bên thứ ba cho mỗi mạng, có thể làm lộ địa chỉ Ethereum và địa chỉ IP của bạn." - }, "showLess": { "message": "Thu gọn" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 2e7b6806ce31..3768e65c5c99 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -4568,16 +4568,6 @@ "showHexDataDescription": { "message": "选择此项以在发送屏幕上显示十六进制数据字段" }, - "showIncomingTransactions": { - "message": "显示传入的交易" - }, - "showIncomingTransactionsDescription": { - "message": "这取决于$1,即可以访问您的以太坊地址和 IP 地址的网络。$2", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, - "showIncomingTransactionsExplainer": { - "message": "这依赖于每个网络的不同第三方 API,这些 API 会导致您的以太坊地址和 IP 地址被获悉。" - }, "showLess": { "message": "收起" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index b19f99637367..1d6f30d3f441 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -1042,13 +1042,6 @@ "showHexDataDescription": { "message": "在交易時顯示十六進位資料" }, - "showIncomingTransactions": { - "message": "顯示傳入的交易" - }, - "showIncomingTransactionsDescription": { - "message": "選擇此項來利用 Etherscan 在交易列表裡顯示傳入的交易", - "description": "$1 is the link to etherscan url and $2 is the link to the privacy policy of consensys APIs" - }, "showPermissions": { "message": "顯示權限" }, diff --git a/app/scripts/constants/sentry-state.ts b/app/scripts/constants/sentry-state.ts index 7d60c0a4140f..ca5a238a6276 100644 --- a/app/scripts/constants/sentry-state.ts +++ b/app/scripts/constants/sentry-state.ts @@ -242,7 +242,6 @@ export const SENTRY_BACKGROUND_STATE = { featureFlags: true, forgottenPassword: true, identities: false, - incomingTransactionsPreferences: true, isIpfsGatewayEnabled: false, ipfsGateway: false, knownMethodData: false, diff --git a/app/scripts/controller-init/confirmations/transaction-controller-init.test.ts b/app/scripts/controller-init/confirmations/transaction-controller-init.test.ts index 155f41e29ba9..f8a321f2715f 100644 --- a/app/scripts/controller-init/confirmations/transaction-controller-init.test.ts +++ b/app/scripts/controller-init/confirmations/transaction-controller-init.test.ts @@ -115,15 +115,13 @@ describe('Transaction Controller Init', () => { }); describe('determines incoming transactions is enabled', () => { - it('when enabled in preferences and onboarding complete', () => { + it('when useExternalServices is enabled in preferences and onboarding complete', () => { const incomingTransactionsIsEnabled = testConstructorOption( 'incomingTransactions', { state: { completedOnboarding: true, - incomingTransactionsPreferences: { - [CHAIN_ID_MOCK]: true, - }, + useExternalServices: true, }, }, )?.isEnabled; @@ -137,9 +135,7 @@ describe('Transaction Controller Init', () => { { state: { completedOnboarding: false, - incomingTransactionsPreferences: { - [CHAIN_ID_MOCK]: true, - }, + useExternalServices: true, }, }, )?.isEnabled; @@ -153,9 +149,7 @@ describe('Transaction Controller Init', () => { { state: { completedOnboarding: true, - incomingTransactionsPreferences: { - [CHAIN_ID_MOCK]: false, - }, + useExternalServices: false, }, }, )?.isEnabled; diff --git a/app/scripts/controller-init/confirmations/transaction-controller-init.ts b/app/scripts/controller-init/confirmations/transaction-controller-init.ts index cc3c9ab1548d..4f344119b2a6 100644 --- a/app/scripts/controller-init/confirmations/transaction-controller-init.ts +++ b/app/scripts/controller-init/confirmations/transaction-controller-init.ts @@ -106,10 +106,8 @@ export const TransactionControllerInit: ControllerInitFunction< }, includeTokenTransfers: false, isEnabled: () => - preferencesController().state.incomingTransactionsPreferences?.[ - // @ts-expect-error PreferencesController incorrectly expects number index - getGlobalChainId() - ] && onboardingController().state.completedOnboarding, + preferencesController().state.useExternalServices && + onboardingController().state.completedOnboarding, queryEntireHistory: false, updateTransactions: false, }, diff --git a/app/scripts/controllers/preferences-controller.test.ts b/app/scripts/controllers/preferences-controller.test.ts index b07534beddaa..06c28c618a53 100644 --- a/app/scripts/controllers/preferences-controller.test.ts +++ b/app/scripts/controllers/preferences-controller.test.ts @@ -6,7 +6,6 @@ import { AccountsController } from '@metamask/accounts-controller'; import { KeyringControllerStateChangeEvent } from '@metamask/keyring-controller'; import type { MultichainNetworkControllerNetworkDidChangeEvent } from '@metamask/multichain-network-controller'; import { SnapControllerStateChangeEvent } from '@metamask/snaps-controllers'; -import { Hex } from '@metamask/utils'; import { SnapKeyringAccountAssetListUpdatedEvent, SnapKeyringAccountBalancesUpdatedEvent, @@ -499,45 +498,6 @@ describe('preferences controller', () => { }); }); - describe('setIncomingTransactionsPreferences', () => { - const { controller } = setupController({}); - const addedNonTestNetworks = Object.keys(NETWORK_CONFIGURATION_DATA); - - it('should have default value combined', () => { - const { state } = controller; - expect(state.incomingTransactionsPreferences).toStrictEqual({ - [CHAIN_IDS.MAINNET]: true, - [CHAIN_IDS.LINEA_MAINNET]: true, - [NETWORK_CONFIGURATION_DATA[addedNonTestNetworks[0] as Hex].chainId]: - true, - [NETWORK_CONFIGURATION_DATA[addedNonTestNetworks[1] as Hex].chainId]: - true, - [CHAIN_IDS.GOERLI]: true, - [CHAIN_IDS.SEPOLIA]: true, - [CHAIN_IDS.LINEA_SEPOLIA]: true, - }); - }); - - it('should update incomingTransactionsPreferences with given value set', () => { - controller.setIncomingTransactionsPreferences( - CHAIN_IDS.LINEA_MAINNET, - false, - ); - const { state } = controller; - expect(state.incomingTransactionsPreferences).toStrictEqual({ - [CHAIN_IDS.MAINNET]: true, - [CHAIN_IDS.LINEA_MAINNET]: false, - [NETWORK_CONFIGURATION_DATA[addedNonTestNetworks[0] as Hex].chainId]: - true, - [NETWORK_CONFIGURATION_DATA[addedNonTestNetworks[1] as Hex].chainId]: - true, - [CHAIN_IDS.GOERLI]: true, - [CHAIN_IDS.SEPOLIA]: true, - [CHAIN_IDS.LINEA_SEPOLIA]: true, - }); - }); - }); - describe('AccountsController:stateChange subscription', () => { const { controller, messenger, accountsController } = setupController({}); it('sync the identities with the accounts in the accounts controller', () => { diff --git a/app/scripts/controllers/preferences-controller.ts b/app/scripts/controllers/preferences-controller.ts index c671ed167936..64b40b1e6689 100644 --- a/app/scripts/controllers/preferences-controller.ts +++ b/app/scripts/controllers/preferences-controller.ts @@ -6,7 +6,7 @@ import { AccountsControllerSetSelectedAccountAction, AccountsControllerState, } from '@metamask/accounts-controller'; -import { Hex, Json } from '@metamask/utils'; +import { Json } from '@metamask/utils'; import { BaseController, ControllerGetStateAction, @@ -18,10 +18,7 @@ import { ETHERSCAN_SUPPORTED_CHAIN_IDS, type PreferencesState, } from '@metamask/preferences-controller'; -import { - CHAIN_IDS, - IPFS_DEFAULT_GATEWAY_URL, -} from '../../../shared/constants/network'; +import { IPFS_DEFAULT_GATEWAY_URL } from '../../../shared/constants/network'; import { LedgerTransportTypes } from '../../../shared/constants/hardware-wallets'; import { ThemeType } from '../../../shared/constants/preferences'; @@ -31,17 +28,6 @@ type AccountIdentityEntry = { lastSelected?: number; }; -const mainNetworks = { - [CHAIN_IDS.MAINNET]: true, - [CHAIN_IDS.LINEA_MAINNET]: true, -}; - -const testNetworks = { - [CHAIN_IDS.GOERLI]: true, - [CHAIN_IDS.SEPOLIA]: true, - [CHAIN_IDS.LINEA_SEPOLIA]: true, -}; - const controllerName = 'PreferencesController'; /** @@ -148,7 +134,6 @@ export type PreferencesControllerState = Omit< ///: END:ONLY_INCLUDE_IF addSnapAccountEnabled?: boolean; advancedGasFee: Record>; - incomingTransactionsPreferences: Record; knownMethodData: Record; currentLocale: string; forgottenPassword: boolean; @@ -194,10 +179,6 @@ export const getDefaultPreferencesControllerState = ///: END:ONLY_INCLUDE_IF advancedGasFee: {}, featureFlags: {}, - incomingTransactionsPreferences: { - ...mainNetworks, - ...testNetworks, - }, knownMethodData: {}, currentLocale: '', identities: {}, @@ -357,10 +338,6 @@ const controllerMetadata = { persist: true, anonymous: true, }, - incomingTransactionsPreferences: { - persist: true, - anonymous: true, - }, knownMethodData: { persist: true, anonymous: false, @@ -461,27 +438,12 @@ export class PreferencesController extends BaseController< * @param options.state - The initial controller state */ constructor({ messenger, state }: PreferencesControllerOptions) { - const { networkConfigurationsByChainId } = messenger.call( - 'NetworkController:getState', - ); - - const addedNonMainNetwork: Record = Object.values( - networkConfigurationsByChainId ?? {}, - ).reduce((acc: Record, element) => { - acc[element.chainId] = true; - return acc; - }, {}); super({ messenger, metadata: controllerMetadata, name: controllerName, state: { ...getDefaultPreferencesControllerState(), - incomingTransactionsPreferences: { - ...mainNetworks, - ...addedNonMainNetwork, - ...testNetworks, - }, ...state, }, }); @@ -978,20 +940,6 @@ export class PreferencesController extends BaseController< }); } - /** - * A setter for the incomingTransactions in preference to be updated - * - * @param chainId - chainId of the network - * @param value - preference of certain network, true to be enabled - */ - setIncomingTransactionsPreferences(chainId: Hex, value: boolean): void { - const previousValue = this.state.incomingTransactionsPreferences; - const updatedValue = { ...previousValue, [chainId]: value }; - this.update((state) => { - state.incomingTransactionsPreferences = updatedValue; - }); - } - setServiceWorkerKeepAlivePreference(value: boolean): void { this.update((state) => { state.enableMV3TimestampSave = value; diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index aa4fa55e06f6..c9d4ab595340 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -2864,14 +2864,7 @@ export default class MetamaskController extends EventEmitter { this.controllerMessenger.subscribe( 'NetworkController:networkDidChange', async () => { - const filteredChainIds = this.#getAllAddedNetworks().filter( - (networkId) => - this.preferencesController.state.incomingTransactionsPreferences[ - networkId - ], - ); - - if (filteredChainIds.length > 0) { + if (this.preferencesController.state.useExternalServices === true) { this.txController.stopIncomingTransactionPolling(); await this.txController.updateIncomingTransactions(); @@ -3376,10 +3369,6 @@ export default class MetamaskController extends EventEmitter { setCurrentLocale: preferencesController.setCurrentLocale.bind( preferencesController, ), - setIncomingTransactionsPreferences: - preferencesController.setIncomingTransactionsPreferences.bind( - preferencesController, - ), setServiceWorkerKeepAlivePreference: preferencesController.setServiceWorkerKeepAlivePreference.bind( preferencesController, @@ -8106,16 +8095,9 @@ export default class MetamaskController extends EventEmitter { } #restartSmartTransactionPoller() { - const filteredChainIds = this.#getAllAddedNetworks().filter( - (networkId) => - this.preferencesController.state.incomingTransactionsPreferences[ - networkId - ], - ); - - if (filteredChainIds.length > 0) { + if (this.preferencesController.state.useExternalServices === true) { this.txController.stopIncomingTransactionPolling(); - this.txController.startIncomingTransactionPolling(filteredChainIds); + this.txController.startIncomingTransactionPolling(); } } diff --git a/app/scripts/metamask-controller.test.js b/app/scripts/metamask-controller.test.js index 5250dd9f09be..7cb09b044457 100644 --- a/app/scripts/metamask-controller.test.js +++ b/app/scripts/metamask-controller.test.js @@ -3577,15 +3577,13 @@ describe('MetaMaskController', () => { }); describe('incoming transactions', () => { - it('starts incoming transaction polling if incomingTransactionsPreferences is enabled for that chainId', async () => { + it('starts incoming transaction polling if useExternalServices is enabled for that chainId', async () => { expect( TransactionController.prototype.startIncomingTransactionPolling, ).not.toHaveBeenCalled(); await simulatePreferencesChange({ - incomingTransactionsPreferences: { - [MAINNET_CHAIN_ID]: true, - }, + useExternalServices: true, }); expect( @@ -3593,15 +3591,13 @@ describe('MetaMaskController', () => { ).toHaveBeenCalledTimes(1); }); - it('stops incoming transaction polling if incomingTransactionsPreferences is disabled for that chainId', async () => { + it('stops incoming transaction polling if useExternalServices is disabled for that chainId', async () => { expect( TransactionController.prototype.stopIncomingTransactionPolling, ).not.toHaveBeenCalled(); await simulatePreferencesChange({ - incomingTransactionsPreferences: { - [MAINNET_CHAIN_ID]: false, - }, + useExternalServices: false, }); expect( diff --git a/app/scripts/migrations/151.test.ts b/app/scripts/migrations/151.test.ts new file mode 100644 index 000000000000..adcf814779a4 --- /dev/null +++ b/app/scripts/migrations/151.test.ts @@ -0,0 +1,54 @@ +import { migrate, version } from './151'; + +const oldVersion = 150; + +describe(`migration #${version}`, () => { + it('updates the version metadata', async () => { + const oldStorage = { + meta: { version: oldVersion }, + data: {}, + }; + const newStorage = await migrate(oldStorage); + expect(newStorage.meta).toStrictEqual({ version }); + }); + + describe(`migration #${version}`, () => { + it('removes the incomingTransactionsPreferences from PreferencesController state', async () => { + const oldStorage = { + meta: { version: oldVersion }, + data: { + PreferencesController: { + incomingTransactionsPreferences: { 0x1: true }, + }, + }, + }; + const expectedData = { + PreferencesController: {}, + }; + const newStorage = await migrate(oldStorage); + + expect(newStorage.data).toStrictEqual(expectedData); + }); + + it('does nothing to other PreferencesController state if incomingTransactionsPreferences is not set', async () => { + const oldStorage = { + meta: { version: oldVersion }, + data: { + PreferencesController: { + existingPreference: true, + }, + }, + }; + + const expectedData = { + PreferencesController: { + existingPreference: true, + }, + }; + + const newStorage = await migrate(oldStorage); + + expect(newStorage.data).toStrictEqual(expectedData); + }); + }); +}); diff --git a/app/scripts/migrations/151.ts b/app/scripts/migrations/151.ts new file mode 100644 index 000000000000..5f6925643166 --- /dev/null +++ b/app/scripts/migrations/151.ts @@ -0,0 +1,37 @@ +import { cloneDeep } from 'lodash'; + +type VersionedData = { + meta: { version: number }; + data: Record; +}; + +export const version = 151; + +/** + * This migration deletes the preference `petnamesEnabled` if the user has + * existing data. + * + * @param originalVersionedData - Versioned MetaMask extension state, exactly + * what we persist to dist. + * @param originalVersionedData.meta - State metadata. + * @param originalVersionedData.meta.version - The current state version. + * @param originalVersionedData.data - The persisted MetaMask state, keyed by + * controller. + * @returns Updated versioned MetaMask extension state. + */ +export async function migrate( + originalVersionedData: VersionedData, +): Promise { + const versionedData = cloneDeep(originalVersionedData); + versionedData.meta.version = version; + transformState(versionedData.data); + return versionedData; +} + +function transformState(state: Record) { + const preferencesControllerState = state?.PreferencesController as + | Record + | undefined; + + delete preferencesControllerState?.incomingTransactionsPreferences; +} diff --git a/app/scripts/migrations/index.js b/app/scripts/migrations/index.js index 616cdbe13e5c..28130ee27776 100644 --- a/app/scripts/migrations/index.js +++ b/app/scripts/migrations/index.js @@ -177,6 +177,7 @@ const migrations = [ require('./148'), require('./149'), require('./150'), + require('./151'), ]; export default migrations; diff --git a/test/data/mock-state.json b/test/data/mock-state.json index c1b2c3e83f61..92dcf0ee29b8 100644 --- a/test/data/mock-state.json +++ b/test/data/mock-state.json @@ -733,14 +733,6 @@ } } }, - "incomingTransactionsPreferences": { - "0x1": true, - "0xe708": false, - "0xfa": true, - "0x5": false, - "0xaa36a7": true, - "0xe704": true - }, "selectedAddress": "0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc", "accounts": { "0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc": { diff --git a/test/e2e/fixture-builder.js b/test/e2e/fixture-builder.js index 450bbbff2dc6..cd08a2316676 100644 --- a/test/e2e/fixture-builder.js +++ b/test/e2e/fixture-builder.js @@ -237,6 +237,12 @@ class FixtureBuilder { }); } + withUseBasicFunctionalityEnabled() { + return this.withPreferencesController({ + useExternalServices: true, + }); + } + withGasFeeController(data) { merge(this.fixture.data.GasFeeController, data); return this; @@ -1633,14 +1639,6 @@ class FixtureBuilder { }); } - withIncomingTransactionsPreferences(incomingTransactionsPreferences) { - return this.withPreferencesController({ - featureFlags: { - showIncomingTransactions: incomingTransactionsPreferences, - }, - }); - } - withIncomingTransactionsCache(cache) { return this.withTransactionController({ lastFetchedBlockNumbers: cache }); } diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json index 01af4af1f45e..8dbc94ef008b 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-background-state.json @@ -238,7 +238,6 @@ "addSnapAccountEnabled": "boolean", "advancedGasFee": {}, "featureFlags": {}, - "incomingTransactionsPreferences": {}, "knownMethodData": "object", "currentLocale": "en", "identities": "object", diff --git a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json index 114c27bf52c7..9a60333478fc 100644 --- a/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json +++ b/test/e2e/tests/metrics/state-snapshots/errors-after-init-opt-in-ui-state.json @@ -190,7 +190,6 @@ "bitcoinTestnetSupportEnabled": "boolean", "addSnapAccountEnabled": "boolean", "advancedGasFee": {}, - "incomingTransactionsPreferences": {}, "identities": "object", "lostIdentities": "object", "forgottenPassword": false, diff --git a/test/e2e/tests/transaction/incoming-transactions.spec.ts b/test/e2e/tests/transaction/incoming-transactions.spec.ts index e6c4cf6896cd..fe315e613d52 100644 --- a/test/e2e/tests/transaction/incoming-transactions.spec.ts +++ b/test/e2e/tests/transaction/incoming-transactions.spec.ts @@ -90,7 +90,7 @@ describe('Incoming Transactions', function () { await withFixtures( { fixtures: new FixtureBuilder() - .withIncomingTransactionsPreferences(true) + .withUseBasicFunctionalityEnabled() .build(), title: this.test?.fullTitle(), testSpecificMock: mockAccountsApi, @@ -112,7 +112,7 @@ describe('Incoming Transactions', function () { await withFixtures( { fixtures: new FixtureBuilder() - .withIncomingTransactionsPreferences(true) + .withUseBasicFunctionalityEnabled() .build(), title: this.test?.fullTitle(), testSpecificMock: (server: Mockttp) => @@ -134,7 +134,7 @@ describe('Incoming Transactions', function () { await withFixtures( { fixtures: new FixtureBuilder() - .withIncomingTransactionsPreferences(true) + .withUseBasicFunctionalityEnabled() .build(), title: this.test?.fullTitle(), testSpecificMock: (server: Mockttp) => @@ -153,7 +153,7 @@ describe('Incoming Transactions', function () { await withFixtures( { fixtures: new FixtureBuilder() - .withIncomingTransactionsPreferences(false) + .withUseBasicFunctionalityDisabled() .build(), title: this.test?.fullTitle(), testSpecificMock: mockAccountsApi, @@ -170,7 +170,7 @@ describe('Incoming Transactions', function () { await withFixtures( { fixtures: new FixtureBuilder() - .withIncomingTransactionsPreferences(true) + .withUseBasicFunctionalityEnabled() .withTransactions([ { hash: RESPONSE_STANDARD_MOCK.hash, diff --git a/test/integration/data/integration-init-state.json b/test/integration/data/integration-init-state.json index 1e2be7ff911b..70f04d568575 100644 --- a/test/integration/data/integration-init-state.json +++ b/test/integration/data/integration-init-state.json @@ -482,14 +482,6 @@ }, "ignoredNfts": [], "ignoredTokens": [], - "incomingTransactionsPreferences": { - "0x1": true, - "0xe708": false, - "0xfa": true, - "0x5": false, - "0xaa36a7": false, - "0xe704": true - }, "internalAccounts": { "accounts": { "cf8dace4-9439-4bd4-b3a8-88c821c8fcb3": { diff --git a/test/integration/data/onboarding-completion-route.json b/test/integration/data/onboarding-completion-route.json index ecdac6b9b7ec..e4e8be0a204f 100644 --- a/test/integration/data/onboarding-completion-route.json +++ b/test/integration/data/onboarding-completion-route.json @@ -117,13 +117,6 @@ }, "ignoredNfts": [], "ignoredTokens": [], - "incomingTransactionsPreferences": { - "0x1": true, - "0xe708": true, - "0x5": true, - "0xaa36a7": true, - "0xe705": true - }, "interfaces": {}, "internalAccounts": { "accounts": { diff --git a/ui/components/app/app-components.scss b/ui/components/app/app-components.scss index 40ba76371dc7..cc6511f42235 100644 --- a/ui/components/app/app-components.scss +++ b/ui/components/app/app-components.scss @@ -40,7 +40,6 @@ @import 'modals/index'; @import 'multiple-notifications/index'; @import 'network-display/index'; -@import 'incoming-trasaction-toggle/network-toggle'; @import 'permission-page-container/index'; @import 'permissions-connect-header/index'; @import 'permissions-connect-permission-list/index'; diff --git a/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap b/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap deleted file mode 100644 index bc268b8cbb73..000000000000 --- a/ui/components/app/incoming-trasaction-toggle/__snapshots__/incoming-transaction-toggle.test.js.snap +++ /dev/null @@ -1,621 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`IncomingTransactionToggle should render existing incoming transaction preferences 1`] = ` -
-
-

- Show incoming transactions -

-

- This relies on different third-party APIs for each network, which expose your Ethereum address and your IP address. -

-
-
-
- Ethereum Mainnet logo -
-
-

- Ethereum Mainnet -

-

- - Etherscan.io - -

-
-
-
-