|
24 | 24 | */
|
25 | 25 | factory.enableMetamask = function (callback) {
|
26 | 26 | $window.ethereum.enable().then(function (accounts) {
|
27 |
| - factory.reloadWeb3Provider(); |
| 27 | + factory.reloadWeb3Provider(null, callback); |
28 | 28 | // Set accounts and coinbase
|
29 | 29 | factory.accounts = accounts;
|
30 | 30 | factory.coinbase = accounts[0];
|
|
67 | 67 | // Ledger wallet
|
68 | 68 | if (txDefault.wallet == "ledger") {
|
69 | 69 | 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() |
82 | 73 | }
|
83 |
| - }); |
| 74 | + }, function (e) { |
| 75 | + if (reject) { |
| 76 | + reject(e) |
| 77 | + } |
| 78 | + }) |
84 | 79 | }
|
85 | 80 | 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 | + }) |
90 | 90 | }
|
91 | 91 | }
|
92 | 92 | else if (txDefault.wallet == "trezor") {
|
|
240 | 240 | });
|
241 | 241 | };
|
242 | 242 |
|
| 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 | + |
243 | 276 | /**
|
244 | 277 | * Get ethereum accounts and update account list.
|
245 | 278 | */
|
246 | 279 | 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]; |
252 | 293 | }
|
253 | 294 | 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; |
267 | 296 | }
|
| 297 | + |
| 298 | + cb(null, accounts); |
268 | 299 | }
|
269 |
| - ); |
270 |
| - } |
271 |
| - else { |
272 |
| - cb(null, null); |
273 |
| - } |
| 300 | + } |
| 301 | + ); |
274 | 302 | };
|
275 | 303 |
|
276 | 304 | /* Ledger setup on browser*/
|
277 | 305 | factory.ledgerSetup = function () {
|
278 |
| - ledgerwallet( |
| 306 | + return ledgerwallet( |
279 | 307 | {
|
280 | 308 | rpcUrl: txDefault.ethereumNode,
|
281 | 309 | onSubmit: function () {
|
|
332 | 360 | $scope.checkCoinbase();
|
333 | 361 | }
|
334 | 362 | });
|
| 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 | + }); |
335 | 375 | }
|
336 | 376 | );
|
337 | 377 | };
|
|
424 | 464 | $scope.checkCoinbase();
|
425 | 465 | }
|
426 | 466 | });
|
| 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 | + }); |
427 | 479 | };
|
428 | 480 |
|
429 | 481 | /* Trezor setup */
|
|
0 commit comments