Skip to content

Commit 884bbee

Browse files
committed
feat(wallet): add availableRewards to balance tracker
1 parent f771ef6 commit 884bbee

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

packages/wallet/src/services/BalanceTracker.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,24 @@ export const createBalanceTracker = (
3131
delegationTracker: DelegationTracker
3232
): BalanceTracker => ({
3333
rewardAccounts: {
34+
availableRewards$: delegationTracker.rewardAccounts$.pipe(
35+
map((accounts) =>
36+
accounts
37+
.filter(({ dRepDelegatee }) => {
38+
if (!dRepDelegatee) return false;
39+
40+
const { delegateRepresentative } = dRepDelegatee;
41+
42+
return (
43+
Cardano.isDRepAlwaysAbstain(delegateRepresentative) ||
44+
Cardano.isDRepAlwaysNoConfidence(delegateRepresentative) ||
45+
(Cardano.isDrepInfo(delegateRepresentative) && delegateRepresentative.active)
46+
);
47+
})
48+
.reduce((sum, { rewardBalance }) => sum + rewardBalance, 0n)
49+
),
50+
distinctUntilChanged()
51+
),
3452
// 'Unregistering' balance will be reflected in utxo
3553
deposit$: computeDepositCoin(
3654
protocolParameters$,

packages/wallet/src/services/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export interface TransactionalObservables<T> {
2121

2222
export interface BalanceTracker {
2323
rewardAccounts: {
24+
availableRewards$: Observable<Cardano.Lovelace>;
2425
rewards$: Observable<Cardano.Lovelace>;
2526
deposit$: Observable<Cardano.Lovelace>;
2627
};

packages/wallet/test/integration/CustomObservableWallet.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ describe('CustomObservableWallet', () => {
9393
}),
9494
balance: {
9595
rewardAccounts: {
96+
availableRewards$: of(100_000n),
9697
// can entirely bypass SDK and it's utils, providing custom observables
9798
deposit$: of(200_000n),
9899
rewards$: pollProvider({

packages/web-extension/src/observableWallet/util.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ export const observableWalletProperties: RemoteApiProperties<ObservableWallet> =
103103
assetInfo$: RemoteApiPropertyType.HotObservable,
104104
balance: {
105105
rewardAccounts: {
106+
availableRewards$: RemoteApiPropertyType.HotObservable,
106107
deposit$: RemoteApiPropertyType.HotObservable,
107108
rewards$: RemoteApiPropertyType.HotObservable
108109
},

0 commit comments

Comments
 (0)