2
2
// SPDX-License-Identifier: Apache-2.0
3
3
4
4
import { _AssetType , _ChainAsset , _ChainInfo } from '@subwallet/chain-list/types' ;
5
- import { BitcoinBalanceMetadata } from '@subwallet/extension-base/background/KoniTypes' ;
5
+ import { APIItemState , BitcoinBalanceMetadata } from '@subwallet/extension-base/background/KoniTypes' ;
6
+ import { BITCOIN_REFRESH_BALANCE_INTERVAL } from '@subwallet/extension-base/constants' ;
6
7
import { _BitcoinApi } from '@subwallet/extension-base/services/chain-service/types' ;
7
8
import { _getChainNativeTokenSlug } from '@subwallet/extension-base/services/chain-service/utils' ;
8
9
import { BalanceItem , UtxoResponseItem } from '@subwallet/extension-base/types' ;
@@ -41,7 +42,7 @@ export const getTransferableBitcoinUtxos = async (bitcoinApi: _BitcoinApi, addre
41
42
}
42
43
} ;
43
44
44
- async function getBitcoinBalance ( bitcoinApi : _BitcoinApi , addresses : string [ ] ) : Promise < BalanceItem [ ] > {
45
+ async function getBitcoinBalance ( bitcoinApi : _BitcoinApi , addresses : string [ ] ) {
45
46
return await Promise . all ( addresses . map ( async ( address ) => {
46
47
try {
47
48
const [ filteredUtxos , addressSummaryInfo ] = await Promise . all ( [
@@ -51,7 +52,9 @@ async function getBitcoinBalance (bitcoinApi: _BitcoinApi, addresses: string[]):
51
52
52
53
console . log ( 'addressSummaryInfo' , addressSummaryInfo ) ;
53
54
const bitcoinBalanceMetadata = {
54
- inscriptionCount : addressSummaryInfo . total_inscription
55
+ inscriptionCount : addressSummaryInfo . total_inscription ,
56
+ runeBalance : addressSummaryInfo . balance_rune ,
57
+ inscriptionBalance : addressSummaryInfo . balance_inscription
55
58
} as BitcoinBalanceMetadata ;
56
59
57
60
let balanceValue = new BigN ( 0 ) ;
@@ -77,22 +80,45 @@ async function getBitcoinBalance (bitcoinApi: _BitcoinApi, addresses: string[]):
77
80
} ) ) ;
78
81
}
79
82
80
- export const subscribeBitcoinBalance = async ( addresses : string [ ] , bitcoinApi : _BitcoinApi , callback : ( rs : BalanceItem [ ] ) => void ) => {
81
- console . log ( 'subscribeBitcoinBalanceBalance' , addresses ) ;
82
-
83
- const getBalance = async ( ) : Promise < BalanceItem [ ] > => {
84
- try {
85
- const balances = await getBitcoinBalance ( bitcoinApi , addresses ) ;
86
-
87
- callback ( balances ) ;
88
- } catch ( e ) {
89
- console . error ( 'Error while fetching cardano balance' , e ) ;
90
- }
83
+ export function subscribeBitcoinBalance ( addresses : string [ ] , bitcoinApi : _BitcoinApi , callback : ( rs : BalanceItem [ ] ) => void ) : ( ) => void {
84
+ const getBalance = ( ) => {
85
+ getBitcoinBalance ( bitcoinApi , addresses )
86
+ . then ( ( balances ) => {
87
+ return balances . map ( ( { balance, bitcoinBalanceMetadata } , index ) : BalanceItem => {
88
+ return {
89
+ address : addresses [ index ] ,
90
+ tokenSlug : 'bitcoin' ,
91
+ state : APIItemState . READY ,
92
+ free : balance ,
93
+ locked : '0' ,
94
+ metadata : bitcoinBalanceMetadata
95
+ } ;
96
+ } ) ;
97
+ } )
98
+ . catch ( ( e ) => {
99
+ console . error ( 'Error on get Bitcoin balance with token bitcoin' , e ) ;
100
+
101
+ return addresses . map ( ( address ) : BalanceItem => {
102
+ return {
103
+ address : address ,
104
+ tokenSlug : 'bitcoin' ,
105
+ state : APIItemState . READY ,
106
+ free : '0' ,
107
+ locked : '0'
108
+ } ;
109
+ } ) ;
110
+ } )
111
+ . then ( ( items ) => {
112
+ callback ( items ) ;
113
+ } )
114
+ . catch ( console . error ) ;
91
115
} ;
92
116
93
- await getBalance ( ) ;
117
+ const interval = setInterval ( getBalance , BITCOIN_REFRESH_BALANCE_INTERVAL ) ;
118
+
119
+ getBalance ( ) ;
94
120
95
121
return ( ) => {
96
- console . log ( 'unsub' ) ;
122
+ clearInterval ( interval ) ;
97
123
} ;
98
- } ;
124
+ }
0 commit comments