diff --git a/packages/network-connection-banner-controller/CHANGELOG.md b/packages/network-connection-banner-controller/CHANGELOG.md index 231346f7838..998b96182d3 100644 --- a/packages/network-connection-banner-controller/CHANGELOG.md +++ b/packages/network-connection-banner-controller/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **BREAKING:** `NetworkConnectionBannerControllerMessenger` now requires `ClientController:stateChange` to be delegated instead of `ClientController:stateChanged` ([#9893](https://github.com/MetaMask/core/pull/9893)) - Bump `@metamask/network-controller` from `^35.0.0` to `^35.0.1` ([#9758](https://github.com/MetaMask/core/pull/9758)) - Bump `@metamask/network-enablement-controller` from `^6.0.1` to `^6.0.3` ([#9740](https://github.com/MetaMask/core/pull/9740), [#9791](https://github.com/MetaMask/core/pull/9791)) - Bump `@metamask/keyring-controller` from `^27.1.0` to `^27.1.1` ([#9791](https://github.com/MetaMask/core/pull/9791)) diff --git a/packages/network-connection-banner-controller/README.md b/packages/network-connection-banner-controller/README.md index 7a0372d3391..c17ce310bd5 100644 --- a/packages/network-connection-banner-controller/README.md +++ b/packages/network-connection-banner-controller/README.md @@ -13,7 +13,7 @@ from the same failure start and must be greater than the degraded one. The controller stays dormant after construction so the 5s / 30s escalation timers do not run before a user is actually looking at the wallet (e.g. while the app is still on the lock screen). It manages its own lifecycle by -subscribing to `ClientController:stateChanged` and +subscribing to `ClientController:stateChange` and `KeyringController:unlock` / `KeyringController:lock`: evaluation runs only while the client UI is open on an unlocked wallet. When either condition stops holding, pending timers are cancelled and the banner state resets to diff --git a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts index efc25f75282..847118212e0 100644 --- a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts +++ b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.test.ts @@ -1843,7 +1843,8 @@ async function withController( 'NetworkEnablementController:stateChange', // eslint-disable-next-line no-restricted-syntax -- awaiting upstream :stateChanged migration 'ConnectivityController:stateChange', - 'ClientController:stateChanged', + // eslint-disable-next-line no-restricted-syntax -- awaiting upstream :stateChanged migration + 'ClientController:stateChange', 'KeyringController:unlock', 'KeyringController:lock', ], @@ -1857,7 +1858,7 @@ async function withController( }); const setUiOpen = (isUiOpen: boolean): void => { - rootMessenger.publish('ClientController:stateChanged', { isUiOpen }, []); + rootMessenger.publish('ClientController:stateChange', { isUiOpen }, []); }; const setKeyringUnlocked = (isUnlocked: boolean): void => { rootMessenger.publish( diff --git a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts index f3cc67e8079..a3bbdd023e9 100644 --- a/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts +++ b/packages/network-connection-banner-controller/src/NetworkConnectionBannerController.ts @@ -5,7 +5,7 @@ import type { } from '@metamask/base-controller'; import { BaseController } from '@metamask/base-controller'; import { clientControllerSelectors } from '@metamask/client-controller'; -import type { ClientControllerState } from '@metamask/client-controller'; +import type { ClientControllerStateChangeEvent } from '@metamask/client-controller'; import { CONNECTIVITY_STATUSES, connectivityControllerSelectors, @@ -264,16 +264,6 @@ export type NetworkConnectionBannerControllerStateChangedEvent = export type NetworkConnectionBannerControllerEvents = NetworkConnectionBannerControllerStateChangedEvent; -/** - * Published when the state of `ClientController` changes. Defined here - * because the `client-controller` package still exports the legacy - * `:stateChange` event type. - */ -type ClientControllerStateChangedEvent = ControllerStateChangedEvent< - 'ClientController', - ClientControllerState ->; - /** * Events from other messengers that * {@link NetworkConnectionBannerControllerMessenger} subscribes to. @@ -282,7 +272,7 @@ type AllowedEvents = | NetworkControllerStateChangeEvent | NetworkEnablementControllerStateChangeEvent | ConnectivityControllerStateChangeEvent - | ClientControllerStateChangedEvent + | ClientControllerStateChangeEvent | KeyringControllerUnlockEvent | KeyringControllerLockEvent; @@ -474,7 +464,8 @@ export class NetworkConnectionBannerController extends BaseController< // Lifecycle: evaluate RPC health (and run the banner escalation timers) // only while the client UI is open on an unlocked wallet. this.messenger.subscribe( - 'ClientController:stateChanged', + // eslint-disable-next-line no-restricted-syntax -- awaiting upstream :stateChanged migration + 'ClientController:stateChange', (isUiOpen) => { this.#isUiOpen = isUiOpen; this.#updateLifecycle();