Skip to content

Commit 4b89590

Browse files
committed
feat(backend-platform): add feature flag
1 parent f354f4c commit 4b89590

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

packages/backend-platform/src/WebsocketService.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export type WebSocketServiceOptions = {
6161

6262
/** Request timeout in milliseconds (default: 30000) */
6363
requestTimeout?: number;
64+
65+
/** Optional callback to determine if connection should be enabled (default: always enabled) */
66+
enabledCallback?: () => boolean;
6467
};
6568

6669
/**
@@ -216,7 +219,9 @@ export class WebSocketService {
216219

217220
readonly #messenger: WebSocketServiceMessenger;
218221

219-
readonly #options: Required<Omit<WebSocketServiceOptions, 'messenger'>>;
222+
readonly #options: Required<Omit<WebSocketServiceOptions, 'messenger' | 'enabledCallback'>>;
223+
224+
readonly #enabledCallback: (() => boolean) | undefined;
220225

221226
#ws: WebSocket | undefined;
222227

@@ -269,6 +274,7 @@ export class WebSocketService {
269274
*/
270275
constructor(options: WebSocketServiceOptions) {
271276
this.#messenger = options.messenger;
277+
this.#enabledCallback = options.enabledCallback;
272278

273279
this.#options = {
274280
url: options.url,
@@ -291,6 +297,12 @@ export class WebSocketService {
291297
* @returns Promise that resolves when connection is established
292298
*/
293299
async connect(): Promise<void> {
300+
// Check if connection is enabled via callback
301+
if (this.#enabledCallback && !this.#enabledCallback()) {
302+
console.log(`[${SERVICE_NAME}] Connection disabled by enabledCallback - skipping connect`);
303+
return;
304+
}
305+
294306
// If already connected, return immediately
295307
if (this.#state === WebSocketState.CONNECTED) {
296308
return;
@@ -1045,6 +1057,12 @@ export class WebSocketService {
10451057
);
10461058

10471059
this.#reconnectTimer = setTimeout(() => {
1060+
// Check if connection is still enabled before reconnecting
1061+
if (this.#enabledCallback && !this.#enabledCallback()) {
1062+
console.log(`[${SERVICE_NAME}] Reconnection disabled by enabledCallback - skipping attempt #${this.#reconnectAttempts}`);
1063+
return;
1064+
}
1065+
10481066
console.log(
10491067
`🔄 ${delay}ms delay elapsed - starting reconnection attempt #${this.#reconnectAttempts}...`,
10501068
);

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2705,13 +2705,13 @@ __metadata:
27052705

27062706
"@metamask/backend-platform@file:../backend-platform::locator=%40metamask%2Fassets-controllers%40workspace%3Apackages%2Fassets-controllers":
27072707
version: 0.0.0
2708-
resolution: "@metamask/backend-platform@file:../backend-platform#../backend-platform::hash=ce9a5a&locator=%40metamask%2Fassets-controllers%40workspace%3Apackages%2Fassets-controllers"
2708+
resolution: "@metamask/backend-platform@file:../backend-platform#../backend-platform::hash=95755c&locator=%40metamask%2Fassets-controllers%40workspace%3Apackages%2Fassets-controllers"
27092709
dependencies:
27102710
"@metamask/base-controller": "npm:^8.3.0"
27112711
"@metamask/controller-utils": "npm:^11.12.0"
27122712
"@metamask/utils": "npm:^11.4.2"
27132713
uuid: "npm:^8.3.2"
2714-
checksum: 10/3ba2470b3b9697f35514cbebbcb10b52f0608408ef89a2086420777cce67aaa1f60d0a0d2642bc9f9e5d6adc77d87a599b7f1e23662bab3e7d4a4216fe466e1d
2714+
checksum: 10/dc21aafa1b8af547ea2b282e62eca799d0a8cde50968bfaa7ca1cd8d4c770a6f0cdd85175c332fd45226a57aba52997cd029aa85acfb4e0444fa7631b7429fc9
27152715
languageName: node
27162716
linkType: hard
27172717

@@ -2736,7 +2736,7 @@ __metadata:
27362736
languageName: unknown
27372737
linkType: soft
27382738

2739-
"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.3.0, @metamask/base-controller@workspace:packages/base-controller":
2739+
"@metamask/base-controller@npm:^8.0.1, @metamask/base-controller@npm:^8.3.0, @metamask/base-controller@npm:^8.4.0, @metamask/base-controller@workspace:packages/base-controller":
27402740
version: 0.0.0-use.local
27412741
resolution: "@metamask/base-controller@workspace:packages/base-controller"
27422742
dependencies:
@@ -2920,7 +2920,7 @@ __metadata:
29202920
languageName: node
29212921
linkType: hard
29222922

2923-
"@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.14.0, @metamask/controller-utils@workspace:packages/controller-utils":
2923+
"@metamask/controller-utils@npm:^11.10.0, @metamask/controller-utils@npm:^11.12.0, @metamask/controller-utils@npm:^11.14.0, @metamask/controller-utils@workspace:packages/controller-utils":
29242924
version: 0.0.0-use.local
29252925
resolution: "@metamask/controller-utils@workspace:packages/controller-utils"
29262926
dependencies:

0 commit comments

Comments
 (0)