@lifi/widget 3.16.0 → 3.16.1
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/CHANGELOG.md +9 -0
- package/dist/esm/components/Messages/WarningMessages.d.ts +7 -0
- package/dist/esm/components/Messages/{MainMessages.js → WarningMessages.js} +3 -6
- package/dist/esm/components/Messages/WarningMessages.js.map +1 -0
- package/dist/esm/components/Messages/useMessageQueue.d.ts +1 -0
- package/dist/esm/components/Messages/useMessageQueue.js +10 -5
- package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
- package/dist/esm/components/Routes/RoutesExpanded.js +4 -1
- package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
- package/dist/esm/components/StepActions/StepActions.js +1 -1
- package/dist/esm/components/StepActions/StepActions.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/useGasSufficiency.js +1 -1
- package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
- package/dist/esm/hooks/useIsCompatibleDestinationAccount.d.ts +8 -0
- package/dist/esm/hooks/useIsCompatibleDestinationAccount.js +37 -0
- package/dist/esm/hooks/useIsCompatibleDestinationAccount.js.map +1 -0
- package/dist/esm/hooks/useIsContractAddress.d.ts +2 -0
- package/dist/esm/hooks/useIsContractAddress.js +7 -2
- package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
- package/dist/esm/hooks/useRoutes.js +6 -1
- package/dist/esm/hooks/useRoutes.js.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.d.ts +2 -2
- package/dist/esm/hooks/useToAddressRequirements.js +10 -12
- package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
- package/dist/esm/i18n/en.json +1 -1
- package/dist/esm/pages/MainPage/MainPage.js +2 -2
- package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
- package/dist/esm/pages/MainPage/MainWarningMessages.d.ts +7 -0
- package/dist/esm/pages/MainPage/MainWarningMessages.js +9 -0
- package/dist/esm/pages/MainPage/MainWarningMessages.js.map +1 -0
- package/dist/esm/pages/MainPage/ReviewButton.js +4 -2
- package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
- package/dist/esm/pages/RoutesPage/RoutesPage.js +5 -2
- package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js +5 -2
- package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js +3 -6
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TransactionPage.js +2 -2
- package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
- package/dist/esm/stores/form/URLSearchParamsBuilder.js +4 -1
- package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Messages/{MainMessages.tsx → WarningMessages.tsx} +10 -5
- package/src/components/Messages/useMessageQueue.ts +16 -6
- package/src/components/Routes/RoutesExpanded.tsx +5 -1
- package/src/components/StepActions/StepActions.tsx +1 -1
- package/src/config/version.ts +1 -1
- package/src/hooks/useGasSufficiency.ts +1 -1
- package/src/hooks/useIsCompatibleDestinationAccount.ts +58 -0
- package/src/hooks/useIsContractAddress.ts +11 -2
- package/src/hooks/useRoutes.ts +7 -1
- package/src/hooks/useToAddressRequirements.ts +16 -20
- package/src/i18n/en.json +1 -1
- package/src/pages/MainPage/MainPage.tsx +2 -2
- package/src/pages/MainPage/MainWarningMessages.tsx +17 -0
- package/src/pages/MainPage/ReviewButton.tsx +4 -3
- package/src/pages/RoutesPage/RoutesPage.tsx +6 -3
- package/src/pages/TransactionPage/ConfirmToAddressSheet.tsx +5 -2
- package/src/pages/TransactionPage/StartTransactionButton.tsx +4 -12
- package/src/pages/TransactionPage/TransactionPage.tsx +2 -2
- package/src/stores/form/URLSearchParamsBuilder.tsx +4 -1
- package/dist/esm/components/Messages/MainMessages.d.ts +0 -2
- package/dist/esm/components/Messages/MainMessages.js.map +0 -1
|
@@ -4,7 +4,6 @@ import { ActiveTransactions } from '../../components/ActiveTransactions/ActiveTr
|
|
|
4
4
|
import { AmountInput } from '../../components/AmountInput/AmountInput.js'
|
|
5
5
|
import { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'
|
|
6
6
|
import { GasRefuelMessage } from '../../components/Messages/GasRefuelMessage.js'
|
|
7
|
-
import { MainMessages } from '../../components/Messages/MainMessages.js'
|
|
8
7
|
import { PageContainer } from '../../components/PageContainer.js'
|
|
9
8
|
import { PoweredBy } from '../../components/PoweredBy/PoweredBy.js'
|
|
10
9
|
import { Routes } from '../../components/Routes/Routes.js'
|
|
@@ -15,6 +14,7 @@ import { useHeader } from '../../hooks/useHeader.js'
|
|
|
15
14
|
import { useWideVariant } from '../../hooks/useWideVariant.js'
|
|
16
15
|
import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'
|
|
17
16
|
import { HiddenUI } from '../../types/widget.js'
|
|
17
|
+
import { MainWarningMessages } from './MainWarningMessages.js'
|
|
18
18
|
import { ReviewButton } from './ReviewButton.js'
|
|
19
19
|
|
|
20
20
|
export const MainPage: React.FC = () => {
|
|
@@ -49,7 +49,7 @@ export const MainPage: React.FC = () => {
|
|
|
49
49
|
{!wideVariant ? <Routes sx={marginSx} /> : null}
|
|
50
50
|
<SendToWalletButton sx={marginSx} />
|
|
51
51
|
<GasRefuelMessage mb={2} />
|
|
52
|
-
<
|
|
52
|
+
<MainWarningMessages mb={2} />
|
|
53
53
|
<Box
|
|
54
54
|
sx={{
|
|
55
55
|
display: 'flex',
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Route } from '@lifi/sdk'
|
|
2
|
+
import type { BoxProps } from '@mui/material'
|
|
3
|
+
import { WarningMessages } from '../../components/Messages/WarningMessages.js'
|
|
4
|
+
import { useRoutes } from '../../hooks/useRoutes.js'
|
|
5
|
+
|
|
6
|
+
interface MainWarningMessagesProps extends BoxProps {
|
|
7
|
+
route?: Route
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const MainWarningMessages: React.FC<MainWarningMessagesProps> = (
|
|
11
|
+
props
|
|
12
|
+
) => {
|
|
13
|
+
const { routes } = useRoutes()
|
|
14
|
+
const currentRoute = routes?.[0]
|
|
15
|
+
|
|
16
|
+
return <WarningMessages route={currentRoute} {...props} />
|
|
17
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useTranslation } from 'react-i18next'
|
|
2
2
|
import { useNavigate } from 'react-router-dom'
|
|
3
3
|
import { BaseTransactionButton } from '../../components/BaseTransactionButton/BaseTransactionButton.js'
|
|
4
|
+
import { useIsCompatibleDestinationAccount } from '../../hooks/useIsCompatibleDestinationAccount.js'
|
|
4
5
|
import { useRoutes } from '../../hooks/useRoutes.js'
|
|
5
6
|
import { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'
|
|
6
7
|
import { useWidgetEvents } from '../../hooks/useWidgetEvents.js'
|
|
@@ -15,8 +16,8 @@ export const ReviewButton: React.FC = () => {
|
|
|
15
16
|
const emitter = useWidgetEvents()
|
|
16
17
|
const { subvariant, subvariantOptions } = useWidgetConfig()
|
|
17
18
|
const splitState = useSplitSubvariantStore((state) => state.state)
|
|
18
|
-
const { toAddress, requiredToAddress
|
|
19
|
-
|
|
19
|
+
const { toAddress, requiredToAddress } = useToAddressRequirements()
|
|
20
|
+
const { isCompatibleDestinationAccount } = useIsCompatibleDestinationAccount()
|
|
20
21
|
const { routes, setReviewableRoute } = useRoutes()
|
|
21
22
|
|
|
22
23
|
const currentRoute = routes?.[0]
|
|
@@ -75,7 +76,7 @@ export const ReviewButton: React.FC = () => {
|
|
|
75
76
|
onClick={handleClick}
|
|
76
77
|
disabled={
|
|
77
78
|
(currentRoute && requiredToAddress && !toAddress) ||
|
|
78
|
-
|
|
79
|
+
!isCompatibleDestinationAccount
|
|
79
80
|
}
|
|
80
81
|
/>
|
|
81
82
|
)
|
|
@@ -8,6 +8,7 @@ import { RouteCard } from '../../components/RouteCard/RouteCard.js'
|
|
|
8
8
|
import { RouteCardSkeleton } from '../../components/RouteCard/RouteCardSkeleton.js'
|
|
9
9
|
import { RouteNotFoundCard } from '../../components/RouteCard/RouteNotFoundCard.js'
|
|
10
10
|
import { useHeader } from '../../hooks/useHeader.js'
|
|
11
|
+
import { useIsCompatibleDestinationAccount } from '../../hooks/useIsCompatibleDestinationAccount.js'
|
|
11
12
|
import { useNavigateBack } from '../../hooks/useNavigateBack.js'
|
|
12
13
|
import { useRoutes } from '../../hooks/useRoutes.js'
|
|
13
14
|
import { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'
|
|
@@ -18,6 +19,7 @@ import { navigationRoutes } from '../../utils/navigationRoutes.js'
|
|
|
18
19
|
import { Stack } from './RoutesPage.style.js'
|
|
19
20
|
|
|
20
21
|
export const RoutesPage: React.FC<BoxProps> = () => {
|
|
22
|
+
const { t } = useTranslation()
|
|
21
23
|
const { navigate } = useNavigateBack()
|
|
22
24
|
const emitter = useWidgetEvents()
|
|
23
25
|
const {
|
|
@@ -33,8 +35,7 @@ export const RoutesPage: React.FC<BoxProps> = () => {
|
|
|
33
35
|
const { account } = useAccount({ chainType: fromChain?.chainType })
|
|
34
36
|
const [toAddress] = useFieldValues('toAddress')
|
|
35
37
|
const { requiredToAddress } = useToAddressRequirements()
|
|
36
|
-
|
|
37
|
-
const { t } = useTranslation()
|
|
38
|
+
const { isCompatibleDestinationAccount } = useIsCompatibleDestinationAccount()
|
|
38
39
|
|
|
39
40
|
const headerAction = useMemo(
|
|
40
41
|
() => (
|
|
@@ -65,7 +66,9 @@ export const RoutesPage: React.FC<BoxProps> = () => {
|
|
|
65
66
|
|
|
66
67
|
const routeNotFound = !routes?.length && !isLoading && !isFetching
|
|
67
68
|
|
|
68
|
-
const toAddressUnsatisfied =
|
|
69
|
+
const toAddressUnsatisfied =
|
|
70
|
+
(routes?.[0] && requiredToAddress && !toAddress) ||
|
|
71
|
+
!isCompatibleDestinationAccount
|
|
69
72
|
const allowInteraction = account.isConnected && !toAddressUnsatisfied
|
|
70
73
|
|
|
71
74
|
return (
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Wallet, WarningRounded } from '@mui/icons-material'
|
|
2
2
|
import { Button, Typography } from '@mui/material'
|
|
3
3
|
import type { MutableRefObject } from 'react'
|
|
4
|
-
import { forwardRef } from 'react'
|
|
4
|
+
import { forwardRef, useRef } from 'react'
|
|
5
5
|
import { useTranslation } from 'react-i18next'
|
|
6
6
|
import { BottomSheet } from '../../components/BottomSheet/BottomSheet.js'
|
|
7
7
|
import type { BottomSheetBase } from '../../components/BottomSheet/types.js'
|
|
8
8
|
import { AlertMessage } from '../../components/Messages/AlertMessage.js'
|
|
9
9
|
import { useChain } from '../../hooks/useChain.js'
|
|
10
|
+
import { useSetContentHeight } from '../../hooks/useSetContentHeight.js'
|
|
10
11
|
import { useWidgetEvents } from '../../hooks/useWidgetEvents.js'
|
|
11
12
|
import { WidgetEvent } from '../../types/events.js'
|
|
12
13
|
import {
|
|
@@ -47,6 +48,8 @@ const ConfirmToAddressSheetContent: React.FC<
|
|
|
47
48
|
const { t } = useTranslation()
|
|
48
49
|
const { chain } = useChain(toChainId)
|
|
49
50
|
const emitter = useWidgetEvents()
|
|
51
|
+
const ref = useRef<HTMLElement>(null)
|
|
52
|
+
useSetContentHeight(ref)
|
|
50
53
|
|
|
51
54
|
const handleContinue = () => {
|
|
52
55
|
emitter.emit(WidgetEvent.LowAddressActivityConfirmed, {
|
|
@@ -58,7 +61,7 @@ const ConfirmToAddressSheetContent: React.FC<
|
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
return (
|
|
61
|
-
<SendToWalletSheetContainer>
|
|
64
|
+
<SendToWalletSheetContainer ref={ref}>
|
|
62
65
|
<IconContainer>
|
|
63
66
|
<Wallet sx={{ fontSize: 40 }} />
|
|
64
67
|
</IconContainer>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BaseTransactionButton } from '../../components/BaseTransactionButton/BaseTransactionButton.js'
|
|
2
|
-
import {
|
|
3
|
-
import { useGasSufficiency } from '../../hooks/useGasSufficiency.js'
|
|
2
|
+
import { useMessageQueue } from '../../components/Messages/useMessageQueue.js'
|
|
4
3
|
import type { StartTransactionButtonProps } from './types.js'
|
|
5
4
|
|
|
6
5
|
export const StartTransactionButton: React.FC<StartTransactionButtonProps> = ({
|
|
@@ -9,21 +8,14 @@ export const StartTransactionButton: React.FC<StartTransactionButtonProps> = ({
|
|
|
9
8
|
text,
|
|
10
9
|
loading,
|
|
11
10
|
}) => {
|
|
12
|
-
const {
|
|
13
|
-
useGasSufficiency(route)
|
|
14
|
-
const { insufficientFromToken, isLoading: isFromTokenSufficiencyLoading } =
|
|
15
|
-
useFromTokenSufficiency(route)
|
|
16
|
-
|
|
17
|
-
const shouldDisableButton = insufficientFromToken || !!insufficientGas?.length
|
|
11
|
+
const { hasMessages, isLoading } = useMessageQueue(route)
|
|
18
12
|
|
|
19
13
|
return (
|
|
20
14
|
<BaseTransactionButton
|
|
21
15
|
onClick={onClick}
|
|
22
16
|
text={text}
|
|
23
|
-
disabled={
|
|
24
|
-
loading={
|
|
25
|
-
isFromTokenSufficiencyLoading || isGasSufficiencyLoading || loading
|
|
26
|
-
}
|
|
17
|
+
disabled={hasMessages}
|
|
18
|
+
loading={isLoading || loading}
|
|
27
19
|
/>
|
|
28
20
|
)
|
|
29
21
|
}
|
|
@@ -6,7 +6,7 @@ import { useTranslation } from 'react-i18next'
|
|
|
6
6
|
import { useLocation } from 'react-router-dom'
|
|
7
7
|
import type { BottomSheetBase } from '../../components/BottomSheet/types.js'
|
|
8
8
|
import { ContractComponent } from '../../components/ContractComponent/ContractComponent.js'
|
|
9
|
-
import {
|
|
9
|
+
import { WarningMessages } from '../../components/Messages/WarningMessages.js'
|
|
10
10
|
import { PageContainer } from '../../components/PageContainer.js'
|
|
11
11
|
import { getStepList } from '../../components/Step/StepList.js'
|
|
12
12
|
import { TransactionDetails } from '../../components/TransactionDetails.js'
|
|
@@ -207,7 +207,7 @@ export const TransactionPage: React.FC = () => {
|
|
|
207
207
|
{status === RouteExecutionStatus.Idle ||
|
|
208
208
|
status === RouteExecutionStatus.Failed ? (
|
|
209
209
|
<>
|
|
210
|
-
<
|
|
210
|
+
<WarningMessages mt={2} route={route} />
|
|
211
211
|
<Box
|
|
212
212
|
sx={{
|
|
213
213
|
mt: 2,
|
|
@@ -76,7 +76,10 @@ export const URLSearchParamsBuilder = () => {
|
|
|
76
76
|
const validationResult = await validateAddress({
|
|
77
77
|
value: formValues.toAddress,
|
|
78
78
|
})
|
|
79
|
-
if
|
|
79
|
+
// Check if the toAddress is still in the query string
|
|
80
|
+
// Could be modified by the user before the validation is done
|
|
81
|
+
const { toAddress } = getDefaultValuesFromQueryString()
|
|
82
|
+
if (validationResult.isValid && toAddress) {
|
|
80
83
|
const bookmark = {
|
|
81
84
|
address: validationResult.address,
|
|
82
85
|
chainType: validationResult.chainType,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MainMessages.js","sourceRoot":"","sources":["../../../../src/components/Messages/MainMessages.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAuB,CAAC,KAAK,EAAE,EAAE;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAA;IAC9B,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAErE,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,QAAQ,cAAc,EAAE,EAAE,EAAE,CAAC;YAC3B,KAAK,oBAAoB;gBACvB,OAAO,KAAC,uBAAuB,OAAK,KAAK,GAAI,CAAA;YAC/C,KAAK,kBAAkB;gBACrB,OAAO,CACL,KAAC,qBAAqB,IACpB,eAAe,EAAE,cAAc,CAAC,KAAK,EAAE,eAAe,KAClD,KAAK,GACT,CACH,CAAA;YACH,KAAK,sBAAsB;gBACzB,OAAO,KAAC,yBAAyB,OAAK,KAAK,GAAI,CAAA;YACjD,KAAK,qBAAqB;gBACxB,OAAO,KAAC,wBAAwB,OAAK,KAAK,GAAI,CAAA;YAChD;gBACE,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,KAAC,QAAQ,IAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,QAAC,YAAY,kBAChE,UAAU,EAAE,GACJ,CACZ,CAAA;AACH,CAAC,CAAA"}
|