Skip to content

Commit 6610098

Browse files
committed
fix: getBestBlock
1 parent 6a695a7 commit 6610098

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

src/utils/lightning/index.ts

Lines changed: 22 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,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

Comments
 (0)