@huma-finance/widgets 0.0.29 → 0.0.31
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/.env.example +2 -2
- package/.eslintignore +2 -2
- package/.eslintrc.js +64 -64
- package/.prettierignore +4 -4
- package/.prettierrc.js +16 -16
- package/API.md +332 -332
- package/LICENSE +660 -660
- package/README.md +48 -48
- package/babel.config.js +15 -15
- package/config-overrides.js +9 -9
- package/cosmos.config.json +7 -7
- package/cypress/e2e/01-invoice-factoring-borrow.test.ts +62 -62
- package/cypress/support/e2e.ts +76 -76
- package/cypress/support/ethereum.ts +142 -142
- package/cypress/tsconfig.json +9 -9
- package/cypress/utils/index.ts +54 -54
- package/cypress.config.ts +20 -20
- package/dist/cjs/index.cjs +144 -142
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.d.ts +193 -193
- package/dist/index.js +145 -143
- package/dist/index.js.map +1 -1
- package/jsdoc2md.json +20 -20
- package/package.json +5 -4
- package/public/index.html +40 -40
- package/public/manifest.json +25 -25
- package/public/robots.txt +3 -3
- package/rollup.config.js +81 -81
- package/src/components/Activity.tsx +132 -132
- package/src/components/ApolloWrapper.tsx +15 -15
- package/src/components/ApproveAllowanceModal.tsx +121 -121
- package/src/components/BottomButton.tsx +33 -33
- package/src/components/ChainNotSupportedModal.tsx +33 -33
- package/src/components/ConfirmTransferModal.tsx +153 -153
- package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
- package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +68 -68
- package/src/components/CreditLine/borrow/3-Transfer.tsx +44 -44
- package/src/components/CreditLine/borrow/4-ApproveAllowance.tsx +29 -29
- package/src/components/CreditLine/borrow/5-Success.tsx +30 -30
- package/src/components/CreditLine/borrow/index.tsx +117 -117
- package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
- package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
- package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
- package/src/components/CreditLine/payment/4-Success.tsx +39 -39
- package/src/components/CreditLine/payment/index.tsx +94 -94
- package/src/components/ErrorModal.tsx +132 -132
- package/src/components/Factoring/FactoredList.tsx +143 -143
- package/src/components/Factoring/UpcomingList.tsx +90 -90
- package/src/components/Factoring/index.ts +2 -2
- package/src/components/HumaLoading.tsx +68 -68
- package/src/components/HumaTable.tsx +158 -158
- package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
- package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
- package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
- package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
- package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
- package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
- package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
- package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
- package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
- package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
- package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
- package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
- package/src/components/Lend/supply/1-Evaluation.tsx +175 -171
- package/src/components/Lend/supply/2-ChooseAmount.tsx +70 -70
- package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
- package/src/components/Lend/supply/4-ConfirmTransfer.tsx +104 -104
- package/src/components/Lend/supply/6-Transfer.tsx +32 -32
- package/src/components/Lend/supply/7-Success.tsx +49 -49
- package/src/components/Lend/supply/index.tsx +144 -144
- package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
- package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
- package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
- package/src/components/Lend/withdraw/4-Success.tsx +49 -49
- package/src/components/Lend/withdraw/index.tsx +101 -101
- package/src/components/LoadingModal.tsx +49 -49
- package/src/components/NotifiSubscriptionModal.tsx +84 -0
- package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
- package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
- package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
- package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
- package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
- package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
- package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
- package/src/components/StreamFactoring/borrow/index.tsx +94 -94
- package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
- package/src/components/StreamFactoring/payment/Success.tsx +23 -23
- package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
- package/src/components/StreamFactoring/payment/index.tsx +66 -66
- package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +70 -70
- package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +167 -167
- package/src/components/SuperfluidFactoring/index.tsx +85 -85
- package/src/components/TxDoneModal.tsx +83 -83
- package/src/components/TxSendModal.tsx +59 -59
- package/src/components/ViewOnExplorer.tsx +26 -26
- package/src/components/WidgetWrapper.tsx +74 -74
- package/src/components/WrapperModal.tsx +54 -54
- package/src/components/buttons/TableActionButton.tsx +36 -36
- package/src/components/buttons/index.ts +1 -1
- package/src/components/humaModal/HumaModal.tsx +68 -68
- package/src/components/humaModal/HumaModalHeader.tsx +70 -70
- package/src/components/humaModal/index.tsx +2 -2
- package/src/components/icons/approve-lender.svg +30 -30
- package/src/components/icons/auto-payback.svg +40 -40
- package/src/components/icons/check-circle.svg +3 -3
- package/src/components/icons/check-green.svg +3 -3
- package/src/components/icons/check.svg +10 -10
- package/src/components/icons/donut.svg +904 -904
- package/src/components/icons/ellipse.svg +3 -3
- package/src/components/icons/huma-full.svg +22 -22
- package/src/components/icons/huma.svg +15 -15
- package/src/components/icons/index.tsx +93 -93
- package/src/components/icons/loader.svg +229 -229
- package/src/components/icons/metamask.svg +31 -31
- package/src/components/icons/polygon.svg +16 -16
- package/src/components/icons/receipt.svg +3 -3
- package/src/components/icons/separator.svg +3 -3
- package/src/components/icons/sorry.svg +31 -31
- package/src/components/icons/usdc.svg +5 -5
- package/src/components/icons/wallet-connect.svg +11 -11
- package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
- package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
- package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
- package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
- package/src/cosmos/LendSupply.fixture.tsx +75 -75
- package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
- package/src/cosmos/SDKTesting.fixture.tsx +4 -3
- package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
- package/src/cosmos/WalletWrapper.tsx +52 -52
- package/src/cosmos/abis/InvoiceNFT.json +644 -644
- package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
- package/src/cosmos/utils/env.ts +6 -6
- package/src/cosmos/utils/index.ts +169 -169
- package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
- package/src/hooks/useEA.ts +53 -53
- package/src/hooks/useRedux.ts +6 -6
- package/src/index.css +61 -61
- package/src/index.tsx +301 -301
- package/src/react-app-env.d.ts +1 -1
- package/src/reportWebVitals.ts +15 -15
- package/src/setupTests.ts +6 -6
- package/src/store/index.ts +27 -27
- package/src/store/widgets.reducers.ts +120 -120
- package/src/store/widgets.selectors.ts +3 -3
- package/src/store/widgets.store.ts +54 -54
- package/src/theme/breakpoints.ts +10 -10
- package/src/theme/components.ts +70 -70
- package/src/theme/coreThemeConstants.ts +29 -29
- package/src/theme/cssMixins.ts +92 -92
- package/src/theme/hooks/useGetSizes.ts +31 -31
- package/src/theme/index.ts +24 -24
- package/src/theme/palette.ts +150 -150
- package/src/theme/shape.ts +7 -7
- package/src/theme/theme.types.ts +80 -80
- package/src/theme/typography.ts +117 -117
- package/src/utilTypes.d.ts +31 -31
- package/src/utils/env.ts +10 -10
- package/tsconfig.build.json +7 -7
- package/tsconfig.json +32 -32
- package/webpack.cosmos.js +54 -54
package/src/index.tsx
CHANGED
|
@@ -1,301 +1,301 @@
|
|
|
1
|
-
import './index.css'
|
|
2
|
-
|
|
3
|
-
import { JsonRpcProvider } from '@ethersproject/providers'
|
|
4
|
-
import {
|
|
5
|
-
Provider as Web3Provider,
|
|
6
|
-
ProviderProps as Web3Props,
|
|
7
|
-
supportedChainId,
|
|
8
|
-
} from '@huma-finance/shared'
|
|
9
|
-
import { ThemeProvider } from '@mui/material'
|
|
10
|
-
import { Provider as Eip1193Provider } from '@web3-react/types'
|
|
11
|
-
import { Provider as AtomProvider } from 'jotai'
|
|
12
|
-
import { useCallback, useEffect, useState } from 'react'
|
|
13
|
-
import { Provider as ReduxProvider } from 'react-redux'
|
|
14
|
-
|
|
15
|
-
import { ChainNotSupportedModal } from './components/ChainNotSupportedModal'
|
|
16
|
-
import {
|
|
17
|
-
CreditLineBorrow,
|
|
18
|
-
CreditLineBorrowProps,
|
|
19
|
-
} from './components/CreditLine/borrow'
|
|
20
|
-
import {
|
|
21
|
-
CreditLinePayment,
|
|
22
|
-
CreditLinePaymentProps,
|
|
23
|
-
} from './components/CreditLine/payment'
|
|
24
|
-
import {
|
|
25
|
-
InvoiceFactoringBorrow,
|
|
26
|
-
InvoiceFactoringBorrowProps,
|
|
27
|
-
} from './components/InvoiceFactoring/borrow'
|
|
28
|
-
import {
|
|
29
|
-
InvoiceFactoringPayment,
|
|
30
|
-
InvoiceFactoringPaymentProps,
|
|
31
|
-
} from './components/InvoiceFactoring/payment'
|
|
32
|
-
import { LendSupply, LendSupplyProps } from './components/Lend/supply'
|
|
33
|
-
import { LendWithdraw, LendWithdrawProps } from './components/Lend/withdraw'
|
|
34
|
-
import { SuperfluidFactoring } from './components/SuperfluidFactoring'
|
|
35
|
-
import { store } from './store'
|
|
36
|
-
import { themeHuma } from './theme'
|
|
37
|
-
import { WCProps } from './utilTypes'
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Mapping of your JSON-RPC connections indexed by chainId
|
|
41
|
-
* @typedef {Object} JsonRpcConnectionMap
|
|
42
|
-
* @property {Object.<number, string|Array<string>|JsonRpcProvider|Array<JsonRpcProvider>>} chainId Chain id to map the JSON-RPC URL/URLs or JsonRpcProvider/JsonRpcProviders
|
|
43
|
-
*/
|
|
44
|
-
type JsonRpcConnectionMap = {
|
|
45
|
-
[chainId: number]: string | string[] | JsonRpcProvider | JsonRpcProvider[]
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Object representing the props passed to web3 provider
|
|
50
|
-
* @typedef {Object} WidgetProps
|
|
51
|
-
* @property {desiredChainId|undefined} desiredChainId Optional desired chain id, will trigger the switch network action if different from the current chain id
|
|
52
|
-
* @property {JsonRpcConnectionMap|undefined} jsonRpcUrlMap Optional mapping of your JSON-RPC connections indexed by chainId
|
|
53
|
-
* @property {Eip1193Provider|JsonRpcProvider|null|undefined} provider Optional EIP-1193 provider or JsonRpc Provider
|
|
54
|
-
*/
|
|
55
|
-
type WidgetProps = {
|
|
56
|
-
handleClose?: () => void
|
|
57
|
-
desiredChainId?: number
|
|
58
|
-
jsonRpcUrlMap?: JsonRpcConnectionMap
|
|
59
|
-
provider?: Eip1193Provider | JsonRpcProvider | null
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function Widget(props: WCProps<WidgetProps>) {
|
|
63
|
-
const { children, desiredChainId } = props
|
|
64
|
-
const { ethereum } = window
|
|
65
|
-
// @ts-ignore
|
|
66
|
-
const netWorkVersion = ethereum?.networkVersion || ethereum?.chainId
|
|
67
|
-
const [currentChainId, setCurrentChainId] = useState<number | undefined>(
|
|
68
|
-
netWorkVersion ? Number(netWorkVersion) : undefined,
|
|
69
|
-
)
|
|
70
|
-
const chainSupported = !!supportedChainId(currentChainId)
|
|
71
|
-
const [chainNotSupportedOpen, setChainNotSupportedOpen] = useState(false)
|
|
72
|
-
|
|
73
|
-
useEffect(() => {
|
|
74
|
-
setCurrentChainId(netWorkVersion ? Number(netWorkVersion) : undefined)
|
|
75
|
-
}, [netWorkVersion])
|
|
76
|
-
|
|
77
|
-
useEffect(() => {
|
|
78
|
-
if (chainSupported) {
|
|
79
|
-
setChainNotSupportedOpen(false)
|
|
80
|
-
} else {
|
|
81
|
-
setChainNotSupportedOpen(true)
|
|
82
|
-
}
|
|
83
|
-
}, [chainSupported])
|
|
84
|
-
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
const chainChangeListener = (chainId: number) => {
|
|
87
|
-
setCurrentChainId(chainId)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (window.ethereum) {
|
|
91
|
-
// @ts-ignore
|
|
92
|
-
window.ethereum?.on('chainChanged', chainChangeListener)
|
|
93
|
-
}
|
|
94
|
-
return () => {
|
|
95
|
-
if (window.ethereum) {
|
|
96
|
-
// @ts-ignore
|
|
97
|
-
window.ethereum?.removeListener('chainChanged', chainChangeListener)
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}, [])
|
|
101
|
-
|
|
102
|
-
useEffect(() => {
|
|
103
|
-
if (
|
|
104
|
-
window.ethereum &&
|
|
105
|
-
desiredChainId &&
|
|
106
|
-
currentChainId !== desiredChainId
|
|
107
|
-
) {
|
|
108
|
-
const changeNetwork = async () => {
|
|
109
|
-
try {
|
|
110
|
-
// @ts-ignore
|
|
111
|
-
await window.ethereum.request({
|
|
112
|
-
method: 'wallet_switchEthereumChain',
|
|
113
|
-
params: [{ chainId: `0x${Number(desiredChainId).toString(16)}` }],
|
|
114
|
-
})
|
|
115
|
-
} catch (error) {
|
|
116
|
-
console.error(error)
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
changeNetwork()
|
|
120
|
-
}
|
|
121
|
-
}, [currentChainId, desiredChainId])
|
|
122
|
-
|
|
123
|
-
const handleCloseCallback = useCallback(() => {
|
|
124
|
-
setChainNotSupportedOpen(false)
|
|
125
|
-
}, [])
|
|
126
|
-
|
|
127
|
-
if (!chainSupported) {
|
|
128
|
-
return (
|
|
129
|
-
<ThemeProvider theme={themeHuma}>
|
|
130
|
-
<ReduxProvider store={store}>
|
|
131
|
-
<ChainNotSupportedModal
|
|
132
|
-
isOpen={chainNotSupportedOpen}
|
|
133
|
-
handleClose={handleCloseCallback}
|
|
134
|
-
/>
|
|
135
|
-
</ReduxProvider>
|
|
136
|
-
</ThemeProvider>
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return (
|
|
141
|
-
<ThemeProvider theme={themeHuma}>
|
|
142
|
-
<ReduxProvider store={store}>
|
|
143
|
-
<Web3Provider {...(props as Web3Props)}>
|
|
144
|
-
<AtomProvider>{children}</AtomProvider>
|
|
145
|
-
</Web3Provider>
|
|
146
|
-
</ReduxProvider>
|
|
147
|
-
</ThemeProvider>
|
|
148
|
-
)
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Invoice factoring pool borrow widget props
|
|
153
|
-
* @typedef {Object} InvoiceFactoringBorrowWidgetProps
|
|
154
|
-
* @property {InvoiceFactoringBorrowProps} InvoiceFactoringBorrowProps - Invoice factoring pool borrow props.
|
|
155
|
-
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
156
|
-
*/
|
|
157
|
-
type InvoiceFactoringBorrowWidgetProps = InvoiceFactoringBorrowProps &
|
|
158
|
-
WidgetProps
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Invoice factoring borrow widget
|
|
162
|
-
*
|
|
163
|
-
* @param {InvoiceFactoringBorrowProps | WidgetProps} props - The invoice factoring pool borrow widget props.
|
|
164
|
-
* @returns Invoice factoring pool borrow widget component
|
|
165
|
-
*/
|
|
166
|
-
export function InvoiceFactoringBorrowWidget(
|
|
167
|
-
props: InvoiceFactoringBorrowWidgetProps,
|
|
168
|
-
) {
|
|
169
|
-
return (
|
|
170
|
-
<Widget {...props}>
|
|
171
|
-
<InvoiceFactoringBorrow {...props} />
|
|
172
|
-
</Widget>
|
|
173
|
-
)
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Invoice factoring pool payment widget props
|
|
178
|
-
* @typedef {Object} InvoiceFactoringPaymentWidgetProps
|
|
179
|
-
* @property {InvoiceFactoringPaymentProps} InvoiceFactoringPaymentProps - Invoice factoring pool payment props.
|
|
180
|
-
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
181
|
-
*/
|
|
182
|
-
type InvoiceFactoringPaymentWidgetProps = InvoiceFactoringPaymentProps &
|
|
183
|
-
WidgetProps
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Invoice factoring payment widget
|
|
187
|
-
*
|
|
188
|
-
* @param {InvoiceFactoringPaymentProps | WidgetProps} props - The invoice factoring pool payment widget props.
|
|
189
|
-
* @returns Invoice factoring pool payment widget component
|
|
190
|
-
*/
|
|
191
|
-
export function InvoiceFactoringPaymentWidget(
|
|
192
|
-
props: InvoiceFactoringPaymentWidgetProps,
|
|
193
|
-
) {
|
|
194
|
-
return (
|
|
195
|
-
<Widget {...props}>
|
|
196
|
-
<InvoiceFactoringPayment {...props} />
|
|
197
|
-
</Widget>
|
|
198
|
-
)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Credit line pool borrow widget props
|
|
203
|
-
* @typedef {Object} CreditLineBorrowWidgetProps
|
|
204
|
-
* @property {CreditLineBorrowProps} CreditLineBorrowProps - Credit line pool borrow props.
|
|
205
|
-
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
206
|
-
*/
|
|
207
|
-
type CreditLineBorrowWidgetProps = CreditLineBorrowProps & WidgetProps
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Credit line borrow widget
|
|
211
|
-
*
|
|
212
|
-
* @param {CreditLineBorrowProps | WidgetProps} props - The credit line pool borrow widget props.
|
|
213
|
-
* @returns Credit line pool borrow widget component
|
|
214
|
-
*/
|
|
215
|
-
export function CreditLineBorrowWidget(props: CreditLineBorrowWidgetProps) {
|
|
216
|
-
return (
|
|
217
|
-
<Widget {...props}>
|
|
218
|
-
<CreditLineBorrow {...props} />
|
|
219
|
-
</Widget>
|
|
220
|
-
)
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Credit line pool payment widget props
|
|
225
|
-
* @typedef {Object} CreditLinePaymentWidgetProps
|
|
226
|
-
* @property {CreditLinePaymentProps} CreditLinePaymentProps - Credit line pool payment props.
|
|
227
|
-
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
228
|
-
*/
|
|
229
|
-
type CreditLinePaymentWidgetProps = CreditLinePaymentProps & WidgetProps
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Credit line payment widget
|
|
233
|
-
*
|
|
234
|
-
* @param {CreditLinePaymentProps | WidgetProps} props - The credit line pool payment widget props.
|
|
235
|
-
* @returns Credit line pool payment widget component
|
|
236
|
-
*/
|
|
237
|
-
export function CreditLinePaymentWidget(props: CreditLinePaymentWidgetProps) {
|
|
238
|
-
return (
|
|
239
|
-
<Widget {...props}>
|
|
240
|
-
<CreditLinePayment {...props} />
|
|
241
|
-
</Widget>
|
|
242
|
-
)
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Lend pool supply widget props
|
|
247
|
-
* @typedef {Object} LendSupplyWidgetProps
|
|
248
|
-
* @property {LendSupplyProps} LendSupplyProps - Lend pool supply props.
|
|
249
|
-
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
250
|
-
*/
|
|
251
|
-
type LendSupplyWidgetProps = LendSupplyProps & WidgetProps
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Lend supply widget
|
|
255
|
-
*
|
|
256
|
-
* @param {LendSupplyProps | WidgetProps} props - The lend pool supply widget props.
|
|
257
|
-
* @returns Lend pool supply widget component
|
|
258
|
-
*/
|
|
259
|
-
export function LendSupplyWidget(props: LendSupplyWidgetProps) {
|
|
260
|
-
return (
|
|
261
|
-
<Widget {...props}>
|
|
262
|
-
<LendSupply {...props} />
|
|
263
|
-
</Widget>
|
|
264
|
-
)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Lend pool withdraw widget props
|
|
269
|
-
* @typedef {Object} LendWithdrawWidgetProps
|
|
270
|
-
* @property {LendWithdrawProps} LendWithdrawProps - Lend pool withdraw props.
|
|
271
|
-
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
272
|
-
*/
|
|
273
|
-
type LendWithdrawWidgetProps = LendWithdrawProps & WidgetProps
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Lend withdraw widget
|
|
277
|
-
*
|
|
278
|
-
* @param {LendWithdrawProps | WidgetProps} props The lend pool withdraw widget props
|
|
279
|
-
* @returns Lend pool withdraw widget component
|
|
280
|
-
*/
|
|
281
|
-
export function LendWithdrawWidget(props: LendWithdrawWidgetProps) {
|
|
282
|
-
return (
|
|
283
|
-
<Widget {...props}>
|
|
284
|
-
<LendWithdraw {...props} />
|
|
285
|
-
</Widget>
|
|
286
|
-
)
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Superfluid factoring widget
|
|
291
|
-
*
|
|
292
|
-
* @param {WidgetProps} props - The superfluid factoring widget props.
|
|
293
|
-
* @returns Superfluid factoring widget component
|
|
294
|
-
*/
|
|
295
|
-
export function SuperfluidFactoringWidget(props: WidgetProps) {
|
|
296
|
-
return (
|
|
297
|
-
<Widget {...props}>
|
|
298
|
-
<SuperfluidFactoring />
|
|
299
|
-
</Widget>
|
|
300
|
-
)
|
|
301
|
-
}
|
|
1
|
+
import './index.css'
|
|
2
|
+
|
|
3
|
+
import { JsonRpcProvider } from '@ethersproject/providers'
|
|
4
|
+
import {
|
|
5
|
+
Provider as Web3Provider,
|
|
6
|
+
ProviderProps as Web3Props,
|
|
7
|
+
supportedChainId,
|
|
8
|
+
} from '@huma-finance/shared'
|
|
9
|
+
import { ThemeProvider } from '@mui/material'
|
|
10
|
+
import { Provider as Eip1193Provider } from '@web3-react/types'
|
|
11
|
+
import { Provider as AtomProvider } from 'jotai'
|
|
12
|
+
import { useCallback, useEffect, useState } from 'react'
|
|
13
|
+
import { Provider as ReduxProvider } from 'react-redux'
|
|
14
|
+
|
|
15
|
+
import { ChainNotSupportedModal } from './components/ChainNotSupportedModal'
|
|
16
|
+
import {
|
|
17
|
+
CreditLineBorrow,
|
|
18
|
+
CreditLineBorrowProps,
|
|
19
|
+
} from './components/CreditLine/borrow'
|
|
20
|
+
import {
|
|
21
|
+
CreditLinePayment,
|
|
22
|
+
CreditLinePaymentProps,
|
|
23
|
+
} from './components/CreditLine/payment'
|
|
24
|
+
import {
|
|
25
|
+
InvoiceFactoringBorrow,
|
|
26
|
+
InvoiceFactoringBorrowProps,
|
|
27
|
+
} from './components/InvoiceFactoring/borrow'
|
|
28
|
+
import {
|
|
29
|
+
InvoiceFactoringPayment,
|
|
30
|
+
InvoiceFactoringPaymentProps,
|
|
31
|
+
} from './components/InvoiceFactoring/payment'
|
|
32
|
+
import { LendSupply, LendSupplyProps } from './components/Lend/supply'
|
|
33
|
+
import { LendWithdraw, LendWithdrawProps } from './components/Lend/withdraw'
|
|
34
|
+
import { SuperfluidFactoring } from './components/SuperfluidFactoring'
|
|
35
|
+
import { store } from './store'
|
|
36
|
+
import { themeHuma } from './theme'
|
|
37
|
+
import { WCProps } from './utilTypes'
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Mapping of your JSON-RPC connections indexed by chainId
|
|
41
|
+
* @typedef {Object} JsonRpcConnectionMap
|
|
42
|
+
* @property {Object.<number, string|Array<string>|JsonRpcProvider|Array<JsonRpcProvider>>} chainId Chain id to map the JSON-RPC URL/URLs or JsonRpcProvider/JsonRpcProviders
|
|
43
|
+
*/
|
|
44
|
+
type JsonRpcConnectionMap = {
|
|
45
|
+
[chainId: number]: string | string[] | JsonRpcProvider | JsonRpcProvider[]
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Object representing the props passed to web3 provider
|
|
50
|
+
* @typedef {Object} WidgetProps
|
|
51
|
+
* @property {desiredChainId|undefined} desiredChainId Optional desired chain id, will trigger the switch network action if different from the current chain id
|
|
52
|
+
* @property {JsonRpcConnectionMap|undefined} jsonRpcUrlMap Optional mapping of your JSON-RPC connections indexed by chainId
|
|
53
|
+
* @property {Eip1193Provider|JsonRpcProvider|null|undefined} provider Optional EIP-1193 provider or JsonRpc Provider
|
|
54
|
+
*/
|
|
55
|
+
type WidgetProps = {
|
|
56
|
+
handleClose?: () => void
|
|
57
|
+
desiredChainId?: number
|
|
58
|
+
jsonRpcUrlMap?: JsonRpcConnectionMap
|
|
59
|
+
provider?: Eip1193Provider | JsonRpcProvider | null
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function Widget(props: WCProps<WidgetProps>) {
|
|
63
|
+
const { children, desiredChainId } = props
|
|
64
|
+
const { ethereum } = window
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
const netWorkVersion = ethereum?.networkVersion || ethereum?.chainId
|
|
67
|
+
const [currentChainId, setCurrentChainId] = useState<number | undefined>(
|
|
68
|
+
netWorkVersion ? Number(netWorkVersion) : undefined,
|
|
69
|
+
)
|
|
70
|
+
const chainSupported = !!supportedChainId(currentChainId)
|
|
71
|
+
const [chainNotSupportedOpen, setChainNotSupportedOpen] = useState(false)
|
|
72
|
+
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
setCurrentChainId(netWorkVersion ? Number(netWorkVersion) : undefined)
|
|
75
|
+
}, [netWorkVersion])
|
|
76
|
+
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (chainSupported) {
|
|
79
|
+
setChainNotSupportedOpen(false)
|
|
80
|
+
} else {
|
|
81
|
+
setChainNotSupportedOpen(true)
|
|
82
|
+
}
|
|
83
|
+
}, [chainSupported])
|
|
84
|
+
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
const chainChangeListener = (chainId: number) => {
|
|
87
|
+
setCurrentChainId(chainId)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (window.ethereum) {
|
|
91
|
+
// @ts-ignore
|
|
92
|
+
window.ethereum?.on('chainChanged', chainChangeListener)
|
|
93
|
+
}
|
|
94
|
+
return () => {
|
|
95
|
+
if (window.ethereum) {
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
window.ethereum?.removeListener('chainChanged', chainChangeListener)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}, [])
|
|
101
|
+
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (
|
|
104
|
+
window.ethereum &&
|
|
105
|
+
desiredChainId &&
|
|
106
|
+
currentChainId !== desiredChainId
|
|
107
|
+
) {
|
|
108
|
+
const changeNetwork = async () => {
|
|
109
|
+
try {
|
|
110
|
+
// @ts-ignore
|
|
111
|
+
await window.ethereum.request({
|
|
112
|
+
method: 'wallet_switchEthereumChain',
|
|
113
|
+
params: [{ chainId: `0x${Number(desiredChainId).toString(16)}` }],
|
|
114
|
+
})
|
|
115
|
+
} catch (error) {
|
|
116
|
+
console.error(error)
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
changeNetwork()
|
|
120
|
+
}
|
|
121
|
+
}, [currentChainId, desiredChainId])
|
|
122
|
+
|
|
123
|
+
const handleCloseCallback = useCallback(() => {
|
|
124
|
+
setChainNotSupportedOpen(false)
|
|
125
|
+
}, [])
|
|
126
|
+
|
|
127
|
+
if (!chainSupported) {
|
|
128
|
+
return (
|
|
129
|
+
<ThemeProvider theme={themeHuma}>
|
|
130
|
+
<ReduxProvider store={store}>
|
|
131
|
+
<ChainNotSupportedModal
|
|
132
|
+
isOpen={chainNotSupportedOpen}
|
|
133
|
+
handleClose={handleCloseCallback}
|
|
134
|
+
/>
|
|
135
|
+
</ReduxProvider>
|
|
136
|
+
</ThemeProvider>
|
|
137
|
+
)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return (
|
|
141
|
+
<ThemeProvider theme={themeHuma}>
|
|
142
|
+
<ReduxProvider store={store}>
|
|
143
|
+
<Web3Provider {...(props as Web3Props)}>
|
|
144
|
+
<AtomProvider>{children}</AtomProvider>
|
|
145
|
+
</Web3Provider>
|
|
146
|
+
</ReduxProvider>
|
|
147
|
+
</ThemeProvider>
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Invoice factoring pool borrow widget props
|
|
153
|
+
* @typedef {Object} InvoiceFactoringBorrowWidgetProps
|
|
154
|
+
* @property {InvoiceFactoringBorrowProps} InvoiceFactoringBorrowProps - Invoice factoring pool borrow props.
|
|
155
|
+
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
156
|
+
*/
|
|
157
|
+
type InvoiceFactoringBorrowWidgetProps = InvoiceFactoringBorrowProps &
|
|
158
|
+
WidgetProps
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Invoice factoring borrow widget
|
|
162
|
+
*
|
|
163
|
+
* @param {InvoiceFactoringBorrowProps | WidgetProps} props - The invoice factoring pool borrow widget props.
|
|
164
|
+
* @returns Invoice factoring pool borrow widget component
|
|
165
|
+
*/
|
|
166
|
+
export function InvoiceFactoringBorrowWidget(
|
|
167
|
+
props: InvoiceFactoringBorrowWidgetProps,
|
|
168
|
+
) {
|
|
169
|
+
return (
|
|
170
|
+
<Widget {...props}>
|
|
171
|
+
<InvoiceFactoringBorrow {...props} />
|
|
172
|
+
</Widget>
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Invoice factoring pool payment widget props
|
|
178
|
+
* @typedef {Object} InvoiceFactoringPaymentWidgetProps
|
|
179
|
+
* @property {InvoiceFactoringPaymentProps} InvoiceFactoringPaymentProps - Invoice factoring pool payment props.
|
|
180
|
+
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
181
|
+
*/
|
|
182
|
+
type InvoiceFactoringPaymentWidgetProps = InvoiceFactoringPaymentProps &
|
|
183
|
+
WidgetProps
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Invoice factoring payment widget
|
|
187
|
+
*
|
|
188
|
+
* @param {InvoiceFactoringPaymentProps | WidgetProps} props - The invoice factoring pool payment widget props.
|
|
189
|
+
* @returns Invoice factoring pool payment widget component
|
|
190
|
+
*/
|
|
191
|
+
export function InvoiceFactoringPaymentWidget(
|
|
192
|
+
props: InvoiceFactoringPaymentWidgetProps,
|
|
193
|
+
) {
|
|
194
|
+
return (
|
|
195
|
+
<Widget {...props}>
|
|
196
|
+
<InvoiceFactoringPayment {...props} />
|
|
197
|
+
</Widget>
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Credit line pool borrow widget props
|
|
203
|
+
* @typedef {Object} CreditLineBorrowWidgetProps
|
|
204
|
+
* @property {CreditLineBorrowProps} CreditLineBorrowProps - Credit line pool borrow props.
|
|
205
|
+
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
206
|
+
*/
|
|
207
|
+
type CreditLineBorrowWidgetProps = CreditLineBorrowProps & WidgetProps
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Credit line borrow widget
|
|
211
|
+
*
|
|
212
|
+
* @param {CreditLineBorrowProps | WidgetProps} props - The credit line pool borrow widget props.
|
|
213
|
+
* @returns Credit line pool borrow widget component
|
|
214
|
+
*/
|
|
215
|
+
export function CreditLineBorrowWidget(props: CreditLineBorrowWidgetProps) {
|
|
216
|
+
return (
|
|
217
|
+
<Widget {...props}>
|
|
218
|
+
<CreditLineBorrow {...props} />
|
|
219
|
+
</Widget>
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Credit line pool payment widget props
|
|
225
|
+
* @typedef {Object} CreditLinePaymentWidgetProps
|
|
226
|
+
* @property {CreditLinePaymentProps} CreditLinePaymentProps - Credit line pool payment props.
|
|
227
|
+
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
228
|
+
*/
|
|
229
|
+
type CreditLinePaymentWidgetProps = CreditLinePaymentProps & WidgetProps
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Credit line payment widget
|
|
233
|
+
*
|
|
234
|
+
* @param {CreditLinePaymentProps | WidgetProps} props - The credit line pool payment widget props.
|
|
235
|
+
* @returns Credit line pool payment widget component
|
|
236
|
+
*/
|
|
237
|
+
export function CreditLinePaymentWidget(props: CreditLinePaymentWidgetProps) {
|
|
238
|
+
return (
|
|
239
|
+
<Widget {...props}>
|
|
240
|
+
<CreditLinePayment {...props} />
|
|
241
|
+
</Widget>
|
|
242
|
+
)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Lend pool supply widget props
|
|
247
|
+
* @typedef {Object} LendSupplyWidgetProps
|
|
248
|
+
* @property {LendSupplyProps} LendSupplyProps - Lend pool supply props.
|
|
249
|
+
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
250
|
+
*/
|
|
251
|
+
type LendSupplyWidgetProps = LendSupplyProps & WidgetProps
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Lend supply widget
|
|
255
|
+
*
|
|
256
|
+
* @param {LendSupplyProps | WidgetProps} props - The lend pool supply widget props.
|
|
257
|
+
* @returns Lend pool supply widget component
|
|
258
|
+
*/
|
|
259
|
+
export function LendSupplyWidget(props: LendSupplyWidgetProps) {
|
|
260
|
+
return (
|
|
261
|
+
<Widget {...props}>
|
|
262
|
+
<LendSupply {...props} />
|
|
263
|
+
</Widget>
|
|
264
|
+
)
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Lend pool withdraw widget props
|
|
269
|
+
* @typedef {Object} LendWithdrawWidgetProps
|
|
270
|
+
* @property {LendWithdrawProps} LendWithdrawProps - Lend pool withdraw props.
|
|
271
|
+
* @property {WidgetProps} WidgetProps - Widget general props.
|
|
272
|
+
*/
|
|
273
|
+
type LendWithdrawWidgetProps = LendWithdrawProps & WidgetProps
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Lend withdraw widget
|
|
277
|
+
*
|
|
278
|
+
* @param {LendWithdrawProps | WidgetProps} props The lend pool withdraw widget props
|
|
279
|
+
* @returns Lend pool withdraw widget component
|
|
280
|
+
*/
|
|
281
|
+
export function LendWithdrawWidget(props: LendWithdrawWidgetProps) {
|
|
282
|
+
return (
|
|
283
|
+
<Widget {...props}>
|
|
284
|
+
<LendWithdraw {...props} />
|
|
285
|
+
</Widget>
|
|
286
|
+
)
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Superfluid factoring widget
|
|
291
|
+
*
|
|
292
|
+
* @param {WidgetProps} props - The superfluid factoring widget props.
|
|
293
|
+
* @returns Superfluid factoring widget component
|
|
294
|
+
*/
|
|
295
|
+
export function SuperfluidFactoringWidget(props: WidgetProps) {
|
|
296
|
+
return (
|
|
297
|
+
<Widget {...props}>
|
|
298
|
+
<SuperfluidFactoring />
|
|
299
|
+
</Widget>
|
|
300
|
+
)
|
|
301
|
+
}
|
package/src/react-app-env.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/// <reference types="react-scripts" />
|
|
1
|
+
/// <reference types="react-scripts" />
|
package/src/reportWebVitals.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { ReportHandler } from 'web-vitals'
|
|
2
|
-
|
|
3
|
-
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
|
|
4
|
-
if (onPerfEntry && onPerfEntry instanceof Function) {
|
|
5
|
-
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
|
|
6
|
-
getCLS(onPerfEntry)
|
|
7
|
-
getFID(onPerfEntry)
|
|
8
|
-
getFCP(onPerfEntry)
|
|
9
|
-
getLCP(onPerfEntry)
|
|
10
|
-
getTTFB(onPerfEntry)
|
|
11
|
-
})
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export default reportWebVitals
|
|
1
|
+
import { ReportHandler } from 'web-vitals'
|
|
2
|
+
|
|
3
|
+
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
|
|
4
|
+
if (onPerfEntry && onPerfEntry instanceof Function) {
|
|
5
|
+
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
|
|
6
|
+
getCLS(onPerfEntry)
|
|
7
|
+
getFID(onPerfEntry)
|
|
8
|
+
getFCP(onPerfEntry)
|
|
9
|
+
getLCP(onPerfEntry)
|
|
10
|
+
getTTFB(onPerfEntry)
|
|
11
|
+
})
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default reportWebVitals
|
package/src/setupTests.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
-
// jest-dom adds custom jest matchers for asserting on DOM nodes.
|
|
3
|
-
// allows you to do things like:
|
|
4
|
-
// expect(element).toHaveTextContent(/react/i)
|
|
5
|
-
// learn more: https://github.com/testing-library/jest-dom
|
|
6
|
-
import '@testing-library/jest-dom/extend-expect'
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
+
// jest-dom adds custom jest matchers for asserting on DOM nodes.
|
|
3
|
+
// allows you to do things like:
|
|
4
|
+
// expect(element).toHaveTextContent(/react/i)
|
|
5
|
+
// learn more: https://github.com/testing-library/jest-dom
|
|
6
|
+
import '@testing-library/jest-dom/extend-expect'
|