@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.
Files changed (28) hide show
  1. package/dist/esm/components/Header/NavigationTabs.js +2 -0
  2. package/dist/esm/components/Header/NavigationTabs.js.map +1 -1
  3. package/dist/esm/components/Messages/ServeErrorMessage.d.ts +6 -0
  4. package/dist/esm/components/Messages/ServeErrorMessage.js +10 -0
  5. package/dist/esm/components/Messages/ServeErrorMessage.js.map +1 -0
  6. package/dist/esm/components/Messages/WarningMessages.js +3 -0
  7. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  8. package/dist/esm/components/Messages/useMessageQueue.js +10 -0
  9. package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
  10. package/dist/esm/config/version.d.ts +1 -1
  11. package/dist/esm/config/version.js +1 -1
  12. package/dist/esm/hooks/useRoutes.js +2 -0
  13. package/dist/esm/hooks/useRoutes.js.map +1 -1
  14. package/dist/esm/services/DebridgeService.js +5 -1
  15. package/dist/esm/services/DebridgeService.js.map +1 -1
  16. package/dist/esm/stores/useServerErrorStore.d.ts +4 -0
  17. package/dist/esm/stores/useServerErrorStore.js +6 -0
  18. package/dist/esm/stores/useServerErrorStore.js.map +1 -0
  19. package/dist/tsconfig.tsbuildinfo +1 -1
  20. package/package.json +1 -1
  21. package/src/components/Header/NavigationTabs.tsx +2 -0
  22. package/src/components/Messages/ServeErrorMessage.tsx +31 -0
  23. package/src/components/Messages/WarningMessages.tsx +3 -0
  24. package/src/components/Messages/useMessageQueue.ts +13 -0
  25. package/src/config/version.ts +1 -1
  26. package/src/hooks/useRoutes.ts +2 -0
  27. package/src/services/DebridgeService.ts +5 -1
  28. 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.18",
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 {
@@ -1,2 +1,2 @@
1
1
  export const name = '@openocean.finance/widget'
2
- export const version = '1.0.18'
2
+ export const version = '1.0.20'
@@ -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
- return {
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
  }
@@ -0,0 +1,9 @@
1
+ import { create } from 'zustand'
2
+
3
+ export const useServerErrorStore = create<{
4
+ error: string | null
5
+ setError: (msg: string | null) => void
6
+ }>((set) => ({
7
+ error: null,
8
+ setError: (msg) => set({ error: msg }),
9
+ }))