@huma-finance/widgets 0.0.10 → 0.0.11

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 (169) 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 +331 -331
  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/assets/output-15e10f9f.css +44 -0
  19. package/dist/cjs/assets/output-15e10f9f.css +44 -0
  20. package/dist/cjs/index.cjs +7731 -0
  21. package/dist/cjs/index.cjs.map +1 -0
  22. package/dist/index.d.ts +211 -0
  23. package/dist/index.js +7687 -0
  24. package/dist/index.js.map +1 -0
  25. package/jsdoc2md.json +20 -20
  26. package/package.json +4 -4
  27. package/public/index.html +40 -40
  28. package/public/manifest.json +25 -25
  29. package/public/robots.txt +3 -3
  30. package/rollup.config.js +81 -81
  31. package/src/components/Activity.tsx +123 -123
  32. package/src/components/AllowListModal.tsx +113 -113
  33. package/src/components/ApolloWrapper.tsx +15 -15
  34. package/src/components/ApproveAllowanceModal.tsx +118 -118
  35. package/src/components/BottomButton.tsx +31 -31
  36. package/src/components/ChooseAmountModal.tsx +315 -315
  37. package/src/components/CreditLine/borrow/1-Evaluation.tsx +158 -159
  38. package/src/components/CreditLine/borrow/2-AllowList.tsx +34 -34
  39. package/src/components/CreditLine/borrow/3-ChooseAmount.tsx +74 -74
  40. package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
  41. package/src/components/CreditLine/borrow/5-Transfer.tsx +30 -30
  42. package/src/components/CreditLine/borrow/6-Success.tsx +30 -30
  43. package/src/components/CreditLine/borrow/index.tsx +119 -119
  44. package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
  45. package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
  46. package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
  47. package/src/components/CreditLine/payment/4-Success.tsx +39 -39
  48. package/src/components/CreditLine/payment/index.tsx +94 -94
  49. package/src/components/ErrorModal.tsx +132 -132
  50. package/src/components/Factoring/FactoredList.tsx +143 -143
  51. package/src/components/Factoring/UpcomingList.tsx +90 -90
  52. package/src/components/Factoring/index.ts +2 -2
  53. package/src/components/HumaLoading.tsx +68 -68
  54. package/src/components/HumaTable.tsx +158 -158
  55. package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +52 -46
  56. package/src/components/InvoiceFactoring/borrow/2-AllowList.tsx +34 -34
  57. package/src/components/InvoiceFactoring/borrow/3-ChooseAmount.tsx +86 -86
  58. package/src/components/InvoiceFactoring/borrow/4-ConfirmTransfer.tsx +104 -104
  59. package/src/components/InvoiceFactoring/borrow/5-ApproveNFT.tsx +55 -55
  60. package/src/components/InvoiceFactoring/borrow/6-Transfer.tsx +34 -34
  61. package/src/components/InvoiceFactoring/borrow/7-Success.tsx +20 -20
  62. package/src/components/InvoiceFactoring/borrow/index.tsx +96 -96
  63. package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
  64. package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
  65. package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
  66. package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
  67. package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
  68. package/src/components/Lend/supply/1-Evaluation.tsx +86 -86
  69. package/src/components/Lend/supply/2-ChooseAmount.tsx +70 -70
  70. package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
  71. package/src/components/Lend/supply/4-ConfirmTransfer.tsx +104 -104
  72. package/src/components/Lend/supply/6-Transfer.tsx +32 -32
  73. package/src/components/Lend/supply/7-Success.tsx +49 -49
  74. package/src/components/Lend/supply/index.tsx +144 -144
  75. package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
  76. package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
  77. package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
  78. package/src/components/Lend/withdraw/4-Success.tsx +49 -49
  79. package/src/components/Lend/withdraw/index.tsx +101 -101
  80. package/src/components/LoadingModal.tsx +49 -49
  81. package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +47 -57
  82. package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +124 -124
  83. package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +104 -104
  84. package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +65 -65
  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 -95
  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 +61 -61
  94. package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +185 -185
  95. package/src/components/SuperfluidFactoring/index.tsx +85 -85
  96. package/src/components/TxDoneModal.tsx +83 -83
  97. package/src/components/TxSendModal.tsx +59 -59
  98. package/src/components/ViewOnExplorer.tsx +26 -26
  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 +30 -30
  107. package/src/components/icons/auto-payback.svg +40 -40
  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 +31 -31
  122. package/src/components/icons/usdc.svg +5 -5
  123. package/src/components/icons/wallet-connect.svg +11 -11
  124. package/src/cosmos/CreditLineBorrow.fixture.tsx +85 -85
  125. package/src/cosmos/CreditLinePayment.fixture.tsx +49 -49
  126. package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
  127. package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
  128. package/src/cosmos/LendSupply.fixture.tsx +75 -75
  129. package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
  130. package/src/cosmos/SDKTesting.fixture.tsx +557 -516
  131. package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +12 -12
  132. package/src/cosmos/WalletWrapper.tsx +52 -52
  133. package/src/cosmos/abis/InvoiceNFT.json +644 -644
  134. package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
  135. package/src/cosmos/utils/index.ts +169 -169
  136. package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
  137. package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
  138. package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
  139. package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
  140. package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
  141. package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
  142. package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
  143. package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
  144. package/src/hooks/useEA.ts +72 -72
  145. package/src/hooks/useRedux.ts +6 -6
  146. package/src/index.css +61 -61
  147. package/src/index.tsx +219 -213
  148. package/src/react-app-env.d.ts +1 -1
  149. package/src/reportWebVitals.ts +15 -15
  150. package/src/setupTests.ts +6 -6
  151. package/src/store/index.ts +27 -27
  152. package/src/store/widgets.reducers.ts +120 -120
  153. package/src/store/widgets.selectors.ts +3 -3
  154. package/src/store/widgets.store.ts +55 -55
  155. package/src/theme/breakpoints.ts +10 -10
  156. package/src/theme/components.ts +70 -70
  157. package/src/theme/coreThemeConstants.ts +29 -29
  158. package/src/theme/cssMixins.ts +92 -92
  159. package/src/theme/hooks/useGetSizes.ts +31 -31
  160. package/src/theme/index.ts +24 -24
  161. package/src/theme/palette.ts +150 -150
  162. package/src/theme/shape.ts +7 -7
  163. package/src/theme/theme.types.ts +80 -80
  164. package/src/theme/typography.ts +117 -117
  165. package/src/utilTypes.d.ts +29 -29
  166. package/src/utils/env.ts +9 -9
  167. package/tsconfig.build.json +7 -7
  168. package/tsconfig.json +32 -32
  169. package/webpack.cosmos.js +54 -54
