File tree 2 files changed +44
-0
lines changed 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -40,12 +40,14 @@ import {
40
40
TransactionsTracker ,
41
41
UtxoTracker ,
42
42
WalletUtil ,
43
+ combineInputResolvers ,
43
44
createAddressTracker ,
44
45
createAssetsTracker ,
45
46
createBalanceTracker ,
46
47
createDRepRegistrationTracker ,
47
48
createDelegationTracker ,
48
49
createHandlesTracker ,
50
+ createInputResolver ,
49
51
createProviderStatusTracker ,
50
52
createSimpleConnectionStatusTracker ,
51
53
createTransactionReemitter ,
@@ -248,6 +250,7 @@ const getDRepKeyHash = async (dRepKey: Ed25519PublicKeyHex | undefined) =>
248
250
dRepKey ? ( await Ed25519PublicKey . fromHex ( dRepKey ) . hash ( ) ) . hex ( ) : undefined ;
249
251
250
252
export class BaseWallet implements ObservableWallet {
253
+ #inputResolver: Cardano . InputResolver | undefined ;
251
254
#inputSelector: InputSelector ;
252
255
#logger: Logger ;
253
256
#tip$: TipTracker ;
@@ -630,6 +633,11 @@ export class BaseWallet implements ObservableWallet {
630
633
} )
631
634
} ;
632
635
636
+ if ( inputResolver ) {
637
+ this . #inputResolver = combineInputResolvers ( createInputResolver ( this ) , inputResolver ) ;
638
+ this . util . resolveInput = this . #inputResolver?. resolveInput . bind ( this . #inputResolver) ;
639
+ }
640
+
633
641
this . #logger. debug ( 'Created' ) ;
634
642
}
635
643
Original file line number Diff line number Diff line change @@ -237,6 +237,42 @@ describe('BaseWallet methods', () => {
237
237
expect ( result ) . toEqual ( output ) ;
238
238
expect ( inputResolver . resolveInput ) . toBeCalledTimes ( 1 ) ;
239
239
} ) ;
240
+
241
+ it ( 'resolves using wallet context before using given input resolver' , async ( ) => {
242
+ const output = {
243
+ address : Cardano . PaymentAddress (
244
+ 'addr_test1qpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5ewvxwdrt70qlcpeeagscasafhffqsxy36t90ldv06wqrk2qum8x5w'
245
+ ) ,
246
+ value : { coins : 997n }
247
+ } ;
248
+
249
+ const givenInputResolver = { resolveInput : jest . fn ( ) . mockResolvedValue ( output ) } ;
250
+
251
+ const walletWithInputResolver = createPersonalWallet (
252
+ { name : 'Test Wallet' } ,
253
+ {
254
+ addressDiscovery,
255
+ assetProvider,
256
+ bip32Account,
257
+ chainHistoryProvider,
258
+ drepProvider,
259
+ handleProvider,
260
+ inputResolver : givenInputResolver ,
261
+ logger,
262
+ networkInfoProvider,
263
+ rewardsProvider,
264
+ stakePoolProvider,
265
+ txSubmitProvider,
266
+ utxoProvider,
267
+ witnesser
268
+ }
269
+ ) ;
270
+
271
+ const utxoSet = await firstValueFrom ( walletWithInputResolver . utxo . available$ ) ;
272
+ const result = await walletWithInputResolver . util . resolveInput ( utxoSet [ 0 ] [ 0 ] ) ;
273
+ expect ( result ) . toEqual ( utxoSet [ 0 ] [ 1 ] ) ;
274
+ expect ( givenInputResolver . resolveInput ) . not . toHaveBeenCalled ( ) ;
275
+ } ) ;
240
276
} ) ;
241
277
} ) ;
242
278
You can’t perform that action at this time.
0 commit comments