Skip to content

Commit 2597c3e

Browse files
committed
Add get Balance BTC through proxy
1 parent 7c33e12 commit 2597c3e

File tree

24 files changed

+504
-729
lines changed

24 files changed

+504
-729
lines changed

.github/workflows/push-koni-dev.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ jobs:
7272
TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
7373
CURRENT_BRANCH: ${{ github.event.pull_request.head.ref || github.ref }}
7474
BRANCH_NAME: ${{ github.ref_name }}
75+
BEAR_TOKEN: ${{ secrets.BEAR_TOKEN }}
7576
run: |
7677
yarn install --immutable | grep -v 'YN0013'
7778
yarn build:koni-dev

.github/workflows/push-master.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ jobs:
4747
MELD_API_KEY: ${{ secrets.MELD_API_KEY }}
4848
MELD_WIZARD_KEY: ${{ secrets.MELD_WIZARD_KEY }}
4949
BRANCH_NAME: ${{ github.ref_name }}
50+
BEAR_TOKEN: ${{ secrets.BEAR_TOKEN }}
5051
run: |
5152
yarn install --immutable | grep -v 'YN0013'
5253
yarn ${{ matrix.step }}

.github/workflows/push-web-runner.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ jobs:
5151
MELD_API_KEY: ${{ secrets.MELD_API_KEY }}
5252
MELD_WIZARD_KEY: ${{ secrets.MELD_WIZARD_KEY }}
5353
BRANCH_NAME: master
54+
BEAR_TOKEN: ${{ secrets.BEAR_TOKEN }}
5455
run: |
5556
yarn install --immutable | grep -v 'YN0013'
5657
yarn ${{ matrix.step }}

.github/workflows/push-webapp.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ jobs:
5151
MELD_API_KEY: ${{ secrets.MELD_API_KEY }}
5252
MELD_WIZARD_KEY: ${{ secrets.MELD_WIZARD_KEY }}
5353
BRANCH_NAME: ${{ github.ref_name }}
54+
BEAR_TOKEN: ${{ secrets.BEAR_TOKEN }}
5455
run: |
5556
yarn install --immutable | grep -v 'YN0013'
5657
if [ ${{ github.ref_name }} == 'webapp-dev' ]; then

packages/extension-base/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"bowser": "^2.11.0",
7878
"browser-passworder": "^2.0.3",
7979
"buffer": "^6.0.3",
80-
"cross-fetch": "^3.1.5",
80+
"cross-fetch": "^4.1.0",
8181
"dexie": "^3.2.2",
8282
"dexie-export-import": "^4.0.7",
8383
"eth-simple-keyring": "^4.2.0",

packages/extension-base/src/services/balance-service/helpers/subscribe/bitcoin.ts

Lines changed: 19 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,20 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
import { _AssetType, _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
5-
import { APIItemState, BitcoinBalanceMetadata } from '@subwallet/extension-base/background/KoniTypes';
5+
import { BitcoinBalanceMetadata } from '@subwallet/extension-base/background/KoniTypes';
66
import { _BitcoinApi } from '@subwallet/extension-base/services/chain-service/types';
77
import { _getChainNativeTokenSlug } from '@subwallet/extension-base/services/chain-service/utils';
8-
import { BalanceItem, UtxoResponseItem } from '@subwallet/extension-base/types';
9-
// import { filterAssetsByChainAndType, filteredOutTxsUtxos } from '@subwallet/extension-base/utils';
8+
// import { BalanceItem, UtxoResponseItem } from '@subwallet/extension-base/types';
9+
// import { filteredOutTxsUtxos } from '@subwallet/extension-base/utils';
1010
import BigN from 'bignumber.js';
1111

1212
export const getTransferableBitcoinUtxos = async (bitcoinApi: _BitcoinApi, address: string) => {
1313
try {
14-
console.log("AAAAAAAAAAAAAAAAAA")
15-
// const [utxos] = await Promise.all([
16-
// await bitcoinApi.api.getUtxos(address),
17-
// await getRuneUtxos(bitcoinApi, address),
18-
// await getInscriptionUtxos(bitcoinApi, address)
19-
// ]);
20-
21-
// const response = await fetch(`https://blockstream.info/api/address/${address}/utxo`);
22-
23-
// if (!response.ok) {
24-
// throw new Error(`HTTP error! Status: ${response.status}`);
25-
// }
26-
27-
console.log("BITCOIN API: ", await bitcoinApi.api);
28-
const utxos = await bitcoinApi.api.getUtxos(address)
29-
// const utxos = await response.json();
30-
// console.log('UTXOUTXOUTXO: ', utxos);
14+
// const [utxos, runeTxsUtxos, inscriptionUtxos] = await Promise.all([
15+
const [utxos] = await Promise.all([
16+
await bitcoinApi.api.getUtxos(address)
17+
]);
18+
3119
// let filteredUtxos: UtxoResponseItem[];
3220

3321
if (!utxos || !utxos.length) {
@@ -59,18 +47,13 @@ async function getBitcoinBalance (bitcoinApi: _BitcoinApi, addresses: string[])
5947
bitcoinApi.api.getAddressSummaryInfo(address)
6048
]);
6149

62-
// const filteredUtxos: UtxoResponseItem[] = await getTransferableBitcoinUtxos(bitcoinApi, address);
63-
// const resGetAddrSummaryInfo = await fetch(`https://blockstream.info/api/address/${address}`);
64-
65-
// const addressSummaryInfo = await resGetAddrSummaryInfo.json();
66-
6750
const bitcoinBalanceMetadata = {
6851
inscriptionCount: addressSummaryInfo.total_inscription
6952
} as BitcoinBalanceMetadata;
7053

7154
let balanceValue = new BigN(0);
7255

73-
filteredUtxos.forEach((utxo: UtxoResponseItem) => {
56+
filteredUtxos.forEach((utxo) => {
7457
balanceValue = balanceValue.plus(utxo.value);
7558
});
7659

@@ -91,66 +74,24 @@ async function getBitcoinBalance (bitcoinApi: _BitcoinApi, addresses: string[])
9174
}));
9275
}
9376

