@huma-finance/widgets 0.0.37 → 0.0.38-beta.0

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 (180) 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 +404 -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/jsdoc2md.json +20 -20
  19. package/package.json +5 -5
  20. package/public/index.html +40 -40
  21. package/public/manifest.json +25 -25
  22. package/public/robots.txt +3 -3
  23. package/rollup.config.js +81 -81
  24. package/src/components/Activity.tsx +128 -128
  25. package/src/components/ApolloWrapper.tsx +15 -15
  26. package/src/components/ApproveAllowanceModal.tsx +138 -138
  27. package/src/components/BottomButton.tsx +33 -33
  28. package/src/components/ChainNotSupportedModal.tsx +33 -33
  29. package/src/components/ChooseAmountModal.tsx +322 -322
  30. package/src/components/ConfirmTransferModal.tsx +153 -153
  31. package/src/components/CreditLine/approve/1-ApproveAllowance.tsx +34 -34
  32. package/src/components/CreditLine/approve/2-Success.tsx +43 -43
  33. package/src/components/CreditLine/approve/index.tsx +85 -85
  34. package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
  35. package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +74 -74
  36. package/src/components/CreditLine/borrow/3-ApproveAllowance.tsx +29 -29
  37. package/src/components/CreditLine/borrow/4-Transfer.tsx +34 -34
  38. package/src/components/CreditLine/borrow/5-Success.tsx +38 -38
  39. package/src/components/CreditLine/borrow/6-Notifications.tsx +10 -10
  40. package/src/components/CreditLine/borrow/index.tsx +136 -136
  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 +136 -136
  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/HumaSnackBar.tsx +60 -60
  52. package/src/components/HumaTable.tsx +203 -203
  53. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
  54. package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
  55. package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
  56. package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
  57. package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
  58. package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
  59. package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
  60. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  61. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  62. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  63. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  64. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  65. package/src/components/Lend/supply/1-Evaluation/EvaluationEA.tsx +90 -90
  66. package/src/components/Lend/supply/1-Evaluation/EvaluationKYC.tsx +319 -319
  67. package/src/components/Lend/supply/1-Evaluation/index.tsx +31 -31
  68. package/src/components/Lend/supply/2-ChooseAmount.tsx +69 -69
  69. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  70. package/src/components/Lend/supply/4-Transfer.tsx +32 -32
  71. package/src/components/Lend/supply/5-Success.tsx +60 -60
  72. package/src/components/Lend/supply/6-Notifications.tsx +10 -10
  73. package/src/components/Lend/supply/index.tsx +167 -167
  74. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  75. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  76. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  77. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  78. package/src/components/Lend/withdraw/index.tsx +101 -101
  79. package/src/components/LoadingModal.tsx +49 -49
  80. package/src/components/Notifi/NotifiSubscriptionModal.tsx +268 -268
  81. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
  82. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
  83. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
  84. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
  85. package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
  86. package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
  87. package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
  88. package/src/components/StreamFactoring/borrow/index.tsx +94 -94
  89. package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
  90. package/src/components/StreamFactoring/payment/Success.tsx +23 -23
  91. package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
  92. package/src/components/StreamFactoring/payment/index.tsx +66 -66
  93. package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +69 -69
  94. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +166 -166
  95. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  96. package/src/components/TxDoneModal.tsx +85 -85
  97. package/src/components/TxSendModal.tsx +59 -59
  98. package/src/components/ViewOnExplorer.tsx +23 -23
  99. package/src/components/WidgetWrapper.tsx +74 -74
  100. package/src/components/WrapperModal.tsx +54 -54
  101. package/src/components/buttons/TableActionButton.tsx +36 -36
  102. package/src/components/buttons/index.ts +1 -1
  103. package/src/components/humaModal/HumaModal.tsx +68 -68
  104. package/src/components/humaModal/HumaModalHeader.tsx +70 -70
  105. package/src/components/humaModal/index.tsx +2 -2
  106. package/src/components/icons/approve-lender.svg +58 -58
  107. package/src/components/icons/auto-payback.svg +139 -139
  108. package/src/components/icons/check-circle.svg +3 -3
  109. package/src/components/icons/check-green.svg +3 -3
  110. package/src/components/icons/check.svg +10 -10
  111. package/src/components/icons/donut.svg +904 -904
  112. package/src/components/icons/ellipse.svg +3 -3
  113. package/src/components/icons/huma-full.svg +22 -22
  114. package/src/components/icons/huma.svg +15 -15
  115. package/src/components/icons/index.tsx +93 -93
  116. package/src/components/icons/loader.svg +229 -229
  117. package/src/components/icons/metamask.svg +31 -31
  118. package/src/components/icons/polygon.svg +16 -16
  119. package/src/components/icons/receipt.svg +3 -3
  120. package/src/components/icons/separator.svg +3 -3
  121. package/src/components/icons/sorry.svg +17 -17
  122. package/src/components/icons/usdc.svg +5 -5
  123. package/src/components/icons/wallet-connect.svg +11 -11
  124. package/src/components/images/index.ts +3 -3
  125. package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
  126. package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
  127. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  128. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  129. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  130. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  131. package/src/cosmos/SDKTesting.fixture.tsx +616 -616
  132. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
  133. package/src/cosmos/WalletWrapper.tsx +52 -52
  134. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  135. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  136. package/src/cosmos/utils/env.ts +6 -6
  137. package/src/cosmos/utils/index.ts +169 -169
  138. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  139. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  140. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  141. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  142. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  143. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  144. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  145. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  146. package/src/hooks/useEA.ts +53 -53
  147. package/src/hooks/useElementDimensions.ts +30 -30
  148. package/src/hooks/useNotifi.ts +71 -71
  149. package/src/hooks/useRedux.ts +6 -6
  150. package/src/index.css +61 -61
  151. package/src/index.tsx +283 -283
  152. package/src/react-app-env.d.ts +1 -1
  153. package/src/reportWebVitals.ts +15 -15
  154. package/src/setupTests.ts +6 -6
  155. package/src/store/index.ts +27 -27
  156. package/src/store/widgets.reducers.ts +120 -120
  157. package/src/store/widgets.selectors.ts +3 -3
  158. package/src/store/widgets.store.ts +55 -55
  159. package/src/theme/breakpoints.ts +10 -10
  160. package/src/theme/components.ts +70 -70
  161. package/src/theme/coreThemeConstants.ts +29 -29
  162. package/src/theme/cssMixins.ts +92 -92
  163. package/src/theme/hooks/useGetSizes.ts +31 -31
  164. package/src/theme/index.ts +24 -24
  165. package/src/theme/palette.ts +150 -150
  166. package/src/theme/shape.ts +7 -7
  167. package/src/theme/theme.types.ts +80 -80
  168. package/src/theme/typography.ts +117 -117
  169. package/src/utilTypes.d.ts +30 -30
  170. package/src/utils/env.ts +10 -10
  171. package/tsconfig.build.json +7 -7
  172. package/tsconfig.json +32 -32
  173. package/webpack.cosmos.js +54 -54
  174. package/dist/assets/output-15e10f9f.css +0 -44
  175. package/dist/cjs/assets/output-15e10f9f.css +0 -44
  176. package/dist/cjs/index.cjs +0 -7742
  177. package/dist/cjs/index.cjs.map +0 -1
  178. package/dist/index.d.ts +0 -246
  179. package/dist/index.js +0 -7696
  180. package/dist/index.js.map +0 -1
