@huma-finance/widgets 0.0.10 → 0.0.12

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 +7740 -0
  21. package/dist/cjs/index.cjs.map +1 -0
  22. package/dist/index.d.ts +211 -0
  23. package/dist/index.js +7696 -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 +322 -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 +68 -74
  40. package/src/components/CreditLine/borrow/{5-Transfer.tsx → 4-Transfer.tsx} +44 -30
  41. package/src/components/CreditLine/borrow/{4-ApproveAllowance.tsx → 5-ApproveAllowance.tsx} +29 -29
  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 +615 -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,169 +1,169 @@
1
- /* eslint-disable arrow-body-style */
2
- /* eslint-disable @typescript-eslint/lines-between-class-members */
3
- /* eslint-disable prefer-destructuring */
4
- /* eslint-disable @typescript-eslint/no-explicit-any */
5
- /* eslint-disable consistent-return */
6
- /**
7
- * Updates cy.visit() to include an injected window.ethereum provider.
8
- */
9
- import { Eip1193Bridge } from '@ethersproject/experimental/lib/eip1193-bridge'
10
- import { JsonRpcProvider } from '@ethersproject/providers'
11
- import { ethers, Wallet } from 'ethers'
12
- import { deepCopy } from 'ethers/lib/utils'
13
-
14
- export enum ChainEnum {
15
- Goerli = 5,
16
- Mumbai = 80001,
17
- }
18
-
19
- class MetamaskBridge extends Eip1193Bridge {
20
- private walletAddress: string
21
- private chainId: number
22
-
23
- constructor(
24
- signer: ethers.Signer,
25
- provider: ethers.providers.Provider,
26
- walletAddress: string,
27
- chainId = 5,
28
- ) {
29
- super(signer, provider)
30
- this.walletAddress = walletAddress
31
- this.chainId = chainId
32
- }
33
-
34
- async sendAsync(...args: any[]) {
35
- console.debug('sendAsync called', ...args)
36
- return this.send(...args)
37
- }
38
- async send(...args: any[]) {
39
- console.debug('send called', ...args)
40
- const isCallbackForm =
41
- typeof args[0] === 'object' && typeof args[1] === 'function'
42
- let callback
43
- let method
44
- let params
45
- if (isCallbackForm) {
46
- callback = args[1]
47
- method = args[0].method
48
- params = args[0].params
49
- } else {
50
- method = args[0]
51
- params = args[1]
52
- }
53
- if (method === 'eth_requestAccounts' || method === 'eth_accounts') {
54
- if (isCallbackForm) {
55
- callback({ result: [this.walletAddress] })
56
- } else {
57
- return Promise.resolve([this.walletAddress])
58
- }
59
- }
60
- if (method === 'eth_chainId') {
61
- const chainIdHex = ethers.utils.hexlify(this.chainId)
62
- if (isCallbackForm) {
63
- callback(null, { result: chainIdHex })
64
- } else {
65
- return Promise.resolve(chainIdHex)
66
- }
67
- }
68
- // Eip1193Bridge only supports eth_sign
69
- // address is the first param for eth_sign
70
- if (method === 'personal_sign') {
71
- method = 'eth_sign'
72
- const [data, address] = deepCopy(params)
73
- params[0] = address
74
- params[1] = data
75
- }
76
- try {
77
- // Please refer to: https://github.com/ethers-io/ethers.js/issues/1683
78
- // If from is present on eth_call it errors, removing it makes the library set
79
- // from as the connected wallet which works fine
80
- if (params && params.length && method === 'eth_call') {
81
- if (params[0].from) {
82
- delete params[0].from
83
- }
84
- if (params[0].gas) {
85
- delete params[0].gas
86
- }
87
- }
88
-
89
- let result
90
- // For sending a transaction if we call send it will error
91
- // as it wants gasLimit in sendTransaction but hexlify sets the property gas
92
- // to gasLimit which makes send transaction error.
93
- // This have taken the code from the super method for sendTransaction and altered
94
- // it slightly to make it work with the gas limit issues.
95
- if (
96
- params &&
97
- params.length &&
98
- params[0].from &&
99
- method === 'eth_sendTransaction'
100
- ) {
101
- // Hexlify will not take gas, must be gasLimit, set this property to be gasLimit
102
- params[0].gasLimit = params[0].gas
103
- delete params[0].gas
104
- // If from is present on eth_sendTransaction it errors, removing it makes the library set
105
- // from as the connected wallet which works fine
106
- delete params[0].from
107
- const req = ethers.providers.JsonRpcProvider.hexlifyTransaction(
108
- params[0],
109
- )
110
- // Hexlify sets the gasLimit property to be gas again and send transaction requires gasLimit
111
- req.gasLimit = req.gas
112
- delete req.gas
113
- // Send the transaction
114
- const tx = await this.signer.sendTransaction(req)
115
- result = tx.hash
116
- } else {
117
- // All other transactions the base class works for
118
- result = await super.send(method, params)
119
- }
120
- console.debug('result received', method, params, result)
121
- if (isCallbackForm) {
122
- callback(null, { result })
123
- } else {
124
- return result
125
- }
126
- } catch (error) {
127
- console.log(error)
128
- if (isCallbackForm) {
129
- callback(error, null)
130
- } else {
131
- throw error
132
- }
133
- }
134
- }
135
- }
136
-
137
- export const getProvider = (chainId = ChainEnum.Goerli) => {
138
- const rpcUrlMap: { [x: number]: { name: string; url: string } } = {
139
- [ChainEnum.Goerli]: {
140
- name: 'Goerli',
141
- url: `https://goerli.infura.io/v3/${process.env.REACT_APP_INFURA_API_KEY}`,
142
- },
143
- [ChainEnum.Mumbai]: {
144
- name: 'Mumbai',
145
- url: `https://polygon-mumbai.g.alchemy.com/v2/${process.env.REACT_APP_ALCHEMY_API_KEY}`,
146
- },
147
- }
148
- return new JsonRpcProvider(rpcUrlMap[chainId].url, {
149
- name: rpcUrlMap[chainId].name,
150
- chainId,
151
- })
152
- }
153
-
154
- export const getInjectedMetamask = (
155
- testPrivateKey: string,
156
- chainId = ChainEnum.Goerli,
157
- ) => {
158
- const TEST_ADDRESS_NEVER_USE = new Wallet(testPrivateKey).address
159
- const provider = getProvider(chainId)
160
- const signer = new Wallet(testPrivateKey, provider)
161
- return new MetamaskBridge(signer, provider, TEST_ADDRESS_NEVER_USE, chainId)
162
- }
163
-
164
- export const getSigner = (
165
- testPrivateKey: string,
166
- chainId = ChainEnum.Goerli,
167
- ) => {
168
- return new Wallet(testPrivateKey, getProvider(chainId))
169
- }
1
+ /* eslint-disable arrow-body-style */
2
+ /* eslint-disable @typescript-eslint/lines-between-class-members */
3
+ /* eslint-disable prefer-destructuring */
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ /* eslint-disable consistent-return */
6
+ /**
7
+ * Updates cy.visit() to include an injected window.ethereum provider.
8
+ */
9
+ import { Eip1193Bridge } from '@ethersproject/experimental/lib/eip1193-bridge'
10
+ import { JsonRpcProvider } from '@ethersproject/providers'
11
+ import { ethers, Wallet } from 'ethers'
12
+ import { deepCopy } from 'ethers/lib/utils'
13
+
14
+ export enum ChainEnum {
15
+ Goerli = 5,
16
+ Mumbai = 80001,
17
+ }
18
+
19
+ class MetamaskBridge extends Eip1193Bridge {
20
+ private walletAddress: string
21
+ private chainId: number
22
+
23
+ constructor(
24
+ signer: ethers.Signer,
25
+ provider: ethers.providers.Provider,
26
+ walletAddress: string,
27
+ chainId = 5,
28
+ ) {
29
+ super(signer, provider)
30
+ this.walletAddress = walletAddress
31
+ this.chainId = chainId
32
+ }
33
+
34
+ async sendAsync(...args: any[]) {
35
+ console.debug('sendAsync called', ...args)
36
+ return this.send(...args)
37
+ }
38
+ async send(...args: any[]) {
39
+ console.debug('send called', ...args)
40
+ const isCallbackForm =
41
+ typeof args[0] === 'object' && typeof args[1] === 'function'
42
+ let callback
43
+ let method
44
+ let params
45
+ if (isCallbackForm) {
46
+ callback = args[1]
47
+ method = args[0].method
48
+ params = args[0].params
49
+ } else {
50
+ method = args[0]
51
+ params = args[1]
52
+ }
53
+ if (method === 'eth_requestAccounts' || method === 'eth_accounts') {
54
+ if (isCallbackForm) {
55
+ callback({ result: [this.walletAddress] })
56
+ } else {
57
+ return Promise.resolve([this.walletAddress])
58
+ }
59
+ }
60
+ if (method === 'eth_chainId') {
61
+ const chainIdHex = ethers.utils.hexlify(this.chainId)
62
+ if (isCallbackForm) {
63
+ callback(null, { result: chainIdHex })
64
+ } else {
65
+ return Promise.resolve(chainIdHex)
66
+ }
67
+ }
68
+ // Eip1193Bridge only supports eth_sign
69
+ // address is the first param for eth_sign
70
+ if (method === 'personal_sign') {
71
+ method = 'eth_sign'
72
+ const [data, address] = deepCopy(params)
73
+ params[0] = address
74
+ params[1] = data
75
+ }
76
+ try {
77
+ // Please refer to: https://github.com/ethers-io/ethers.js/issues/1683
78
+ // If from is present on eth_call it errors, removing it makes the library set
79
+ // from as the connected wallet which works fine
80
+ if (params && params.length && method === 'eth_call') {
81
+ if (params[0].from) {
82
+ delete params[0].from
83
+ }
84
+ if (params[0].gas) {
85
+ delete params[0].gas
86
+ }
87
+ }
88
+
89
+ let result
90
+ // For sending a transaction if we call send it will error
91
+ // as it wants gasLimit in sendTransaction but hexlify sets the property gas
92
+ // to gasLimit which makes send transaction error.
93
+ // This have taken the code from the super method for sendTransaction and altered
94
+ // it slightly to make it work with the gas limit issues.
95
+ if (
96
+ params &&
97
+ params.length &&
98
+ params[0].from &&
99
+ method === 'eth_sendTransaction'
100
+ ) {
101
+ // Hexlify will not take gas, must be gasLimit, set this property to be gasLimit
102
+ params[0].gasLimit = params[0].gas
103
+ delete params[0].gas
104
+ // If from is present on eth_sendTransaction it errors, removing it makes the library set
105
+ // from as the connected wallet which works fine
106
+ delete params[0].from
107
+ const req = ethers.providers.JsonRpcProvider.hexlifyTransaction(
108
+ params[0],
109
+ )
110
+ // Hexlify sets the gasLimit property to be gas again and send transaction requires gasLimit
111
+ req.gasLimit = req.gas
112
+ delete req.gas
113
+ // Send the transaction
114
+ const tx = await this.signer.sendTransaction(req)
115
+ result = tx.hash
116
+ } else {
117
+ // All other transactions the base class works for
118
+ result = await super.send(method, params)
119
+ }
120
+ console.debug('result received', method, params, result)
121
+ if (isCallbackForm) {
122
+ callback(null, { result })
123
+ } else {
124
+ return result
125
+ }
126
+ } catch (error) {
127
+ console.log(error)
128
+ if (isCallbackForm) {
129
+ callback(error, null)
130
+ } else {
131
+ throw error
132
+ }
133
+ }
134
+ }
135
+ }
136
+
137
+ export const getProvider = (chainId = ChainEnum.Goerli) => {
138
+ const rpcUrlMap: { [x: number]: { name: string; url: string } } = {
139
+ [ChainEnum.Goerli]: {
140
+ name: 'Goerli',
141
+ url: `https://goerli.infura.io/v3/${process.env.REACT_APP_INFURA_API_KEY}`,
142
+ },
143
+ [ChainEnum.Mumbai]: {
144
+ name: 'Mumbai',
145
+ url: `https://polygon-mumbai.g.alchemy.com/v2/${process.env.REACT_APP_ALCHEMY_API_KEY}`,
146
+ },
147
+ }
148
+ return new JsonRpcProvider(rpcUrlMap[chainId].url, {
149
+ name: rpcUrlMap[chainId].name,
150
+ chainId,
151
+ })
152
+ }
153
+
154
+ export const getInjectedMetamask = (
155
+ testPrivateKey: string,
156
+ chainId = ChainEnum.Goerli,
157
+ ) => {
158
+ const TEST_ADDRESS_NEVER_USE = new Wallet(testPrivateKey).address
159
+ const provider = getProvider(chainId)
160
+ const signer = new Wallet(testPrivateKey, provider)
161
+ return new MetamaskBridge(signer, provider, TEST_ADDRESS_NEVER_USE, chainId)
162
+ }
163
+
164
+ export const getSigner = (
165
+ testPrivateKey: string,
166
+ chainId = ChainEnum.Goerli,
167
+ ) => {
168
+ return new Wallet(testPrivateKey, getProvider(chainId))
169
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,72 +1,72 @@
1
- import { useWeb3React } from '@web3-react/core'
2
- import {
3
- downScale,
4
- EAPayload,
5
- EARejectionError,
6
- EARejectMessage,
7
- EARejectReason,
8
- EAService,
9
- } from '@huma-finance/shared'
10
- import { useCallback } from 'react'
11
-
12
- import { setApproval, setError, setStep } from '../store/widgets.reducers'
13
- import { WIDGET_STEP } from '../store/widgets.store'
14
- import { useAppDispatch } from './useRedux'
15
- import { envUtil } from '../utils/env'
16
-
17
- const useEA = () => {
18
- const dispatch = useAppDispatch()
19
- const { chainId } = useWeb3React()
20
-
21
- const checkingEA = useCallback(
22
- async (
23
- payload: EAPayload,
24
- nextStep: WIDGET_STEP,
25
- addToAllowList = false,
26
- ) => {
27
- try {
28
- const result = await EAService.approve(
29
- payload,
30
- chainId!,
31
- envUtil.checkIsDev(),
32
- )
33
- result.terms.creditLimit = downScale<number>(
34
- result.terms.creditLimit,
35
- result.token.decimal,
36
- )
37
- if (result.receivable) {
38
- result.receivable.amount = downScale<number>(
39
- result.receivable.amount,
40
- result.token.decimal,
41
- )
42
- }
43
- dispatch(setApproval({ ...result, nextStep }))
44
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
- } catch (e: any) {
46
- if (e instanceof EARejectionError) {
47
- if (addToAllowList) {
48
- dispatch(setStep(WIDGET_STEP.AddToAllowList))
49
- } else {
50
- dispatch(
51
- setError({
52
- errorMessage: EARejectMessage,
53
- errorReason: EARejectReason,
54
- }),
55
- )
56
- }
57
- } else {
58
- dispatch(
59
- setError({
60
- errorMessage: e.message,
61
- }),
62
- )
63
- }
64
- }
65
- },
66
- [chainId, dispatch],
67
- )
68
-
69
- return { checkingEA }
70
- }
71
-
72
- export default useEA
1
+ import { useWeb3React } from '@web3-react/core'
2
+ import {
3
+ downScale,
4
+ EAPayload,
5
+ EARejectionError,
6
+ EARejectMessage,
7
+ EARejectReason,
8
+ EAService,
9
+ } from '@huma-finance/shared'
10
+ import { useCallback } from 'react'
11
+
12
+ import { setApproval, setError, setStep } from '../store/widgets.reducers'
13
+ import { WIDGET_STEP } from '../store/widgets.store'
14
+ import { useAppDispatch } from './useRedux'
15
+ import { envUtil } from '../utils/env'
16
+
17
+ const useEA = () => {
18
+ const dispatch = useAppDispatch()
19
+ const { chainId } = useWeb3React()
20
+
21
+ const checkingEA = useCallback(
22
+ async (
23
+ payload: EAPayload,
24
+ nextStep: WIDGET_STEP,
25
+ addToAllowList = false,
26
+ ) => {
27
+ try {
28
+ const result = await EAService.approve(
29
+ payload,
30
+ chainId!,
31
+ envUtil.checkIsDev(),
32
+ )
33
+ result.terms.creditLimit = downScale<number>(
34
+ result.terms.creditLimit,
35
+ result.token.decimal,
36
+ )
37
+ if (result.receivable) {
38
+ result.receivable.amount = downScale<number>(
39
+ result.receivable.amount,
40
+ result.token.decimal,
41
+ )
42
+ }
43
+ dispatch(setApproval({ ...result, nextStep }))
44
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ } catch (e: any) {
46
+ if (e instanceof EARejectionError) {
47
+ if (addToAllowList) {
48
+ dispatch(setStep(WIDGET_STEP.AddToAllowList))
49
+ } else {
50
+ dispatch(
51
+ setError({
52
+ errorMessage: EARejectMessage,
53
+ errorReason: EARejectReason,
54
+ }),
55
+ )
56
+ }
57
+ } else {
58
+ dispatch(
59
+ setError({
60
+ errorMessage: e.message,
61
+ }),
62
+ )
63
+ }
64
+ }
65
+ },
66
+ [chainId, dispatch],
67
+ )
68
+
69
+ return { checkingEA }
70
+ }
71
+
72
+ export default useEA
@@ -1,6 +1,6 @@
1
- import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
2
- import type { RootState, AppDispatch } from '../store'
3
-
4
- // Use throughout your app instead of plain `useDispatch` and `useSelector`
5
- export const useAppDispatch = () => useDispatch<AppDispatch>()
6
- export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
1
+ import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
2
+ import type { RootState, AppDispatch } from '../store'
3
+
4
+ // Use throughout your app instead of plain `useDispatch` and `useSelector`
5
+ export const useAppDispatch = () => useDispatch<AppDispatch>()
6
+ export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
package/src/index.css CHANGED
@@ -1,61 +1,61 @@
1
- @font-face {
2
- font-family: 'Recoleta-Medium';
3
- src: local('Recoleta-Medium'),
4
- url(./fonts/Recoleta/Recoleta-Medium.otf) format('truetype');
5
- font-weight: 500;
6
- }
7
-
8
- @font-face {
9
- font-family: 'Roboto-Medium';
10
- src: local('Roboto-Medium'),
11
- url(./fonts/Roboto/Roboto-Medium.ttf) format('truetype');
12
- font-weight: 500;
13
- }
14
-
15
- @font-face {
16
- font-family: 'Roboto-Regular';
17
- src: local('Roboto-Regular'),
18
- url(./fonts/Roboto/Roboto-Regular.ttf) format('truetype');
19
- font-weight: 400;
20
- }
21
-
22
- @font-face {
23
- font-family: 'Inter-Bold';
24
- src: local('Inter-Bold'), url(./fonts/Inter/Inter-Bold.ttf) format('truetype');
25
- font-weight: 700;
26
- }
27
-
28
- @font-face {
29
- font-family: 'Inter-Medium';
30
- src: local('Inter-Medium'),
31
- url(./fonts/Inter/Inter-Medium.ttf) format('truetype');
32
- font-weight: 500;
33
- }
34
-
35
- @font-face {
36
- font-family: 'Inter-Regular';
37
- src: local('Inter-Regular'),
38
- url(./fonts/Inter/Inter-Regular.ttf) format('truetype');
39
- font-weight: 400;
40
- }
41
-
42
- @font-face {
43
- font-family: 'Uni-Neue-Black';
44
- src: local('Uni-Neue-Black'),
45
- url(./fonts/UniNeue/UniNeue-Black.ttf) format('truetype');
46
- font-weight: 800;
47
- }
48
-
49
- @font-face {
50
- font-family: 'Uni-Neue-Bold';
51
- src: local('Uni-Neue-Bold'),
52
- url(./fonts/UniNeue/UniNeue-Bold.ttf) format('truetype');
53
- font-weight: 700;
54
- }
55
-
56
- @font-face {
57
- font-family: 'Uni-Neue-Regular';
58
- src: local('Uni-Neue-Regular'),
59
- url(./fonts/UniNeue/UniNeue-Regular.ttf) format('truetype');
60
- font-weight: 400;
61
- }
1
+ @font-face {
2
+ font-family: 'Recoleta-Medium';
3
+ src: local('Recoleta-Medium'),
4
+ url(./fonts/Recoleta/Recoleta-Medium.otf) format('truetype');
5
+ font-weight: 500;
6
+ }
7
+
8
+ @font-face {
9
+ font-family: 'Roboto-Medium';
10
+ src: local('Roboto-Medium'),
11
+ url(./fonts/Roboto/Roboto-Medium.ttf) format('truetype');
12
+ font-weight: 500;
13
+ }
14
+
15
+ @font-face {
16
+ font-family: 'Roboto-Regular';
17
+ src: local('Roboto-Regular'),
18
+ url(./fonts/Roboto/Roboto-Regular.ttf) format('truetype');
19
+ font-weight: 400;
20
+ }
21
+
22
+ @font-face {
23
+ font-family: 'Inter-Bold';
24
+ src: local('Inter-Bold'), url(./fonts/Inter/Inter-Bold.ttf) format('truetype');
25
+ font-weight: 700;
26
+ }
27
+
28
+ @font-face {
29
+ font-family: 'Inter-Medium';
30
+ src: local('Inter-Medium'),
31
+ url(./fonts/Inter/Inter-Medium.ttf) format('truetype');
32
+ font-weight: 500;
33
+ }
34
+
35
+ @font-face {
36
+ font-family: 'Inter-Regular';
37
+ src: local('Inter-Regular'),
38
+ url(./fonts/Inter/Inter-Regular.ttf) format('truetype');
39
+ font-weight: 400;
40
+ }
41
+
42
+ @font-face {
43
+ font-family: 'Uni-Neue-Black';
44
+ src: local('Uni-Neue-Black'),
45
+ url(./fonts/UniNeue/UniNeue-Black.ttf) format('truetype');
46
+ font-weight: 800;
47
+ }
48
+
49
+ @font-face {
50
+ font-family: 'Uni-Neue-Bold';
51
+ src: local('Uni-Neue-Bold'),
52
+ url(./fonts/UniNeue/UniNeue-Bold.ttf) format('truetype');
53
+ font-weight: 700;
54
+ }
55
+
56
+ @font-face {
57
+ font-family: 'Uni-Neue-Regular';
58
+ src: local('Uni-Neue-Regular'),
59
+ url(./fonts/UniNeue/UniNeue-Regular.ttf) format('truetype');
60
+ font-weight: 400;
61
+ }