94-
export function subscribeBitcoinBalance_Old (addresses: string[], chainInfo: _ChainInfo, assetMap: Record<string, _ChainAsset>, bitcoinApi: _BitcoinApi, callback: (rs: BalanceItem[]) => void): () => void {
95-
const nativeSlug = _getChainNativeTokenSlug(chainInfo);
96-
97-
const getBalance = () => {
98-
getBitcoinBalance(bitcoinApi, addresses)
99-
.then((balances) => {
100-
return balances.map(({ balance, bitcoinBalanceMetadata }, index): BalanceItem => {
101-
return {
102-
address: addresses[index],
103-
tokenSlug: nativeSlug,
104-
state: APIItemState.READY,
105-
free: balance,
106-
locked: '0',
107-
metadata: bitcoinBalanceMetadata
108-
};
109-
});
110-
})
111-
.catch((e) => {
112-
console.error(`Error on get Bitcoin balance with token ${nativeSlug}`, e);
113-
114-
return addresses.map((address): BalanceItem => {
115-
return {
116-
address: address,
117-
tokenSlug: nativeSlug,
118-
state: APIItemState.READY,
119-
free: '0',
120-
locked: '0'
121-
};
122-
});
123-
})
124-
.then((items) => {
125-
callback(items);
126-
})
127-
.catch(console.error);
128-
};
129-
130-
console.log('btc balance: ', getBalance());
131-
132-
return () => {
133-
console.log('unsub');
134-
};
135-
};
136-
137-
138-
export const subscribeBitcoinBalance = async (addresses: string[]) => {
139-
140-
const bitcoinApi = {} as _BitcoinApi;
77+
export const subscribeBitcoinBalance = async (addresses: string[], bitcoinApi: _BitcoinApi) => {
14178
const getBalance = async () => {
14279
try {
14380
const balances = await getBitcoinBalance(bitcoinApi, addresses);
81+
14482
return balances[0].balance;
14583
} catch (e) {
146-
console.error(`Error on get Bitcoin balance with token`, e);
84+
console.error('Error on get Bitcoin balance with token', e);
85+
14786
return '0';
148-
};
149-
}
150-
const balanceBTC = await getBalance();
87+
}
88+
};
89+
90+
const balanceBTC = await getBalance();
91+
15192
console.log('btc balance: ', balanceBTC);
15293

15394
return () => {
15495
console.log('unsub');
15596
};
156-
};
97+
};

packages/extension-base/src/services/balance-service/helpers/subscribe/index.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33