@@ -1,167 +1,167 @@
1
- import {
2
- downScale,
3
- POOL_NAME,
4
- POOL_TYPE,
5
- useLenderApproved,
6
- useLenderPosition,
7
- usePoolAllowance,
8
- usePoolInfo,
9
- usePoolUnderlyingTokenBalance,
10
- useWithdrawlLockoutInSeconds,
11
- } from '@huma-finance/shared'
12
- import { useWeb3React } from '@web3-react/core'
13
- import React, { useCallback, useEffect } from 'react'
14
- import { useDispatch } from 'react-redux'
15
-
16
- import {
17
- useIsFirstTimeNotifiUser,
18
- useDoesChainSupportNotifi,
19
- } from '../../../hooks/useNotifi'
20
- import { useAppSelector } from '../../../hooks/useRedux'
21
- import { setStep } from '../../../store/widgets.reducers'
22
- import { selectWidgetState } from '../../../store/widgets.selectors'
23
- import { WIDGET_STEP } from '../../../store/widgets.store'
24
- import { ErrorModal } from '../../ErrorModal'
25
- import { WidgetWrapper } from '../../WidgetWrapper'
26
- import { Evaluation } from './1-Evaluation'
27
- import { ChooseAmount } from './2-ChooseAmount'
28
- import { ApproveAllowance } from './3-ApproveAllowance'
29
- import { Transfer } from './4-Transfer'
30
- import { Success } from './5-Success'
31
- import { Notifications } from './6-Notifications'
32
-
33
- /**
34
- * Lend pool supply props
35
- * @typedef {Object} LendSupplyProps
36
- * @property {POOL_NAME} poolName The name of the pool.
37
- * @property {POOL_TYPE} poolType The type of the pool.
38
- * @property {function():void} handleClose Function to notify to close the widget modal when user clicks the 'x' close button.
39
- * @property {function((number|undefined)):void|undefined} handleSuccess Optional function to notify that the lending pool supply action is successful.
40
- */
41
- export interface LendSupplyProps {
42
- poolName: keyof typeof POOL_NAME
43
- poolType: keyof typeof POOL_TYPE
44
- handleClose: () => void
45
- handleSuccess?: (blockNumber?: number) => void
46
- }
47
-
48
- export function LendSupply({
49
- poolName: poolNameStr,
50
- poolType: poolTypeStr,
51
- handleClose,
52
- handleSuccess,
53
- }: LendSupplyProps): React.ReactElement | null {
54
- const dispatch = useDispatch()
55
- const { account, chainId } = useWeb3React()
56
- const poolName = POOL_NAME[poolNameStr]
57
- const poolType = POOL_TYPE[poolTypeStr]
58
- const poolInfo = usePoolInfo(poolName, poolType)
59
- const { decimals } = poolInfo?.poolUnderlyingToken || {}
60
- const { step, errorMessage } = useAppSelector(selectWidgetState)
61
- const { allowance } = usePoolAllowance(poolName, poolType, account)
62
- const { isFirstTimeNotifiUser } = useIsFirstTimeNotifiUser(account, chainId)
63
- const { notifiChainSupported } = useDoesChainSupportNotifi(account, chainId)
64
- const [lenderApproved, refreshLenderApproved] = useLenderApproved(
65
- poolName,
66
- poolType,
67
- account,
68
- )
69
- const [, refreshLenderPosition] = useLenderPosition(
70
- poolName,
71
- poolType,
72
- account,
73
- )
74
- const withdrawlLockoutSeconds = useWithdrawlLockoutInSeconds(
75
- poolName,
76
- poolType,
77
- )
78
- const underlyingTokenBalance = usePoolUnderlyingTokenBalance(
79
- poolName,
80
- poolType,
81
- account,
82
- )
83
- const balanceWithoutDecimals = downScale(underlyingTokenBalance, decimals)
84
-
85
- useEffect(() => {
86
- if (!step && lenderApproved !== undefined) {
87
- const nextStep = lenderApproved
88
- ? WIDGET_STEP.ChooseAmount
89
- : WIDGET_STEP.Evaluation
90
- dispatch(setStep(nextStep))
91
- }
92
- }, [dispatch, lenderApproved, step])
93
-
94
- const handleApproveSuccess = useCallback(() => {
95
- refreshLenderApproved()
96
- }, [refreshLenderApproved])
97
-
98
- const handleSupplySuccess = useCallback(
99
- (blockNumber: number) => {
100
- refreshLenderPosition()
101
- if (handleSuccess) {
102
- handleSuccess(blockNumber)
103
- }
104
- },
105
- [handleSuccess, refreshLenderPosition],
106
- )
107
-
108
- const setupNotificationsOrClose = useCallback(() => {
109
- if (isFirstTimeNotifiUser && notifiChainSupported) {
110
- dispatch(setStep(WIDGET_STEP.Notifications))
111
- } else {
112
- handleClose()
113
- }
114
- }, [dispatch, handleClose, isFirstTimeNotifiUser, notifiChainSupported])
115
-
116
- if (!poolInfo) {
117
- return null
118
- }
119
-
120
- return (
121
- <WidgetWrapper
122
- isOpen
123
- isLoading={lenderApproved === undefined}
124
- loadingTitle={`Supply ${poolInfo.poolUnderlyingToken.symbol}`}
125
- handleClose={handleClose}
126
- handleSuccess={handleSupplySuccess}
127
- >
128
- {step === WIDGET_STEP.Evaluation && (
129
- <Evaluation
130
- poolInfo={poolInfo}
131
- handleClose={handleClose}
132
- handleApproveSuccess={handleApproveSuccess}
133
- />
134
- )}
135
- {step === WIDGET_STEP.ChooseAmount && (
136
- <ChooseAmount
137
- poolInfo={poolInfo}
138
- allowance={allowance}
139
- underlyingTokenBalance={balanceWithoutDecimals}
140
- withdrawlLockoutSeconds={withdrawlLockoutSeconds}
141
- />
142
- )}
143
- {step === WIDGET_STEP.ApproveAllowance && (
144
- <ApproveAllowance poolInfo={poolInfo} />
145
- )}
146
- {step === WIDGET_STEP.Transfer && <Transfer poolInfo={poolInfo} />}
147
- {step === WIDGET_STEP.Done && (
148
- <Success
149
- poolInfo={poolInfo}
150
- handleAction={setupNotificationsOrClose}
151
- hasNextStep={isFirstTimeNotifiUser}
152
- />
153
- )}
154
- {step === WIDGET_STEP.Notifications && (
155
- <Notifications handleAction={handleClose} />
156
- )}
157
- {step === WIDGET_STEP.Error && (
158
- <ErrorModal
159
- title='Supply'
160
- errorReason='Sorry there was an error'
161
- errorMessage={errorMessage}
162
- handleOk={handleClose}
163
- />
164
- )}
165
- </WidgetWrapper>
166
- )
167
- }
1
+ import {
2
+ downScale,
3
+ POOL_NAME,
4
+ POOL_TYPE,
5
+ useLenderApproved,
6
+ useLenderPosition,
7
+ usePoolAllowance,
8
+ usePoolInfo,
9
+ usePoolUnderlyingTokenBalance,
10
+ useWithdrawlLockoutInSeconds,
11
+ } from '@huma-finance/shared'
12
+ import { useWeb3React } from '@web3-react/core'
13
+ import React, { useCallback, useEffect } from 'react'
14
+ import { useDispatch } from 'react-redux'
15
+
16
+ import {
17
+ useIsFirstTimeNotifiUser,
18
+ useDoesChainSupportNotifi,
19
+ } from '../../../hooks/useNotifi'
20
+ import { useAppSelector } from '../../../hooks/useRedux'
21
+ import { setStep } from '../../../store/widgets.reducers'
22
+ import { selectWidgetState } from '../../../store/widgets.selectors'
23
+ import { WIDGET_STEP } from '../../../store/widgets.store'
24
+ import { ErrorModal } from '../../ErrorModal'
25
+ import { WidgetWrapper } from '../../WidgetWrapper'
26
+ import { Evaluation } from './1-Evaluation'
27
+ import { ChooseAmount } from './2-ChooseAmount'
28
+ import { ApproveAllowance } from './3-ApproveAllowance'
29
+ import { Transfer } from './4-Transfer'
30
+ import { Success } from './5-Success'
31
+ import { Notifications } from './6-Notifications'
32
+
33
+ /**
34
+ * Lend pool supply props
35
+ * @typedef {Object} LendSupplyProps
36
+ * @property {POOL_NAME} poolName The name of the pool.
37
+ * @property {POOL_TYPE} poolType The type of the pool.
38
+ * @property {function():void} handleClose Function to notify to close the widget modal when user clicks the 'x' close button.
39
+ * @property {function((number|undefined)):void|undefined} handleSuccess Optional function to notify that the lending pool supply action is successful.
40
+ */
41
+ export interface LendSupplyProps {
42
+ poolName: keyof typeof POOL_NAME
43
+ poolType: keyof typeof POOL_TYPE
44
+ handleClose: () => void
45
+ handleSuccess?: (blockNumber?: number) => void
46
+ }
47
+
48
+ export function LendSupply({
49
+ poolName: poolNameStr,
50
+ poolType: poolTypeStr,
51
+ handleClose,
52
+ handleSuccess,
53
+ }: LendSupplyProps): React.ReactElement | null {
54
+ const dispatch = useDispatch()
55
+ const { account, chainId } = useWeb3React()
56
+ const poolName = POOL_NAME[poolNameStr]
57
+ const poolType = POOL_TYPE[poolTypeStr]
58
+ const poolInfo = usePoolInfo(poolName, poolType)
59
+ const { decimals } = poolInfo?.poolUnderlyingToken || {}
60
+ const { step, errorMessage } = useAppSelector(selectWidgetState)
61
+ const { allowance } = usePoolAllowance(poolName, poolType, account)
62
+ const { isFirstTimeNotifiUser } = useIsFirstTimeNotifiUser(account, chainId)
63
+ const { notifiChainSupported } = useDoesChainSupportNotifi(account, chainId)
64
+ const [lenderApproved, refreshLenderApproved] = useLenderApproved(
65
+ poolName,
66
+ poolType,
67
+ account,
68
+ )
69
+ const [, refreshLenderPosition] = useLenderPosition(
70
+ poolName,
71
+ poolType,
72
+ account,
73
+ )
74
+ const withdrawlLockoutSeconds = useWithdrawlLockoutInSeconds(
75
+ poolName,
76
+ poolType,
77
+ )
78
+ const underlyingTokenBalance = usePoolUnderlyingTokenBalance(
79
+ poolName,
80
+ poolType,
81
+ account,
82
+ )
83
+ const balanceWithoutDecimals = downScale(underlyingTokenBalance, decimals)
84
+
85
+ useEffect(() => {
86
+ if (!step && lenderApproved !== undefined) {
87
+ const nextStep = lenderApproved
88
+ ? WIDGET_STEP.ChooseAmount
89
+ : WIDGET_STEP.Evaluation
90
+ dispatch(setStep(nextStep))
91
+ }
92
+ }, [dispatch, lenderApproved, step])
93
+
94
+ const handleApproveSuccess = useCallback(() => {
95
+ refreshLenderApproved()
96
+ }, [refreshLenderApproved])
97
+
98
+ const handleSupplySuccess = useCallback(
99
+ (blockNumber: number) => {
100
+ refreshLenderPosition()
101
+ if (handleSuccess) {
102
+ handleSuccess(blockNumber)
103
+ }
104
+ },
105
+ [handleSuccess, refreshLenderPosition],
106
+ )
107
+
108
+ const setupNotificationsOrClose = useCallback(() => {
109
+ if (isFirstTimeNotifiUser && notifiChainSupported) {
110
+ dispatch(setStep(WIDGET_STEP.Notifications))
111
+ } else {
112
+ handleClose()
113
+ }
114
+ }, [dispatch, handleClose, isFirstTimeNotifiUser, notifiChainSupported])
115
+
116
+ if (!poolInfo) {
117
+ return null
118
+ }
119
+
120
+ return (
121
+ <WidgetWrapper
122
+ isOpen
123
+ isLoading={lenderApproved === undefined}
124
+ loadingTitle={`Supply ${poolInfo.poolUnderlyingToken.symbol}`}
125
+ handleClose={handleClose}
126
+ handleSuccess={handleSupplySuccess}
127
+ >
128
+ {step === WIDGET_STEP.Evaluation && (
129
+ <Evaluation
130
+ poolInfo={poolInfo}
131
+ handleClose={handleClose}
132
+ handleApproveSuccess={handleApproveSuccess}
133
+ />
134
+ )}
135
+ {step === WIDGET_STEP.ChooseAmount && (
136
+ <ChooseAmount
137
+ poolInfo={poolInfo}
138
+ allowance={allowance}
139
+ underlyingTokenBalance={balanceWithoutDecimals}
140
+ withdrawlLockoutSeconds={withdrawlLockoutSeconds}
141
+ />
142
+ )}
143
+ {step === WIDGET_STEP.ApproveAllowance && (
144
+ <ApproveAllowance poolInfo={poolInfo} />
145
+ )}
146
+ {step === WIDGET_STEP.Transfer && <Transfer poolInfo={poolInfo} />}
147
+ {step === WIDGET_STEP.Done && (
148
+ <Success
149
+ poolInfo={poolInfo}
150
+ handleAction={setupNotificationsOrClose}
151
+ hasNextStep={isFirstTimeNotifiUser}
152
+ />
153
+ )}
154
+ {step === WIDGET_STEP.Notifications && (
155
+ <Notifications handleAction={handleClose} />
156
+ )}
157
+ {step === WIDGET_STEP.Error && (
158
+ <ErrorModal
159
+ title='Supply'
160
+ errorReason='Sorry there was an error'
161
+ errorMessage={errorMessage}
162
+ handleOk={handleClose}
163
+ />
164
+ )}
165
+ </WidgetWrapper>
166
+ )
167
+ }
@@ -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
+ }