@@ -1,144 +1,144 @@
1
- import { Contract, ethers } from 'ethers'
2
- import {
3
- CHAINS,
4
- Erc2612,
5
- PoolInfoType,
6
- StreamFactoringPool,
7
- useERC2612Permit,
8
- useMount,
9
- } from '@huma-finance/shared'
10
- import ERC2612Abi from '@huma-finance/shared/dist/abis/erc2612.json'
11
- import PoolAbi from '@huma-finance/shared/dist/abis/StreamFactoringPool.json'
12
- import React from 'react'
13
- import { useDispatch } from 'react-redux'
14
-
15
- import { useAppSelector } from '../../../hooks/useRedux'
16
- import {
17
- setError,
18
- setMultisend,
19
- setStep,
20
- } from '../../../store/widgets.reducers'
21
- import { selectWidgetState } from '../../../store/widgets.selectors'
22
- import { WIDGET_STEP } from '../../../store/widgets.store'
23
- import { LoadingModal } from '../../LoadingModal'
24
-
25
- type Props = {
26
- poolInfo: PoolInfoType
27
- payerAddress: string
28
- chainId: number
29
- borrower: string
30
- superToken: string
31
- }
32
-
33
- export function Permit({
34
- poolInfo,
35
- payerAddress,
36
- chainId,
37
- borrower,
38
- superToken,
39
- }: Props): React.ReactElement | null {
40
- const dispatch = useDispatch()
41
- const { address: tokenAddress } = poolInfo.poolUnderlyingToken
42
- const { borrowAmountBN, stream } = useAppSelector(selectWidgetState)
43
- const { getERC2612PermitMessage, getTradableStreamPermitMessage } =
44
- useERC2612Permit()
45
-
46
- const getApproveAllowanceCallData = async () => {
47
- const erc2612PermitResult = await getERC2612PermitMessage(
48
- tokenAddress,
49
- poolInfo.pool,
50
- borrowAmountBN!,
51
- )
52
- const tokenContract = new Contract(tokenAddress, ERC2612Abi) as Erc2612
53
- return tokenContract.interface.encodeFunctionData('permit', [
54
- poolInfo.pool,
55
- borrowAmountBN!,
56
- erc2612PermitResult.nonce,
57
- erc2612PermitResult.deadline,
58
- erc2612PermitResult.v,
59
- erc2612PermitResult.r,
60
- erc2612PermitResult.s,
61
- ])
62
- }
63
-
64
- const getDrawdownCallData = async () => {
65
- const NFTPermitResult = await getTradableStreamPermitMessage(
66
- poolInfo.assetAddress!,
67
- borrower,
68
- superToken,
69
- payerAddress,
70
- poolInfo.pool,
71
- stream!.borrowFlowrate!,
72
- stream!.durationInSeconds!,
73
- )
74
-
75
- const drawdownEncodedData = ethers.utils.defaultAbiCoder.encode(
76
- [
77
- 'address',
78
- 'address',
79
- 'address',
80
- 'int96',
81
- 'uint256',
82
- 'uint256',
83
- 'uint8',
84
- 'bytes32',
85
- 'bytes32',
86
- ],
87
- [
88
- borrower,
89
- superToken,
90
- payerAddress,
91
- stream?.borrowFlowrate,
92
- stream?.durationInSeconds,
93
- NFTPermitResult.expiry,
94
- NFTPermitResult.v,
95
- NFTPermitResult.r,
96
- NFTPermitResult.s,
97
- ],
98
- )
99
- const poolContract = new Contract(
100
- poolInfo.pool,
101
- PoolAbi,
102
- ) as StreamFactoringPool
103
-
104
- return poolContract.interface.encodeFunctionData(
105
- 'drawdownWithAuthorization',
106
- [borrowAmountBN!, poolInfo.assetAddress!, drawdownEncodedData],
107
- )
108
- }
109
-
110
- useMount(async () => {
111
- try {
112
- const callData = []
113
- const addresses: string[] = []
114
-
115
- // The token in Goerli hasn't integrated ERC-2612
116
- if (!CHAINS[chainId].isTestnet) {
117
- const approveAllowanceCallData = await getApproveAllowanceCallData()
118
- addresses.push(tokenAddress)
119
- callData.push(approveAllowanceCallData)
120
- }
121
-
122
- const drawdownCalldata = await getDrawdownCallData()
123
- addresses.push(poolInfo.pool)
124
- callData.push(drawdownCalldata)
125
-
126
- dispatch(setMultisend({ addresses, callData }))
127
- dispatch(setStep(WIDGET_STEP.Transfer))
128
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
- } catch (e: any) {
130
- let errorMessage = e.reason || `Sign permit failed`
131
- if (e.code === 4001 || e.code === 'ACTION_REJECTED') {
132
- errorMessage = 'User has rejected the permit sign'
133
- }
134
- dispatch(setError({ errorMessage, errorReason: errorMessage }))
135
- }
136
- })
137
-
138
- return (
139
- <LoadingModal
140
- title='Sign Token and NFT'
141
- description='Waiting for signing...'
142
- />
143
- )
144
- }
1
+ import { Contract, ethers } from 'ethers'
2
+ import {
3
+ CHAINS,
4
+ Erc2612,
5
+ PoolInfoType,
6
+ StreamFactoringPool,
7
+ useERC2612Permit,
8
+ useMount,
9
+ } from '@huma-finance/shared'
10
+ import ERC2612Abi from '@huma-finance/shared/dist/abis/erc2612.json'
11
+ import PoolAbi from '@huma-finance/shared/dist/abis/StreamFactoringPool.json'
12
+ import React from 'react'
13
+ import { useDispatch } from 'react-redux'
14
+
15
+ import { useAppSelector } from '../../../hooks/useRedux'
16
+ import {
17
+ setError,
18
+ setMultisend,
19
+ setStep,
20
+ } from '../../../store/widgets.reducers'
21
+ import { selectWidgetState } from '../../../store/widgets.selectors'
22
+ import { WIDGET_STEP } from '../../../store/widgets.store'
23
+ import { LoadingModal } from '../../LoadingModal'
24
+
25
+ type Props = {
26
+ poolInfo: PoolInfoType
27
+ payerAddress: string
28
+ chainId: number
29
+ borrower: string
30
+ superToken: string
31
+ }
32
+
33
+ export function Permit({
34
+ poolInfo,
35
+ payerAddress,
36
+ chainId,
37
+ borrower,
38
+ superToken,
39
+ }: Props): React.ReactElement | null {
40
+ const dispatch = useDispatch()
41
+ const { address: tokenAddress } = poolInfo.poolUnderlyingToken
42
+ const { borrowAmountBN, stream } = useAppSelector(selectWidgetState)
43
+ const { getERC2612PermitMessage, getTradableStreamPermitMessage } =
44
+ useERC2612Permit()
45
+
46
+ const getApproveAllowanceCallData = async () => {
47
+ const erc2612PermitResult = await getERC2612PermitMessage(
48
+ tokenAddress,
49
+ poolInfo.pool,
50
+ borrowAmountBN!,
51
+ )
52
+ const tokenContract = new Contract(tokenAddress, ERC2612Abi) as Erc2612
53
+ return tokenContract.interface.encodeFunctionData('permit', [
54
+ poolInfo.pool,
55
+ borrowAmountBN!,
56
+ erc2612PermitResult.nonce,
57
+ erc2612PermitResult.deadline,
58
+ erc2612PermitResult.v,
59
+ erc2612PermitResult.r,
60
+ erc2612PermitResult.s,
61
+ ])
62
+ }
63
+
64
+ const getDrawdownCallData = async () => {
65
+ const NFTPermitResult = await getTradableStreamPermitMessage(
66
+ poolInfo.assetAddress!,
67
+ borrower,
68
+ superToken,
69
+ payerAddress,
70
+ poolInfo.pool,
71
+ stream!.borrowFlowrate!,
72
+ stream!.durationInSeconds!,
73
+ )
74
+
75
+ const drawdownEncodedData = ethers.utils.defaultAbiCoder.encode(
76
+ [
77
+ 'address',
78
+ 'address',
79
+ 'address',
80
+ 'int96',
81
+ 'uint256',
82
+ 'uint256',
83
+ 'uint8',
84
+ 'bytes32',
85
+ 'bytes32',
86
+ ],
87
+ [
88
+ borrower,
89
+ superToken,
90
+ payerAddress,
91
+ stream?.borrowFlowrate,
92
+ stream?.durationInSeconds,
93
+ NFTPermitResult.expiry,
94
+ NFTPermitResult.v,
95
+ NFTPermitResult.r,
96
+ NFTPermitResult.s,
97
+ ],
98
+ )
99
+ const poolContract = new Contract(
100
+ poolInfo.pool,
101
+ PoolAbi,
102
+ ) as StreamFactoringPool
103
+
104
+ return poolContract.interface.encodeFunctionData(
105
+ 'drawdownWithAuthorization',
106
+ [borrowAmountBN!, poolInfo.assetAddress!, drawdownEncodedData],
107
+ )
108
+ }
109
+
110
+ useMount(async () => {
111
+ try {
112
+ const callData = []
113
+ const addresses: string[] = []
114
+
115
+ // The token in Goerli hasn't integrated ERC-2612
116
+ if (!CHAINS[chainId].isTestnet) {
117
+ const approveAllowanceCallData = await getApproveAllowanceCallData()
118
+ addresses.push(tokenAddress)
119
+ callData.push(approveAllowanceCallData)
120
+ }
121
+
122
+ const drawdownCalldata = await getDrawdownCallData()
123
+ addresses.push(poolInfo.pool)
124
+ callData.push(drawdownCalldata)
125
+
126
+ dispatch(setMultisend({ addresses, callData }))
127
+ dispatch(setStep(WIDGET_STEP.Transfer))
128
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
+ } catch (e: any) {
130
+ let errorMessage = e.reason || `Sign permit failed`
131
+ if (e.code === 4001 || e.code === 'ACTION_REJECTED') {
132
+ errorMessage = 'User has rejected the permit sign'
133
+ }
134
+ dispatch(setError({ errorMessage, errorReason: errorMessage }))
135
+ }
136
+ })
137
+
138
+ return (
139
+ <LoadingModal
140
+ title='Sign Token and NFT'
141
+ description='Waiting for signing...'
142
+ />
143
+ )
144
+ }
@@ -1,37 +1,37 @@
1
- import { PoolInfoType, useMultiSendContract } 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 | null {
15
- const dispatch = useAppDispatch()
16
- const multiSendContract = useMultiSendContract()
17
- const { multisend } = useAppSelector(selectWidgetState)
18
-
19
- const handleSuccess = useCallback(() => {
20
- dispatch(setStep(WIDGET_STEP.Done))
21
- }, [dispatch])
22
-
23
- if (!multisend || !multiSendContract) {
24
- return null
25
- }
26
-
27
- return (
28
- <TxSendModal
29
- poolInfo={poolInfo}
30
- contract={multiSendContract}
31
- title='Transfer Tradable Stream and Money'
32
- method='multisend'
33
- params={[multisend.addresses, multisend.callData]}
34
- handleSuccess={handleSuccess}
35
- />
36
- )
37
- }
1
+ import { PoolInfoType, useMultiSendContract } 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 | null {
15
+ const dispatch = useAppDispatch()
16
+ const multiSendContract = useMultiSendContract()
17
+ const { multisend } = useAppSelector(selectWidgetState)
18
+
19
+ const handleSuccess = useCallback(() => {
20
+ dispatch(setStep(WIDGET_STEP.Done))
21
+ }, [dispatch])
22
+
23
+ if (!multisend || !multiSendContract) {
24
+ return null
25
+ }
26
+
27
+ return (
28
+ <TxSendModal
29
+ poolInfo={poolInfo}
30
+ contract={multiSendContract}
31
+ title='Transfer Tradable Stream and Money'
32
+ method='multisend'
33
+ params={[multisend.addresses, multisend.callData]}
34
+ handleSuccess={handleSuccess}
35
+ />
36
+ )
37
+ }
@@ -1,20 +1,20 @@
1
- import React from 'react'
2
- import { useAppSelector } from '../../../hooks/useRedux'
3
- import { selectWidgetState } from '../../../store/widgets.selectors'
4
- import { TxDoneModal } from '../../TxDoneModal'
5
-
6
- type Props = {
7
- handleAction: () => void
8
- }
9
-
10
- export function Success({ handleAction }: Props): React.ReactElement {
11
- const { borrowAmount, approval } = useAppSelector(selectWidgetState)
12
-
13
- const content = [
14
- `${borrowAmount?.toFixed(2)} ${
15
- approval?.token.symbol
16
- } is now in your wallet.`,
17
- ]
18
-
19
- return <TxDoneModal handleAction={handleAction} content={content} />
20
- }
1
+ import React from 'react'
2
+ import { useAppSelector } from '../../../hooks/useRedux'
3
+ import { selectWidgetState } from '../../../store/widgets.selectors'
4
+ import { TxDoneModal } from '../../TxDoneModal'
5
+
6
+ type Props = {
7
+ handleAction: () => void
8
+ }
9
+
10
+ export function Success({ handleAction }: Props): React.ReactElement {
11
+ const { borrowAmount, approval } = useAppSelector(selectWidgetState)
12
+
13
+ const content = [
14
+ `${borrowAmount?.toFixed(2)} ${
15
+ approval?.token.symbol
16
+ } is now in your wallet.`,
17
+ ]
18
+
19
+ return <TxDoneModal handleAction={handleAction} content={content} />
20
+ }
@@ -1,95 +1,94 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import { POOL_NAME, POOL_TYPE, usePoolInfo } from '@huma-finance/shared'
3
- import React, { useEffect } from 'react'
4
- import { useDispatch } from 'react-redux'
5
-
6
- import { useAppSelector } from '../../../hooks/useRedux'
7
- import { setStep } from '../../../store/widgets.reducers'
8
- import { selectWidgetState } from '../../../store/widgets.selectors'
9
- import { WIDGET_STEP } from '../../../store/widgets.store'
10
- import { ErrorModal } from '../../ErrorModal'
11
- import { WidgetWrapper } from '../../WidgetWrapper'
12
- import { Evaluation } from './1-Evaluation'
13
- import { ChooseAmount } from './2-ChooseAmount'
14
- import { ConfirmTransfer } from './3-ConfirmTransfer'
15
- import { ApproveAllowance } from './4-ApproveAllowance'
16
- import { Permit } from './5-Permit'
17
- import { Transfer } from './6-Transfer'
18
- import { Success } from './7-Success'
19
-
20
- export type StreamFactoringBorrowProps = {
21
- poolName: POOL_NAME
22
- poolType: POOL_TYPE
23
- payerAddress: string
24
- superToken: string
25
- currentFlowRate: string
26
- isOpen: boolean
27
- handleClose: () => void
28
- handleSuccess: (blockNumber: number) => void
29
- }
30
-
31
- export function StreamFactoringBorrow({
32
- poolName,
33
- poolType,
34
- payerAddress,
35
- superToken,
36
- currentFlowRate,
37
- isOpen,
38
- handleClose,
39
- handleSuccess,
40
- }: StreamFactoringBorrowProps): React.ReactElement | null {
41
- const dispatch = useDispatch()
42
- const { account, chainId } = useWeb3React()
43
- const poolInfo = usePoolInfo(poolName, poolType)
44
- const { step, errorMessage } = useAppSelector(selectWidgetState)
45
-
46
- useEffect(() => {
47
- dispatch(setStep(WIDGET_STEP.Evaluation))
48
- }, [dispatch])
49
-
50
- if (!poolInfo) {
51
- return null
52
- }
53
-
54
- return (
55
- <WidgetWrapper
56
- isOpen={isOpen}
57
- handleClose={handleClose}
58
- handleSuccess={handleSuccess}
59
- >
60
- {step === WIDGET_STEP.Evaluation && (
61
- <Evaluation
62
- poolInfo={poolInfo}
63
- payerAddress={payerAddress}
64
- superToken={superToken}
65
- currentFlowRate={currentFlowRate}
66
- />
67
- )}
68
- {step === WIDGET_STEP.ChooseAmount && (
69
- <ChooseAmount poolInfo={poolInfo} currentFlowRate={currentFlowRate} />
70
- )}
71
- {step === WIDGET_STEP.ConfirmTransfer && <ConfirmTransfer />}
72
- {step === WIDGET_STEP.ApproveAllowance && (
73
- <ApproveAllowance poolInfo={poolInfo} />
74
- )}
75
- {step === WIDGET_STEP.Permit && account && chainId && (
76
- <Permit
77
- poolInfo={poolInfo}
78
- payerAddress={payerAddress}
79
- chainId={chainId}
80
- borrower={account}
81
- superToken={superToken}
82
- />
83
- )}
84
- {step === WIDGET_STEP.Transfer && <Transfer poolInfo={poolInfo} />}
85
- {step === WIDGET_STEP.Done && <Success handleAction={handleClose} />}
86
- {step === WIDGET_STEP.Error && (
87
- <ErrorModal
88
- title='Stream Borrowing'
89
- errorMessage={errorMessage}
90
- handleOk={handleClose}
91
- />
92
- )}
93
- </WidgetWrapper>
94
- )
95
- }
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import { POOL_NAME, POOL_TYPE, usePoolInfo } from '@huma-finance/shared'
3
+ import React, { useEffect } from 'react'
4
+ import { useDispatch } from 'react-redux'
5
+
6
+ import { useAppSelector } from '../../../hooks/useRedux'
7
+ import { setStep } from '../../../store/widgets.reducers'
8
+ import { selectWidgetState } from '../../../store/widgets.selectors'
9
+ import { WIDGET_STEP } from '../../../store/widgets.store'
10
+ import { ErrorModal } from '../../ErrorModal'
11
+ import { WidgetWrapper } from '../../WidgetWrapper'
12
+ import { Evaluation } from './1-Evaluation'
13
+ import { ChooseAmount } from './2-ChooseAmount'
14
+ import { ConfirmTransfer } from './3-ConfirmTransfer'
15
+ import { ApproveAllowance } from './4-ApproveAllowance'
16
+ import { Permit } from './5-Permit'
17
+ import { Transfer } from './6-Transfer'
18
+ import { Success } from './7-Success'
19
+
20
+ export type StreamFactoringBorrowProps = {
21
+ poolName: POOL_NAME
22
+ poolType: POOL_TYPE
23
+ payerAddress: string
24
+ superToken: string
25
+ currentFlowRate: string
26
+ isOpen: boolean
27
+ handleClose: () => void
28
+ handleSuccess: (blockNumber: number) => void
29
+ }
30
+
31
+ export function StreamFactoringBorrow({
32
+ poolName,
33
+ poolType,
34
+ payerAddress,
35
+ superToken,
36
+ currentFlowRate,
37
+ isOpen,
38
+ handleClose,
39
+ handleSuccess,
40
+ }: StreamFactoringBorrowProps): React.ReactElement | null {
41
+ const dispatch = useDispatch()
42
+ const { account, chainId } = useWeb3React()
43
+ const poolInfo = usePoolInfo(poolName, poolType)
44
+ const { step, errorMessage } = useAppSelector(selectWidgetState)
45
+
46
+ useEffect(() => {
47
+ dispatch(setStep(WIDGET_STEP.Evaluation))
48
+ }, [dispatch])
49
+
50
+ if (!poolInfo) {
51
+ return null
52
+ }
53
+
54
+ return (
55
+ <WidgetWrapper
56
+ isOpen={isOpen}
57
+ handleClose={handleClose}
58
+ handleSuccess={handleSuccess}
59
+ >
60
+ {step === WIDGET_STEP.Evaluation && (
61
+ <Evaluation
62
+ poolInfo={poolInfo}
63
+ payerAddress={payerAddress}
64
+ superToken={superToken}
65
+ />
66
+ )}
67
+ {step === WIDGET_STEP.ChooseAmount && (
68
+ <ChooseAmount poolInfo={poolInfo} currentFlowRate={currentFlowRate} />
69
+ )}
70
+ {step === WIDGET_STEP.ConfirmTransfer && <ConfirmTransfer />}
71
+ {step === WIDGET_STEP.ApproveAllowance && (
72
+ <ApproveAllowance poolInfo={poolInfo} />
73
+ )}
74
+ {step === WIDGET_STEP.Permit && account && chainId && (
75
+ <Permit
76
+ poolInfo={poolInfo}
77
+ payerAddress={payerAddress}
78
+ chainId={chainId}
79
+ borrower={account}
80
+ superToken={superToken}
81
+ />
82
+ )}
83
+ {step === WIDGET_STEP.Transfer && <Transfer poolInfo={poolInfo} />}
84
+ {step === WIDGET_STEP.Done && <Success handleAction={handleClose} />}
85
+ {step === WIDGET_STEP.Error && (
86
+ <ErrorModal
87
+ title='Stream Borrowing'
88
+ errorMessage={errorMessage}
89
+ handleOk={handleClose}
90
+ />
91
+ )}
92
+ </WidgetWrapper>
93
+ )
94
+ }