MagicWeb3Connector.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. "use strict";
  2. var _Reflect$construct = require("@babel/runtime-corejs3/core-js-stable/reflect/construct");
  3. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  4. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  5. _Object$defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
  10. var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
  11. var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
  12. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
  13. var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
  14. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/assertThisInitialized"));
  15. var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/inherits"));
  16. var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/possibleConstructorReturn"));
  17. var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/getPrototypeOf"));
  18. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
  19. var _ethers = require("ethers");
  20. var _AbstractWeb3Connector = _interopRequireDefault(require("./AbstractWeb3Connector"));
  21. function _createSuper(Derived) {
  22. var hasNativeReflectConstruct = _isNativeReflectConstruct();
  23. return function () {
  24. var Super = (0, _getPrototypeOf2.default)(Derived),
  25. result;
  26. if (hasNativeReflectConstruct) {
  27. var NewTarget = (0, _getPrototypeOf2.default)(this).constructor;
  28. result = _Reflect$construct(Super, arguments, NewTarget);
  29. } else {
  30. result = Super.apply(this, arguments);
  31. }
  32. return (0, _possibleConstructorReturn2.default)(this, result);
  33. };
  34. }
  35. function _isNativeReflectConstruct() {
  36. if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  37. if (_Reflect$construct.sham) return false;
  38. if (typeof Proxy === "function") return true;
  39. try {
  40. Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
  41. return true;
  42. } catch (e) {
  43. return false;
  44. }
  45. }
  46. var MagicWeb3Connector = /*#__PURE__*/function (_AbstractWeb3Connecto) {
  47. (0, _inherits2.default)(MagicWeb3Connector, _AbstractWeb3Connecto);
  48. var _super = _createSuper(MagicWeb3Connector);
  49. function MagicWeb3Connector() {
  50. var _context;
  51. var _this;
  52. (0, _classCallCheck2.default)(this, MagicWeb3Connector);
  53. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  54. args[_key] = arguments[_key];
  55. }
  56. _this = _super.call.apply(_super, (0, _concat.default)(_context = [this]).call(_context, args));
  57. (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", 'MagicLink');
  58. (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deactivate", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
  59. return _regenerator.default.wrap(function (_context2) {
  60. while (1) {
  61. switch (_context2.prev = _context2.next) {
  62. case 0:
  63. _this.unsubscribeToEvents(_this.provider);
  64. if (!_this.magicUser) {
  65. _context2.next = 4;
  66. break;
  67. }
  68. _context2.next = 4;
  69. return _this.magicUser.user.logout();
  70. case 4:
  71. _this.account = null;
  72. _this.chainId = null;
  73. _this.provider = null;
  74. case 7:
  75. case "end":
  76. return _context2.stop();
  77. }
  78. }
  79. }, _callee);
  80. })));
  81. return _this;
  82. }
  83. (0, _createClass2.default)(MagicWeb3Connector, [{
  84. key: "activate",
  85. value: function () {
  86. var _activate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
  87. var _ref2,
  88. email,
  89. apiKey,
  90. network,
  91. newSession,
  92. magic,
  93. ether,
  94. Magic,
  95. _require,
  96. _window,
  97. _magic,
  98. _magic2,
  99. _magic2$user,
  100. loggedIn,
  101. signer,
  102. _yield$ether$getNetwo,
  103. chainId,
  104. address,
  105. _args2 = arguments;
  106. return _regenerator.default.wrap(function (_context3) {
  107. while (1) {
  108. switch (_context3.prev = _context3.next) {
  109. case 0:
  110. _ref2 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, email = _ref2.email, apiKey = _ref2.apiKey, network = _ref2.network, newSession = _ref2.newSession;
  111. magic = null;
  112. ether = null;
  113. if (email) {
  114. _context3.next = 5;
  115. break;
  116. }
  117. throw new Error('"email" not provided, please provide Email');
  118. case 5:
  119. if (apiKey) {
  120. _context3.next = 7;
  121. break;
  122. }
  123. throw new Error('"apiKey" not provided, please provide Api Key');
  124. case 7:
  125. if (network) {
  126. _context3.next = 9;
  127. break;
  128. }
  129. throw new Error('"network" not provided, please provide network');
  130. case 9:
  131. try {
  132. Magic = (_require = require('magic-sdk')) === null || _require === void 0 ? void 0 : _require.Magic;
  133. } catch (error) {// Do nothing. User might not need walletconnect
  134. }
  135. if (!Magic) {
  136. Magic = (_window = window) === null || _window === void 0 ? void 0 : _window.Magic;
  137. }
  138. if (Magic) {
  139. _context3.next = 13;
  140. break;
  141. }
  142. throw new Error('Cannot enable via MagicLink: dependency "magic-sdk" is missing');
  143. case 13:
  144. _context3.prev = 13;
  145. magic = new Magic(apiKey, {
  146. network: network
  147. });
  148. if (!newSession) {
  149. _context3.next = 24;
  150. break;
  151. }
  152. if (!((_magic = magic) !== null && _magic !== void 0 && _magic.user)) {
  153. _context3.next = 24;
  154. break;
  155. }
  156. _context3.prev = 17;
  157. _context3.next = 20;
  158. return (_magic2 = magic) === null || _magic2 === void 0 ? void 0 : (_magic2$user = _magic2.user) === null || _magic2$user === void 0 ? void 0 : _magic2$user.logout();
  159. case 20:
  160. _context3.next = 24;
  161. break;
  162. case 22:
  163. _context3.prev = 22;
  164. _context3.t0 = _context3["catch"](17);
  165. case 24:
  166. ether = new _ethers.ethers.providers.Web3Provider(magic.rpcProvider);
  167. _context3.next = 27;
  168. return magic.auth.loginWithMagicLink({
  169. email: email
  170. });
  171. case 27:
  172. _context3.next = 32;
  173. break;
  174. case 29:
  175. _context3.prev = 29;
  176. _context3.t1 = _context3["catch"](13);
  177. throw new Error('Error during enable via MagicLink, please double check network and apikey');
  178. case 32:
  179. _context3.next = 34;
  180. return magic.user.isLoggedIn();
  181. case 34:
  182. loggedIn = _context3.sent;
  183. if (!loggedIn) {
  184. _context3.next = 50;
  185. break;
  186. }
  187. signer = ether.getSigner();
  188. _context3.next = 39;
  189. return ether.getNetwork();
  190. case 39:
  191. _yield$ether$getNetwo = _context3.sent;
  192. chainId = _yield$ether$getNetwo.chainId;
  193. _context3.next = 43;
  194. return signer.getAddress();
  195. case 43:
  196. address = _context3.sent.toLowerCase(); // Assign Constants
  197. this.account = address;
  198. this.provider = ether.provider;
  199. this.chainId = "0x".concat(chainId.toString(16)); // Assign magic user for deactivation
  200. this.magicUser = magic;
  201. this.subscribeToEvents(this.provider);
  202. return _context3.abrupt("return", {
  203. provider: this.provider,
  204. account: this.account,
  205. chainId: this.chainId
  206. });
  207. case 50:
  208. throw new Error('Error during enable via MagicLink, login to magic failed');
  209. case 51:
  210. case "end":
  211. return _context3.stop();
  212. }
  213. }
  214. }, _callee2, this, [[13, 29], [17, 22]]);
  215. }));
  216. return function () {
  217. return _activate.apply(this, arguments);
  218. };
  219. }()
  220. }]);
  221. return MagicWeb3Connector;
  222. }(_AbstractWeb3Connector.default);
  223. exports.default = MagicWeb3Connector;