diff --git a/app-template/copay/appConfig.json b/app-template/copay/appConfig.json
index cde53fefa..625cbd184 100644
--- a/app-template/copay/appConfig.json
+++ b/app-template/copay/appConfig.json
@@ -22,7 +22,7 @@
"windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c",
"pushSenderId": "1036948132229",
"description": "A Secure Bitcoin Wallet",
- "version": "3.4.0",
+ "version": "3.4.1",
"androidVersion": "340001",
"_extraCSS": null,
"_enabledExtensions": {
diff --git a/src/js/controllers/import.js b/src/js/controllers/import.js
index c5657d5cf..0c3fbdf7d 100644
--- a/src/js/controllers/import.js
+++ b/src/js/controllers/import.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('copayApp.controllers').controller('importController',
- function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, profileService, configService, sjcl, ledger, trezor, derivationPathHelper, platformInfo, bwcService, ongoingProcess, walletService, popupService, gettextCatalog, appConfigService) {
+ function($scope, $timeout, $log, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, profileService, configService, sjcl, ledger, trezor, derivationPathHelper, platformInfo, bwcService, ongoingProcess, walletService, popupService, gettextCatalog, appConfigService, hwWallet) {
var reader = new FileReader();
var defaults = configService.getDefaults();
@@ -38,6 +38,21 @@ angular.module('copayApp.controllers').controller('importController',
$scope.formData.seedSource = $scope.seedOptions[0];
}
+
+ $scope.seedOptionsAll = [];
+
+ $scope.seedOptionsAll.push({
+ id: walletService.externalSource.ledger.id,
+ label: walletService.externalSource.ledger.longName,
+ });
+
+ $scope.seedOptionsAll.push({
+ id: walletService.externalSource.trezor.id,
+ label: walletService.externalSource.trezor.longName,
+ });
+ $scope.formData.seedSourceAll = $scope.seedOptionsAll[0];
+
+
$timeout(function() {
$scope.$apply();
});
@@ -159,6 +174,7 @@ angular.module('copayApp.controllers').controller('importController',
$timeout(function() {
profileService.importMnemonic(words, opts, function(err, client) {
+
ongoingProcess.set('importingWallet', false);
if (err) {
@@ -177,7 +193,7 @@ angular.module('copayApp.controllers').controller('importController',
};
$scope.setDerivationPath = function() {
- $scope.formData.derivationPath = $scope.formData.testnetEnabled ? derivationPathHelper.defaultTestnet : derivationPathHelper.default;
+ $scope.formData.testnetEnabled ? derivationPathHelper.defaultTestnet : derivationPathHelper.default;
};
$scope.getFile = function() {
@@ -256,6 +272,18 @@ angular.module('copayApp.controllers').controller('importController',
}
opts.passphrase = $scope.formData.passphrase || null;
+
+ if ($scope.formData.fromHardwareWallet) {
+ $log.debug('Importing seed from hardware wallet');
+ $log.warn('This wont work for Intel TEE wallets');
+
+ var id = $scope.formData.seedSourceAll.id;
+ var isMultisig = opts.derivationStrategy =='BIP48';
+ var account = opts.account;
+ opts.entropySourcePath = 'm/' + hwWallet.getEntropyPath(id, isMultisig, account);
+ }
+
+console.log('[import.js.283:opts:]',opts); //TODO
_importMnemonic(words, opts);
};
@@ -269,6 +297,7 @@ angular.module('copayApp.controllers').controller('importController',
lopts.externalSource = walletService.externalSource.trezor.id;
lopts.bwsurl = $scope.formData.bwsurl;
+console.log('[import.js.299:lopts:]',lopts); //TODO
ongoingProcess.set('importingWallet', true);
$log.debug('Import opts', lopts);
diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js
index 6ef9b96b0..8c5a93662 100644
--- a/src/js/services/profileService.js
+++ b/src/js/services/profileService.js
@@ -208,9 +208,9 @@ angular.module('copayApp.services')
};
var shouldSkipValidation = function(walletId) {
- return root.profile.isChecked(platformInfo.ua, walletId) || isIOS || isWP;
- }
- // Used when reading wallets from the profile
+ return root.profile.isChecked(platformInfo.ua, walletId) || isIOS || isWP;
+ }
+ // Used when reading wallets from the profile
root.bindWallet = function(credentials, cb) {
if (!credentials.walletId || !credentials.m)
return cb('bindWallet should receive credentials JSON');
@@ -618,6 +618,8 @@ angular.module('copayApp.services')
walletClient.importFromMnemonic(words, {
network: opts.networkName,
passphrase: opts.passphrase,
+ entropySourcePath: opts.entropySourcePath,
+ derivationStrategy: opts.derivationStrategy || 'BIP44',
account: opts.account || 0,
}, function(err) {
if (err) {
diff --git a/src/js/services/trezor.js b/src/js/services/trezor.js
index 0411386fc..b835e1ae9 100644
--- a/src/js/services/trezor.js
+++ b/src/js/services/trezor.js
@@ -18,7 +18,9 @@ angular.module('copayApp.services')
};
root.getEntropySource = function(isMultisig, account, callback) {
+console.log('[trezor.js.20:isMultisig:]',root.description.id, isMultisig, account); //TODO
root.getXPubKey(hwWallet.getEntropyPath(root.description.id, isMultisig, account), function(data) {
+console.log('[trezor.js.21:data:]',data); //TODO
if (!data.success)
return callback(hwWallet._err(data));
@@ -30,6 +32,7 @@ angular.module('copayApp.services')
root.getXPubKey = function(path, callback) {
$log.debug('TREZOR deriving xPub path:', path);
try {
+console.log('[trezor.js.35:path:]',path); //TODO
TrezorConnect.getXPubKey(path, callback);
} catch (e) {
callback('Error connecting Trezor');
diff --git a/www/views/tab-import-phrase.html b/www/views/tab-import-phrase.html
index 4146cac79..50d021038 100644
--- a/www/views/tab-import-phrase.html
+++ b/www/views/tab-import-phrase.html
@@ -49,14 +49,23 @@
ng-model="formData.derivationPath">
+
+
+ From Hardware Wallet
+
+
+
+
+
+ Testnet
+
+
+
-
- Testnet
-