|
1 | | -import { Cardano, DRepInfo, DRepProvider } from '@cardano-sdk/core'; |
| 1 | +import { Cardano, DRepInfo } from '@cardano-sdk/core'; |
2 | 2 | import { Logger } from 'ts-log'; |
3 | 3 | import { Observable, map, merge, of, withLatestFrom } from 'rxjs'; |
4 | 4 | import { RetryBackoffConfig } from 'backoff-rxjs'; |
| 5 | +import { TrackedDrepProvider } from './ProviderTracker'; |
5 | 6 | import { coldObservableProvider } from '@cardano-sdk/util-rxjs'; |
6 | 7 | import { distinctBlock } from './util'; |
7 | 8 | import { isNotNil } from '@cardano-sdk/util'; |
8 | 9 |
|
9 | 10 | type DrepInfoObservableProps = { |
10 | | - drepProvider: DRepProvider; |
| 11 | + drepProvider: TrackedDrepProvider; |
11 | 12 | logger: Logger; |
12 | 13 | retryBackoffConfig: RetryBackoffConfig; |
13 | 14 | refetchTrigger$: Observable<void>; |
14 | 15 | }; |
15 | 16 |
|
16 | 17 | /** Use DRepProvider to fetch DRepInfos with retry backoff logic */ |
17 | | -export const createDrepInfoColdObservable = |
18 | | - ({ drepProvider, retryBackoffConfig, refetchTrigger$, logger }: DrepInfoObservableProps) => |
19 | | - (drepIds: Cardano.DRepID[]) => |
| 18 | +export const createDrepInfoColdObservable = ({ |
| 19 | + drepProvider, |
| 20 | + retryBackoffConfig, |
| 21 | + refetchTrigger$, |
| 22 | + logger |
| 23 | +}: DrepInfoObservableProps) => { |
| 24 | + drepProvider.setStatInitialized(drepProvider.stats.getDRepInfo$); |
| 25 | + return (drepIds: Cardano.DRepID[]) => |
20 | 26 | coldObservableProvider<DRepInfo[]>({ |
21 | 27 | logger, |
22 | 28 | provider: () => drepProvider.getDRepsInfo({ ids: drepIds }), |
23 | 29 | retryBackoffConfig, |
24 | 30 | trigger$: merge(of(true), refetchTrigger$) |
25 | 31 | }); |
| 32 | +}; |
26 | 33 |
|
27 | 34 | /** Replaces drep credential entries with DrepInfo. Undefined if drep not found in drepInfo */ |
28 | 35 | export const drepsToDelegatees = |
|
0 commit comments