mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2025-02-23 23:27:26 +01:00
Merge pull request #6548 from BlueWallet/im
REF: Place network calls in InteractionManager
This commit is contained in:
commit
552fb95776
1 changed files with 54 additions and 50 deletions
|
@ -106,61 +106,65 @@ export const BlueStorageProvider = ({ children }: { children: React.ReactNode })
|
||||||
};
|
};
|
||||||
|
|
||||||
const refreshAllWalletTransactions = async (lastSnappedTo?: number, showUpdateStatusIndicator: boolean = true) => {
|
const refreshAllWalletTransactions = async (lastSnappedTo?: number, showUpdateStatusIndicator: boolean = true) => {
|
||||||
let noErr = true;
|
InteractionManager.runAfterInteractions(async () => {
|
||||||
try {
|
let noErr = true;
|
||||||
await BlueElectrum.waitTillConnected();
|
try {
|
||||||
if (showUpdateStatusIndicator) {
|
await BlueElectrum.waitTillConnected();
|
||||||
setWalletTransactionUpdateStatus(WalletTransactionsStatus.ALL);
|
if (showUpdateStatusIndicator) {
|
||||||
|
setWalletTransactionUpdateStatus(WalletTransactionsStatus.ALL);
|
||||||
|
}
|
||||||
|
const paymentCodesStart = Date.now();
|
||||||
|
await BlueApp.fetchSenderPaymentCodes(lastSnappedTo);
|
||||||
|
const paymentCodesEnd = Date.now();
|
||||||
|
console.log('fetch payment codes took', (paymentCodesEnd - paymentCodesStart) / 1000, 'sec');
|
||||||
|
const balanceStart = +new Date();
|
||||||
|
await fetchWalletBalances(lastSnappedTo);
|
||||||
|
const balanceEnd = +new Date();
|
||||||
|
console.log('fetch balance took', (balanceEnd - balanceStart) / 1000, 'sec');
|
||||||
|
const start = +new Date();
|
||||||
|
await fetchWalletTransactions(lastSnappedTo);
|
||||||
|
const end = +new Date();
|
||||||
|
console.log('fetch tx took', (end - start) / 1000, 'sec');
|
||||||
|
} catch (err) {
|
||||||
|
noErr = false;
|
||||||
|
console.warn(err);
|
||||||
|
} finally {
|
||||||
|
setWalletTransactionUpdateStatus(WalletTransactionsStatus.NONE);
|
||||||
}
|
}
|
||||||
const paymentCodesStart = Date.now();
|
if (noErr) await saveToDisk(); // caching
|
||||||
await BlueApp.fetchSenderPaymentCodes(lastSnappedTo);
|
});
|
||||||
const paymentCodesEnd = Date.now();
|
|
||||||
console.log('fetch payment codes took', (paymentCodesEnd - paymentCodesStart) / 1000, 'sec');
|
|
||||||
const balanceStart = +new Date();
|
|
||||||
await fetchWalletBalances(lastSnappedTo);
|
|
||||||
const balanceEnd = +new Date();
|
|
||||||
console.log('fetch balance took', (balanceEnd - balanceStart) / 1000, 'sec');
|
|
||||||
const start = +new Date();
|
|
||||||
await fetchWalletTransactions(lastSnappedTo);
|
|
||||||
const end = +new Date();
|
|
||||||
console.log('fetch tx took', (end - start) / 1000, 'sec');
|
|
||||||
} catch (err) {
|
|
||||||
noErr = false;
|
|
||||||
console.warn(err);
|
|
||||||
} finally {
|
|
||||||
setWalletTransactionUpdateStatus(WalletTransactionsStatus.NONE);
|
|
||||||
}
|
|
||||||
if (noErr) await saveToDisk(); // caching
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchAndSaveWalletTransactions = async (walletID: string) => {
|
const fetchAndSaveWalletTransactions = async (walletID: string) => {
|
||||||
const index = wallets.findIndex(wallet => wallet.getID() === walletID);
|
InteractionManager.runAfterInteractions(async () => {
|
||||||
let noErr = true;
|
const index = wallets.findIndex(wallet => wallet.getID() === walletID);
|
||||||
try {
|
let noErr = true;
|
||||||
// 5sec debounce:
|
try {
|
||||||
if (+new Date() - _lastTimeTriedToRefetchWallet[walletID] < 5000) {
|
// 5sec debounce:
|
||||||
console.log('re-fetch wallet happens too fast; NOP');
|
if (+new Date() - _lastTimeTriedToRefetchWallet[walletID] < 5000) {
|
||||||
return;
|
console.log('re-fetch wallet happens too fast; NOP');
|
||||||
}
|
return;
|
||||||
_lastTimeTriedToRefetchWallet[walletID] = +new Date();
|
}
|
||||||
|
_lastTimeTriedToRefetchWallet[walletID] = +new Date();
|
||||||
|
|
||||||
await BlueElectrum.waitTillConnected();
|
await BlueElectrum.waitTillConnected();
|
||||||
setWalletTransactionUpdateStatus(walletID);
|
setWalletTransactionUpdateStatus(walletID);
|
||||||
const balanceStart = +new Date();
|
const balanceStart = +new Date();
|
||||||
await fetchWalletBalances(index);
|
await fetchWalletBalances(index);
|
||||||
const balanceEnd = +new Date();
|
const balanceEnd = +new Date();
|
||||||
console.log('fetch balance took', (balanceEnd - balanceStart) / 1000, 'sec');
|
console.log('fetch balance took', (balanceEnd - balanceStart) / 1000, 'sec');
|
||||||
const start = +new Date();
|
const start = +new Date();
|
||||||
await fetchWalletTransactions(index);
|
await fetchWalletTransactions(index);
|
||||||
const end = +new Date();
|
const end = +new Date();
|
||||||
console.log('fetch tx took', (end - start) / 1000, 'sec');
|
console.log('fetch tx took', (end - start) / 1000, 'sec');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
noErr = false;
|
noErr = false;
|
||||||
console.warn(err);
|
console.warn(err);
|
||||||
} finally {
|
} finally {
|
||||||
setWalletTransactionUpdateStatus(WalletTransactionsStatus.NONE);
|
setWalletTransactionUpdateStatus(WalletTransactionsStatus.NONE);
|
||||||
}
|
}
|
||||||
if (noErr) await saveToDisk(); // caching
|
if (noErr) await saveToDisk(); // caching
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const addWallet = (wallet: TWallet) => {
|
const addWallet = (wallet: TWallet) => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue