@huma-finance/widgets 0.0.22 → 0.0.24

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 (165) hide show
  1. package/.env.example +2 -2
  2. package/.eslintignore +2 -2
  3. package/.eslintrc.js +64 -64
  4. package/.prettierignore +4 -4
  5. package/.prettierrc.js +16 -16
  6. package/API.md +332 -332
  7. package/LICENSE +660 -660
  8. package/README.md +48 -48
  9. package/babel.config.js +15 -15
  10. package/config-overrides.js +9 -9
  11. package/cosmos.config.json +7 -7
  12. package/cypress/e2e/01-invoice-factoring-borrow.test.ts +62 -62
  13. package/cypress/support/e2e.ts +76 -76
  14. package/cypress/support/ethereum.ts +142 -142
  15. package/cypress/tsconfig.json +9 -9
  16. package/cypress/utils/index.ts +54 -54
  17. package/cypress.config.ts +20 -20
  18. package/dist/cjs/index.cjs +122 -127
  19. package/dist/cjs/index.cjs.map +1 -1
  20. package/dist/index.d.ts +193 -193
  21. package/dist/index.js +122 -127
  22. package/dist/index.js.map +1 -1
  23. package/jsdoc2md.json +20 -20
  24. package/package.json +4 -4
  25. package/public/index.html +40 -40
  26. package/public/manifest.json +25 -25
  27. package/public/robots.txt +3 -3
  28. package/rollup.config.js +81 -81
  29. package/src/components/Activity.tsx +132 -132
  30. package/src/components/ApolloWrapper.tsx +15 -15
  31. package/src/components/ApproveAllowanceModal.tsx +121 -121
  32. package/src/components/BottomButton.tsx +31 -31
  33. package/src/components/ChainNotSupportedModal.tsx +33 -33
  34. package/src/components/ConfirmTransferModal.tsx +153 -153
  35. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  36. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +68 -68
  37. package/src/components/CreditLine/borrow/3-Transfer.tsx +44 -44
  38. package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
  39. package/src/components/CreditLine/borrow/5-Success.tsx +30 -30
  40. package/src/components/CreditLine/borrow/index.tsx +117 -117
  41. package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
  42. package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
  43. package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
  44. package/src/components/CreditLine/payment/4-Success.tsx +39 -39
  45. package/src/components/CreditLine/payment/index.tsx +94 -94
  46. package/src/components/ErrorModal.tsx +132 -132
  47. package/src/components/Factoring/FactoredList.tsx +143 -143
  48. package/src/components/Factoring/UpcomingList.tsx +90 -90
  49. package/src/components/Factoring/index.ts +2 -2
  50. package/src/components/HumaLoading.tsx +68 -68
  51. package/src/components/HumaTable.tsx +158 -158
  52. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  53. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  54. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  55. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  56. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  57. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  58. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  59. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  60. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  61. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  62. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  63. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  64. package/src/components/Lend/supply/1-Evaluation.tsx +86 -86
  65. package/src/components/Lend/supply/2-ChooseAmount.tsx +70 -70
  66. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  67. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +104 -104
  68. package/src/components/Lend/supply/6-Transfer.tsx +32 -32
  69. package/src/components/Lend/supply/7-Success.tsx +49 -49
  70. package/src/components/Lend/supply/index.tsx +144 -144
  71. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  72. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  73. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  74. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  75. package/src/components/Lend/withdraw/index.tsx +101 -101
  76. package/src/components/LoadingModal.tsx +49 -49
  77. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  78. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  79. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  80. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  81. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  82. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  83. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  84. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  85. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  86. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  87. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  88. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  89. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +70 -70
  90. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +167 -167
  91. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  92. package/src/components/TxDoneModal.tsx +83 -83
  93. package/src/components/TxSendModal.tsx +59 -59
  94. package/src/components/ViewOnExplorer.tsx +26 -26
  95. package/src/components/WidgetWrapper.tsx +74 -74
  96. package/src/components/WrapperModal.tsx +54 -54
  97. package/src/components/buttons/TableActionButton.tsx +36 -36
  98. package/src/components/buttons/index.ts +1 -1
  99. package/src/components/humaModal/HumaModal.tsx +68 -68
  100. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  101. package/src/components/humaModal/index.tsx +2 -2
  102. package/src/components/icons/approve-lender.svg +30 -30
  103. package/src/components/icons/auto-payback.svg +40 -40
  104. package/src/components/icons/check-circle.svg +3 -3
  105. package/src/components/icons/check-green.svg +3 -3
  106. package/src/components/icons/check.svg +10 -10
  107. package/src/components/icons/donut.svg +904 -904
  108. package/src/components/icons/ellipse.svg +3 -3
  109. package/src/components/icons/huma-full.svg +22 -22
  110. package/src/components/icons/huma.svg +15 -15
  111. package/src/components/icons/index.tsx +93 -93
  112. package/src/components/icons/loader.svg +229 -229
  113. package/src/components/icons/metamask.svg +31 -31
  114. package/src/components/icons/polygon.svg +16 -16
  115. package/src/components/icons/receipt.svg +3 -3
  116. package/src/components/icons/separator.svg +3 -3
  117. package/src/components/icons/sorry.svg +31 -31
  118. package/src/components/icons/usdc.svg +5 -5
  119. package/src/components/icons/wallet-connect.svg +11 -11
  120. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  121. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  122. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  123. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  124. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  125. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  126. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  127. package/src/cosmos/WalletWrapper.tsx +52 -52
  128. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  129. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  130. package/src/cosmos/utils/env.ts +6 -6
  131. package/src/cosmos/utils/index.ts +169 -169
  132. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  133. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  134. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  135. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  136. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  137. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  138. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  139. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  140. package/src/hooks/useEA.ts +53 -53
  141. package/src/hooks/useRedux.ts +6 -6
  142. package/src/index.css +61 -61
  143. package/src/index.tsx +300 -300
  144. package/src/react-app-env.d.ts +1 -1
  145. package/src/reportWebVitals.ts +15 -15
  146. package/src/setupTests.ts +6 -6
  147. package/src/store/index.ts +27 -27
  148. package/src/store/widgets.reducers.ts +120 -120
  149. package/src/store/widgets.selectors.ts +3 -3
  150. package/src/store/widgets.store.ts +54 -54
  151. package/src/theme/breakpoints.ts +10 -10
  152. package/src/theme/components.ts +70 -70
  153. package/src/theme/coreThemeConstants.ts +29 -29
  154. package/src/theme/cssMixins.ts +92 -92
  155. package/src/theme/hooks/useGetSizes.ts +31 -31
  156. package/src/theme/index.ts +24 -24
  157. package/src/theme/palette.ts +150 -150
  158. package/src/theme/shape.ts +7 -7
  159. package/src/theme/theme.types.ts +80 -80
  160. package/src/theme/typography.ts +117 -117
  161. package/src/utilTypes.d.ts +31 -31
  162. package/src/utils/env.ts +9 -9
  163. package/tsconfig.build.json +7 -7
  164. package/tsconfig.json +32 -32
  165. package/webpack.cosmos.js +54 -54
@@ -1,73 +1,73 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import {
3
- isEmpty,
4
- PoolInfoType,
5
- timeUtil,
6
- useLastDepositTime,
7
- useWithdrawlLockoutInSeconds,
8
- } from '@huma-finance/shared'
9
- import React, { useEffect, useState } from 'react'
10
- import { useAppDispatch } from '../../../hooks/useRedux'
11
- import { ErrorModal } from '../../ErrorModal'
12
- import { setStep } from '../../../store/widgets.reducers'
13
- import { WIDGET_STEP } from '../../../store/widgets.store'
14
- import { LoadingModal } from '../../LoadingModal'
15
-
16
- type Props = {
17
- poolInfo: PoolInfoType
18
- handleClose: () => void
19
- }
20
-
21
- export function CheckWithdrawable({
22
- poolInfo,
23
- handleClose,
24
- }: Props): React.ReactElement | null {
25
- const dispatch = useAppDispatch()
26
- const { account } = useWeb3React()
27
- const withdrawlLockoutSeconds = useWithdrawlLockoutInSeconds(
28
- poolInfo.poolName,
29
- poolInfo.poolType,
30
- )
31
- const lastDepositTime = useLastDepositTime(
32
- poolInfo.poolName,
33
- poolInfo.poolType,
34
- account,
35
- )
36
-
37
- const { symbol } = poolInfo.poolUnderlyingToken
38
- const [status, setStatus] = useState<'checking' | 'error'>('checking')
39
-
40
- useEffect(() => {
41
- if (!isEmpty(withdrawlLockoutSeconds) && !isEmpty(lastDepositTime)) {
42
- const currentTimestamp = timeUtil.getUnixTimestamp()
43
- if (lastDepositTime! + withdrawlLockoutSeconds! > currentTimestamp) {
44
- setStatus('error')
45
- } else {
46
- dispatch(setStep(WIDGET_STEP.ChooseAmount))
47
- }
48
- }
49
- }, [dispatch, lastDepositTime, withdrawlLockoutSeconds])
50
-
51
- if (status === 'error') {
52
- const errorMessage = `Your last deposit was on ${timeUtil.timestampToLL(
53
- lastDepositTime,
54
- )}. Depositors need to wait for ${timeUtil
55
- .secondsToDays(withdrawlLockoutSeconds)
56
- .toFixed(0)} days before withdrawal.`
57
- return (
58
- <ErrorModal
59
- title={`Withdraw ${symbol}`}
60
- errorReason='Withdraw too soon'
61
- errorMessage={errorMessage}
62
- handleOk={handleClose}
63
- />
64
- )
65
- }
66
-
67
- return (
68
- <LoadingModal
69
- title={`Withdraw ${symbol}`}
70
- description='Checking withdrawable amount...'
71
- />
72
- )
73
- }
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import {
3
+ isEmpty,
4
+ PoolInfoType,
5
+ timeUtil,
6
+ useLastDepositTime,
7
+ useWithdrawlLockoutInSeconds,
8
+ } from '@huma-finance/shared'
9
+ import React, { useEffect, useState } from 'react'
10
+ import { useAppDispatch } from '../../../hooks/useRedux'
11
+ import { ErrorModal } from '../../ErrorModal'
12
+ import { setStep } from '../../../store/widgets.reducers'
13
+ import { WIDGET_STEP } from '../../../store/widgets.store'
14
+ import { LoadingModal } from '../../LoadingModal'
15
+
16
+ type Props = {
17
+ poolInfo: PoolInfoType
18
+ handleClose: () => void
19
+ }
20
+
21
+ export function CheckWithdrawable({
22
+ poolInfo,
23
+ handleClose,
24
+ }: Props): React.ReactElement | null {
25
+ const dispatch = useAppDispatch()
26
+ const { account } = useWeb3React()
27
+ const withdrawlLockoutSeconds = useWithdrawlLockoutInSeconds(
28
+ poolInfo.poolName,
29
+ poolInfo.poolType,
30
+ )
31
+ const lastDepositTime = useLastDepositTime(
32
+ poolInfo.poolName,
33
+ poolInfo.poolType,
34
+ account,
35
+ )
36
+
37
+ const { symbol } = poolInfo.poolUnderlyingToken
38
+ const [status, setStatus] = useState<'checking' | 'error'>('checking')
39
+
40
+ useEffect(() => {
41
+ if (!isEmpty(withdrawlLockoutSeconds) && !isEmpty(lastDepositTime)) {
42
+ const currentTimestamp = timeUtil.getUnixTimestamp()
43
+ if (lastDepositTime! + withdrawlLockoutSeconds! > currentTimestamp) {
44
+ setStatus('error')
45
+ } else {
46
+ dispatch(setStep(WIDGET_STEP.ChooseAmount))
47
+ }
48
+ }
49
+ }, [dispatch, lastDepositTime, withdrawlLockoutSeconds])
50
+
51
+ if (status === 'error') {
52
+ const errorMessage = `Your last deposit was on ${timeUtil.timestampToLL(
53
+ lastDepositTime,
54
+ )}. Depositors need to wait for ${timeUtil
55
+ .secondsToDays(withdrawlLockoutSeconds)
56
+ .toFixed(0)} days before withdrawal.`
57
+ return (
58
+ <ErrorModal
59
+ title={`Withdraw ${symbol}`}
60
+ errorReason='Withdraw too soon'
61
+ errorMessage={errorMessage}
62
+ handleOk={handleClose}
63
+ />
64
+ )
65
+ }
66
+
67
+ return (
68
+ <LoadingModal
69
+ title={`Withdraw ${symbol}`}
70
+ description='Checking withdrawable amount...'
71
+ />
72
+ )
73
+ }
@@ -1,50 +1,50 @@
1
- import { BigNumber } from 'ethers'
2
- import { downScale, PoolInfoType } from '@huma-finance/shared'
3
- import React, { useCallback, useState } from 'react'
4
-
5
- import { useAppDispatch } from '../../../hooks/useRedux'
6
- import { setStep, setWithdrawAmount } from '../../../store/widgets.reducers'
7
- import { WIDGET_STEP } from '../../../store/widgets.store'
8
- import { ChooseAmountModal } from '../../ChooseAmountModal'
9
-
10
- type Props = {
11
- lenderPosition: BigNumber
12
- poolInfo: PoolInfoType
13
- }
14
-
15
- export function ChooseAmount({
16
- lenderPosition,
17
- poolInfo,
18
- }: Props): React.ReactElement | null {
19
- const dispatch = useAppDispatch()
20
- const { poolUnderlyingToken } = poolInfo
21
- const { symbol, decimals } = poolUnderlyingToken
22
- const [currentAmount, setCurrentAmount] = useState(0)
23
- const withdrawableAmount = downScale<number>(lenderPosition, decimals)
24
-
25
- const handleChangeAmount = useCallback(
26
- (newAmount: number) => {
27
- setCurrentAmount(newAmount)
28
- dispatch(setWithdrawAmount(newAmount))
29
- },
30
- [dispatch],
31
- )
32
-
33
- const handleAction = useCallback(() => {
34
- dispatch(setStep(WIDGET_STEP.Transfer))
35
- }, [dispatch])
36
-
37
- return (
38
- <ChooseAmountModal
39
- title={`Withdraw ${symbol}`}
40
- description1='Choose Amount'
41
- sliderMax={Number(withdrawableAmount)}
42
- currentAmount={currentAmount}
43
- tokenSymbol={symbol}
44
- handleChangeAmount={handleChangeAmount}
45
- handleAction={handleAction}
46
- actionText='withdraw'
47
- hideTerms
48
- />
49
- )
50
- }
1
+ import { BigNumber } from 'ethers'
2
+ import { downScale, PoolInfoType } from '@huma-finance/shared'
3
+ import React, { useCallback, useState } from 'react'
4
+
5
+ import { useAppDispatch } from '../../../hooks/useRedux'
6
+ import { setStep, setWithdrawAmount } from '../../../store/widgets.reducers'
7
+ import { WIDGET_STEP } from '../../../store/widgets.store'
8
+ import { ChooseAmountModal } from '../../ChooseAmountModal'
9
+
10
+ type Props = {
11
+ lenderPosition: BigNumber
12
+ poolInfo: PoolInfoType
13
+ }
14
+
15
+ export function ChooseAmount({
16
+ lenderPosition,
17
+ poolInfo,
18
+ }: Props): React.ReactElement | null {
19
+ const dispatch = useAppDispatch()
20
+ const { poolUnderlyingToken } = poolInfo
21
+ const { symbol, decimals } = poolUnderlyingToken
22
+ const [currentAmount, setCurrentAmount] = useState(0)
23
+ const withdrawableAmount = downScale<number>(lenderPosition, decimals)
24
+
25
+ const handleChangeAmount = useCallback(
26
+ (newAmount: number) => {
27
+ setCurrentAmount(newAmount)
28
+ dispatch(setWithdrawAmount(newAmount))
29
+ },
30
+ [dispatch],
31
+ )
32
+
33
+ const handleAction = useCallback(() => {
34
+ dispatch(setStep(WIDGET_STEP.Transfer))
35
+ }, [dispatch])
36
+
37
+ return (
38
+ <ChooseAmountModal
39
+ title={`Withdraw ${symbol}`}
40
+ description1='Choose Amount'
41
+ sliderMax={Number(withdrawableAmount)}
42
+ currentAmount={currentAmount}
43
+ tokenSymbol={symbol}
44
+ handleChangeAmount={handleChangeAmount}
45
+ handleAction={handleAction}
46
+ actionText='withdraw'
47
+ hideTerms
48
+ />
49
+ )
50
+ }
@@ -1,32 +1,32 @@
1
- import { PoolInfoType, toBigNumber, upScale } from '@huma-finance/shared'
2
- import React, { useCallback } from 'react'
3
-
4
- import { useAppDispatch, useAppSelector } from '../../../hooks/useRedux'
5
- import { setStep } from '../../../store/widgets.reducers'
6
- import { selectWidgetState } from '../../../store/widgets.selectors'
7
- import { WIDGET_STEP } from '../../../store/widgets.store'
8
- import { TxSendModal } from '../../TxSendModal'
9
-
10
- type Props = {
11
- poolInfo: PoolInfoType
12
- }
13
-
14
- export function Transfer({ poolInfo }: Props): React.ReactElement {
15
- const dispatch = useAppDispatch()
16
- const { decimals } = poolInfo.poolUnderlyingToken
17
- const { withdrawAmount } = useAppSelector(selectWidgetState)
18
- const withdrawBigNumber = toBigNumber(upScale(withdrawAmount!, decimals))
19
-
20
- const handleSuccess = useCallback(() => {
21
- dispatch(setStep(WIDGET_STEP.Done))
22
- }, [dispatch])
23
-
24
- return (
25
- <TxSendModal
26
- poolInfo={poolInfo}
27
- method='withdraw'
28
- params={[withdrawBigNumber]}
29
- handleSuccess={handleSuccess}
30
- />
31
- )
32
- }
1
+ import { PoolInfoType, toBigNumber, upScale } from '@huma-finance/shared'
2
+ import React, { useCallback } from 'react'
3
+
4
+ import { useAppDispatch, useAppSelector } from '../../../hooks/useRedux'
5
+ import { setStep } from '../../../store/widgets.reducers'
6
+ import { selectWidgetState } from '../../../store/widgets.selectors'
7
+ import { WIDGET_STEP } from '../../../store/widgets.store'
8
+ import { TxSendModal } from '../../TxSendModal'
9
+
10
+ type Props = {
11
+ poolInfo: PoolInfoType
12
+ }
13
+
14
+ export function Transfer({ poolInfo }: Props): React.ReactElement {
15
+ const dispatch = useAppDispatch()
16
+ const { decimals } = poolInfo.poolUnderlyingToken
17
+ const { withdrawAmount } = useAppSelector(selectWidgetState)
18
+ const withdrawBigNumber = toBigNumber(upScale(withdrawAmount!, decimals))
19
+
20
+ const handleSuccess = useCallback(() => {
21
+ dispatch(setStep(WIDGET_STEP.Done))
22
+ }, [dispatch])
23
+
24
+ return (
25
+ <TxSendModal
26
+ poolInfo={poolInfo}
27
+ method='withdraw'
28
+ params={[withdrawBigNumber]}
29
+ handleSuccess={handleSuccess}
30
+ />
31
+ )
32
+ }
@@ -1,49 +1,49 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import {
3
- decodeLogs,
4
- downScale,
5
- formatMoney,
6
- PoolInfoType,
7
- sendTxAtom,
8
- } from '@huma-finance/shared'
9
- import transferAbi from '@huma-finance/shared/dist/abis/Transfer.json'
10
- import { useAtom } from 'jotai'
11
- import React, { useEffect, useState } from 'react'
12
-
13
- import { TxDoneModal } from '../../TxDoneModal'
14
-
15
- type Props = {
16
- poolInfo: PoolInfoType
17
- handleAction: () => void
18
- }
19
-
20
- export function Success({ poolInfo, handleAction }: Props): React.ReactElement {
21
- const { account } = useWeb3React()
22
- const { poolUnderlyingToken } = poolInfo
23
- const [{ txReceipt }] = useAtom(sendTxAtom)
24
- const { symbol, decimals, address } = poolUnderlyingToken
25
- const [withdrawAmount, setWithdrawAmount] = useState<string | undefined>()
26
-
27
- useEffect(() => {
28
- if (txReceipt) {
29
- const events = decodeLogs(txReceipt.logs, transferAbi)
30
- if (events) {
31
- events.forEach((event) => {
32
- const { from, to, value } = event.args
33
- if (
34
- from.toLowerCase() === poolInfo.pool.toLowerCase() &&
35
- to.toLowerCase() === account?.toLowerCase()
36
- ) {
37
- setWithdrawAmount(downScale(value.toString(), decimals))
38
- }
39
- })
40
- }
41
- }
42
- }, [account, address, decimals, poolInfo.pool, txReceipt])
43
-
44
- const content = [
45
- `You successfully withdrawn ${formatMoney(withdrawAmount)} ${symbol}.`,
46
- ]
47
-
48
- return <TxDoneModal handleAction={handleAction} content={content} />
49
- }
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import {
3
+ decodeLogs,
4
+ downScale,
5
+ formatMoney,
6
+ PoolInfoType,
7
+ sendTxAtom,
8
+ } from '@huma-finance/shared'
9
+ import transferAbi from '@huma-finance/shared/dist/abis/Transfer.json'
10
+ import { useAtom } from 'jotai'
11
+ import React, { useEffect, useState } from 'react'
12
+
13
+ import { TxDoneModal } from '../../TxDoneModal'
14
+
15
+ type Props = {
16
+ poolInfo: PoolInfoType
17
+ handleAction: () => void
18
+ }
19
+
20
+ export function Success({ poolInfo, handleAction }: Props): React.ReactElement {
21
+ const { account } = useWeb3React()
22
+ const { poolUnderlyingToken } = poolInfo
23
+ const [{ txReceipt }] = useAtom(sendTxAtom)
24
+ const { symbol, decimals, address } = poolUnderlyingToken
25
+ const [withdrawAmount, setWithdrawAmount] = useState<string | undefined>()
26
+
27
+ useEffect(() => {
28
+ if (txReceipt) {
29
+ const events = decodeLogs(txReceipt.logs, transferAbi)
30
+ if (events) {
31
+ events.forEach((event) => {
32
+ const { from, to, value } = event.args
33
+ if (
34
+ from.toLowerCase() === poolInfo.pool.toLowerCase() &&
35
+ to.toLowerCase() === account?.toLowerCase()
36
+ ) {
37
+ setWithdrawAmount(downScale(value.toString(), decimals))
38
+ }
39
+ })
40
+ }
41
+ }
42
+ }, [account, address, decimals, poolInfo.pool, txReceipt])
43
+
44
+ const content = [
45
+ `You successfully withdrawn ${formatMoney(withdrawAmount)} ${symbol}.`,
46
+ ]
47
+
48
+ return <TxDoneModal handleAction={handleAction} content={content} />
49
+ }
@@ -1,101 +1,101 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import {
3
- POOL_NAME,
4
- POOL_TYPE,
5
- useLenderPosition,
6
- usePoolInfo,
7
- } from '@huma-finance/shared'
8
- import React, { useCallback, useEffect } from 'react'
9
- import { useDispatch } from 'react-redux'
10
-
11
- import { useAppSelector } from '../../../hooks/useRedux'
12
- import { setStep } from '../../../store/widgets.reducers'
13
- import { selectWidgetState } from '../../../store/widgets.selectors'
14
- import { WIDGET_STEP } from '../../../store/widgets.store'
15
- import { ErrorModal } from '../../ErrorModal'
16
- import { WidgetWrapper } from '../../WidgetWrapper'
17
- import { CheckWithdrawable } from './1-CheckWithdrawble'
18
- import { ChooseAmount } from './2-ChooseAmount'
19
- import { Transfer } from './3-Transfer'
20
- import { Success } from './4-Success'
21
-
22
- /**
23
- * Lend pool withdraw props
24
- * @typedef {Object} LendWithdrawProps
25
- * @property {POOL_NAME} poolName The name of the pool.
26
- * @property {POOL_TYPE} poolType The type of the pool.
27
- * @property {function():void} handleClose Function to notify to close the widget modal when user clicks the 'x' close button.
28
- * @property {function((number|undefined)):void|undefined} handleSuccess Optional function to notify that the lending pool withdraw action is successful.
29
- */
30
- export type LendWithdrawProps = {
31
- poolName: keyof typeof POOL_NAME
32
- poolType: keyof typeof POOL_TYPE
33
- handleClose: () => void
34
- handleSuccess?: (blockNumber?: number) => void
35
- }
36
-
37
- export function LendWithdraw({
38
- poolName: poolNameStr,
39
- poolType: poolTypeStr,
40
- handleClose,
41
- handleSuccess,
42
- }: LendWithdrawProps): React.ReactElement | null {
43
- const dispatch = useDispatch()
44
- const { account } = useWeb3React()
45
- const poolName = POOL_NAME[poolNameStr]
46
- const poolType = POOL_TYPE[poolTypeStr]
47
- const poolInfo = usePoolInfo(poolName, poolType)
48
- const { step, errorMessage } = useAppSelector(selectWidgetState)
49
- const [lenderPosition, refreshLenderPosition] = useLenderPosition(
50
- poolName,
51
- poolType,
52
- account,
53
- )
54
-
55
- useEffect(() => {
56
- if (!step && lenderPosition) {
57
- dispatch(setStep(WIDGET_STEP.CheckWithdrawable))
58
- }
59
- }, [dispatch, lenderPosition, step])
60
-
61
- const handleWithdrawSuccess = useCallback(
62
- (blockNumber: number) => {
63
- refreshLenderPosition()
64
- if (handleSuccess) {
65
- handleSuccess(blockNumber)
66
- }
67
- },
68
- [handleSuccess, refreshLenderPosition],
69
- )
70
-
71
- if (!poolInfo) {
72
- return null
73
- }
74
-
75
- return (
76
- <WidgetWrapper
77
- isOpen
78
- handleClose={handleClose}
79
- handleSuccess={handleWithdrawSuccess}
80
- >
81
- {(!step || step === WIDGET_STEP.CheckWithdrawable) && (
82
- <CheckWithdrawable poolInfo={poolInfo} handleClose={handleClose} />
83
- )}
84
- {step === WIDGET_STEP.ChooseAmount && (
85
- <ChooseAmount poolInfo={poolInfo} lenderPosition={lenderPosition!} />
86
- )}
87
- {step === WIDGET_STEP.Transfer && <Transfer poolInfo={poolInfo} />}
88
- {step === WIDGET_STEP.Done && (
89
- <Success poolInfo={poolInfo} handleAction={handleClose} />
90
- )}
91
- {step === WIDGET_STEP.Error && (
92
- <ErrorModal
93
- title='Withdraw'
94
- errorReason='Sorry there was an error'
95
- errorMessage={errorMessage}
96
- handleOk={handleClose}
97
- />
98
- )}
99
- </WidgetWrapper>
100
- )
101
- }
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import {
3
+ POOL_NAME,
4
+ POOL_TYPE,
5
+ useLenderPosition,
6
+ usePoolInfo,
7
+ } from '@huma-finance/shared'
8
+ import React, { useCallback, useEffect } from 'react'
9
+ import { useDispatch } from 'react-redux'
10
+
11
+ import { useAppSelector } from '../../../hooks/useRedux'
12
+ import { setStep } from '../../../store/widgets.reducers'
13
+ import { selectWidgetState } from '../../../store/widgets.selectors'
14
+ import { WIDGET_STEP } from '../../../store/widgets.store'
15
+ import { ErrorModal } from '../../ErrorModal'
16
+ import { WidgetWrapper } from '../../WidgetWrapper'
17
+ import { CheckWithdrawable } from './1-CheckWithdrawble'
18
+ import { ChooseAmount } from './2-ChooseAmount'
19
+ import { Transfer } from './3-Transfer'
20
+ import { Success } from './4-Success'
21
+
22
+ /**
23
+ * Lend pool withdraw props
24
+ * @typedef {Object} LendWithdrawProps
25
+ * @property {POOL_NAME} poolName The name of the pool.
26
+ * @property {POOL_TYPE} poolType The type of the pool.
27
+ * @property {function():void} handleClose Function to notify to close the widget modal when user clicks the 'x' close button.
28
+ * @property {function((number|undefined)):void|undefined} handleSuccess Optional function to notify that the lending pool withdraw action is successful.
29
+ */
30
+ export type LendWithdrawProps = {
31
+ poolName: keyof typeof POOL_NAME
32
+ poolType: keyof typeof POOL_TYPE
33
+ handleClose: () => void
34
+ handleSuccess?: (blockNumber?: number) => void
35
+ }
36
+
37
+ export function LendWithdraw({
38
+ poolName: poolNameStr,
39
+ poolType: poolTypeStr,
40
+ handleClose,
41
+ handleSuccess,
42
+ }: LendWithdrawProps): React.ReactElement | null {
43
+ const dispatch = useDispatch()
44
+ const { account } = useWeb3React()
45
+ const poolName = POOL_NAME[poolNameStr]
46
+ const poolType = POOL_TYPE[poolTypeStr]
47
+ const poolInfo = usePoolInfo(poolName, poolType)
48
+ const { step, errorMessage } = useAppSelector(selectWidgetState)
49
+ const [lenderPosition, refreshLenderPosition] = useLenderPosition(
50
+ poolName,
51
+ poolType,
52
+ account,
53
+ )
54
+
55
+ useEffect(() => {
56
+ if (!step && lenderPosition) {
57
+ dispatch(setStep(WIDGET_STEP.CheckWithdrawable))
58
+ }
59
+ }, [dispatch, lenderPosition, step])
60
+
61
+ const handleWithdrawSuccess = useCallback(
62
+ (blockNumber: number) => {
63
+ refreshLenderPosition()
64
+ if (handleSuccess) {
65
+ handleSuccess(blockNumber)
66
+ }
67
+ },
68
+ [handleSuccess, refreshLenderPosition],
69
+ )
70
+
71
+ if (!poolInfo) {
72
+ return null
73
+ }
74
+
75
+ return (
76
+ <WidgetWrapper
77
+ isOpen
78
+ handleClose={handleClose}
79
+ handleSuccess={handleWithdrawSuccess}
80
+ >
81
+ {(!step || step === WIDGET_STEP.CheckWithdrawable) && (
82
+ <CheckWithdrawable poolInfo={poolInfo} handleClose={handleClose} />
83
+ )}
84
+ {step === WIDGET_STEP.ChooseAmount && (
85
+ <ChooseAmount poolInfo={poolInfo} lenderPosition={lenderPosition!} />
86
+ )}
87
+ {step === WIDGET_STEP.Transfer && <Transfer poolInfo={poolInfo} />}
88
+ {step === WIDGET_STEP.Done && (
89
+ <Success poolInfo={poolInfo} handleAction={handleClose} />
90
+ )}
91
+ {step === WIDGET_STEP.Error && (
92
+ <ErrorModal
93
+ title='Withdraw'
94
+ errorReason='Sorry there was an error'
95
+ errorMessage={errorMessage}
96
+ handleOk={handleClose}
97
+ />
98
+ )}
99
+ </WidgetWrapper>
100
+ )
101
+ }