-
-
-
- {{backupPassphraseC.error|translate}}
-
-
-
-
-
-
-
Verifying passphrase...
-
-
-
-
-
-
- Passphrase needed
-
-
-
-
-
-
-
- Confirm passphrase
-
- Continue
-
-
-
-
-
-
-
-
diff --git a/public/views/backupWords.html b/public/views/backupWords.html
deleted file mode 100644
index d670474b0..000000000
--- a/public/views/backupWords.html
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Continue
-
- Continue
-
-
-
-
-
-
-
-
diff --git a/src/js/controllers/backup.js b/src/js/controllers/backup.js
index e2302f342..200868834 100644
--- a/src/js/controllers/backup.js
+++ b/src/js/controllers/backup.js
@@ -1,11 +1,21 @@
'use strict';
angular.module('copayApp.controllers').controller('backupController',
- function($rootScope, $scope, $timeout, $log, $compile, lodash, profileService, go, gettext, confirmDialog, notification, bwsError) {
+ function($rootScope, $scope, $timeout, $log, $state, $compile, go, lodash, profileService, bwcService, bwsError) {
var self = this;
var fc = profileService.focusedClient;
+ var customWords = [];
+ var mnemonic = null;
+ self.xPrivKey = null;
+ self.step1 = true;
+ self.step2 = false;
+ self.step3 = false;
+ self.step4 = false;
self.deleted = false;
+ self.credentialsEncrypted = false;
+ self.selectComplete = false;
+ self.backupNoOk = false;
if (fc.credentials && !fc.credentials.mnemonicEncrypted && !fc.credentials.mnemonic)
self.deleted = true;
@@ -14,7 +24,52 @@ angular.module('copayApp.controllers').controller('backupController',
self.credentialsEncrypted = true;
passwordRequest();
} else
- setWords(fc.getMnemonic());
+ setWords(getMnemonic());
+
+ function getMnemonic() {
+ mnemonic = fc.getMnemonic();
+ self.xPrivKey = fc.credentials.xPrivKey;
+ profileService.lockFC();
+ return mnemonic;
+ }
+
+ self.goToStep2 = function() {
+ self.step1 = false;
+ self.step2 = true;
+ self.step3 = false;
+ self.step4 = false;
+ $timeout(function() {
+ $scope.$apply();
+ }, 1);
+ }
+
+ self.goToStep3 = function() {
+ if (self.mnemonicHasPassphrase) {
+ self.step1 = false;
+ self.step2 = false;
+ self.step3 = true;
+ self.step4 = false;
+ } else {
+ self.step1 = false;
+ self.step2 = false;
+ self.step3 = false;
+ self.step4 = true;
+ }
+
+ $timeout(function() {
+ $scope.$apply();
+ }, 1);
+ }
+
+ self.goToStep4 = function() {
+ self.step1 = false;
+ self.step2 = false;
+ self.step3 = false;
+ self.step4 = true;
+ $timeout(function() {
+ $scope.$apply();
+ }, 1);
+ }
function setWords(words) {
if (words) {
@@ -24,9 +79,20 @@ angular.module('copayApp.controllers').controller('backupController',
}
};
+ self.toggle = function() {
+ self.error = "";
+
+ if (self.credentialsEncrypted)
+ passwordRequest();
+
+ $timeout(function() {
+ $scope.$apply();
+ }, 1);
+ };
+
function passwordRequest() {
try {
- setWords(fc.getMnemonic());
+ setWords(getMnemonic());
} catch (e) {
if (e.message && e.message.match(/encrypted/) && fc.isPrivKeyEncrypted()) {
@@ -42,9 +108,94 @@ angular.module('copayApp.controllers').controller('backupController',
}
self.credentialsEncrypted = false;
- setWords(fc.getMnemonic());
+ setWords(getMnemonic());
+
+ $timeout(function() {
+ $scope.$apply();
+ }, 1);
});
}
}
}
+
+ self.enableButton = function(word) {
+ document.getElementById(word).disabled = false;
+ lodash.remove(customWords, function(v) {
+ return v == word;
+ });
+ }
+
+ self.disableButton = function(word) {
+ document.getElementById(word).disabled = true;
+ customWords.push(word);
+ self.addButton(word);
+ }
+
+ self.addButton = function(word) {
+ var btnhtml = '