AbstractWeb3Connector.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
  7. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  8. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  9. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  10. var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
  11. var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
  12. var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
  13. var _events = _interopRequireDefault(require("events"));
  14. var _verifyChainId = _interopRequireDefault(require("../utils/verifyChainId"));
  15. var _events2 = require("./events");
  16. function _createSuper(Derived) {
  17. var hasNativeReflectConstruct = _isNativeReflectConstruct();
  18. return function () {
  19. var Super = (0, _getPrototypeOf2.default)(Derived),
  20. result;
  21. if (hasNativeReflectConstruct) {
  22. var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;
  23. result = Reflect.construct(Super, arguments, NewTarget);
  24. } else {
  25. result = Super.apply(this, arguments);
  26. }
  27. return (0, _possibleConstructorReturn2.default)(this, result);
  28. };
  29. }
  30. function _isNativeReflectConstruct() {
  31. if (typeof Reflect === "undefined" || !Reflect.construct) return false;
  32. if (Reflect.construct.sham) return false;
  33. if (typeof Proxy === "function") return true;
  34. try {
  35. Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
  36. return true;
  37. } catch (e) {
  38. return false;
  39. }
  40. }
  41. var AbstractWeb3Connector = function (_EventEmitter) {
  42. (0, _inherits2.default)(AbstractWeb3Connector, _EventEmitter);
  43. var _super = _createSuper(AbstractWeb3Connector);
  44. function AbstractWeb3Connector() {
  45. var _this;
  46. (0, _classCallCheck2.default)(this, AbstractWeb3Connector);
  47. _this = _super.call(this);
  48. _this.type = 'abstract';
  49. _this.network = 'evm';
  50. _this.account = null;
  51. _this.chainId = null;
  52. _this.handleAccountsChanged = _this.handleAccountsChanged.bind((0, _assertThisInitialized2.default)(_this));
  53. _this.handleChainChanged = _this.handleChainChanged.bind((0, _assertThisInitialized2.default)(_this));
  54. _this.handleConnect = _this.handleConnect.bind((0, _assertThisInitialized2.default)(_this));
  55. _this.handleDisconnect = _this.handleDisconnect.bind((0, _assertThisInitialized2.default)(_this));
  56. return _this;
  57. }
  58. (0, _createClass2.default)(AbstractWeb3Connector, [{
  59. key: "subscribeToEvents",
  60. value: function (provider) {
  61. if (provider && provider.on) {
  62. provider.on(_events2.EthereumEvents.CHAIN_CHANGED, this.handleChainChanged);
  63. provider.on(_events2.EthereumEvents.ACCOUNTS_CHANGED, this.handleAccountsChanged);
  64. provider.on(_events2.EthereumEvents.CONNECT, this.handleConnect);
  65. provider.on(_events2.EthereumEvents.DISCONNECT, this.handleDisconnect);
  66. }
  67. }
  68. }, {
  69. key: "unsubscribeToEvents",
  70. value: function (provider) {
  71. if (provider && provider.removeListener) {
  72. provider.removeListener(_events2.EthereumEvents.CHAIN_CHANGED, this.handleChainChanged);
  73. provider.removeListener(_events2.EthereumEvents.ACCOUNTS_CHANGED, this.handleAccountsChanged);
  74. provider.removeListener(_events2.EthereumEvents.CONNECT, this.handleConnect);
  75. provider.removeListener(_events2.EthereumEvents.DISCONNECT, this.handleDisconnect);
  76. }
  77. }
  78. }, {
  79. key: "activate",
  80. value: function () {
  81. return _regenerator.default.async(function (_context) {
  82. while (1) {
  83. switch (_context.prev = _context.next) {
  84. case 0:
  85. throw new Error('Not implemented: activate()');
  86. case 1:
  87. case "end":
  88. return _context.stop();
  89. }
  90. }
  91. }, null, null, null, Promise);
  92. }
  93. }, {
  94. key: "handleAccountsChanged",
  95. value: function (accounts) {
  96. var account = accounts && accounts[0] ? accounts[0].toLowerCase() : null;
  97. this.account = account;
  98. this.emit(_events2.ConnectorEvents.ACCOUNT_CHANGED, account);
  99. }
  100. }, {
  101. key: "handleChainChanged",
  102. value: function (chainId) {
  103. var newChainId = (0, _verifyChainId.default)(chainId);
  104. this.chainId = newChainId;
  105. this.emit(_events2.ConnectorEvents.CHAIN_CHANGED, newChainId);
  106. }
  107. }, {
  108. key: "handleConnect",
  109. value: function (connectInfo) {
  110. this.emit(_events2.ConnectorEvents.CONNECT, connectInfo);
  111. }
  112. }, {
  113. key: "handleDisconnect",
  114. value: function (error) {
  115. this.emit(_events2.ConnectorEvents.DISCONNECT, error);
  116. }
  117. }, {
  118. key: "deactivate",
  119. value: function () {
  120. return _regenerator.default.async(function (_context2) {
  121. while (1) {
  122. switch (_context2.prev = _context2.next) {
  123. case 0:
  124. this.unsubscribeToEvents(this.provider);
  125. this.account = null;
  126. this.chainId = null;
  127. case 3:
  128. case "end":
  129. return _context2.stop();
  130. }
  131. }
  132. }, null, this, null, Promise);
  133. }
  134. }]);
  135. return AbstractWeb3Connector;
  136. }(_events.default);
  137. var _default = AbstractWeb3Connector;
  138. exports.default = _default;