Skip to content

Commit 8a29f74

Browse files
committed
fix: new getBestBlock
1 parent 6a695a7 commit 8a29f74

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

src/utils/lightning/index.ts

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ import lm, {
3131
TCloseChannelReq,
3232
TCreatePaymentReq,
3333
TGetFees,
34-
THeader,
3534
TInvoice,
3635
TPaymentReq,
3736
TTransactionData,
3837
TTransactionPosition,
38+
TGetBestBlock,
3939
} from '@synonymdev/react-native-ldk';
4040

4141
import {
@@ -48,7 +48,6 @@ import {
4848
getBip39Passphrase,
4949
getCurrentAddressIndex,
5050
getMnemonicPhrase,
51-
getOnChainWalletDataAsync,
5251
getOnChainWalletElectrumAsync,
5352
getSelectedNetwork,
5453
getSelectedWallet,
@@ -61,9 +60,7 @@ import {
6160
getFeesStore,
6261
getLightningStore,
6362
getStore,
64-
getWalletStore,
6563
} from '../../store/helpers';
66-
import { defaultHeader } from '../../store/shapes/wallet';
6764
import { updateBackupState } from '../../store/slices/lightning';
6865
import {
6966
moveMetaIncPaymentTags,
@@ -437,6 +434,13 @@ export const setupLdk = async ({
437434
return err(e);
438435
}
439436

437+
// check if getBestBlock is working
438+
try {
439+
await getBestBlock();
440+
} catch (e) {
441+
return err(e);
442+
}
443+
440444
const lmStart = await lm.start({
441445
account: account.value,
442446
getFees,
@@ -1008,24 +1012,25 @@ export const getSha256 = (str: string): string => {
10081012
};
10091013

10101014
/**
1011-
* Returns last known header information from storage.
1015+
* Returns the last known block header
10121016
* @returns {Promise<THeader>}
10131017
*/
1014-
export const getBestBlock = async (
1015-
selectedNetwork: EAvailableNetwork = getSelectedNetwork(),
1016-
): Promise<THeader> => {
1017-
try {
1018-
const beignetHeader = (await getOnChainWalletDataAsync()).header;
1019-
const storageHeader = getWalletStore().header[selectedNetwork];
1020-
const header =
1021-
beignetHeader.height > storageHeader.height
1022-
? beignetHeader
1023-
: storageHeader;
1024-
return header?.height ? header : defaultHeader;
1025-
} catch (e) {
1026-
console.log(e);
1027-
return defaultHeader;
1018+
const getBestBlock: TGetBestBlock = async () => {
1019+
const electrum = await getOnChainWalletElectrumAsync();
1020+
let i = 0;
1021+
while (!(await electrum.isConnected())) {
1022+
await sleep(100);
1023+
// timeout 10 seconds
1024+
if (i++ > 100) {
1025+
throw new Error('Unable to connect to Electrum server');
1026+
}
1027+
}
1028+
await sleep(100);
1029+
const response = electrum.getBlockHeader();
1030+
if (getSelectedNetwork() === 'bitcoin' && response.height === 0) {
1031+
throw new Error('Unable to get block header');
10281032
}
1033+
return response;
10291034
};
10301035

10311036
/**

0 commit comments

Comments
 (0)