Skip to content

Commit acb593c

Browse files
committed
fix: introduce newAccountAssets
1 parent 1338906 commit acb593c

File tree

4 files changed

+37
-12
lines changed

4 files changed

+37
-12
lines changed

packages/assets-controllers/src/MultichainAssetsController/MultichainAssetsController.ts

+23-1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ export type AssetMetadataResponse = {
5656
[asset: CaipAssetType]: FungibleAssetMetadata;
5757
};
5858
};
59+
export type AccountId = string;
60+
export type NewAccountAssets = {
61+
accountId: AccountId;
62+
assets: CaipAssetType[];
63+
}[];
64+
export type MultichainAssetsControllerNewAccountAssetsEvent = {
65+
type: `${typeof controllerName}:newAccountAssets`;
66+
payload: [
67+
{
68+
newAccountAssets: NewAccountAssets;
69+
},
70+
];
71+
};
5972

6073
/**
6174
* Constructs the default {@link MultichainAssetsController} state. This allows
@@ -102,7 +115,8 @@ export type MultichainAssetsControllerActions =
102115
* Events emitted by {@link MultichainAssetsController}.
103116
*/
104117
export type MultichainAssetsControllerEvents =
105-
MultichainAssetsControllerStateChangeEvent;
118+
| MultichainAssetsControllerStateChangeEvent
119+
| MultichainAssetsControllerNewAccountAssetsEvent;
106120

107121
/**
108122
* A function executed within a mutually exclusive lock, with
@@ -318,6 +332,14 @@ export class MultichainAssetsController extends BaseController<
318332
this.update((state) => {
319333
state.accountsAssets[account.id] = assets;
320334
});
335+
this.messagingSystem.publish(`${controllerName}:newAccountAssets`, {
336+
newAccountAssets: [
337+
{
338+
accountId: account.id,
339+
assets,
340+
},
341+
],
342+
});
321343
}
322344
}
323345

packages/assets-controllers/src/MultichainAssetsController/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export type {
88
MultichainAssetsControllerGetStateAction,
99
MultichainAssetsControllerStateChangeEvent,
1010
MultichainAssetsControllerActions,
11-
MultichainAssetsControllerEvents,
1211
MultichainAssetsControllerMessenger,
12+
MultichainAssetsControllerNewAccountAssetsEvent,
13+
MultichainAssetsControllerEvents,
1314
} from './MultichainAssetsController';

packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.test.ts

-8
Original file line numberDiff line numberDiff line change
@@ -483,14 +483,6 @@ describe('MultichainBalancesController', () => {
483483
const mockSolanaAccountId1 = mockListSolanaAccounts[0].id;
484484
const mockSolanaAccountId2 = mockListSolanaAccounts[1].id;
485485

486-
const existingBalancesState = {
487-
[mockSolanaAccountId1]: {
488-
'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1/token:newToken55': {
489-
amount: '5.00000000',
490-
unit: 'SOL',
491-
},
492-
},
493-
};
494486
const { controller, messenger, mockSnapHandleRequest } = setupController({
495487
state: {
496488
balances: {},

packages/assets-controllers/src/MultichainBalancesController/MultichainBalancesController.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ import { HandlerType } from '@metamask/snaps-utils';
2727
import type { Json, JsonRpcRequest } from '@metamask/utils';
2828
import type { Draft } from 'immer';
2929

30+
3031
import type {
3132
MultichainAssetsControllerGetStateAction,
33+
MultichainAssetsControllerNewAccountAssetsEvent,
3234
MultichainAssetsControllerState,
3335
MultichainAssetsControllerStateChangeEvent,
3436
} from '../MultichainAssetsController';
@@ -108,7 +110,8 @@ type AllowedEvents =
108110
| AccountsControllerAccountRemovedEvent
109111
| AccountsControllerAccountBalancesUpdatesEvent
110112
| MultichainAssetsControllerStateChangeEvent
111-
| AccountsControllerAccountAssetListUpdatedEvent;
113+
| AccountsControllerAccountAssetListUpdatedEvent
114+
| MultichainAssetsControllerNewAccountAssetsEvent;
112115
/**
113116
* Messenger type for the MultichainBalancesController.
114117
*/
@@ -177,7 +180,7 @@ export class MultichainBalancesController extends BaseController<
177180
this.#handleOnAccountBalancesUpdated(balanceUpdate),
178181
);
179182
// We only care about new added assets to fetch balances for.
180-
this.messagingSystem.subscribe(
183+
/* this.messagingSystem.subscribe(
181184
'AccountsController:accountAssetListUpdated',
182185
async (event: AccountAssetListUpdatedEventPayload) => {
183186
const assetsToUpdate = event.assets;
@@ -191,6 +194,13 @@ export class MultichainBalancesController extends BaseController<
191194
await this.#updateBalancesForAccounts(accountsAndAssetsToUpdate);
192195
}
193196
},
197+
); */
198+
199+
this.messagingSystem.subscribe(
200+
'MultichainAssetsController:newAccountAssets',
201+
async ({ newAccountAssets }) => {
202+
console.log('🚀 ~ newAccountAssets:', newAccountAssets);
203+
},
194204
);
195205
}
196206

0 commit comments

Comments
 (0)