Skip to content

Commit 39278b9

Browse files
committed
Use WeakRef
1 parent 2911ac7 commit 39278b9

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

packages/selected-network-controller/src/SelectedNetworkController.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ export class SelectedNetworkController extends BaseController<
113113
SelectedNetworkControllerState,
114114
SelectedNetworkControllerMessenger
115115
> {
116-
#proxies = new Map<Domain, NetworkProxy>();
116+
#proxies = new Map<Domain, WeakRef<NetworkProxy>>();
117117

118118
#getUseRequestQueue: GetUseRequestQueue;
119119

@@ -218,18 +218,9 @@ export class SelectedNetworkController extends BaseController<
218218
'NetworkController:getNetworkClientById',
219219
networkClientId,
220220
);
221-
const networkProxy = this.#proxies.get(domain);
222-
if (networkProxy === undefined) {
223-
this.#proxies.set(domain, {
224-
provider: createEventEmitterProxy(networkClient.provider),
225-
blockTracker: createEventEmitterProxy(networkClient.blockTracker, {
226-
eventFilter: 'skipInternal',
227-
}),
228-
});
229-
} else {
230-
networkProxy.provider.setTarget(networkClient.provider);
231-
networkProxy.blockTracker.setTarget(networkClient.blockTracker);
232-
}
221+
const networkProxy = this.getProviderAndBlockTracker(domain)
222+
networkProxy.provider.setTarget(networkClient.provider);
223+
networkProxy.blockTracker.setTarget(networkClient.blockTracker);
233224

234225
this.update((state) => {
235226
state.domains[domain] = networkClientId;
@@ -240,7 +231,7 @@ export class SelectedNetworkController extends BaseController<
240231
const globallySelectedNetworkClient = this.messagingSystem.call(
241232
'NetworkController:getSelectedNetworkClient',
242233
);
243-
const networkProxy = this.#proxies.get(domain);
234+
const networkProxy = this.#getProxy(domain)
244235
if (networkProxy && globallySelectedNetworkClient) {
245236
networkProxy.provider.setTarget(globallySelectedNetworkClient.provider);
246237
networkProxy.blockTracker.setTarget(
@@ -297,7 +288,7 @@ export class SelectedNetworkController extends BaseController<
297288
*/
298289
getProviderAndBlockTracker(domain: Domain): NetworkProxy {
299290
const networkClientId = this.state.domains[domain];
300-
let networkProxy = this.#proxies.get(domain);
291+
let networkProxy = this.#getProxy(domain)
301292
if (networkProxy === undefined) {
302293
let networkClient;
303294
if (networkClientId === undefined) {
@@ -319,9 +310,20 @@ export class SelectedNetworkController extends BaseController<
319310
eventFilter: 'skipInternal',
320311
}),
321312
};
322-
this.#proxies.set(domain, networkProxy);
313+
this.#setProxy(domain, networkProxy);
323314
}
324315

325316
return networkProxy;
326317
}
318+
319+
#getProxy(domain: Domain): NetworkProxy | undefined {
320+
if (this.#proxies.has(domain)) {
321+
return this.#proxies.get(domain)!.deref();
322+
}
323+
return undefined
324+
}
325+
326+
#setProxy(domain: Domain, networkProxy: NetworkProxy) {
327+
this.#proxies.set(domain, new WeakRef(networkProxy));
328+
}
327329
}

0 commit comments

Comments
 (0)