@@ -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,23 @@ export const getSha256 = (str: string): string => {
10081012} ;
10091013
10101014/**
1011- * Returns last known header information from storage .
1015+ * Returns the last known block header when Electrum is connected .
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 (
1022+ ! ( await electrum . isConnected ( ) ) ||
1023+ electrum . getBlockHeader ( ) . hex !== ''
1024+ ) {
1025+ await sleep ( 100 ) ;
1026+ // timeout 10 seconds
1027+ if ( i ++ > 100 ) {
1028+ throw new Error ( 'Unable to connect to Electrum server' ) ;
1029+ }
10281030 }
1031+ return electrum . getBlockHeader ( ) ;
10291032} ;
10301033
10311034/**
0 commit comments