From 7beb2589d669c29eed8ecad7df5a50da9f8b75af Mon Sep 17 00:00:00 2001 From: Gustavo Maximiliano Cortez Date: Thu, 9 Oct 2014 10:37:00 -0300 Subject: [PATCH] View plain text backup for Safari --- js/controllers/copayers.js | 21 ++++++++++++++------- js/controllers/more.js | 6 ++++++ js/services/backupService.js | 6 +++++- views/copayers.html | 22 +++++++++++++++++++--- views/more.html | 22 +++++++++++++++++----- 5 files changed, 61 insertions(+), 16 deletions(-) diff --git a/js/controllers/copayers.js b/js/controllers/copayers.js index 57573b4d0..43721afb7 100644 --- a/js/controllers/copayers.js +++ b/js/controllers/copayers.js @@ -2,10 +2,9 @@ angular.module('copayApp.controllers').controller('CopayersController', function($scope, $rootScope, $location, backupService, walletFactory, controllerUtils) { - + $scope.isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; $scope.hideAdv = true; - $scope.skipBackup = function() { var w = $rootScope.wallet; w.setBackupReady(true); @@ -13,14 +12,22 @@ angular.module('copayApp.controllers').controller('CopayersController', $scope.backup = function() { var w = $rootScope.wallet; - w.setBackupReady(); - backupService.download(w); + if ($scope.isSafari) { + $scope.viewBackup(w); + } else { + w.setBackupReady(); + $scope.downloadBackup(w); + } }; - $scope.downloadBackup = function() { - var w = $rootScope.wallet; + $scope.downloadBackup = function(w) { backupService.download(w); - } + }; + + $scope.viewBackup = function(w) { + $scope.backupPlainText = backupService.getBackup(w); + $scope.hideViewBackup = true; + }; $scope.goToWallet = function() { controllerUtils.updateAddressList(); diff --git a/js/controllers/more.js b/js/controllers/more.js index 782b4fd29..6b4fb4f51 100644 --- a/js/controllers/more.js +++ b/js/controllers/more.js @@ -3,6 +3,7 @@ angular.module('copayApp.controllers').controller('MoreController', function($scope, $rootScope, $location, $filter, backupService, walletFactory, controllerUtils, notification, rateService) { var w = $rootScope.wallet; + $scope.isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; $scope.unitOpts = [{ name: 'Satoshis (100,000,000 satoshis = 1BTC)', @@ -74,6 +75,11 @@ angular.module('copayApp.controllers').controller('MoreController', backupService.download(w); } + $scope.viewBackup = function() { + $scope.backupPlainText = backupService.getBackup(w); + $scope.hideViewBackup = true; + }; + $scope.deleteWallet = function() { walletFactory.delete(w.id, function() { controllerUtils.logout(); diff --git a/js/services/backupService.js b/js/services/backupService.js index 74ca8a7f0..591fc3eb9 100644 --- a/js/services/backupService.js +++ b/js/services/backupService.js @@ -13,8 +13,12 @@ BackupService.prototype.getCopayer = function(wallet) { return wallet.totalCopayers > 1 ? wallet.getMyCopayerNickname() : ''; }; +BackupService.prototype.getBackup = function(wallet) { + return wallet.toEncryptedObj(); +}; + BackupService.prototype.download = function(wallet) { - var ew = wallet.toEncryptedObj(); + var ew = this.getBackup(wallet); var walletName = this.getName(wallet); var copayerName = this.getCopayer(wallet); var filename = (copayerName ? copayerName + '-' : '') + walletName + '-keybackup.json.aes'; diff --git a/views/copayers.html b/views/copayers.html index e50f61114..c24904d74 100644 --- a/views/copayers.html +++ b/views/copayers.html @@ -78,13 +78,17 @@ +
Skip Backup @@ -115,6 +119,18 @@ yet to backup the wallet. +
+ +
+ Copy to clipboard +
+
+ Copy this text as it is in a safe place (notepad or email) +
+
+
diff --git a/views/more.html b/views/more.html index c6390c281..c19af9646 100644 --- a/views/more.html +++ b/views/more.html @@ -1,10 +1,22 @@

Settings

-
-

Backup

-

It's important to backup your wallet so that you can recover it in case of disaster

-
- Download File +
+

Backup

+

+ It's important to backup your wallet so that you can recover it in case of disaster +

+ Download File + View Backup +
+ +
+ Copy to clipboard +
+
+ Copy this text as it is in a safe place (notepad or email) +