@@ -11,7 +11,7 @@ import eventManagerABI from "../contracts/EventManager.json";
1111import { useCallback , useEffect , useMemo , useState } from "react" ;
1212import { useCurrentBlock } from "./useBlockChain" ;
1313import { Event } from "types/Event" ;
14- import { ethers } from "ethers" ;
14+ import { BigNumber , ethers } from "ethers" ;
1515import { reverse } from "lodash" ;
1616import { EVENT_BLACK_LIST } from "src/constants/event" ;
1717import { useGenerateProof , useHashPoseidon } from "./useSecretPhrase" ;
@@ -124,6 +124,7 @@ export const useCreateEvent = (address: string) => {
124124 generateProof,
125125 } = useGenerateProof ( ) ;
126126 const provider = useSDK ( ) ?. getProvider ( ) ;
127+ const { getGasFee } = useCalcMtxGasFee ( ) ;
127128
128129 const {
129130 mutateAsync,
@@ -179,12 +180,7 @@ export const useCreateEvent = (address: string) => {
179180
180181 let value ! : ethers . BigNumber ;
181182 if ( params . useMtx ) {
182- const gasPrice = ( await provider . getGasPrice ( ) ) ?. toNumber ( ) ;
183- value = ethers . utils . parseEther (
184- `${
185- gasPrice * params . mintLimit * 560220 * 2.1 * 0.000000000000000001
186- } `
187- ) ;
183+ value = ( await getGasFee ( params . mintLimit ) ) || BigNumber . from ( 0 ) ;
188184 }
189185
190186 await mutateAsync ( {
@@ -206,7 +202,7 @@ export const useCreateEvent = (address: string) => {
206202 } ) ;
207203 } catch ( _ ) { }
208204 } ,
209- [ mutateAsync , provider ]
205+ [ mutateAsync , provider , getGasFee ]
210206 ) ;
211207
212208 return {
@@ -246,3 +242,37 @@ export const useEventById = (id: number) => {
246242
247243 return { event, isLoading, error } ;
248244} ;
245+
246+ export const useCalcMtxGasFee = ( mintLimit ?: number ) => {
247+ const provider = useSDK ( ) ?. getProvider ( ) ;
248+ const [ gasFee , setGasFee ] = useState < BigNumber | null > ( null ) ;
249+
250+ useEffect ( ( ) => {
251+ const fetch = async ( ) => {
252+ if ( ! provider || ! mintLimit ) return ;
253+
254+ const gasPrice = ( await provider . getGasPrice ( ) ) ?. toNumber ( ) ;
255+ const value = ethers . utils . parseEther (
256+ `${ gasPrice * mintLimit * 660000 * 1 * 0.000000000000000001 } `
257+ ) ;
258+ setGasFee ( value ) ;
259+ } ;
260+
261+ fetch ( ) ;
262+ } , [ provider , mintLimit ] ) ;
263+
264+ const getGasFee = useCallback (
265+ async ( _mintLimit : number ) => {
266+ if ( ! provider ) return ;
267+
268+ const gasPrice = ( await provider . getGasPrice ( ) ) ?. toNumber ( ) ;
269+ const value = ethers . utils . parseEther (
270+ `${ gasPrice * _mintLimit * 660000 * 1 * 0.000000000000000001 } `
271+ ) ;
272+ return value ;
273+ } ,
274+ [ provider ]
275+ ) ;
276+
277+ return { gasFee, getGasFee } ;
278+ } ;
0 commit comments