diff --git a/app/scripts/lib/multichain-api/scope/transform.test.ts b/app/scripts/lib/multichain-api/scope/transform.test.ts index fbb0618a6a53..3c3404260ba1 100644 --- a/app/scripts/lib/multichain-api/scope/transform.test.ts +++ b/app/scripts/lib/multichain-api/scope/transform.test.ts @@ -38,6 +38,20 @@ describe('Scope Transform', () => { 'eip155:64': validScopeObject, }); }); + + it('returns one deep cloned scope per `scopes` element', () => { + const flattenedScopes = flattenScope('eip155', { + ...validScopeObject, + scopes: ['eip155:1', 'eip155:5'], + }); + + expect(flattenedScopes['eip155:1']).not.toBe( + flattenedScopes['eip155:5'], + ); + expect(flattenedScopes['eip155:1'].methods).not.toBe( + flattenedScopes['eip155:5'].methods, + ); + }); }); }); diff --git a/app/scripts/lib/multichain-api/scope/transform.ts b/app/scripts/lib/multichain-api/scope/transform.ts index 881957c3c83b..c2f61ee0d5c5 100644 --- a/app/scripts/lib/multichain-api/scope/transform.ts +++ b/app/scripts/lib/multichain-api/scope/transform.ts @@ -1,4 +1,5 @@ import { CaipChainId, isCaipChainId } from '@metamask/utils'; +import { cloneDeep } from 'lodash'; import { ExternalScopeObject, ExternalScopesObject, @@ -35,7 +36,7 @@ export const flattenScope = ( const scopeMap: ScopesObject = {}; scopes.forEach((nestedScopeString: CaipChainId) => { - scopeMap[nestedScopeString] = restScopeObject; + scopeMap[nestedScopeString] = cloneDeep(restScopeObject); }); return scopeMap; }; diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 18883ff4a6db..b0677c00888a 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -6221,7 +6221,7 @@ export default class MetamaskController extends EventEmitter { this.networkController, ), updateNetwork: this.networkController.updateNetwork.bind( - this.networkController + this.networkController, ), setActiveNetwork: async (networkClientId) => { await this.networkController.setActiveNetwork(networkClientId);