优化登录流程
This commit is contained in:
parent
4b9267929a
commit
598a99b12b
@ -1,8 +1,8 @@
|
||||
diff --git a/node_modules/@walletconnect/core/dist/esm/index.js b/node_modules/@walletconnect/core/dist/esm/index.js
|
||||
index a66eece..24d831b 100644
|
||||
index a66eece..16c8f7f 100644
|
||||
--- a/node_modules/@walletconnect/core/dist/esm/index.js
|
||||
+++ b/node_modules/@walletconnect/core/dist/esm/index.js
|
||||
@@ -22,7 +22,13 @@ class Connector {
|
||||
@@ -22,11 +22,16 @@ class Connector {
|
||||
this._networkId = 0;
|
||||
this._rpcUrl = "";
|
||||
this._eventManager = new EventManager();
|
||||
@ -17,6 +17,30 @@ index a66eece..24d831b 100644
|
||||
this._cryptoLib = opts.cryptoLib;
|
||||
this._sessionStorage = opts.sessionStorage || new SessionStorage(opts.connectorOpts.storageId);
|
||||
this._qrcodeModal = opts.connectorOpts.qrcodeModal;
|
||||
- this._qrcodeModalOptions = opts.connectorOpts.qrcodeModalOptions;
|
||||
this._signingMethods = [...signingMethods, ...(opts.connectorOpts.signingMethods || [])];
|
||||
if (!opts.connectorOpts.bridge && !opts.connectorOpts.uri && !opts.connectorOpts.session) {
|
||||
throw new Error(ERROR_MISSING_REQUIRED);
|
||||
@@ -312,10 +317,15 @@ class Connector {
|
||||
this._sendSessionRequest(request, "Session update rejected", {
|
||||
topic: this.handshakeTopic,
|
||||
});
|
||||
- this._eventManager.trigger({
|
||||
- event: "display_uri",
|
||||
- params: [this.uri],
|
||||
- });
|
||||
+ let self = this;
|
||||
+ var showQrModal = () => {
|
||||
+ self._eventManager.trigger({
|
||||
+ event: "display_uri",
|
||||
+ params: [self.uri],
|
||||
+ });
|
||||
+ self._transport.remove("open", showQrModal)
|
||||
+ }
|
||||
+ self._transport.on("open", showQrModal);
|
||||
}
|
||||
approveSession(sessionStatus) {
|
||||
if (this._connected) {
|
||||
diff --git a/node_modules/@walletconnect/core/dist/esm/url.js b/node_modules/@walletconnect/core/dist/esm/url.js
|
||||
index d6da2b8..19202d5 100644
|
||||
--- a/node_modules/@walletconnect/core/dist/esm/url.js
|
||||
|
@ -1,8 +1,34 @@
|
||||
diff --git a/node_modules/@walletconnect/socket-transport/dist/esm/index.js b/node_modules/@walletconnect/socket-transport/dist/esm/index.js
|
||||
index 9a6cc32..511b4b0 100644
|
||||
index 9a6cc32..2664801 100644
|
||||
--- a/node_modules/@walletconnect/socket-transport/dist/esm/index.js
|
||||
+++ b/node_modules/@walletconnect/socket-transport/dist/esm/index.js
|
||||
@@ -176,7 +176,7 @@ function getWebSocketUrl(_url, protocol, version) {
|
||||
@@ -74,6 +74,14 @@ class SocketTransport {
|
||||
on(event, callback) {
|
||||
this._events.push({ event, callback });
|
||||
}
|
||||
+ remove(event, callback) {
|
||||
+ let self = this;
|
||||
+ this._events.map((obj, i) => {
|
||||
+ if (obj.event === event && obj.callback === callback) {
|
||||
+ self._events.splice(i, 1);
|
||||
+ }
|
||||
+ })
|
||||
+ }
|
||||
_socketCreate() {
|
||||
if (this._nextSocket) {
|
||||
return;
|
||||
@@ -99,6 +107,10 @@ class SocketTransport {
|
||||
this._nextSocket = null;
|
||||
this._queueSubscriptions();
|
||||
this._pushQueue();
|
||||
+ const events = this._events.filter(event => event.event === "open");
|
||||
+ if (events && events.length) {
|
||||
+ events.forEach(event => event.callback());
|
||||
+ }
|
||||
}
|
||||
_socketClose() {
|
||||
if (this._socket) {
|
||||
@@ -176,7 +188,7 @@ function getWebSocketUrl(_url, protocol, version) {
|
||||
protocol,
|
||||
version,
|
||||
env: "browser",
|
||||
|
32
src/index.ts
32
src/index.ts
@ -107,9 +107,8 @@ export default class JCWallet {
|
||||
this.password = password
|
||||
savePassword(password)
|
||||
this.initInternalWallet();
|
||||
} else {
|
||||
this.initThirdPartyWallet(chain);
|
||||
}
|
||||
this.init({ chains: [322, 80001], password: this.password })
|
||||
window.jc = { wallet: this }
|
||||
}
|
||||
|
||||
@ -130,17 +129,28 @@ export default class JCWallet {
|
||||
start = Date.now()
|
||||
this.data = loadData()
|
||||
console.log(`init wallet ext data cost: ${(Date.now() - start) / 1000}`)
|
||||
this.init({ chains: [322, 80001], password: this.password })
|
||||
|
||||
}
|
||||
|
||||
private initThirdPartyWallet(chain: number) {
|
||||
for (const d of AllChains) {
|
||||
const id = d.id
|
||||
this.rpc[id] = d.rpc
|
||||
}
|
||||
|
||||
this.wConnect = new ZWalletConnect(this.rpc)
|
||||
this.init({ chains: [322, 80001], password: this.password })
|
||||
public async initThirdPartyWallet() {
|
||||
return new Promise((resolve, reject) => {
|
||||
for (const d of AllChains) {
|
||||
const id = d.id
|
||||
this.rpc[id] = d.rpc
|
||||
}
|
||||
|
||||
this.wConnect = new ZWalletConnect(this.rpc)
|
||||
// return this.wConnect.connect();
|
||||
this.wConnect.connect()
|
||||
.then(()=>{
|
||||
resolve && resolve('')
|
||||
})
|
||||
.catch((err: Error)=>{
|
||||
console.log('initThirdPartyWallet error: ' + err);
|
||||
reject && reject(err.message);
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
private init({ chains, password }: { chains: number[]; password: string }) {
|
||||
|
@ -84,7 +84,6 @@ class WalletConnectProvider extends ProviderEngine {
|
||||
};
|
||||
|
||||
request = async (payload: any): Promise<any> => {
|
||||
console.log('[WalletProvider]send: ' + JSON.stringify(payload));
|
||||
return this.send(payload);
|
||||
};
|
||||
|
||||
@ -221,9 +220,29 @@ class WalletConnectProvider extends ProviderEngine {
|
||||
wc.on("modal_closed", () => {
|
||||
reject(new Error("User closed modal"));
|
||||
});
|
||||
wc.on("disconnect", (error, payload)=> {
|
||||
if (error) {
|
||||
reject(new Error('error connect'));
|
||||
} else if (payload) {
|
||||
let errmsg = 'error connect';
|
||||
if (typeof payload.params[0] === 'string') {
|
||||
errmsg = payload.params[0];
|
||||
} else if (typeof payload.params[0] === 'object') {
|
||||
if (payload.params[0].message) {
|
||||
errmsg = payload.params[0].message
|
||||
} else {
|
||||
errmsg = payload.params[0]
|
||||
}
|
||||
}
|
||||
reject(new Error(errmsg));
|
||||
} else {
|
||||
reject(new Error("disconnect"));
|
||||
}
|
||||
});
|
||||
wc.createSession({ chainId: this.chainId })
|
||||
.then(() => {
|
||||
wc.on("connect", (error, payload) => {
|
||||
console.log('ws connected');
|
||||
if (error) {
|
||||
this.isConnecting = false;
|
||||
return reject(error);
|
||||
@ -315,7 +334,6 @@ class WalletConnectProvider extends ProviderEngine {
|
||||
|
||||
updateHttpConnection() {
|
||||
if (this.rpcUrl) {
|
||||
console.log(`updateHttpConnection: ${this.rpcUrl}`)
|
||||
this.http = new HttpConnection(this.rpcUrl);
|
||||
this.http.on("payload", payload => this.emit("payload", payload));
|
||||
this.http.on("error", error => this.emit("error", error));
|
||||
|
Loading…
x
Reference in New Issue
Block a user