Skip to content
This repository was archived by the owner on Aug 24, 2021. It is now read-only.

Commit ca98135

Browse files
Merge pull request #224 from gnosis/bug/ledger-trezor-cannot-operate
Bug/ledger trezor cannot operate
2 parents 8cd19b0 + a1299c2 commit ca98135

File tree

5 files changed

+99
-45
lines changed

5 files changed

+99
-45
lines changed

dapp/controllers/navCtrl.js

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
$scope.isElectron = isElectron;
88
$scope.config = Config.getConfiguration();
99
$scope.metamaskInjected = Web3Service.isMetamaskInjected();
10+
$scope.web3ProviderName = null;
1011

1112
// Reload config when it changes
1213
$scope.$watch(
@@ -219,6 +220,7 @@
219220
Connection.checkConnection();
220221
$scope.updateConnectionStatus();
221222
$scope.connectionInterval = $interval($scope.updateConnectionStatus, txDefault.connectionChecker.checkInterval);
223+
$scope.web3ProviderName = txDefault.wallet;
222224

223225
$scope.updateInfo().then(function () {
224226
var chooseWeb3ProviderShown = Config.getConfiguration('chooseWeb3ProviderShown');

dapp/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@
179179
<span class="navbar-text">{{ethereumChain.chain.substr(0, 1).toUpperCase() + ethereumChain.chain.substr(1)}}</span>
180180
<span class="navbar-text" ng-bind-html="statusIcon"></span>
181181
</li>
182-
<li ng-show="metamaskInjected && !loggedIn">
182+
<li ng-show="web3ProviderName === 'injected' && metamaskInjected && !loggedIn">
183183
<a hef="#" ng-click="openMetamaskWidget()">Unlock Metamask</a>
184184
</li>
185185
</ul>

dapp/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "multisigweb",
3-
"version": "1.4.0",
3+
"version": "1.4.1",
44
"eslintConfig": {
55
"env": {
66
"browser": true,

dapp/services/Web3Service.js

+94-42
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
factory.enableMetamask = function (callback) {
2626
$window.ethereum.enable().then(function (accounts) {
27-
factory.reloadWeb3Provider();
27+
factory.reloadWeb3Provider(null, callback);
2828
// Set accounts and coinbase
2929
factory.accounts = accounts;
3030
factory.coinbase = accounts[0];
@@ -67,26 +67,26 @@
6767
// Ledger wallet
6868
if (txDefault.wallet == "ledger") {
6969
if (isElectron) {
70-
factory.ledgerElectronSetup();
71-
factory.web3.eth.getAccounts(function (e, accounts) {
72-
if (e) {
73-
if (reject) {
74-
reject(e);
75-
}
76-
} else {
77-
factory.accounts = accounts;
78-
factory.coinbase = factory.accounts[0];
79-
if (resolve) {
80-
resolve();
81-
}
70+
factory.ledgerElectronSetup().then(function () {
71+
if (resolve) {
72+
resolve()
8273
}
83-
});
74+
}, function (e) {
75+
if (reject) {
76+
reject(e)
77+
}
78+
})
8479
}
8580
else {
86-
factory.ledgerSetup();
87-
if (resolve) {
88-
resolve();
89-
}
81+
factory.ledgerSetup().then(function () {
82+
if (resolve) {
83+
resolve()
84+
}
85+
}, function (e) {
86+
if (reject) {
87+
reject(e)
88+
}
89+
})
9090
}
9191
}
9292
else if (txDefault.wallet == "trezor") {
@@ -240,42 +240,70 @@
240240
});
241241
};
242242

243+
// /**
244+
// * Get ethereum accounts and update account list.
245+
// */
246+
// factory.updateAccounts = function (cb) {
247+
// if (!isElectron && factory.coinbase) {
248+
// return factory.web3.eth.getAccounts(
249+
// function (e, accounts) {
250+
// if (e) {
251+
// cb(e);
252+
// }
253+
// else {
254+
// factory.accounts = accounts;
255+
//
256+
// if (factory.coinbase && accounts && accounts.length && accounts.indexOf(factory.coinbase) != -1) {
257+
// // same coinbase
258+
// }
259+
// else if (accounts) {
260+
// factory.coinbase = accounts[0];
261+
// }
262+
// else {
263+
// factory.coinbase = null;
264+
// }
265+
//
266+
// cb(null, accounts);
267+
// }
268+
// }
269+
// );
270+
// }
271+
// else {
272+
// cb(null, null);
273+
// }
274+
// };
275+
243276
/**
244277
* Get ethereum accounts and update account list.
245278
*/
246279
factory.updateAccounts = function (cb) {
247-
if (!isElectron && factory.coinbase) {
248-
return factory.web3.eth.getAccounts(
249-
function (e, accounts) {
250-
if (e) {
251-
cb(e);
280+
return factory.web3.eth.getAccounts(
281+
function (e, accounts) {
282+
if (e) {
283+
cb(e);
284+
}
285+
else {
286+
factory.accounts = accounts;
287+
288+
if (factory.coinbase && accounts && accounts.length && accounts.indexOf(factory.coinbase) != -1) {
289+
// same coinbase
290+
}
291+
else if (accounts) {
292+
factory.coinbase = accounts[0];
252293
}
253294
else {
254-
factory.accounts = accounts;
255-
256-
if (factory.coinbase && accounts && accounts.length && accounts.indexOf(factory.coinbase) != -1) {
257-
// same coinbase
258-
}
259-
else if (accounts) {
260-
factory.coinbase = accounts[0];
261-
}
262-
else {
263-
factory.coinbase = null;
264-
}
265-
266-
cb(null, accounts);
295+
factory.coinbase = null;
267296
}
297+
298+
cb(null, accounts);
268299
}
269-
);
270-
}
271-
else {
272-
cb(null, null);
273-
}
300+
}
301+
);
274302
};
275303

276304
/* Ledger setup on browser*/
277305
factory.ledgerSetup = function () {
278-
ledgerwallet(
306+
return ledgerwallet(
279307
{
280308
rpcUrl: txDefault.ethereumNode,
281309
onSubmit: function () {
@@ -332,6 +360,18 @@
332360
$scope.checkCoinbase();
333361
}
334362
});
363+
364+
return new Promise(function(resolve, reject) {
365+
factory.web3.eth.getAccounts(function (e, accounts) {
366+
if (e) {
367+
reject(e);
368+
} else {
369+
factory.accounts = accounts;
370+
factory.coinbase = factory.accounts[0];
371+
resolve();
372+
}
373+
});
374+
});
335375
}
336376
);
337377
};
@@ -424,6 +464,18 @@
424464
$scope.checkCoinbase();
425465
}
426466
});
467+
468+
return new Promise(function(resolve, reject) {
469+
factory.web3.eth.getAccounts(function (e, accounts) {
470+
if (e) {
471+
reject(e);
472+
} else {
473+
factory.accounts = accounts;
474+
factory.coinbase = factory.accounts[0];
475+
resolve();
476+
}
477+
});
478+
});
427479
};
428480

429481
/* Trezor setup */

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "multisig-wallet-gnosis",
3-
"version": "1.4.0",
3+
"version": "1.4.1",
44
"description": "Main module, for installing all dependencies",
55
"scripts": {
66
"test-dapp": "cd dapp && npm test",

0 commit comments

Comments
 (0)