@@ -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
4141import {
@@ -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' ;
6764import { updateBackupState } from '../../store/slices/lightning' ;
6865import {
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