Skip to content

Commit fc1090e

Browse files
committed
feat: optimized earn controller refresh strategy to update specific data based on type of event received
1 parent 4ecb90a commit fc1090e

File tree

2 files changed

+34
-11
lines changed

2 files changed

+34
-11
lines changed

packages/earn-controller/src/EarnController.test.ts

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -507,9 +507,19 @@ describe('EarnController', () => {
507507
address: '0x1234',
508508
});
509509

510-
it('updates staking data when network changes', () => {
510+
it('updates vault data when network changes', () => {
511511
const { controller, messenger } = setupController();
512-
jest.spyOn(controller, 'refreshPooledStakingData').mockResolvedValue();
512+
513+
jest
514+
.spyOn(controller, 'refreshPooledStakingVaultMetadata')
515+
.mockResolvedValue();
516+
jest
517+
.spyOn(controller, 'refreshPooledStakingVaultDailyApys')
518+
.mockResolvedValue();
519+
jest
520+
.spyOn(controller, 'refreshPooledStakingVaultApyAverages')
521+
.mockResolvedValue();
522+
513523
messenger.publish(
514524
'NetworkController:stateChange',
515525
{
@@ -519,17 +529,28 @@ describe('EarnController', () => {
519529
[],
520530
);
521531

522-
expect(controller.refreshPooledStakingData).toHaveBeenCalled();
532+
expect(
533+
controller.refreshPooledStakingVaultMetadata,
534+
).toHaveBeenCalledTimes(1);
535+
expect(
536+
controller.refreshPooledStakingVaultDailyApys,
537+
).toHaveBeenCalledTimes(1);
538+
expect(
539+
controller.refreshPooledStakingVaultApyAverages,
540+
).toHaveBeenCalledTimes(1);
523541
});
524542

525-
it('updates staking data when selected account changes', () => {
543+
it('updates staking eligibility when selected account changes', () => {
526544
const { controller, messenger } = setupController();
527-
jest.spyOn(controller, 'refreshPooledStakingData').mockResolvedValue();
545+
546+
jest.spyOn(controller, 'refreshStakingEligibility').mockResolvedValue();
547+
528548
messenger.publish(
529549
'AccountsController:selectedAccountChange',
530550
firstAccount,
531551
);
532-
expect(controller.refreshPooledStakingData).toHaveBeenCalled();
552+
553+
expect(controller.refreshStakingEligibility).toHaveBeenCalledTimes(1);
533554
});
534555
});
535556
});

packages/earn-controller/src/EarnController.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,9 @@ export class EarnController extends BaseController<
235235
this.#selectedNetworkClientId
236236
) {
237237
this.#initializeSDK(networkControllerState.selectedNetworkClientId);
238-
this.refreshPooledStakingData().catch(console.error);
238+
this.refreshPooledStakingVaultMetadata().catch(console.error);
239+
this.refreshPooledStakingVaultDailyApys().catch(console.error);
240+
this.refreshPooledStakingVaultApyAverages().catch(console.error);
239241
}
240242
this.#selectedNetworkClientId =
241243
networkControllerState.selectedNetworkClientId;
@@ -246,7 +248,7 @@ export class EarnController extends BaseController<
246248
this.messagingSystem.subscribe(
247249
'AccountsController:selectedAccountChange',
248250
() => {
249-
this.refreshPooledStakingData().catch(console.error);
251+
this.refreshStakingEligibility().catch(console.error);
250252
},
251253
);
252254
}
@@ -360,13 +362,13 @@ export class EarnController extends BaseController<
360362
}
361363

362364
/**
363-
* Refreshes vault metadata for the current chain.
365+
* Refreshes pooled staking vault metadata for the current chain.
364366
* Updates the vault metadata in the controller state including APY, capacity,
365367
* fee percentage, total assets, and vault address.
366368
*
367369
* @returns A promise that resolves when the vault metadata has been updated
368370
*/
369-
async refreshVaultMetadata(): Promise<void> {
371+
async refreshPooledStakingVaultMetadata(): Promise<void> {
370372
const chainId = this.#getCurrentChainId();
371373
const vaultMetadata = await this.#stakingApiService.getVaultData(chainId);
372374

@@ -434,7 +436,7 @@ export class EarnController extends BaseController<
434436
this.refreshStakingEligibility().catch((error) => {
435437
errors.push(error);
436438
}),
437-
this.refreshVaultMetadata().catch((error) => {
439+
this.refreshPooledStakingVaultMetadata().catch((error) => {
438440
errors.push(error);
439441
}),
440442
this.refreshPooledStakingVaultDailyApys().catch((error) => {

0 commit comments

Comments
 (0)