@@ -14,10 +14,9 @@ import {
14
14
useGetOwnedAccountSafe ,
15
15
walletKit ,
16
16
} from "@umami/state" ;
17
- import { WalletConnectError } from "@umami/utils" ;
17
+ import { WC_ERRORS , WalletConnectError } from "@umami/utils" ;
18
18
import { formatJsonRpcError , formatJsonRpcResult } from "@walletconnect/jsonrpc-utils" ;
19
19
import { type SessionTypes , type SignClientTypes , type Verify } from "@walletconnect/types" ;
20
- import { type SdkErrorKey , getSdkError } from "@walletconnect/utils" ;
21
20
22
21
import { SignPayloadRequestModal } from "../common/SignPayloadRequestModal" ;
23
22
import { BatchSignPage } from "../SendFlow/common/BatchSignPage" ;
@@ -61,11 +60,18 @@ export const useHandleWcRequest = () => {
61
60
let modal ;
62
61
let onClose ;
63
62
63
+ const handleUserRejected = ( ) => {
64
+ // dApp is waiting so we need to notify it
65
+ const response = formatJsonRpcError ( id , WC_ERRORS . USER_REJECTED ) ;
66
+ console . info ( "WC request rejected by user" , event , response ) ;
67
+ void walletKit . respondSessionRequest ( { topic, response } ) ;
68
+ } ;
69
+
64
70
switch ( request . method ) {
65
71
case "tezos_getAccounts" : {
66
72
const wcPeers = walletKit . getActiveSessions ( ) ;
67
73
if ( ! ( topic in wcPeers ) ) {
68
- throw new WalletConnectError ( `Unknown session ${ topic } ` , "UNAUTHORIZED_EVENT " , null ) ;
74
+ throw new WalletConnectError ( `Unknown session ${ topic } ` , "SESSION_NOT_FOUND " , null ) ;
69
75
}
70
76
const session = wcPeers [ topic ] ;
71
77
const accountPkh = session . namespaces . tezos . accounts [ 0 ] . split ( ":" ) [ 2 ] ;
@@ -89,15 +95,20 @@ export const useHandleWcRequest = () => {
89
95
90
96
case "tezos_sign" : {
91
97
if ( ! request . params . account ) {
92
- throw new WalletConnectError ( "Missing account in request" , "INVALID_EVENT" , session ) ;
98
+ throw new WalletConnectError (
99
+ "Missing account in request" ,
100
+ "MISSING_ACCOUNT_IN_REQUEST" ,
101
+ session
102
+ ) ;
93
103
}
94
104
const signer = getImplicitAccount ( request . params . account ) ;
95
105
const network = findNetwork ( chainId . split ( ":" ) [ 1 ] ) ;
96
106
if ( ! network ) {
97
107
throw new WalletConnectError (
98
108
`Unsupported network ${ chainId } ` ,
99
109
"UNSUPPORTED_CHAINS" ,
100
- session
110
+ session ,
111
+ chainId
101
112
) ;
102
113
}
103
114
@@ -115,24 +126,24 @@ export const useHandleWcRequest = () => {
115
126
116
127
modal = < SignPayloadRequestModal opts = { signPayloadProps } /> ;
117
128
onClose = ( ) => {
118
- const sdkErrorKey : SdkErrorKey = "USER_REJECTED" ;
119
- console . info ( "WC request rejected by user" , sdkErrorKey , event ) ;
120
- // dApp is waiting so we need to notify it
121
- const response = formatJsonRpcError ( id , getSdkError ( sdkErrorKey ) . message ) ;
122
- void walletKit . respondSessionRequest ( { topic, response } ) ;
129
+ handleUserRejected ( ) ;
123
130
} ;
124
131
return openWith ( modal , { onClose } ) ;
125
132
}
126
133
127
134
case "tezos_send" : {
128
135
if ( ! request . params . account ) {
129
- throw new WalletConnectError ( "Missing account in request" , "INVALID_EVENT" , session ) ;
136
+ throw new WalletConnectError (
137
+ "Missing account in request" ,
138
+ "MISSING_ACCOUNT_IN_REQUEST" ,
139
+ session
140
+ ) ;
130
141
}
131
142
const signer = getAccount ( request . params . account ) ;
132
143
if ( ! signer ) {
133
144
throw new WalletConnectError (
134
145
`Unknown account, no signer: ${ request . params . account } ` ,
135
- "UNAUTHORIZED_EVENT " ,
146
+ "INTERNAL_SIGNER_IS_MISSING " ,
136
147
session
137
148
) ;
138
149
}
@@ -168,16 +179,17 @@ export const useHandleWcRequest = () => {
168
179
modal = < BatchSignPage { ...signProps } { ...event . params . request . params } /> ;
169
180
}
170
181
onClose = ( ) => {
171
- throw new WalletConnectError ( "Rejected by user" , "USER_REJECTED" , session ) ;
182
+ handleUserRejected ( ) ;
172
183
} ;
173
184
174
185
return openWith ( modal , { onClose } ) ;
175
186
}
176
187
default :
177
188
throw new WalletConnectError (
178
189
`Unsupported method ${ request . method } ` ,
179
- "WC_METHOD_UNSUPPORTED" ,
180
- session
190
+ "METHOD_UNSUPPORTED" ,
191
+ session ,
192
+ request . method
181
193
) ;
182
194
}
183
195
} ) ;
0 commit comments