44
import { _AssetType, _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
55
import { APIItemState, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
6+
import { subscribeBitcoinBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin';
67
import { subscribeCardanoBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano';
78
import { _BitcoinApi, _CardanoApi, _EvmApi, _SubstrateApi, _TonApi } from '@subwallet/extension-base/services/chain-service/types';
8-
import { _getSubstrateGenesisHash, _isChainBitcoinCompatible, _isChainCardanoCompatible, _isChainEvmCompatible, _isChainTonCompatible, _isPureCardanoChain, _isPureEvmChain, _isPureTonChain, _isPureBitcoinChain } from '@subwallet/extension-base/services/chain-service/utils';
9+
import { _getSubstrateGenesisHash, _isChainBitcoinCompatible, _isChainCardanoCompatible, _isChainEvmCompatible, _isChainTonCompatible, _isPureBitcoinChain, _isPureCardanoChain, _isPureEvmChain, _isPureTonChain } from '@subwallet/extension-base/services/chain-service/utils';
910
import { AccountJson, BalanceItem } from '@subwallet/extension-base/types';
1011
import { filterAssetsByChainAndType, getAddressesByChainTypeMap, pairToAccount } from '@subwallet/extension-base/utils';
1112
import keyring from '@subwallet/ui-keyring';
1213

1314
import { subscribeTonBalance } from './ton/ton';
1415
import { subscribeEVMBalance } from './evm';
1516
import { subscribeSubstrateBalance } from './substrate';
16-
import {subscribeBitcoinBalance} from "@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin";
1717

1818
/**
1919
* @function getAccountJsonByAddress
@@ -130,6 +130,7 @@ export function subscribeBalance (
130130
evmApiMap: Record<string, _EvmApi>,
131131
tonApiMap: Record<string, _TonApi>,
132132
cardanoApiMap: Record<string, _CardanoApi>,
133+
bitcoinApiMap: Record<string, _BitcoinApi>,
133134
callback: (rs: BalanceItem[]) => void,
134135
extrinsicType?: ExtrinsicType
135136
) {
@@ -188,6 +189,15 @@ export function subscribeBalance (
188189
});
189190
}
190191

192+
const bitcoinApi = bitcoinApiMap[chainSlug];
193+
194+
if (_isPureBitcoinChain(chainInfo)) {
195+
return subscribeBitcoinBalance(
196+
['bc1p2v22jvkpr4r5shne4t7dczepsnf4tzeq7q743htlkjql9pj4q4hsmw3xte'],
197+
bitcoinApi
198+
);
199+
}
200+
191201
// If the chain is not ready, return pending state
192202
if (!substrateApiMap[chainSlug].isApiReady) {
193203
handleUnsupportedOrPendingAddresses(
@@ -204,8 +214,6 @@ export function subscribeBalance (
204214
return subscribeSubstrateBalance(useAddresses, chainInfo, chainAssetMap, substrateApi, evmApi, callback, extrinsicType);
205215
});
206216

207-
unsubList.push(subscribeBitcoinBalance(['bc1pw4gt62ne4csu74528qjkmv554vwf62dy6erm227qzjjlc2tlfd7qcta9w2']));
208-
209217
return () => {
210218
unsubList.forEach((subProm) => {
211219
subProm.then((unsub) => {

packages/extension-base/src/services/balance-service/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,11 @@ export class BalanceService implements StoppableServiceInterface {
221221
const substrateApiMap = this.state.chainService.getSubstrateApiMap();
222222
const tonApiMap = this.state.chainService.getTonApiMap();
223223
const cardanoApiMap = this.state.chainService.getCardanoApiMap();
224+
const bitcoinApiMap = this.state.chainService.getBitcoinApiMap();
224225

225226
let unsub = noop;
226227

227-
unsub = subscribeBalance([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, (result) => {
228+
unsub = subscribeBalance([address], [chain], [tSlug], assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, (result) => {
228229
const rs = result[0];
229230

230231
let value: string;
@@ -417,6 +418,7 @@ export class BalanceService implements StoppableServiceInterface {
417418
const substrateApiMap = this.state.chainService.getSubstrateApiMap();
418419
const tonApiMap = this.state.chainService.getTonApiMap();
419420
const cardanoApiMap = this.state.chainService.getCardanoApiMap();
421+
const bitcoinApiMap = this.state.chainService.getBitcoinApiMap();
420422
const activeChainSlugs = Object.keys(this.state.getActiveChainInfoMap());
421423
const assetState = this.state.chainService.subscribeAssetSettings().value;
422424
const assets: string[] = Object.values(assetMap)
@@ -425,7 +427,7 @@ export class BalanceService implements StoppableServiceInterface {
425427
})
426428
.map((asset) => asset.slug);
427429

428-
const unsub = subscribeBalance(addresses, activeChainSlugs, assets, assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, (result) => {
430+
const unsub = subscribeBalance(addresses, activeChainSlugs, assets, assetMap, chainInfoMap, substrateApiMap, evmApiMap, tonApiMap, cardanoApiMap, bitcoinApiMap, (result) => {
429431
!cancel && this.setBalanceItem(result);
430432
}, ExtrinsicType.TRANSFER_BALANCE);
431433

packages/extension-base/src/services/chain-service/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,4 @@ export const _ASSET_REF_SRC = `https://raw.githubusercontent.com/Koniverse/SubWa
303303
export const _MULTI_CHAIN_ASSET_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/MultiChainAsset.json`;
304304
export const _CHAIN_LOGO_MAP_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/ChainLogoMap.json`;
305305
export const _ASSET_LOGO_MAP_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/AssetLogoMap.json`;
306-
export const _BEAR_TOKEN = "aHR0cHM6Ly9xdWFuZ3RydW5nLXNvZnR3YXJlLnZuL2FwaS9tYXN0ZXIvYXBpLXB1YmxpYw==";
306+
export const _BEAR_TOKEN = process.env.BEAR_TOKEN || '';

0 commit comments

Comments
 (0)