@openocean.finance/widget 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/Header/NavigationTabs.js +2 -0
- package/dist/esm/components/Header/NavigationTabs.js.map +1 -1
- package/dist/esm/components/Messages/ServeErrorMessage.d.ts +6 -0
- package/dist/esm/components/Messages/ServeErrorMessage.js +10 -0
- package/dist/esm/components/Messages/ServeErrorMessage.js.map +1 -0
- package/dist/esm/components/Messages/WarningMessages.js +3 -0
- package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
- package/dist/esm/components/Messages/useMessageQueue.js +10 -0
- package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/hooks/useRoutes.js +2 -0
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/services/DebridgeService.js +5 -1
- package/dist/esm/services/DebridgeService.js.map +1 -1
- package/dist/esm/stores/useServerErrorStore.d.ts +4 -0
- package/dist/esm/stores/useServerErrorStore.js +6 -0
- package/dist/esm/stores/useServerErrorStore.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/Header/NavigationTabs.tsx +2 -0
- package/src/components/Messages/ServeErrorMessage.tsx +31 -0
- package/src/components/Messages/WarningMessages.tsx +3 -0
- package/src/components/Messages/useMessageQueue.ts +13 -0
- package/src/config/version.ts +1 -1
- package/src/hooks/useRoutes.ts +2 -0
- package/src/services/DebridgeService.ts +5 -1
- package/src/stores/useServerErrorStore.ts +9 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openocean.finance/widget",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.20",
|
|
4
4
|
"description": "Openocean Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/esm/index.js",
|
|
@@ -6,6 +6,7 @@ import { useFieldValues } from '../../stores/form/useFieldValues.js'
|
|
|
6
6
|
import { useSplitSubvariantStore } from '../../stores/settings/useSplitSubvariantStore.js'
|
|
7
7
|
import { HeaderAppBar } from '../Header/Header.style.js'
|
|
8
8
|
import { Tab, Tabs } from '../Tabs/Tabs.style.js'
|
|
9
|
+
import { useServerErrorStore } from '../../stores/useServerErrorStore.js'
|
|
9
10
|
|
|
10
11
|
export const NavigationTabs = () => {
|
|
11
12
|
const { subvariant } = useWidgetConfig()
|
|
@@ -44,6 +45,7 @@ export const NavigationTabs = () => {
|
|
|
44
45
|
setFieldValue('toToken', '')
|
|
45
46
|
const newState: 'swap' | 'bridge' = value === 0 ? 'swap' : 'bridge'
|
|
46
47
|
setState(newState)
|
|
48
|
+
useServerErrorStore.getState().setError(null)
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
return (
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { WarningRounded } from '@mui/icons-material'
|
|
2
|
+
import { type BoxProps, Typography } from '@mui/material'
|
|
3
|
+
import { AlertMessage } from './AlertMessage.js'
|
|
4
|
+
|
|
5
|
+
interface ServerErrorMessageProps extends BoxProps {
|
|
6
|
+
errorMsg?: String
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const ServerErrorMessage: React.FC<ServerErrorMessageProps> = ({
|
|
10
|
+
errorMsg,
|
|
11
|
+
...props
|
|
12
|
+
}) => {
|
|
13
|
+
return (
|
|
14
|
+
<AlertMessage
|
|
15
|
+
severity="warning"
|
|
16
|
+
icon={<WarningRounded />}
|
|
17
|
+
title={
|
|
18
|
+
<Typography
|
|
19
|
+
variant="body2"
|
|
20
|
+
sx={{
|
|
21
|
+
color: 'text.primary',
|
|
22
|
+
}}
|
|
23
|
+
>
|
|
24
|
+
{errorMsg}
|
|
25
|
+
</Typography>
|
|
26
|
+
}
|
|
27
|
+
multiline
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
useMessageQueue,
|
|
12
12
|
useStorePriceImpactAcknowledged,
|
|
13
13
|
} from './useMessageQueue.js'
|
|
14
|
+
import { ServerErrorMessage } from './ServeErrorMessage.js'
|
|
14
15
|
|
|
15
16
|
type WarningMessagesProps = BoxProps & {
|
|
16
17
|
route?: Route
|
|
@@ -57,6 +58,8 @@ export const WarningMessages: React.FC<WarningMessagesProps> = ({
|
|
|
57
58
|
return <ToAddressRequiredMessage {...props} />
|
|
58
59
|
}
|
|
59
60
|
return null
|
|
61
|
+
case 'SERVER_ERROR':
|
|
62
|
+
return <ServerErrorMessage errorMsg={messages[0].props?.errorMsg} {...props} />
|
|
60
63
|
default:
|
|
61
64
|
return null
|
|
62
65
|
}
|
|
@@ -7,6 +7,7 @@ import { useGasSufficiencyBridge } from '../../hooks/useGasSufficiencyBridge.js'
|
|
|
7
7
|
import { useIsCompatibleDestinationAccount } from '../../hooks/useIsCompatibleDestinationAccount.js'
|
|
8
8
|
import { usePriceImpact } from '../../hooks/usePriceImpact.js'
|
|
9
9
|
import { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'
|
|
10
|
+
import { useServerErrorStore } from '../../stores/useServerErrorStore.js'
|
|
10
11
|
|
|
11
12
|
export const useStorePriceImpactAcknowledged = create((set) => ({
|
|
12
13
|
priceImpactAcknowledged: false,
|
|
@@ -17,6 +18,7 @@ export const useStorePriceImpactAcknowledged = create((set) => ({
|
|
|
17
18
|
}
|
|
18
19
|
}),
|
|
19
20
|
}))
|
|
21
|
+
|
|
20
22
|
interface QueuedMessage {
|
|
21
23
|
id: string
|
|
22
24
|
priority: number
|
|
@@ -40,6 +42,8 @@ export const useMessageQueue = (route?: Route, allowInteraction?: boolean) => {
|
|
|
40
42
|
|
|
41
43
|
const { priceImpact } = usePriceImpact(route)
|
|
42
44
|
|
|
45
|
+
const serverErrorMsg = useServerErrorStore((s) => s.error)
|
|
46
|
+
|
|
43
47
|
const messageQueue = useMemo(() => {
|
|
44
48
|
const queue: QueuedMessage[] = []
|
|
45
49
|
|
|
@@ -86,6 +90,14 @@ export const useMessageQueue = (route?: Route, allowInteraction?: boolean) => {
|
|
|
86
90
|
})
|
|
87
91
|
}
|
|
88
92
|
|
|
93
|
+
if (serverErrorMsg) {
|
|
94
|
+
queue.push({
|
|
95
|
+
id: 'SERVER_ERROR',
|
|
96
|
+
priority: 0,
|
|
97
|
+
props: { errorMsg: serverErrorMsg },
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
|
|
89
101
|
return queue.sort((a, b) => a.priority - b.priority)
|
|
90
102
|
}, [
|
|
91
103
|
allowInteraction,
|
|
@@ -96,6 +108,7 @@ export const useMessageQueue = (route?: Route, allowInteraction?: boolean) => {
|
|
|
96
108
|
requiredToAddress,
|
|
97
109
|
toAddress,
|
|
98
110
|
priceImpact,
|
|
111
|
+
serverErrorMsg
|
|
99
112
|
])
|
|
100
113
|
|
|
101
114
|
return {
|
package/src/config/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@openocean.finance/widget'
|
|
2
|
-
export const version = '1.0.
|
|
2
|
+
export const version = '1.0.20'
|
package/src/hooks/useRoutes.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { useIsBatchingSupported } from './useIsBatchingSupported.js'
|
|
|
20
20
|
import { useSwapOnly } from './useSwapOnly.js'
|
|
21
21
|
import { useToken } from './useToken.js'
|
|
22
22
|
import { useWidgetEvents } from './useWidgetEvents.js'
|
|
23
|
+
import { useServerErrorStore } from '../stores/useServerErrorStore.js'
|
|
23
24
|
|
|
24
25
|
const refetchTime = 60_000
|
|
25
26
|
|
|
@@ -178,6 +179,7 @@ export const useRoutes = ({ observableRoute }: RoutesProps = {}) => {
|
|
|
178
179
|
signal,
|
|
179
180
|
}) => {
|
|
180
181
|
try {
|
|
182
|
+
useServerErrorStore.getState().setError(null)
|
|
181
183
|
const fromAmount = parseUnits(fromTokenAmount, fromToken!.decimals)
|
|
182
184
|
const formattedSlippage = slippage
|
|
183
185
|
? (Number.parseFloat(slippage) / 100).toString()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { encodeAbiParameters, parseAbiParameters } from 'viem'
|
|
2
|
+
import { useServerErrorStore } from '../stores/useServerErrorStore.js'
|
|
2
3
|
|
|
3
4
|
// Type definitions (can be moved to a separate types file if needed)
|
|
4
5
|
interface Asset {
|
|
@@ -463,7 +464,7 @@ export class DebridgeService {
|
|
|
463
464
|
fromMsg.chainId === 1151111081099710
|
|
464
465
|
? 'src5qyZHqTqecJV4aY6Cb6zDZLMDzrDKKezs22MPHr4'
|
|
465
466
|
: tx.to
|
|
466
|
-
|
|
467
|
+
const data = {
|
|
467
468
|
prependedOperatingExpenseCost,
|
|
468
469
|
isDebridgeRoute: true, // Flag to identify the route source
|
|
469
470
|
orderId: orderId,
|
|
@@ -506,7 +507,9 @@ export class DebridgeService {
|
|
|
506
507
|
// gasPrice: tx.gasPrice, // Not directly available in Debridge response
|
|
507
508
|
// dexId: // Not applicable for Debridge
|
|
508
509
|
}
|
|
510
|
+
return { data };
|
|
509
511
|
} catch (error: any) {
|
|
512
|
+
useServerErrorStore.getState().setError(error.response?.data?.errorMessage || error.message);
|
|
510
513
|
console.error(
|
|
511
514
|
'Error getting Debridge quote:',
|
|
512
515
|
error.response?.data || error.message
|
|
@@ -757,6 +760,7 @@ export class DebridgeService {
|
|
|
757
760
|
'Error fetching Debridge Solana transaction:',
|
|
758
761
|
error.response?.data || error.message
|
|
759
762
|
)
|
|
763
|
+
useServerErrorStore.getState().setError(error.response?.data?.errorMessage || error.message);
|
|
760
764
|
return null
|
|
761
765
|
}
|
|
762
766
|
}
|