@openocean.finance/widget 1.0.19 → 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 +3 -0
  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 +3 -0
  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.19",
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.19'
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 {
@@ -508,6 +509,7 @@ export class DebridgeService {
508
509
  }
509
510
  return { data };
510
511
  } catch (error: any) {
512
+ useServerErrorStore.getState().setError(error.response?.data?.errorMessage || error.message);
511
513
  console.error(
512
514
  'Error getting Debridge quote:',
513
515
  error.response?.data || error.message
@@ -758,6 +760,7 @@ export class DebridgeService {
758
760
  'Error fetching Debridge Solana transaction:',
759
761
  error.response?.data || error.message
760
762
  )
763
+ useServerErrorStore.getState().setError(error.response?.data?.errorMessage || error.message);
761
764
  return null
762
765
  }
763
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
+ }))