diff --git a/js/controllers/import.js b/js/controllers/import.js index 306fd5aa4..43c3376c2 100644 --- a/js/controllers/import.js +++ b/js/controllers/import.js @@ -1,6 +1,22 @@ 'use strict'; angular.module('copay.import').controller('ImportController', - function($scope, $rootScope) { + function($scope, $rootScope, walletFactory, controllerUtils) { $scope.title = 'Import a backup'; + + $scope.getFile = function() { + var reader = new FileReader(); + + // If we use onloadend, we need to check the readyState. + reader.onloadend = function(evt) { + if (evt.target.readyState == FileReader.DONE) { // DONE == 2 + var obj = JSON.parse(evt.target.result); + $rootScope.wallet = walletFactory.fromObj(obj); + + controllerUtils.startNetwork($rootScope.wallet); + } + }; + + reader.readAsBinaryString($scope.file); + }; }); diff --git a/js/models/core/WalletFactory.js b/js/models/core/WalletFactory.js index 7a2972cbe..86c863d9c 100644 --- a/js/models/core/WalletFactory.js +++ b/js/models/core/WalletFactory.js @@ -51,16 +51,11 @@ WalletFactory.prototype._checkRead = function(walletId) { return ret?true:false; }; -WalletFactory.prototype.read = function(walletId) { - if (! this._checkRead(walletId)) - return false; - - var s = this.storage; - var opts = s.get(walletId, 'opts'); - opts.id = walletId; - opts.publicKeyRing = new PublicKeyRing.fromObj(s.get(walletId, 'publicKeyRing')); - opts.txProposals = new TxProposals.fromObj(s.get(walletId, 'txProposals')); - opts.privateKey = new PrivateKey.fromObj(s.get(walletId, 'privateKey')); +WalletFactory.prototype.fromObj = function(obj) { + var opts = obj.opts; + opts.publicKeyRing = new PublicKeyRing.fromObj(obj.publicKeyRing); + opts.txProposals = new TxProposals.fromObj(obj.txProposals); + opts.privateKey = new PrivateKey.fromObj(obj.privateKey); opts.storage = this.storage; opts.network = this.network; opts.blockchain = this.blockchain; @@ -76,6 +71,22 @@ WalletFactory.prototype.read = function(walletId) { // No really an error, just to be sure. } this.log('### WALLET OPENED:', w.id); + + return w; +}; + +WalletFactory.prototype.read = function(walletId) { + if (! this._checkRead(walletId)) + return false; + + var s = this.storage; + var opts = s.get(walletId, 'opts'); + opts.id = walletId; + opts.publicKeyRing = s.get(walletId, 'publicKeyRing'); + opts.txProposals = s.get(walletId, 'txProposals'); + opts.privateKey = s.get(walletId, 'privateKey'); + + w = this.formObj(opts); return w; };