Skip to content

Commit c787255

Browse files
committed
refactor: do not pass NetworkService to the SecretsService
1 parent ac914da commit c787255

19 files changed

+288
-155
lines changed

src/background/models.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { Avalanche } from '@avalabs/core-wallets-sdk';
2+
13
export interface DomainMetadataRequest {
24
method: 'avalanche_sendDomainMetadata';
35
params: DomainMetadata;
@@ -80,3 +82,8 @@ export type Never<T> = {
8082
export type ArrayElement<A> = A extends readonly (infer T)[] ? T : never;
8183

8284
export const ACTION_HANDLED_BY_MODULE = '__handled.via.vm.modules__';
85+
86+
export type AddressResolutionOptions = {
87+
isMainnet: boolean;
88+
providerXP: Avalanche.JsonRpcProvider;
89+
};

src/background/services/accounts/AccountsService.test.ts

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ describe('background/services/accounts/AccountsService', () => {
141141
};
142142
};
143143

144+
const providerXP = { getAddress: jest.fn() } as any;
145+
144146
beforeEach(() => {
145147
jest.resetAllMocks();
146148
(storageService.load as jest.Mock).mockResolvedValue(emptyAccounts);
@@ -154,6 +156,9 @@ describe('background/services/accounts/AccountsService', () => {
154156
});
155157
networkService.developerModeChanged.add = jest.fn();
156158
networkService.developerModeChanged.remove = jest.fn();
159+
jest
160+
.spyOn(networkService, 'getAvalanceProviderXP')
161+
.mockResolvedValue(providerXP);
157162
accountsService = new AccountsService(
158163
storageService,
159164
networkService,
@@ -267,13 +272,13 @@ describe('background/services/accounts/AccountsService', () => {
267272
1,
268273
0,
269274
walletId,
270-
networkService
275+
{ isMainnet: true, providerXP }
271276
);
272277
expect(secretsService.getAddresses).toHaveBeenNthCalledWith(
273278
2,
274279
1,
275280
walletId,
276-
networkService
281+
{ isMainnet: true, providerXP }
277282
);
278283
expect(secretsService.getImportedAddresses).toBeCalledTimes(3);
279284

@@ -378,7 +383,7 @@ describe('background/services/accounts/AccountsService', () => {
378383

379384
expect(secretsService.getImportedAddresses).toHaveBeenCalledWith(
380385
'fb-acc',
381-
networkService
386+
{ isMainnet: true, providerXP }
382387
);
383388
expect(secretsService.getAddresses).toHaveBeenCalledTimes(0);
384389
expect(accountsService.getAccounts().imported['fb-acc']).toEqual({
@@ -500,7 +505,7 @@ describe('background/services/accounts/AccountsService', () => {
500505
expect(secretsService.addAddress).toBeCalledWith({
501506
index: 0,
502507
walletId: WALLET_ID,
503-
networkService,
508+
options: { isMainnet: true, providerXP },
504509
ledgerService,
505510
});
506511

@@ -552,7 +557,7 @@ describe('background/services/accounts/AccountsService', () => {
552557
expect(secretsService.addAddress).toBeCalledWith({
553558
index: 2,
554559
walletId: WALLET_ID,
555-
networkService,
560+
options: { isMainnet: true, providerXP },
556561
ledgerService,
557562
});
558563
expect(permissionsService.addWhitelistDomains).toBeCalledTimes(1);
@@ -593,7 +598,7 @@ describe('background/services/accounts/AccountsService', () => {
593598
expect(secretsService.addAddress).toBeCalledWith({
594599
index: 2,
595600
walletId: WALLET_ID,
596-
networkService,
601+
options: { isMainnet: true, providerXP },
597602
ledgerService,
598603
});
599604
expect(permissionsService.addWhitelistDomains).toBeCalledTimes(1);
@@ -680,10 +685,10 @@ describe('background/services/accounts/AccountsService', () => {
680685
options,
681686
});
682687
expect(secretsService.addImportedWallet).toBeCalledTimes(1);
683-
expect(secretsService.addImportedWallet).toBeCalledWith(
684-
options,
685-
networkService
686-
);
688+
expect(secretsService.addImportedWallet).toBeCalledWith(options, {
689+
isMainnet: true,
690+
providerXP,
691+
});
687692
expect(commitMock).toHaveBeenCalled();
688693
expect(permissionsService.addWhitelistDomains).toBeCalledTimes(1);
689694
expect(permissionsService.addWhitelistDomains).toBeCalledWith(
@@ -738,10 +743,10 @@ describe('background/services/accounts/AccountsService', () => {
738743

739744
await accountsService.addImportedAccount({ options });
740745
expect(secretsService.addImportedWallet).toBeCalledTimes(1);
741-
expect(secretsService.addImportedWallet).toBeCalledWith(
742-
options,
743-
networkService
744-
);
746+
expect(secretsService.addImportedWallet).toBeCalledWith(options, {
747+
isMainnet: true,
748+
providerXP,
749+
});
745750
expect(commitMock).toHaveBeenCalled();
746751
expect(permissionsService.addWhitelistDomains).toBeCalledTimes(1);
747752
expect(permissionsService.addWhitelistDomains).toBeCalledWith(
@@ -839,10 +844,10 @@ describe('background/services/accounts/AccountsService', () => {
839844
'0x1'
840845
);
841846
expect(secretsService.addImportedWallet).toBeCalledTimes(1);
842-
expect(secretsService.addImportedWallet).toBeCalledWith(
843-
options,
844-
networkService
845-
);
847+
expect(secretsService.addImportedWallet).toBeCalledWith(options, {
848+
isMainnet: true,
849+
providerXP,
850+
});
846851
expect(commitMock).not.toHaveBeenCalled();
847852
expect(permissionsService.addWhitelistDomains).not.toHaveBeenCalled();
848853
});

src/background/services/accounts/AccountsService.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { LedgerService } from '../ledger/LedgerService';
2828
import { WalletConnectService } from '../walletConnect/WalletConnectService';
2929
import { Network } from '../network/models';
3030
import { isDevnet } from '@src/utils/isDevnet';
31+
import { getAddressResolutionOptions } from '@src/background/utils/getAddressResolutionOptions';
3132

3233
type AddAccountParams = {
3334
walletId: string;
@@ -224,17 +225,21 @@ export class AccountsService implements OnLock, OnUnlock {
224225
};
225226

226227
async getAddressesForAccount(account: Account): Promise<DerivedAddresses> {
228+
const addressResolutionOptions = await getAddressResolutionOptions(
229+
this.networkService
230+
);
231+
227232
if (account.type !== AccountType.PRIMARY) {
228233
return this.secretsService.getImportedAddresses(
229234
account.id,
230-
this.networkService
235+
addressResolutionOptions
231236
);
232237
}
233238

234239
const addresses = await this.secretsService.getAddresses(
235240
account.index,
236241
account.walletId,
237-
this.networkService
242+
addressResolutionOptions
238243
);
239244

240245
return {
@@ -367,8 +372,8 @@ export class AccountsService implements OnLock, OnUnlock {
367372
const addresses = await this.secretsService.addAddress({
368373
index: nextIndex,
369374
walletId,
370-
networkService: this.networkService,
371375
ledgerService: this.ledgerService,
376+
options: await getAddressResolutionOptions(this.networkService),
372377
});
373378

374379
const id = crypto.randomUUID();
@@ -413,7 +418,7 @@ export class AccountsService implements OnLock, OnUnlock {
413418
try {
414419
const { account, commit } = await this.secretsService.addImportedWallet(
415420
options,
416-
this.networkService
421+
await getAddressResolutionOptions(this.networkService)
417422
);
418423

419424
const existingAccount = this.#findAccountByAddress(account.addressC);

src/background/services/onboarding/handlers/seedlessOnboardingHandler.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ describe('src/background/services/onboarding/handlers/seedlessOnboardingHandler.
7777
addFavoriteNetwork: jest.fn(),
7878
getAvalancheNetwork: jest.fn(),
7979
setNetwork: jest.fn(),
80+
isMainnet: () => false,
81+
getAvalanceProviderXP: jest.fn(),
8082
} as unknown as NetworkService;
8183
const secretsServiceMock = {
8284
getWalletAccountsSecretsById: jest.fn(),

src/background/services/onboarding/handlers/seedlessOnboardingHandler.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { OnboardingService } from '../OnboardingService';
2020
import { LockService } from '../../lock/LockService';
2121
import { finalizeOnboarding } from '../finalizeOnboarding';
2222
import { startOnboarding } from '../startOnboarding';
23+
import { getAddressResolutionOptions } from '@src/background/utils/getAddressResolutionOptions';
2324

2425
type HandlerType = ExtensionRequestHandler<
2526
ExtensionRequest.SEEDLESS_ONBOARDING_SUBMIT,
@@ -72,7 +73,9 @@ export class SeedlessOnboardingHandler implements HandlerType {
7273

7374
const memorySessionStorage = new MemorySessionStorage(seedlessSignerToken);
7475
const seedlessWallet = new SeedlessWallet({
75-
networkService: this.networkService,
76+
addressResolutionOptions: await getAddressResolutionOptions(
77+
this.networkService
78+
),
7679
sessionStorage: memorySessionStorage,
7780
});
7881

0 commit comments

Comments
 (0)