@@ -9,6 +9,7 @@ import { loadState, saveState } from '#utils/localStorage.js'
99import { useApp } from '#contexts/AppContext/index.js'
1010import { useCallback , useEffect , useMemo , useState } from 'react'
1111import { useInterval } from 'usehooks-ts'
12+ import { enableSocket } from '#config/index.js'
1213
1314const useTransactionStatus = ( transaction ?: Transaction , chain ?: TChain ) => {
1415 const { sdk, txHistory } = useApp ( )
@@ -27,6 +28,29 @@ const useTransactionStatus = (transaction?: Transaction, chain?: TChain) => {
2728 return _provider
2829 } , [ chain ] )
2930
31+ const checkSocketStatus = useCallback ( async ( ) => {
32+ if ( ! enableSocket || ! transaction ?. token ?. symbol || transaction . token . symbol !== 'ETH' ) {
33+ return false
34+ }
35+
36+ try {
37+ const status = await sdk . bridge ( transaction . token . symbol ) . getTransactionStatusSocket ( transaction . hash )
38+ console . log ( 'status' , status )
39+ if ( status . status === 'COMPLETED' ) {
40+ setCompleted ( true )
41+ setDestCompleted ( true )
42+ updateTransaction ( transaction , {
43+ pending : false ,
44+ pendingDestinationConfirmation : false
45+ } )
46+ return true
47+ }
48+ } catch ( err ) {
49+ logger . error ( 'Error checking Socket transaction status:' , err )
50+ }
51+ return false
52+ } , [ transaction , sdk ] )
53+
3054 const updateTxStatus = useCallback ( async ( ) => {
3155 if ( ! provider || ! transaction ?. hash || ! chain ) {
3256 setCompleted ( false )
@@ -38,6 +62,12 @@ const useTransactionStatus = (transaction?: Transaction, chain?: TChain) => {
3862 return
3963 }
4064
65+ // Check Socket status first
66+ const isSocketCompleted = await checkSocketStatus ( )
67+ if ( isSocketCompleted ) {
68+ return
69+ }
70+
4171 const txHash = transaction . hash
4272 const cacheKey = `txReceipt:${ txHash } `
4373
@@ -83,7 +113,7 @@ const useTransactionStatus = (transaction?: Transaction, chain?: TChain) => {
83113 setCompleted ( true )
84114 updateTransaction ( transaction , { pending : false } )
85115 }
86- } , [ transactions , transaction , provider ] )
116+ } , [ transactions , transaction , provider , checkSocketStatus ] )
87117
88118 const updateDestTxStatus = useCallback ( async ( ) => {
89119 if (
@@ -94,14 +124,19 @@ const useTransactionStatus = (transaction?: Transaction, chain?: TChain) => {
94124 ! transaction . destTxHash ||
95125 transaction . pendingDestinationConfirmation )
96126 ) {
127+ // Check Socket status first
128+ const isSocketCompleted = await checkSocketStatus ( )
129+ if ( isSocketCompleted ) {
130+ return
131+ }
132+
97133 const isSpent = await transaction ?. checkIsTransferIdSpent ( sdk )
98- // logger.debug(`tx ${transaction.hash.slice(0, 10)} isSpent:`, isSpent)
99134 if ( isSpent ) {
100135 setDestCompleted ( true )
101136 updateTransaction ( transaction , { pendingDestinationConfirmation : false } )
102137 }
103138 }
104- } , [ transactions , transaction ] )
139+ } , [ transactions , transaction , checkSocketStatus ] )
105140
106141 useEffect ( ( ) => {
107142 if ( ! completed ) {
0 commit comments