From bbbea84c305be044ed1435fb6005ee6f1b4b2c76 Mon Sep 17 00:00:00 2001 From: Jongsun Suh Date: Thu, 15 Feb 2024 14:09:34 -0500 Subject: [PATCH] stash --- .../src/TokenDetectionController.ts | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/assets-controllers/src/TokenDetectionController.ts b/packages/assets-controllers/src/TokenDetectionController.ts index e570cce454f..c0f3b54fafb 100644 --- a/packages/assets-controllers/src/TokenDetectionController.ts +++ b/packages/assets-controllers/src/TokenDetectionController.ts @@ -1,4 +1,7 @@ -import type { AccountsControllerSelectedAccountChangeEvent } from '@metamask/accounts-controller'; +import type { + AccountsControllerGetSelectedAccountAction, + AccountsControllerSelectedAccountChangeEvent, +} from '@metamask/accounts-controller'; import type { RestrictedControllerMessenger, ControllerGetStateAction, @@ -19,6 +22,7 @@ import type { NetworkClientId, NetworkControllerNetworkDidChangeEvent, NetworkControllerGetNetworkConfigurationByNetworkClientId, + NetworkControllerGetNetworkClientByIdAction, } from '@metamask/network-controller'; import { StaticIntervalPollingController } from '@metamask/polling-controller'; import type { @@ -95,7 +99,9 @@ export type TokenDetectionControllerActions = TokenDetectionControllerGetStateAction; export type AllowedActions = + | AccountsControllerGetSelectedAccountAction | NetworkControllerGetNetworkConfigurationByNetworkClientId + | NetworkControllerGetNetworkClientByIdAction | GetTokenListState | KeyringControllerGetStateAction | PreferencesControllerGetStateAction @@ -130,7 +136,7 @@ export type TokenDetectionControllerMessenger = RestrictedControllerMessenger< * @property chainId - The chain ID of the current network * @property selectedAddress - Vault selected address * @property networkClientId - The network client ID of the current selected network - * @property disabled - Boolean to track if network requests are blocked + * @property disableLegacyInterval - Boolean to track if network requests are blocked * @property isUnlocked - Boolean to track if the keyring state is unlocked * @property isDetectionEnabledFromPreferences - Boolean to track if detection is enabled from PreferencesController * @property isDetectionEnabledForNetwork - Boolean to track if detected is enabled for current network @@ -148,7 +154,7 @@ export class TokenDetectionController extends StaticIntervalPollingController< #networkClientId: NetworkClientId; - #disabled: boolean; + #disableLegacyInterval: boolean; #isUnlocked: boolean; @@ -173,7 +179,7 @@ export class TokenDetectionController extends StaticIntervalPollingController< * * @param options - The controller options. * @param options.messenger - The controller messaging system. - * @param options.disabled - If set to true, all network requests are blocked. + * @param options.disableLegacyInterval - If set to true, all network requests are blocked. * @param options.interval - Polling interval used to fetch new token rates * @param options.networkClientId - The selected network client ID of the current network * @param options.selectedAddress - Vault selected address @@ -184,7 +190,7 @@ export class TokenDetectionController extends StaticIntervalPollingController< networkClientId, selectedAddress = '', interval = DEFAULT_INTERVAL, - disabled = true, + disableLegacyInterval = true, getBalancesInSingleCall, trackMetaMetricsEvent, messenger, @@ -192,7 +198,7 @@ export class TokenDetectionController extends StaticIntervalPollingController< networkClientId: NetworkClientId; selectedAddress?: string; interval?: number; - disabled?: boolean; + disableLegacyInterval?: boolean; getBalancesInSingleCall: AssetsContractController['getBalancesInSingleCall']; trackMetaMetricsEvent: (options: { event: string; @@ -212,11 +218,16 @@ export class TokenDetectionController extends StaticIntervalPollingController< metadata: {}, }); - this.#disabled = disabled; - this.setIntervalLength(interval); + this.#disableLegacyInterval = disableLegacyInterval; + if (!this.#disableLegacyInterval) { + this.setIntervalLength(interval); + } this.#networkClientId = networkClientId; - this.#selectedAddress = selectedAddress; + this.#selectedAddress = + selectedAddress ?? + this.messagingSystem.call('AccountsController:getSelectedAccount') + .address; this.#chainId = this.#getCorrectChainId(networkClientId); const { useTokenDetection: defaultUseTokenDetection } = @@ -326,14 +337,14 @@ export class TokenDetectionController extends StaticIntervalPollingController< * Allows controller to make active and passive polling requests */ enable() { - this.#disabled = false; + this.#disableLegacyInterval = false; } /** * Blocks controller from making network calls */ disable() { - this.#disabled = true; + this.#disableLegacyInterval = true; } /** @@ -342,7 +353,7 @@ export class TokenDetectionController extends StaticIntervalPollingController< * @type {object} */ get isActive() { - return !this.#disabled && this.#isUnlocked; + return !this.#disableLegacyInterval && this.#isUnlocked; } /** @@ -398,8 +409,8 @@ export class TokenDetectionController extends StaticIntervalPollingController< return; } await this.detectTokens({ + ...options, networkClientId, - accountAddress: options.address, }); }