Merge fix for wallet-balance for non-stringifyable wallet.

This commit is contained in:
Brendon Duncan 2018-08-10 17:16:50 +12:00
commit 38d2c6a3c6
2 changed files with 39 additions and 24 deletions

View file

@ -10,7 +10,12 @@
scope: { scope: {
displayAsFiat: '@', displayAsFiat: '@',
totalBalanceSat: '@', totalBalanceSat: '@',
wallet: '@' // The Wallet object is sometimes not stringify()-able, so not interpolatable,
// so can't be passed to a directive.
walletStatus: '@',
walletCachedBalance: '@',
walletCachedBalanceUpdatedOn: '@',
walletCachedStatus: '@'
}, },
templateUrl: 'views/includes/wallet-balance.html', templateUrl: 'views/includes/wallet-balance.html',
controller: walletBalanceController controller: walletBalanceController
@ -25,38 +30,38 @@
formatBalance(); formatBalance();
}); });
function displayCryptoBalance(wallet) { function displayCryptoBalance(walletStatus, walletCachedBalance, walletCachedBalanceUpdatedOn, walletCachedStatus) {
console.log('displayCryptoBalance()'); console.log('displayCryptoBalance()');
if (wallet.status && wallet.status.isValid && wallet.status.totalBalanceStr) { if (walletStatus && walletStatus.isValid && walletStatus.totalBalanceStr) {
setDisplay(wallet.status.totalBalanceStr, ''); setDisplay(walletStatus.totalBalanceStr, '');
cryptoBalanceHasBeenDisplayed = true; cryptoBalanceHasBeenDisplayed = true;
return; return;
} }
if (wallet.cachedBalance) { if (walletCachedBalance) {
setDisplay(wallet.cachedBalance, wallet.cachedBalanceUpdatedOn); setDisplay(walletCachedBalance, walletCachedBalanceUpdatedOn);
return; return;
} }
if (wallet.cachedStatus && wallet.status.isValid && wallet.cachedStatus.totalBalanceStr) { if (walletCachedStatus && walletCachedStatus.isValid && walletCachedStatus.totalBalanceStr) {
setDisplay(wallet.cachedStatus.totalBalanceStr, ''); setDisplay(walletCachedStatus.totalBalanceStr, '');
return; return;
} }
setDisplay('', ''); setDisplay('', '');
} }
function displayFiatBalance(wallet) { function displayFiatBalance(walletStatus, walletCachedStatus) {
var displayAmount = ''; var displayAmount = '';
if (wallet.status && wallet.status.isValid && wallet.status.alternativeBalanceAvailable) { if (walletStatus && walletStatus.isValid && walletStatus.alternativeBalanceAvailable) {
displayAmount = wallet.status.totalBalanceAlternative + ' ' + wallet.status.alternativeIsoCode; displayAmount = walletStatus.totalBalanceAlternative + ' ' + walletStatus.alternativeIsoCode;
setDisplay(displayAmount, ''); setDisplay(displayAmount, '');
return; return;
} }
if (wallet.cachedStatus && wallet.cachedStatus.isValid && wallet.cachedStatus.alternativeBalanceAvailable) { if (walletCachedStatus && walletCachedStatus.isValid && walletCachedStatus.alternativeBalanceAvailable) {
displayAmount = wallet.cachedStatus.totalBalanceAlternative + ' ' + wallet.cachedStatus.alternativeIsoCode; displayAmount = walletCachedStatus.totalBalanceAlternative + ' ' + walletCachedStatus.alternativeIsoCode;
setDisplay(displayAmount, ''); setDisplay(displayAmount, '');
return; return;
} }
@ -66,26 +71,30 @@
function formatBalance() { function formatBalance() {
var displayAsFiat = $scope.displayAsFiat === 'true'; var displayAsFiat = $scope.displayAsFiat === 'true';
if (!$scope.wallet) {
setDisplay('', ''); var walletStatusObj = null;
return; var walletCachedBalance = null;
var walletCachedBalanceUpdatedOn = null;
var walletCachedStatusObj = null;
try {
walletStatusObj = JSON.parse($scope.walletStatus);
} catch (e) {
$log.warn('Failed to parse walletStatus.', e);
} }
var wallet = null;
try { try {
wallet = JSON.parse($scope.wallet); walletCachedStatusObj = JSON.parse($scope.walletCachedStatus);
} catch (e) { } catch (e) {
$log.error('Error parsing wallet to display balance.', e); $log.warn('Failed to parse walletCachedStatus.', e);
setDisplay('', '');
return;
} }
if (!displayAsFiat || displayAsFiat && !cryptoBalanceHasBeenDisplayed) { if (!displayAsFiat || displayAsFiat && !cryptoBalanceHasBeenDisplayed) {
displayCryptoBalance(wallet); displayCryptoBalance(walletStatusObj, walletCachedBalance, walletCachedBalanceUpdatedOn, walletCachedStatusObj);
} }
if (displayAsFiat) { if (displayAsFiat) {
displayFiatBalance(wallet); displayFiatBalance(walletStatusObj, walletCachedStatusObj);
} }
} }

View file

@ -16,7 +16,13 @@
></div> ></div>
</i> </i>
<h2>{{fromWallet.name}}</h2> <h2>{{fromWallet.name}}</h2>
<wallet-balance display-as-fiat="{{displayBalanceAsFiat}}" wallet="{{fromWallet}}" total-balance-sat="{{fromWallet.status.totalBalanceSat}}"></wallet-balance> <wallet-balance
display-as-fiat="{{displayBalanceAsFiat}}"
wallet-status="{{fromWallet.status}}"
wallet-cached-balance="{{fromWallet.cachedBalance}}"
wallet-cached-balance-updated-on="{{fromWallet.cachedBalanceUpdatedOn}}"
wallet-cached-status="{{fromWallet.cachedStatus}}"
total-balance-sat="{{fromWallet.status.totalBalanceSat}}"></wallet-balance>
<!--<p ng-show="vm.origin.balanceAmount">{{vm.origin.balanceAmount}} {{vm.origin.balanceCurrency}}</p>--> <!--<p ng-show="vm.origin.balanceAmount">{{vm.origin.balanceAmount}} {{vm.origin.balanceCurrency}}</p>-->
<!--<formatted-amount value="{{fromWallet.status.totalBalanceStr ? fromWallet.status.totalBalanceStr : ( fromWallet.cachedBalance ? fromWallet.cachedBalance + (fromWallet.cachedBalanceUpdatedOn ? ' &middot; ' + ( fromWallet.cachedBalanceUpdatedOn * 1000 | amTimeAgo) : '') : '' ) }}"></formatted-amount>--> <!--<formatted-amount value="{{fromWallet.status.totalBalanceStr ? fromWallet.status.totalBalanceStr : ( fromWallet.cachedBalance ? fromWallet.cachedBalance + (fromWallet.cachedBalanceUpdatedOn ? ' &middot; ' + ( fromWallet.cachedBalanceUpdatedOn * 1000 | amTimeAgo) : '') : '' ) }}"></formatted-amount>-->
</div> </div>