Skip to content

Commit ef1a58a

Browse files
committed
feat: register NetworkConnectionBannerController in metamask-controller
1 parent 5d1c36d commit ef1a58a

9 files changed

Lines changed: 92 additions & 1 deletion

File tree

app/scripts/messenger-client-init/controller-list.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import {
8787
import { ClaimsController, ClaimsService } from '@metamask/claims-controller';
8888
import { ClientController } from '@metamask/client-controller';
8989
import { ConnectivityController } from '@metamask/connectivity-controller';
90+
import { NetworkConnectionBannerController } from '@metamask/network-connection-banner-controller';
9091
import {
9192
ProfileMetricsController,
9293
ProfileMetricsService,
@@ -233,7 +234,8 @@ export type MessengerClient =
233234
| StaticAssetsController
234235
| ProfileMetricsController
235236
| ProfileMetricsService
236-
| ConnectivityController;
237+
| ConnectivityController
238+
| NetworkConnectionBannerController;
237239

238240
/**
239241
* Flat state object for all messenger clients supporting or required by modular initialization.

app/scripts/messenger-client-init/messengers/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import {
9292
getSubscriptionControllerMessenger,
9393
} from './subscription';
9494
import { getConnectivityControllerMessenger } from './connectivity';
95+
import { getNetworkConnectionBannerControllerMessenger } from './network-connection-banner';
9596
import { getGatorPermissionsControllerMessenger } from './gator-permissions/gator-permissions-controller-messenger';
9697
import { getMetaMetricsControllerMessenger } from './metametrics-controller-messenger';
9798
import { getUserStorageControllerInitMessenger } from './identity/user-storage-controller-messenger';
@@ -402,6 +403,10 @@ export const MESSENGER_FACTORIES = {
402403
getMessenger: getConnectivityControllerMessenger,
403404
getInitMessenger: noop,
404405
},
406+
NetworkConnectionBannerController: {
407+
getMessenger: getNetworkConnectionBannerControllerMessenger,
408+
getInitMessenger: noop,
409+
},
405410
ClaimsController: {
406411
getMessenger: getClaimsControllerMessenger,
407412
getInitMessenger: getClaimsControllerInitMessenger,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { getNetworkConnectionBannerControllerMessenger } from './network-connection-banner-controller-messenger';
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import {
2+
Messenger,
3+
type MessengerActions,
4+
type MessengerEvents,
5+
} from '@metamask/messenger';
6+
import type { NetworkConnectionBannerControllerMessenger } from '@metamask/network-connection-banner-controller';
7+
import { RootMessenger } from '../../../lib/messenger';
8+
9+
/**
10+
* Get a messenger for the NetworkConnectionBannerController.
11+
*
12+
* @param messenger - The root messenger.
13+
* @returns The messenger for NetworkConnectionBannerController.
14+
*/
15+
export function getNetworkConnectionBannerControllerMessenger(
16+
messenger: RootMessenger<
17+
MessengerActions<NetworkConnectionBannerControllerMessenger>,
18+
MessengerEvents<NetworkConnectionBannerControllerMessenger>
19+
>,
20+
): NetworkConnectionBannerControllerMessenger {
21+
const controllerMessenger: NetworkConnectionBannerControllerMessenger =
22+
new Messenger({
23+
namespace: 'NetworkConnectionBannerController',
24+
parent: messenger,
25+
});
26+
return controllerMessenger;
27+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { NetworkConnectionBannerControllerInit } from './network-connection-banner-controller-init';
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import {
2+
NetworkConnectionBannerController,
3+
type NetworkConnectionBannerControllerMessenger,
4+
} from '@metamask/network-connection-banner-controller';
5+
6+
import { MessengerClientInitFunction } from '../types';
7+
8+
/**
9+
* Initialize the NetworkConnectionBannerController.
10+
*
11+
* Encapsulates the show/hide rule and 5s/30s timer state machine for the
12+
* "Still connecting" / "Unable to connect" banner. Subscribes to
13+
* NetworkController, NetworkEnablementController, and ConnectivityController
14+
* state via the messenger.
15+
*
16+
* @param request - The controller init request.
17+
* @param request.controllerMessenger - The messenger for the controller.
18+
* @returns The controller init result.
19+
*/
20+
export const NetworkConnectionBannerControllerInit: MessengerClientInitFunction<
21+
NetworkConnectionBannerController,
22+
NetworkConnectionBannerControllerMessenger
23+
> = (request) => {
24+
const { controllerMessenger } = request;
25+
26+
const messengerClient = new NetworkConnectionBannerController({
27+
messenger: controllerMessenger,
28+
});
29+
30+
return {
31+
messengerClient,
32+
persistedStateKey: null,
33+
};
34+
};

app/scripts/metamask-controller.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ import {
404404
SubscriptionServiceInit,
405405
} from './messenger-client-init/subscription';
406406
import { ConnectivityControllerInit } from './messenger-client-init/connectivity';
407+
import { NetworkConnectionBannerControllerInit } from './messenger-client-init/network-connection-banner';
407408
import { AccountTrackerControllerInit } from './messenger-client-init/account-tracker-controller-init';
408409
import { OnboardingControllerInit } from './messenger-client-init/onboarding-controller-init';
409410
import { RemoteFeatureFlagControllerInit } from './messenger-client-init/remote-feature-flag-controller-init';
@@ -699,6 +700,7 @@ export default class MetamaskController extends EventEmitter {
699700
SubscriptionController: SubscriptionControllerInit,
700701
SubscriptionService: SubscriptionServiceInit,
701702
ConnectivityController: ConnectivityControllerInit,
703+
NetworkConnectionBannerController: NetworkConnectionBannerControllerInit,
702704
NetworkOrderController: NetworkOrderControllerInit,
703705
ShieldController: ShieldControllerInit,
704706
ClaimsController: ClaimsControllerInit,

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@
161161
"yarn-binary:hydrate": "corepack hydrate .yarn/yarn-corepack.tgz --activate"
162162
},
163163
"resolutions": {
164+
"@metamask/network-connection-banner-controller": "npm:@metamask-previews/network-connection-banner-controller@0.1.0-preview-7507a11",
164165
"@metamask/bridge-controller": "73.2.0",
165166
"@metamask/messenger@npm:^0.3.0": "^1.2.0",
166167
"@metamask/network-controller": "32.0.0",
@@ -399,6 +400,7 @@
399400
"@metamask/multichain-network-controller": "^3.1.0",
400401
"@metamask/multichain-transactions-controller": "^7.1.0",
401402
"@metamask/name-controller": "^9.1.0",
403+
"@metamask/network-connection-banner-controller": "^0.1.0",
402404
"@metamask/network-controller": "^32.0.0",
403405
"@metamask/network-enablement-controller": "^5.3.0",
404406
"@metamask/notification-services-controller": "^23.1.0",

yarn.lock

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7304,6 +7304,22 @@ __metadata:
73047304
languageName: node
73057305
linkType: hard
73067306

7307+
"@metamask/network-connection-banner-controller@npm:@metamask-previews/network-connection-banner-controller@0.1.0-preview-7507a11":
7308+
version: 0.1.0-preview-7507a11
7309+
resolution: "@metamask-previews/network-connection-banner-controller@npm:0.1.0-preview-7507a11"
7310+
dependencies:
7311+
"@metamask/base-controller": "npm:^9.1.0"
7312+
"@metamask/connectivity-controller": "npm:^0.2.0"
7313+
"@metamask/messenger": "npm:^1.2.0"
7314+
"@metamask/network-controller": "npm:^32.0.0"
7315+
"@metamask/network-enablement-controller": "npm:^5.3.0"
7316+
"@metamask/utils": "npm:^11.9.0"
7317+
ip-regex: "npm:^4.3.0"
7318+
psl: "npm:^1.15.0"
7319+
checksum: 10/a3a8bb5f0e14aa503c72ed4d0b16ebd1763817bbdf3fb04f5dc4c6156ca8c0f02284fe73989676043b48fc198c366b6171f369fbafd1ceb906b397ccc22dcd11
7320+
languageName: node
7321+
linkType: hard
7322+
73077323
"@metamask/network-controller@npm:32.0.0":
73087324
version: 32.0.0
73097325
resolution: "@metamask/network-controller@npm:32.0.0"
@@ -33261,6 +33277,7 @@ __metadata:
3326133277
"@metamask/multichain-network-controller": "npm:^3.1.0"
3326233278
"@metamask/multichain-transactions-controller": "npm:^7.1.0"
3326333279
"@metamask/name-controller": "npm:^9.1.0"
33280+
"@metamask/network-connection-banner-controller": "npm:^0.1.0"
3326433281
"@metamask/network-controller": "npm:^32.0.0"
3326533282
"@metamask/network-enablement-controller": "npm:^5.3.0"
3326633283
"@metamask/notification-services-controller": "npm:^23.1.0"

0 commit comments

Comments
 (0)