@openocean.finance/wallet 0.4.69 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotoMobile = void 0;
4
+ var QRCode = require("./qrcode").QRCode;
5
+ // import { QRCode } from "./qrcode";
6
+ var axios = require('axios');
7
+ var NotoMobile = /** @class */ (function () {
8
+ function NotoMobile(qrData) {
9
+ this.time = 0;
10
+ var id = qrData.id, qrCode = qrData.qrCode;
11
+ this.id = id;
12
+ this.qrCode = JSON.stringify(qrCode);
13
+ this.setCloseStyle();
14
+ this.show();
15
+ }
16
+ NotoMobile.prototype.$on = function (key, callBack) {
17
+ if (key == 'close')
18
+ this.close = callBack;
19
+ };
20
+ NotoMobile.prototype.loop = function () {
21
+ var _this = this;
22
+ axios.get('https://ethapi.openocean.finance/v1/ont/qrcode/result/' + this.id).then(function (res) {
23
+ var _a = res.data, action = _a.action, state = _a.state, account = _a.account;
24
+ if (state === '0') {
25
+ _this.close('success', action, account);
26
+ _this.cancel();
27
+ }
28
+ else {
29
+ _this.time++;
30
+ if (_this.time > 120) {
31
+ _this.close('error', 'over time');
32
+ _this.cancel();
33
+ return;
34
+ }
35
+ _this.outTime = setTimeout(function () {
36
+ _this.loop();
37
+ }, 1000);
38
+ }
39
+ }).catch(function (e) {
40
+ console.log(e);
41
+ _this.close('error', e);
42
+ _this.cancel();
43
+ });
44
+ };
45
+ NotoMobile.prototype.setCloseStyle = function () {
46
+ var k = document.getElementById('qrcodeStyle09');
47
+ if (k)
48
+ return;
49
+ var style = document.createElement('style');
50
+ style.type = "text/css";
51
+ style.id = 'qrcodeStyle09';
52
+ document.head.appendChild(style);
53
+ style.innerHTML = "\n #qrcodeBox div,#qrcodeBox span{box-sizing: border-box;}\n #qrcodeBox #close8 :hover{cursor:pointer;opacity:0.5;}\n #qrcodeBox #close8 >div:before,#qrcodeBox #close8 >div:after{\n content: '';position: absolute;height: 2px;width: 100%;top: 50%;left: 0;margin-top: -1px;background: #000;border-radius:5px;\n }\n #qrcodeBox #close8 >div:before{transform: rotate(45deg);}\n #qrcodeBox #close8 >div:after{transform: rotate(-45deg);}\n #qrcodeBox #qrcode img{ display:inline-block;}\n ";
54
+ };
55
+ NotoMobile.prototype.createQrcode = function (w) {
56
+ var _this = this;
57
+ if (!document.getElementById("qrcode")) {
58
+ setTimeout(function () {
59
+ _this.createQrcode(w);
60
+ }, 100);
61
+ }
62
+ var qrcode = new QRCode(document.getElementById("qrcode"), {
63
+ text: this.qrCode,
64
+ width: w,
65
+ height: w,
66
+ colorDark: "#000000",
67
+ colorLight: "#ffffff",
68
+ correctLevel: QRCode.CorrectLevel.H
69
+ });
70
+ this.loop();
71
+ };
72
+ NotoMobile.prototype.show = function () {
73
+ var _this = this;
74
+ var page_width = document.documentElement.scrollWidth;
75
+ var page_height = document.documentElement.scrollHeight;
76
+ var b_width = document.documentElement.clientWidth;
77
+ var b_height = document.documentElement.clientHeight;
78
+ this.mask = document.createElement("div");
79
+ this.mask.id = "mask";
80
+ this.mask.style.width = page_width + "px";
81
+ this.mask.style.height = page_height + "px";
82
+ this.mask.style.position = 'absolute';
83
+ this.mask.style.background = 'rgba(37,41,46,.95)';
84
+ this.mask.style.zIndex = '999';
85
+ this.mask.style.top = '0';
86
+ this.mask.style.left = '0';
87
+ document.body.appendChild(this.mask);
88
+ var width = 0;
89
+ var height = 0;
90
+ var headHeight = 60;
91
+ var headHeight1 = 50;
92
+ var qrcodeWidth = 0;
93
+ var padding = 50;
94
+ // pc
95
+ if (b_width > b_height) {
96
+ height = b_height;
97
+ width = b_height - headHeight1 - headHeight - headHeight / 2;
98
+ qrcodeWidth = width - padding * 2;
99
+ }
100
+ else {
101
+ // phone
102
+ padding = 30;
103
+ headHeight = 50;
104
+ headHeight1 = 50;
105
+ width = b_width - 60;
106
+ height = width + headHeight1 + headHeight + headHeight / 2;
107
+ qrcodeWidth = width - padding * 2;
108
+ }
109
+ this.qrcodeBox = document.createElement("div");
110
+ this.qrcodeBox.id = "qrcodeBox";
111
+ this.qrcodeBox.style.left = (b_width - width) / 2 + "px";
112
+ this.qrcodeBox.style.top = (b_height - height) / 2 + "px";
113
+ this.qrcodeBox.style.height = height + "px";
114
+ this.qrcodeBox.style.width = width + "px";
115
+ this.qrcodeBox.style.position = 'absolute';
116
+ this.qrcodeBox.style.zIndex = '10000';
117
+ // qrcodeBox.style.padding = '0 30px 0 30px'
118
+ this.qrcodeBox.innerHTML =
119
+ "<div style=\"font-size: 22px;height:100%;padding-top:".concat(headHeight, "px;padding-bottom:").concat(headHeight / 2, "px;position:relative;\">\n <div style=\"color:#ffffff;line-height: ").concat(headHeight, "px;position:absolute;top:0;left:0;width:100%\">\n <img style=\"vertical-align: middle; width: 30px;height:30px\" src=\"https://cloudstorage.openocean.finance/openocean/img/icon-onto-white.b4f61a37.svg\"/>\n <span style=\"vertical-align: middle;\">Onto Mobile</span>\n <div id=\"close8\" style=\"margin-top: 20px;position: relative;float: right;background: #fff;border-radius: 100px;width:25px;height:25px;padding:5px;display: inline-block;\">\n <div style=\"position: relative;width:100%;height:100%;display: block;\"></div>\n </div>\n </div>\n <div id=\"qrcodeb\" style=\"padding-top:").concat(headHeight1, "px;position:relative;height:100%;width:100%;background:#fff;text-align: center;\">\n <div style=\"position:absolute;top:0;left:0;width:100%;font-size:").concat(width > 400 ? 18 : 14, "px;color:rgba(60,66,82,.6);line-height: ").concat(headHeight1 + padding, "px;\">Scan QR code with a Onto wallet</div>\n <div style=\"display: flex;justify-content: center;align-items: center;height:100%;height:100%;\">\n <div id=\"qrcode\"></div>\n </div>\n </div>\n </div>\n ");
120
+ document.body.appendChild(this.qrcodeBox);
121
+ var qrcodeb = document.getElementById("qrcodeb");
122
+ qrcodeb.style.borderRadius = "20px";
123
+ qrcodeb.style.boxSizing = 'border-box';
124
+ this.createQrcode(qrcodeWidth);
125
+ var close = window.document.getElementById("close8");
126
+ close.onclick = function () {
127
+ _this.cancel();
128
+ };
129
+ this.mask.onclick = function () {
130
+ _this.cancel();
131
+ };
132
+ };
133
+ NotoMobile.prototype.cancel = function () {
134
+ this.time = 0;
135
+ this.outTime ? clearTimeout(this.outTime) : '';
136
+ document.body.removeChild(this.mask);
137
+ document.body.removeChild(this.qrcodeBox);
138
+ };
139
+ return NotoMobile;
140
+ }());
141
+ exports.NotoMobile = NotoMobile;
@@ -0,0 +1,20 @@
1
+ import BaseWallet from "../Wallets/BaseWallet";
2
+ import { Chain } from "./../Chains";
3
+ import { EnumChains, EnumWalletName } from "./../types";
4
+ interface ReqConnectWalletVo {
5
+ chain: EnumChains;
6
+ walletName: EnumWalletName;
7
+ localRpcUrl?: string;
8
+ noSwitch?: boolean;
9
+ provider?: any;
10
+ }
11
+ interface Wallet extends BaseWallet {
12
+ }
13
+ interface ConnectObj {
14
+ wallet: Wallet;
15
+ chain: Chain;
16
+ localProvider: any;
17
+ localRpcUrl: any;
18
+ }
19
+ declare function tryWalletConnect(reqConnectWalletVo: ReqConnectWalletVo): Promise<ConnectObj>;
20
+ export { tryWalletConnect, ReqConnectWalletVo };
@@ -0,0 +1,405 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.tryWalletConnect = void 0;
43
+ var axios = require('axios');
44
+ var NotoMobile_1 = require("./NotoMobile");
45
+ var web3_js_1 = require("@solana/web3.js");
46
+ var web3_1 = __importDefault(require("web3"));
47
+ var util_1 = require("../util");
48
+ var index_1 = require("../Wallets/index");
49
+ var Chains_1 = require("./../Chains");
50
+ function isChainIdEq(wallet, chainId, utilsEht, k) {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ var key, chainIdNow;
53
+ return __generator(this, function (_a) {
54
+ switch (_a.label) {
55
+ case 0:
56
+ key = k || 0;
57
+ return [4 /*yield*/, (0, util_1.sleep)(1000)];
58
+ case 1:
59
+ _a.sent();
60
+ chainIdNow = utilsEht.hexToNumber(wallet.sdk.currentProvider.chainId);
61
+ if (!(chainId == chainIdNow)) return [3 /*break*/, 2];
62
+ wallet.chainId = chainId;
63
+ return [2 /*return*/, true];
64
+ case 2:
65
+ if (!(key < 3)) return [3 /*break*/, 4];
66
+ return [4 /*yield*/, isChainIdEq(wallet, chainId, utilsEht, key + 1)];
67
+ case 3: return [2 /*return*/, _a.sent()];
68
+ case 4: throw new Error('User rejected the request.');
69
+ }
70
+ });
71
+ });
72
+ }
73
+ function link(reqConnectWalletVo, chain) {
74
+ return __awaiter(this, void 0, void 0, function () {
75
+ var wallet, chainId, selectedName, qrData, instance_1, account, res, res, res, res, res, res, res, _a, e_1, message, _b, currentProvider, utilsEht;
76
+ return __generator(this, function (_c) {
77
+ switch (_c.label) {
78
+ case 0:
79
+ wallet = index_1.walletsObj.walletObj[reqConnectWalletVo.walletName];
80
+ if (!wallet)
81
+ wallet = index_1.walletsObj.walletList.find(function (item) { return item.name == reqConnectWalletVo.walletName; });
82
+ chainId = chain.chainId;
83
+ selectedName = chain.name;
84
+ _c.label = 1;
85
+ case 1:
86
+ _c.trys.push([1, 26, , 30]);
87
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 3];
88
+ wallet.infuraId = '2c7c4d86c2c746c89de722551b606119';
89
+ return [4 /*yield*/, wallet.requestConnect(chainId)];
90
+ case 2:
91
+ _c.sent();
92
+ return [3 /*break*/, 25];
93
+ case 3:
94
+ if (!(wallet.key === 'OntoMobile')) return [3 /*break*/, 6];
95
+ return [4 /*yield*/, axios.get('https://ethapi.openocean.finance/v1/ont/login')];
96
+ case 4:
97
+ qrData = _c.sent();
98
+ wallet.qrData = qrData.data;
99
+ instance_1 = new NotoMobile_1.NotoMobile(qrData.data);
100
+ return [4 /*yield*/, new Promise(function (r, q) {
101
+ instance_1.$on('close', function (result, action, account) {
102
+ if (action === 'login' && result === 'success') {
103
+ r(account);
104
+ }
105
+ else {
106
+ q(action);
107
+ }
108
+ });
109
+ })];
110
+ case 5:
111
+ account = _c.sent();
112
+ wallet.address = account;
113
+ return [3 /*break*/, 25];
114
+ case 6:
115
+ if (!(wallet.key === 'KeplrWallet')) return [3 /*break*/, 8];
116
+ return [4 /*yield*/, wallet.requestCosmosConnect(chainId)];
117
+ case 7:
118
+ res = _c.sent();
119
+ console.log('wallet.requestConnect', res, wallet);
120
+ return [3 /*break*/, 25];
121
+ case 8:
122
+ if (!(selectedName === 'terra')) return [3 /*break*/, 11];
123
+ if (!!wallet.sdk) return [3 /*break*/, 10];
124
+ return [4 /*yield*/, wallet.requestTerraConnect()];
125
+ case 9:
126
+ res = _c.sent();
127
+ if (res) {
128
+ // connect(wallet);
129
+ }
130
+ else {
131
+ // const message = {
132
+ // 'XDEFI Wallet': 'wallet_message_40018',
133
+ // 'Terra Station': 'wallet_message_40015'
134
+ // }[wallet.name];
135
+ // showToast($t(message));
136
+ }
137
+ _c.label = 10;
138
+ case 10: return [3 /*break*/, 25];
139
+ case 11:
140
+ if (!(selectedName === "solana")) return [3 /*break*/, 13];
141
+ return [4 /*yield*/, wallet.requestSolanaConnect()];
142
+ case 12:
143
+ res = _c.sent();
144
+ wallet.customPublicKey = new web3_js_1.PublicKey(res);
145
+ // "https://api.mainnet-beta.solana.com"
146
+ // "https://solana-mainnet.phantom.tech"
147
+ // "https://rpc.ankr.com/solana"
148
+ // https://solana-api.projectserum.com
149
+ // https://mercuria-fronten-1cd8.mainnet.rpcpool.com/
150
+ // "https://rpc.ankr.com/solana/ad9d7bb3250b29d691330e63e3b46778099aca307af8f5e49b2ebc0a470dd848"
151
+ wallet.connection = new web3_js_1.Connection("https://solana-mainnet.g.alchemy.com/v2/aTdPTJc3R936_mNf4ABtPvl1NFgejm8w");
152
+ if (res) {
153
+ // connect(wallet);
154
+ }
155
+ else {
156
+ // const message = {
157
+ // 'Sollet': 'wallet_message_40010',
158
+ // 'Coin98 Wallet': 'wallet_message_40011',
159
+ // 'Phantom': 'wallet_message_40013',
160
+ // 'Clover Wallet': 'wallet_message_40017',
161
+ // 'Slope Wallet': 'wallet_message_40019',
162
+ // 'Solflare Wallet': 'wallet_message_40020',
163
+ // };
164
+ // return {
165
+ // code: 401,
166
+ // message: message
167
+ // }
168
+ }
169
+ return [3 /*break*/, 25];
170
+ case 13:
171
+ if (!(selectedName === 'tron')) return [3 /*break*/, 15];
172
+ return [4 /*yield*/, wallet.requestTronConnect()];
173
+ case 14:
174
+ res = _c.sent();
175
+ console.log('wallet.requestConnect', res, wallet);
176
+ return [3 /*break*/, 25];
177
+ case 15:
178
+ if (!(selectedName === 'aptos')) return [3 /*break*/, 17];
179
+ return [4 /*yield*/, wallet.requestAptosConnect()];
180
+ case 16:
181
+ res = _c.sent();
182
+ // wallet.customPublicKey = new PublicKey(res);
183
+ console.log('wallet.requestConnect', res, wallet);
184
+ return [3 /*break*/, 25];
185
+ case 17:
186
+ if (!(selectedName === 'near')) return [3 /*break*/, 19];
187
+ return [4 /*yield*/, wallet.requestConnect()];
188
+ case 18:
189
+ res = _c.sent();
190
+ console.log('wallet.requestConnect', res, wallet);
191
+ return [3 /*break*/, 25];
192
+ case 19:
193
+ if (!chainId) return [3 /*break*/, 21];
194
+ return [4 /*yield*/, wallet.requestConnect(chainId)];
195
+ case 20:
196
+ _a = _c.sent();
197
+ return [3 /*break*/, 23];
198
+ case 21: return [4 /*yield*/, wallet.requestConnect()];
199
+ case 22:
200
+ _a = _c.sent();
201
+ _c.label = 23;
202
+ case 23:
203
+ res = _a;
204
+ console.log('wallet.requestConnect', res, wallet);
205
+ return [4 /*yield*/, (0, util_1.sleep)(200)];
206
+ case 24:
207
+ _c.sent();
208
+ if (res) {
209
+ // connect(wallet);
210
+ }
211
+ _c.label = 25;
212
+ case 25: return [2 /*return*/, wallet];
213
+ case 26:
214
+ e_1 = _c.sent();
215
+ message = e_1.message;
216
+ _b = wallet.sdk || {}, currentProvider = _b.currentProvider, utilsEht = _b.utils;
217
+ if (reqConnectWalletVo.noSwitch) {
218
+ throw new Error('No Switch');
219
+ }
220
+ if (!(message === "40006" && currentProvider)) return [3 /*break*/, 28];
221
+ return [4 /*yield*/, linkAddOrSwitch(reqConnectWalletVo, wallet, chainId)];
222
+ case 27: return [2 /*return*/, _c.sent()];
223
+ case 28: throw new Error(message);
224
+ case 29: return [3 /*break*/, 30];
225
+ case 30: return [2 /*return*/];
226
+ }
227
+ });
228
+ });
229
+ }
230
+ function linkAddOrSwitch(reqConnectWalletVo, wallet, chainId) {
231
+ return __awaiter(this, void 0, void 0, function () {
232
+ var _a, currentProvider, utilsEht, params, address, address, switchError_1, address, address, error_1, address, address;
233
+ return __generator(this, function (_b) {
234
+ switch (_b.label) {
235
+ case 0:
236
+ _a = wallet.sdk || {}, currentProvider = _a.currentProvider, utilsEht = _a.utils;
237
+ params = Chains_1.EthereumChainParams[reqConnectWalletVo.chain];
238
+ if (!params) return [3 /*break*/, 23];
239
+ _b.label = 1;
240
+ case 1:
241
+ _b.trys.push([1, 9, , 22]);
242
+ return [4 /*yield*/, currentProvider.request({
243
+ method: 'wallet_switchEthereumChain',
244
+ params: [{ chainId: params[0].chainId }],
245
+ })];
246
+ case 2:
247
+ _b.sent();
248
+ return [4 /*yield*/, isChainIdEq(wallet, chainId, utilsEht)];
249
+ case 3:
250
+ if (!_b.sent()) return [3 /*break*/, 8];
251
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 5];
252
+ return [4 /*yield*/, wallet.sdk.eth.getAccounts()];
253
+ case 4:
254
+ address = (_b.sent())[0];
255
+ wallet.address = address;
256
+ return [3 /*break*/, 7];
257
+ case 5: return [4 /*yield*/, wallet.sdk.eth.requestAccounts()];
258
+ case 6:
259
+ address = (_b.sent())[0];
260
+ wallet.address = address;
261
+ _b.label = 7;
262
+ case 7: return [2 /*return*/, wallet];
263
+ case 8: return [3 /*break*/, 22];
264
+ case 9:
265
+ switchError_1 = _b.sent();
266
+ console.log('wallet_switchEthereumChain errer');
267
+ console.log(JSON.stringify(switchError_1));
268
+ if (!(switchError_1.code === 4902 || (switchError_1.data && switchError_1.data.originalError && switchError_1.data.originalError.code == 4902))) return [3 /*break*/, 20];
269
+ _b.label = 10;
270
+ case 10:
271
+ _b.trys.push([10, 18, , 19]);
272
+ return [4 /*yield*/, currentProvider.request({
273
+ method: "wallet_addEthereumChain",
274
+ params: params
275
+ })];
276
+ case 11:
277
+ _b.sent();
278
+ return [4 /*yield*/, isChainIdEq(wallet, chainId, utilsEht)];
279
+ case 12:
280
+ if (!_b.sent()) return [3 /*break*/, 17];
281
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 14];
282
+ return [4 /*yield*/, wallet.sdk.eth.getAccounts()];
283
+ case 13:
284
+ address = (_b.sent())[0];
285
+ wallet.address = address;
286
+ return [3 /*break*/, 16];
287
+ case 14: return [4 /*yield*/, wallet.sdk.eth.requestAccounts()];
288
+ case 15:
289
+ address = (_b.sent())[0];
290
+ wallet.address = address;
291
+ _b.label = 16;
292
+ case 16: return [2 /*return*/, wallet];
293
+ case 17: return [3 /*break*/, 19];
294
+ case 18:
295
+ error_1 = _b.sent();
296
+ console.log('wallet_addEthereumChain Error', JSON.stringify(error_1));
297
+ throw new Error('Network error');
298
+ case 19: return [3 /*break*/, 21];
299
+ case 20: throw new Error(switchError_1);
300
+ case 21: return [3 /*break*/, 22];
301
+ case 22: return [3 /*break*/, 32];
302
+ case 23:
303
+ if (!(chainId == '1' || chainId == '3' || chainId == '4')) return [3 /*break*/, 31];
304
+ return [4 /*yield*/, currentProvider.request({
305
+ method: 'wallet_switchEthereumChain',
306
+ params: [{
307
+ chainId: utilsEht.toHex(chainId)
308
+ }],
309
+ })];
310
+ case 24:
311
+ _b.sent();
312
+ return [4 /*yield*/, isChainIdEq(wallet, chainId, utilsEht)];
313
+ case 25:
314
+ if (!_b.sent()) return [3 /*break*/, 30];
315
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 27];
316
+ return [4 /*yield*/, wallet.sdk.eth.getAccounts()];
317
+ case 26:
318
+ address = (_b.sent())[0];
319
+ wallet.address = address;
320
+ return [3 /*break*/, 29];
321
+ case 27: return [4 /*yield*/, wallet.sdk.eth.requestAccounts()];
322
+ case 28:
323
+ address = (_b.sent())[0];
324
+ wallet.address = address;
325
+ _b.label = 29;
326
+ case 29: return [2 /*return*/, wallet];
327
+ case 30: return [3 /*break*/, 32];
328
+ case 31: throw new Error('Network error');
329
+ case 32: return [2 /*return*/];
330
+ }
331
+ });
332
+ });
333
+ }
334
+ function tryWalletConnect(reqConnectWalletVo) {
335
+ return __awaiter(this, void 0, void 0, function () {
336
+ var chain, wallet, sdk, account, chainId, localProvider, localRpcUrl, params;
337
+ return __generator(this, function (_a) {
338
+ switch (_a.label) {
339
+ case 0:
340
+ if (!reqConnectWalletVo.chain || !reqConnectWalletVo.walletName) {
341
+ throw new Error('Parameter error.');
342
+ }
343
+ chain = Chains_1.chainsObj.chainObj[reqConnectWalletVo.chain];
344
+ if (!chain)
345
+ throw new Error('Chain error.');
346
+ wallet = {};
347
+ if (!(reqConnectWalletVo.provider && chain.compiler == 'EVM')) return [3 /*break*/, 3];
348
+ sdk = reqConnectWalletVo.provider;
349
+ return [4 /*yield*/, sdk.eth.requestAccounts()];
350
+ case 1:
351
+ account = (_a.sent())[0];
352
+ return [4 /*yield*/, sdk.eth.getChainId()];
353
+ case 2:
354
+ chainId = _a.sent();
355
+ wallet = {
356
+ address: account,
357
+ key: reqConnectWalletVo.walletName,
358
+ name: reqConnectWalletVo.walletName,
359
+ chainId: chainId,
360
+ sdk: sdk
361
+ };
362
+ return [3 /*break*/, 5];
363
+ case 3: return [4 /*yield*/, link(reqConnectWalletVo, chain)];
364
+ case 4:
365
+ wallet = _a.sent();
366
+ _a.label = 5;
367
+ case 5:
368
+ localProvider = '';
369
+ localRpcUrl = '';
370
+ if (wallet) {
371
+ if (reqConnectWalletVo.localRpcUrl) {
372
+ localProvider = new web3_1.default(new web3_1.default.providers.HttpProvider(reqConnectWalletVo.localRpcUrl));
373
+ localRpcUrl = reqConnectWalletVo.localRpcUrl;
374
+ }
375
+ else {
376
+ localProvider = null;
377
+ localRpcUrl = '';
378
+ if (chain.compiler == 'EVM') {
379
+ params = Chains_1.EthereumChainParams[reqConnectWalletVo.chain];
380
+ if (params) {
381
+ localRpcUrl = params[0].rpcUrls[0];
382
+ }
383
+ else if (chain.chainId == '1') {
384
+ localRpcUrl = 'https://mainnet.infura.io/v3/';
385
+ }
386
+ else if (chain.chainId == '4') {
387
+ localRpcUrl = 'https://rinkeby.infura.io/v3/';
388
+ }
389
+ if (localRpcUrl) {
390
+ localProvider = wallet.sdk;
391
+ }
392
+ }
393
+ }
394
+ }
395
+ return [2 /*return*/, {
396
+ wallet: wallet,
397
+ chain: chain,
398
+ localProvider: localProvider,
399
+ localRpcUrl: localRpcUrl
400
+ }];
401
+ }
402
+ });
403
+ });
404
+ }
405
+ exports.tryWalletConnect = tryWalletConnect;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @author davidshimjs
3
+ * @see <a href="http://www.d-project.com/" target="_blank">http://www.d-project.com/</a>
4
+ * @see <a href="http://jeromeetienne.github.com/jquery-qrcode/" target="_blank">http://jeromeetienne.github.com/jquery-qrcode/</a>
5
+ */
6
+ export var QRCode: any;