Copy backup to a safe place
diff --git a/public/views/modals/txp-details.html b/public/views/modals/txp-details.html
index 4399d42eb..ca68517c7 100644
--- a/public/views/modals/txp-details.html
+++ b/public/views/modals/txp-details.html
@@ -102,7 +102,7 @@
Reject
-
+
diff --git a/public/views/walletHome.html b/public/views/walletHome.html
index d6799bed9..9d2f3c71e 100644
--- a/public/views/walletHome.html
+++ b/public/views/walletHome.html
@@ -119,6 +119,7 @@
Multisignature wallet ({{index.m}} of {{index.n}})
- Testnet
+ - No Private key
@@ -127,6 +128,7 @@
Testnet
+ - No Private key
diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js
index 0aec01726..93234d824 100644
--- a/src/js/controllers/backup.js
+++ b/src/js/controllers/backup.js
@@ -11,7 +11,15 @@ angular.module('copayApp.controllers').controller('backupController',
this.isEncrypted = fc.isPrivKeyEncrypted();
this.downloadWalletBackup = function() {
- backupService.walletDownload(this.password, function() {
+ var self = this;
+ var opts = {
+ noSign: $scope.noSign,
+ };
+ backupService.walletDownload(this.password, opts, function(err) {
+ if (err) {
+ self.error = true;
+ return ;
+ }
$rootScope.$emit('Local/BackupDone');
notification.success(gettext('Backup created'), gettext('Encrypted backup file saved'));
go.walletHome();
@@ -19,19 +27,32 @@ angular.module('copayApp.controllers').controller('backupController',
};
this.getBackup = function() {
- return backupService.walletExport(this.password);
+ var opts = {
+ noSign: $scope.noSign,
+ };
+
+ var ew = backupService.walletExport(this.password, opts);
+ if (!ew) {
+ this.error = true;
+ } else {
+ this.error = false;
+ }
+ return ew;
};
this.viewWalletBackup = function() {
var self = this;
$timeout(function() {
- self.backupWalletPlainText = self.getBackup();
+ var ew = self.getBackup();
+ if (!ew) return;
+ self.backupWalletPlainText = ew;
$rootScope.$emit('Local/BackupDone');
}, 100);
};
this.copyWalletBackup = function() {
var ew = this.getBackup();
+ if (!ew) return;
window.cordova.plugins.clipboard.copy(ew);
window.plugins.toast.showShortCenter('Copied to clipboard');
$rootScope.$emit('Local/BackupDone');
@@ -48,6 +69,11 @@ angular.module('copayApp.controllers').controller('backupController',
name = fc.alias + ' [' + name + ']';
}
var ew = this.getBackup();
+ if (!ew) return;
+
+ if( $scope.noSign)
+ name = name + '(No Private Key)';
+
var properties = {
subject: 'Copay Wallet Backup: ' + name,
body: 'Here is the encrypted backup of the wallet ' + name + ': \n\n' + ew + '\n\n To import this backup, copy all text between {...}, including the symbols {}',
diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js
index dbc4457b3..57bda66e1 100644
--- a/src/js/controllers/index.js
+++ b/src/js/controllers/index.js
@@ -106,6 +106,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r
self.walletName = fc.credentials.walletName;
self.walletId = fc.credentials.walletId;
self.isComplete = fc.isComplete();
+ self.canSign = fc.canSign();
self.txps = [];
self.copayers = [];
self.updateColor();
diff --git a/src/js/controllers/walletHome.js b/src/js/controllers/walletHome.js
index 4ec2e9ea2..79a9db808 100644
--- a/src/js/controllers/walletHome.js
+++ b/src/js/controllers/walletHome.js
@@ -182,6 +182,7 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
$scope.alternativeAmountStr = tx.alternativeAmountStr;
$scope.copayers = copayers
$scope.copayerId = fc.credentials.copayerId;
+ $scope.canSign= fc.canSign();
$scope.loading = null;
$scope.color = fc.backgroundColor;
refreshUntilItChanges = false;
@@ -229,6 +230,10 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
$scope.sign = function(txp) {
var fc = profileService.focusedClient;
+
+ if (!fc.canSign())
+ return;
+
if (fc.isPrivKeyEncrypted()) {
profileService.unlockFC(function(err) {
if (err) {
@@ -727,6 +732,16 @@ angular.module('copayApp.controllers').controller('walletHomeController', functi
return self.setSendError(err);
}
+ if (!fc.canSign()) {
+ $log.info('No signing proposal: No private key')
+ self.setOngoingProcess();
+ self.resetForm();
+ txStatus.notify(txp, function() {
+ return $scope.$emit('Local/TxProposalAction');
+ });
+ return;
+ }
+
self.signAndBroadcast(txp, function(err) {
self.setOngoingProcess();
profileService.lockFC();
diff --git a/src/js/services/backupService.js b/src/js/services/backupService.js
index 328e5fcd8..de47cf5a2 100644
--- a/src/js/services/backupService.js
+++ b/src/js/services/backupService.js
@@ -53,13 +53,14 @@ angular.module('copayApp.services')
return cb();
};
- root.walletExport = function(password) {
+ root.walletExport = function(password, opts) {
if (!password) {
return null;
}
var fc = profileService.focusedClient;
try {
- var b = fc.export({});
+ opts = opts || {};
+ var b = fc.export(opts);
var e = sjcl.encrypt(password, b, {
iter: 10000
});
@@ -70,12 +71,13 @@ angular.module('copayApp.services')
};
};
- root.walletDownload = function(password, cb) {
+ root.walletDownload = function(password, opts, cb) {
var fc = profileService.focusedClient;
- var ew = root.walletExport(password);
+ var ew = root.walletExport(password, opts);
if (!ew) return cb('Could not create backup');
var walletName = (fc.alias || '') + (fc.alias ? '-' : '') + fc.credentials.walletName;
+ if (opts.noSign) walletName = walletName + '-noSign'
var filename = walletName + '-Copaybackup.aes.json';
_download(ew, filename, cb)
};