ref wallet filters - add recovery tool external link

This commit is contained in:
JDonadio 2017-09-20 17:35:55 -03:00
commit dc5d24d010
No known key found for this signature in database
GPG key ID: EC1F4E04B2BFA730
3 changed files with 48 additions and 79 deletions

View file

@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('cashScanController',
function($rootScope, $timeout, $scope, $state, $stateParams, $ionicModal, $ionicScrollDelegate, $ionicHistory, $window, gettextCatalog, lodash, popupService, ongoingProcess, profileService, walletService, configService, $log, txFormatService, bwcError, pushNotificationsService, bwcService) {
function($rootScope, $timeout, $scope, $state, $ionicHistory, gettextCatalog, lodash, ongoingProcess, profileService, walletService, $log, txFormatService, bwcError, pushNotificationsService, bwcService, externalLinkService) {
var wallet;
var errors = bwcService.getErrors();
$scope.error = null;
@ -11,6 +11,16 @@ angular.module('copayApp.controllers').controller('cashScanController',
updateAllWallets();
});
$scope.openRecoveryToolLink = function() {
var url = 'https://bitpay.github.io/copay-recovery/';
var optIn = true;
var title = null;
var message = gettextCatalog.getString('Open the recovery tool.');
var okText = gettextCatalog.getString('Open');
var cancelText = gettextCatalog.getString('Go Back');
externalLinkService.open(url, optIn, title, message, okText, cancelText);
};
var goHome = function() {
$ionicHistory.nextViewOptions({
disableAnimate: true,
@ -29,11 +39,6 @@ angular.module('copayApp.controllers').controller('cashScanController',
network: 'livenet'
});
if (lodash.isEmpty(walletsBTC)) {
goHome();
return;
}
// Filter out already duplicated wallets
var walletsBCH = profileService.getWallets({
coin: 'bch',
@ -48,50 +53,23 @@ angular.module('copayApp.controllers').controller('cashScanController',
var availableWallets = [];
var nonEligibleWallets = [];
function addToNonEligibleWallets(wallets) {
if (!wallets) return;
lodash.each(wallets, function(w) {
lodash.each(walletsBTC, function(w) {
if (w.credentials.derivationStrategy != 'BIP44') {
w.excludeReason = gettextCatalog.getString('Non BIP44 wallet');
nonEligibleWallets.push(w);
});
};
// Filter out non BIP44 wallets
var nonBIP44Wallets = lodash.filter(walletsBTC, function(w) {
return w.credentials.derivationStrategy != 'BIP44';
} else if (!w.canSign()) {
w.excludeReason = gettextCatalog.getString('Read only wallet');
nonEligibleWallets.push(w);
} else if (w.needsBackup) {
w.excludeReason = gettextCatalog.getString('Backup needed');
nonEligibleWallets.push(w);
} else {
availableWallets.push(w);
}
});
if (!lodash.isEmpty(nonBIP44Wallets)) {
availableWallets = lodash.filter(walletsBTC, function(w) {
return w.credentials.derivationStrategy == 'BIP44';
});
addToNonEligibleWallets(nonBIP44Wallets);
}
// Filter out read only wallets
var readOnlyWallets = lodash.filter(availableWallets, function(w) {
return !w.canSign();
});
if (!lodash.isEmpty(readOnlyWallets)) {
availableWallets = lodash.filter(availableWallets, function(w) {
return w.canSign();
});
addToNonEligibleWallets(readOnlyWallets);
}
// Filter out non backed up wallets
$scope.nonBackedUpWallets = lodash.filter(availableWallets, function(w) {
return w.needsBackup;
});
if (!lodash.isEmpty($scope.nonBackedUpWallets)) {
availableWallets = lodash.filter(availableWallets, function(w) {
return !w.needsBackup;
});
}
$scope.nonEligibleWallets = nonEligibleWallets;
$scope.availableWallets = availableWallets;
$scope.nonEligibleWallets = nonEligibleWallets;
var i = availableWallets.length;
var j = 0;

View file

@ -36,4 +36,8 @@
right: 15px;
padding-top: .5rem;
}
a {
cursor: pointer;
}
}

View file

@ -10,49 +10,34 @@
<ion-content>
<div class="list card">
<div class="item" ng-if="(!availableWallets || !availableWallets[0]) && !nonEligibleWallets[0]">
<span class="assertive" translate>No wallets eligible for Bitcoin Cash support</span>
<div ng-if="!availableWallets[0]">
<div class="item">
<span class="assertive" translate>No wallets eligible for Bitcoin Cash support</span>
</div>
</div>
<div class="item" ng-if="error">
<span class="assertive">{{error}}</span>
</div>
<div class="item heading">
<span translate>BTC wallets</span>
</div>
<div ng-repeat="wallet in availableWallets track by $index" class="item wallet supported">
<i class="icon big-icon-svg">
<img ng-src="img/{{wallet.network == 'testnet' ? 'icon-wallet-testnet' : (wallet.coin == 'btc' ? 'icon-btc' : 'icon-bch')}}.svg" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color': wallet.color}" class="bg wallet"/>
</i>
<div class="wallet-content">
<div>{{wallet.name || wallet.id}}</div>
<div class="balanced">{{wallet.bchBalance || ('Checking...' | translate)}} </div>
<div class="tab-home__wallet__multisig-number" ng-if="wallet.n > 1" translate>{{wallet.m}}-of-{{wallet.n}}</div>
</div>
<div class="duplicate-button">
<button ng-click="duplicate(wallet)" class="button button-small button-outline button-primary" translate>Duplicate for BCH</button>
</div>
</div>
<div ng-if="nonBackedUpWallets[0]">
<div class="item item-divider"></div>
<div ng-if="availableWallets[0]">
<div class="item heading">
<span translate>Backup needed</span>
<span translate>BTC wallets</span>
</div>
<div ng-repeat="wallet in nonBackedUpWallets track by $index" class="item item-sub item-icon-left item-big-icon-left item-button-right wallet">
<div ng-repeat="wallet in availableWallets track by $index" class="item wallet supported">
<i class="icon big-icon-svg">
<img ng-src="img/{{wallet.network == 'testnet' ? 'icon-wallet-testnet' : (wallet.coin == 'btc' ? 'icon-btc' : 'icon-bch')}}.svg" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color': walletDisabled}" class="bg wallet"/>
<img ng-src="img/{{wallet.network == 'testnet' ? 'icon-wallet-testnet' : (wallet.coin == 'btc' ? 'icon-btc' : 'icon-bch')}}.svg" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color': wallet.color}" class="bg wallet"/>
</i>
<span class="text-disabled">{{wallet.name || wallet.id}}</span>
</div>
<div class="wallet-content">
<div>{{wallet.name || wallet.id}}</div>
<div class="balanced">{{wallet.bchBalance || ('Checking...' | translate)}} </div>
<div class="tab-home__wallet__multisig-number" ng-if="wallet.n > 1" translate>{{wallet.m}}-of-{{wallet.n}}</div>
</div>
<div class="item">
<span class="comment" translate>Complete the backup process to use this option</span>
<div class="duplicate-button">
<button ng-click="duplicate(wallet)" class="button button-small button-outline button-primary" translate>Duplicate for BCH</button>
</div>
</div>
</div>
@ -67,11 +52,13 @@
<i class="icon big-icon-svg">
<img ng-src="img/{{wallet.network == 'testnet' ? 'icon-wallet-testnet' : (wallet.coin == 'btc' ? 'icon-btc' : 'icon-bch')}}.svg" ng-class="{'wallet-background-color-default': !wallet.color}" ng-style="{'background-color': walletDisabled}" class="bg wallet"/>
</i>
<span class="text-disabled">{{wallet.name || wallet.id}}</span>
<div class="text-disabled">{{wallet.name || wallet.id}}</div>
<div class="text-disabled">{{wallet.excludeReason}}</div>
</div>
<div class="item">
<span class="comment" translate>Some of you wallets are not eligible for Bitcon Cash support because both there where created before Copay v1.2 or are not available to sign. Please use our recovery tool to access your Bitcoin Cash balance for those wallets</span>
<span class="comment" translate>Some of you wallets are not eligible for Bitcon Cash support because both there where created before Copay v1.2 or are not available to sign. To access the funds from these wallets please use our</span>
<a ng-click="openRecoveryToolLink()" translate>recovery tool.</a>
</div>
</div>
</div>