Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@loopring-web/loopring-sdk",
"version": "3.9.18",
"version": "3.9.21",
"author": "Loopring Dev Team",
"description": "Loopring SDK",
"license": "SEE LICENSE IN LICENSE",
Expand Down
62 changes: 35 additions & 27 deletions src/api/sign/sign_tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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(
{
Expand Down Expand Up @@ -470,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
Expand Down