Как обнаружить изменения в учетной записи в Metamask?

Когда пользователь меняет другую учетную запись в метамаске, есть ли способ обнаружить ее асинхронно в коде?

В настоящее время я использую

this.web3.eth.getAccounts((err, accs) => {   
  this.account = accs[0];
});  

, но когда учетная запись изменена, она по-прежнему поднимает предыдущую. Обновление страницы - это не выход. Кто-нибудь сталкивался с этим и имел решение?

4 голоса | спросил bbusdriver 14 MarpmWed, 14 Mar 2018 22:36:25 +03002018-03-14T22:36:25+03:0010 2018, 22:36:25

2 ответа


6

Как указано в метамаске Часто задаваемые вопросы , это может быть вариант:

var account = web3.eth.accounts [0];
var accountInterval = setInterval (function () {
  if (web3.eth.accounts [0]! == account) {
    account = web3.eth.accounts [0];
    updateInterface ();
  }
}, 100);
ответил mirg 15 MaramThu, 15 Mar 2018 09:27:25 +03002018-03-15T09:27:25+03:0009 2018, 09:27:25
11

Используя web3 version 1.0.0, поставщик метаданных предоставляет событие «обновления», которое вы можете прослушать в publicConfigStore.

web3.currentProvider.publicConfigStore.on('update', callback);

Ваш обратный вызов будет передан объекту с 'selectedAddress' и 'networkVersion' всякий раз, когда эти атрибуты меняются.

ответил Brian Ethier 21 Mayam18 2018, 07:49:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132