@@ -4,14 +4,22 @@ import {
4
4
OverviewTransfer ,
5
5
OverviewTransferProps ,
6
6
} from '@interchain-ui/react' ;
7
- import { useChainWallet , useManager } from '@cosmos -kit/react' ;
7
+ import { useChainWallet , useWalletManager } from '@interchain -kit/react' ;
8
8
import BigNumber from 'bignumber.js' ;
9
- import { ibc } from 'osmo-query ' ;
10
- import { StdFee , coins } from '@cosmjs/amino ' ;
11
- import { ChainName } from 'cosmos-kit ' ;
12
- import { keplrWalletName } from '@/config ' ;
13
- import { useDisclosure , useChainUtils , useTx , useBalance } from '@/hooks' ;
9
+ import { useTransfer } from '@interchainjs/react/ibc/applications/transfer/v1/tx.rpc.react ' ;
10
+ import { MsgTransfer } from '@interchainjs/react/ibc/applications/transfer/v1/tx ' ;
11
+ import { defaultContext } from '@tanstack/react-query ' ;
12
+ import { StdFee } from '@interchainjs/react/types ' ;
13
+
14
14
import { truncDecimals } from '@/utils' ;
15
+ import { keplrWalletName } from '@/config' ;
16
+ import {
17
+ useDisclosure ,
18
+ useChainUtils ,
19
+ useBalance ,
20
+ useToastHandlers ,
21
+ useSigningClient ,
22
+ } from '@/hooks' ;
15
23
16
24
import {
17
25
PrettyAsset ,
@@ -21,8 +29,6 @@ import {
21
29
Unpacked ,
22
30
} from './types' ;
23
31
24
- const { transfer } = ibc . applications . transfer . v1 . MessageComposer . withTypeUrl ;
25
-
26
32
const ZERO_AMOUNT = '0' ;
27
33
28
34
interface OverviewTransferWrapperProps {
@@ -36,13 +42,11 @@ interface OverviewTransferWrapperProps {
36
42
React . SetStateAction < TransferInfo | undefined >
37
43
> ;
38
44
} ;
39
- selectedChainName : ChainName ;
45
+ selectedChainName : string ;
40
46
}
41
47
42
48
const OverviewTransferWrapper = (
43
49
props : OverviewTransferWrapperProps & {
44
- isLoading : boolean ;
45
- setIsLoading : React . Dispatch < React . SetStateAction < boolean > > ;
46
50
inputValue : string ;
47
51
setInputValue : React . Dispatch < React . SetStateAction < string > > ;
48
52
}
@@ -54,8 +58,6 @@ const OverviewTransferWrapper = (
54
58
transferInfoState,
55
59
updateData,
56
60
selectedChainName,
57
- isLoading,
58
- setIsLoading,
59
61
inputValue,
60
62
setInputValue,
61
63
} = props ;
@@ -92,8 +94,17 @@ const OverviewTransferWrapper = (
92
94
keplrWalletName
93
95
) ;
94
96
95
- const { getChainLogo } = useManager ( ) ;
96
- const { tx } = useTx ( sourceChainName ) ;
97
+ const { getChainLogoUrl } = useWalletManager ( ) ;
98
+
99
+ const toastHandlers = useToastHandlers ( ) ;
100
+ const { data : signingClient } = useSigningClient ( sourceChainName ) ;
101
+ const { mutate : transfer , isLoading } = useTransfer ( {
102
+ clientResolver : signingClient ,
103
+ options : {
104
+ context : defaultContext ,
105
+ ...toastHandlers ,
106
+ } ,
107
+ } ) ;
97
108
98
109
const availableAmount = useMemo ( ( ) : number => {
99
110
if ( ! isDeposit ) {
@@ -125,12 +136,10 @@ const OverviewTransferWrapper = (
125
136
const closeModal = ( ) => {
126
137
modalControl . onClose ( ) ;
127
138
setInputValue ( '' ) ;
128
- setIsLoading ( false ) ;
129
139
} ;
130
140
131
141
const handleTransferSubmit = async ( ) => {
132
142
if ( ! sourceAddress || ! destAddress ) return ;
133
- setIsLoading ( true ) ;
134
143
135
144
const transferAmount = new BigNumber ( inputValue )
136
145
. shiftedBy ( getExponentByDenom ( symbolToDenom ( transferToken . symbol ) ) )
@@ -142,7 +151,7 @@ const OverviewTransferWrapper = (
142
151
) ;
143
152
144
153
const fee : StdFee = {
145
- amount : coins ( '1000' , transferToken . denom ?? '' ) ,
154
+ amount : [ { denom : transferToken . denom ?? '' , amount : '0' } ] ,
146
155
gas : '250000' ,
147
156
} ;
148
157
@@ -154,49 +163,55 @@ const OverviewTransferWrapper = (
154
163
const stamp = Date . now ( ) ;
155
164
const timeoutInNanos = ( stamp + 1.2e6 ) * 1e6 ;
156
165
157
- const msg = transfer ( {
166
+ const msg = MsgTransfer . fromPartial ( {
158
167
sourcePort,
159
168
sourceChannel,
160
169
sender : sourceAddress ,
161
170
receiver : destAddress ,
162
171
token,
163
- // @ts -ignore
164
172
timeoutHeight : undefined ,
165
173
timeoutTimestamp : BigInt ( timeoutInNanos ) ,
166
174
} ) ;
167
175
168
- await tx ( [ msg ] , {
169
- fee,
170
- onSuccess : ( ) => {
171
- updateData ( ) ;
172
- closeModal ( ) ;
176
+ transfer (
177
+ {
178
+ signerAddress : sourceAddress ,
179
+ message : msg ,
180
+ fee,
181
+ memo : 'Transfer' ,
173
182
} ,
174
- } ) ;
175
-
176
- setIsLoading ( false ) ;
183
+ {
184
+ onSuccess : ( ) => {
185
+ updateData ( ) ;
186
+ closeModal ( ) ;
187
+ } ,
188
+ }
189
+ ) ;
177
190
} ;
178
191
179
192
const assetOptions : OverviewTransferProps [ 'dropdownList' ] = useMemo ( ( ) => {
180
- return assets
181
- . filter ( ( asset ) => {
182
- if ( isDeposit ) {
183
- return true ;
184
- }
185
- return new BigNumber ( asset . amount ) . gt ( 0 ) ;
186
- } )
187
- // .filter((asset) => {
188
- // return asset.symbol !== transferToken.symbol;
189
- // })
190
- . map ( ( asset ) => ( {
191
- available : new BigNumber ( asset . displayAmount ) . toNumber ( ) ,
192
- symbol : asset . symbol ,
193
- name : asset . prettyChainName ,
194
- denom : asset . denom ,
195
- imgSrc : asset . logoUrl ?? '' ,
196
- priceDisplayAmount : new BigNumber (
197
- truncDecimals ( asset . dollarValue , 2 )
198
- ) . toNumber ( ) ,
199
- } ) ) ;
193
+ return (
194
+ assets
195
+ . filter ( ( asset ) => {
196
+ if ( isDeposit ) {
197
+ return true ;
198
+ }
199
+ return new BigNumber ( asset . amount ) . gt ( 0 ) ;
200
+ } )
201
+ // .filter((asset) => {
202
+ // return asset.symbol !== transferToken.symbol;
203
+ // })
204
+ . map ( ( asset ) => ( {
205
+ available : new BigNumber ( asset . displayAmount ) . toNumber ( ) ,
206
+ symbol : asset . symbol ,
207
+ name : asset . prettyChainName ,
208
+ denom : asset . denom ,
209
+ imgSrc : asset . logoUrl ?? '' ,
210
+ priceDisplayAmount : new BigNumber (
211
+ truncDecimals ( asset . dollarValue , 2 )
212
+ ) . toNumber ( ) ,
213
+ } ) )
214
+ ) ;
200
215
} , [ assets , isDeposit , transferToken ] ) ;
201
216
console . log ( 'assetOptions' , assetOptions ) ;
202
217
@@ -240,8 +255,10 @@ const OverviewTransferWrapper = (
240
255
new BigNumber ( inputValue ) . isEqualTo ( 0 ) ||
241
256
isNaN ( Number ( inputValue ) )
242
257
}
243
- fromChainLogoUrl = { getChainLogo ( transferInfo ?. sourceChainName ?? '' ) ?? '' }
244
- toChainLogoUrl = { getChainLogo ( transferInfo ?. destChainName ?? '' ) ?? '' }
258
+ fromChainLogoUrl = {
259
+ getChainLogoUrl ( transferInfo ?. sourceChainName ?? '' ) ?? ''
260
+ }
261
+ toChainLogoUrl = { getChainLogoUrl ( transferInfo ?. destChainName ?? '' ) ?? '' }
245
262
dropdownList = { assetOptions }
246
263
onTransfer = { ( ) => {
247
264
handleTransferSubmit ( ) ;
@@ -259,12 +276,10 @@ export const DropdownTransferModal = (props: OverviewTransferWrapperProps) => {
259
276
const { modalControl, transferInfoState } = props ;
260
277
261
278
const [ inputValue , setInputValue ] = useState ( '' ) ;
262
- const [ isLoading , setIsLoading ] = useState < boolean > ( false ) ;
263
279
264
280
const closeModal = ( ) => {
265
281
modalControl . onClose ( ) ;
266
282
setInputValue ( '' ) ;
267
- setIsLoading ( false ) ;
268
283
} ;
269
284
270
285
return (
@@ -280,8 +295,6 @@ export const DropdownTransferModal = (props: OverviewTransferWrapperProps) => {
280
295
...props . modalControl ,
281
296
onClose : closeModal ,
282
297
} }
283
- isLoading = { isLoading }
284
- setIsLoading = { setIsLoading }
285
298
inputValue = { inputValue }
286
299
setInputValue = { setInputValue }
287
300
/>
0 commit comments