From d6a45b5286f8b5d3a46a9a0f9de06d643f158184 Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 21 Apr 2025 23:01:37 +0800 Subject: [PATCH 1/8] v3.9.19 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a16ad528..042b3405 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@loopring-web/loopring-sdk", - "version": "3.9.18", + "version": "3.9.19", "author": "Loopring Dev Team", "description": "Loopring SDK", "license": "SEE LICENSE IN LICENSE", From 2490141be15576c36d821bbf420a3f3563c0bc1c Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 21 Apr 2025 23:08:11 +0800 Subject: [PATCH 2/8] v3.9.20 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 042b3405..e7a19aa4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@loopring-web/loopring-sdk", - "version": "3.9.19", + "version": "3.9.20", "author": "Loopring Dev Team", "description": "Loopring SDK", "license": "SEE LICENSE IN LICENSE", From 44b81f860976fcc6ddacf384778670f25796e3ff Mon Sep 17 00:00:00 2001 From: "john.li" Date: Thu, 8 May 2025 19:38:27 +0800 Subject: [PATCH 3/8] v3.9.21-trust-1 --- package.json | 2 +- src/api/sign/sign_tools.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e7a19aa4..c6723b71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@loopring-web/loopring-sdk", - "version": "3.9.20", + "version": "3.9.21-trust-1", "author": "Loopring Dev Team", "description": "Loopring SDK", "license": "SEE LICENSE IN LICENSE", diff --git a/src/api/sign/sign_tools.ts b/src/api/sign/sign_tools.ts index 626742b3..7def1b53 100644 --- a/src/api/sign/sign_tools.ts +++ b/src/api/sign/sign_tools.ts @@ -413,7 +413,8 @@ export async function signEip712(web3: any, account: string, method: string, par export async function signEip712WalletConnect(web3: any, account: string, typedData: any) { try { let response: any - if (getWindowSafely()?.ethereum?.isLoopring || !web3.currentProvider?.signer?.session) { + + if ((getWindowSafely()?.ethereum?.isLoopring || !web3.currentProvider?.signer?.session) && !getWindowSafely()?.ethereum?.isTrustWallet) { const result: any = await new Promise((resolve) => { web3.currentProvider?.sendAsync( { From aa6e593d4499b958536a62fcce773a0ba5bc69b4 Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 12 May 2025 11:05:35 +0800 Subject: [PATCH 4/8] v3.9.21-trust-2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c6723b71..5021e8e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@loopring-web/loopring-sdk", - "version": "3.9.21-trust-1", + "version": "3.9.21-trust-2", "author": "Loopring Dev Team", "description": "Loopring SDK", "license": "SEE LICENSE IN LICENSE", From 6c110923c751159f9f78dfb95cc099e0f228c539 Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 12 May 2025 14:55:30 +0800 Subject: [PATCH 5/8] support trust wallet --- src/api/sign/sign_tools.ts | 59 +++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/src/api/sign/sign_tools.ts b/src/api/sign/sign_tools.ts index 7def1b53..b16d2946 100644 --- a/src/api/sign/sign_tools.ts +++ b/src/api/sign/sign_tools.ts @@ -471,32 +471,39 @@ export async function getEcDSASig( switch (type) { case GetEcDSASigType.HasDataStruct: try { - response = await new Promise((resolve, reject) => { - // LOG: for signature - // myLog('hash', fm.toHex(sigUtil.TypedDataUtils.sign(typedData))) - web3.currentProvider.sendAsync( - { - method: 'eth_signTypedData_v4', - params, - address, - }, - (error: any, result: any) => { - if (error || result?.error) { - // return error || result.error; - reject(error || result?.error) - return - } - let _result - if (typeof result === 'string') { - // resolve(result); - _result = result - } else { - _result = result?.result - } - resolve(_result?.slice(0, 132)) - }, - ) - }) + if (getWindowSafely()?.ethereum?.isTrustWallet) { + const provider = new ethers.providers.Web3Provider(web3.currentProvider) + response = await provider.send('eth_signTypedData_v4', params) + } else { + response = await new Promise((resolve, reject) => { + // LOG: for signature + // myLog('hash', fm.toHex(sigUtil.TypedDataUtils.sign(typedData))) + web3.currentProvider.sendAsync( + { + method: 'eth_signTypedData_v4', + params, + address, + }, + (error: any, result: any) => { + if (error || result?.error) { + // return error || result.error; + reject(error || result?.error) + return + } + let _result + if (typeof result === 'string') { + // resolve(result); + _result = result + } else { + _result = result?.result + } + resolve(_result?.slice(0, 132)) + }, + ) + }) + + } + } catch (error) { console.log('eth_signTypedData_v4 error', error) throw error From 164095f7cd091728dea3ea7f8362fb1bed53f0fd Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 12 May 2025 14:57:00 +0800 Subject: [PATCH 6/8] v3.9.21-trust-3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5021e8e0..8899132a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@loopring-web/loopring-sdk", - "version": "3.9.21-trust-2", + "version": "3.9.21-trust-3", "author": "Loopring Dev Team", "description": "Loopring SDK", "license": "SEE LICENSE IN LICENSE", From 2b677be5173fb4456318976518a66237a1f39633 Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 12 May 2025 15:23:19 +0800 Subject: [PATCH 7/8] v3.9.21 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8899132a..d7787e5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@loopring-web/loopring-sdk", - "version": "3.9.21-trust-3", + "version": "3.9.21", "author": "Loopring Dev Team", "description": "Loopring SDK", "license": "SEE LICENSE IN LICENSE", From e101025ec0d90e16fffcb17015671189a65d4268 Mon Sep 17 00:00:00 2001 From: "john.li" Date: Mon, 12 May 2025 16:12:30 +0800 Subject: [PATCH 8/8] useSend --- src/api/sign/sign_tools.ts | 112 ++++++++++++------------------------- 1 file changed, 35 insertions(+), 77 deletions(-) diff --git a/src/api/sign/sign_tools.ts b/src/api/sign/sign_tools.ts index b16d2946..34caed4b 100644 --- a/src/api/sign/sign_tools.ts +++ b/src/api/sign/sign_tools.ts @@ -59,7 +59,7 @@ import { personalSign } from '../base_api' import { BigNumber } from '@ethersproject/bignumber' import { getWindowSafely } from 'utils/window_utils' -import { ethers } from 'ethers' +import { ethers, providers } from 'ethers' // import { hashMessage } from 'ethers/lib/utils' export enum GetEcDSASigType { @@ -380,28 +380,19 @@ export const getEdDSASigWithPoseidon = (inputs: any, PrivateKey: string | undefi * @returns {Promise.<*>} */ export async function signEip712(web3: any, account: string, method: string, params: any) { - const response: any = await new Promise((resolve) => { - web3.currentProvider?.sendAsync( - { - method, - params, - account, - }, - function (err: any, result: any) { - if (err) { - resolve({ error: { message: err.message } }) - return - } - - if (result.error) { - resolve({ error: { message: result.error.message } }) - return - } - - resolve({ result: result.result }) - }, - ) - }) + const provider = new providers.Web3Provider(web3.currentProvider) + const response: any = await provider + .send(method, params) + .then((result) => { + if (result.error) { + return { error: { message: result.error.message } } + } else { + return { result: result.result } + } + }) + .catch((err) => { + return { error: { message: err.message } } + }) if (response?.result) { return response @@ -415,28 +406,19 @@ export async function signEip712WalletConnect(web3: any, account: string, typedD let response: any if ((getWindowSafely()?.ethereum?.isLoopring || !web3.currentProvider?.signer?.session) && !getWindowSafely()?.ethereum?.isTrustWallet) { - const result: any = await new Promise((resolve) => { - web3.currentProvider?.sendAsync( - { - method: 'eth_signTypedData', - params: [account, typedData], - account, - }, - (err: any, result: any) => { - if (err) { - resolve({ error: { message: err.message } }) - return - } - - if (result.error) { - resolve({ error: { message: result.error.message } }) - return - } - - resolve({ result: result.result }) - }, - ) + const provider = new providers.Web3Provider(web3.currentProvider) + const result: any = await provider.send('eth_signTypedData', [account, typedData]) + .then((result) => { + if (result.error) { + return { error: { message: result.error.message } } + } else { + return { result: result.result } + } }) + .catch((err) => { + return { error: { message: err.message } } + }) + // LOG: for signature myLog('eth_signTypedData', result) response = result?.result @@ -471,39 +453,15 @@ export async function getEcDSASig( switch (type) { case GetEcDSASigType.HasDataStruct: try { - if (getWindowSafely()?.ethereum?.isTrustWallet) { - const provider = new ethers.providers.Web3Provider(web3.currentProvider) - response = await provider.send('eth_signTypedData_v4', params) - } else { - response = await new Promise((resolve, reject) => { - // LOG: for signature - // myLog('hash', fm.toHex(sigUtil.TypedDataUtils.sign(typedData))) - web3.currentProvider.sendAsync( - { - method: 'eth_signTypedData_v4', - params, - address, - }, - (error: any, result: any) => { - if (error || result?.error) { - // return error || result.error; - reject(error || result?.error) - return - } - let _result - if (typeof result === 'string') { - // resolve(result); - _result = result - } else { - _result = result?.result - } - resolve(_result?.slice(0, 132)) - }, - ) - }) - - } - + const provider = new ethers.providers.Web3Provider(web3.currentProvider) + response = await provider.send('eth_signTypedData_v4', params).then((result) => { + if (result.error) { + throw result?.error + } else { + const _result = typeof result === 'string' ? result : result?.result + return _result?.slice(0, 132) + } + }) } catch (error) { console.log('eth_signTypedData_v4 error', error) throw error