-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
901adfe
commit c2d09f7
Showing
6 changed files
with
192 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
"use client"; | ||
|
||
import { createContext, useContext, ReactNode, useState, useEffect } from "react"; | ||
import { DataContextType } from "../types/DataTypes"; | ||
|
||
const APIDataContext = createContext<DataContextType | undefined>(undefined); | ||
|
||
const XCALLTRACKER_ENDPOINT = '/api/statistics/total_messages' | ||
|
||
const networks = [ | ||
'icon', 'bsc', 'eth2', 'havah', 'ibc_archway', 'ibc_neutron', 'ibc_injective', | ||
'avax', 'base', 'arbitrum', 'optimism' | ||
]; | ||
|
||
export const APIDataContextProvider = ({ children }: { children: ReactNode }) => { | ||
|
||
const [loading, setLoading] = useState(true); | ||
const [totalMessages, setTotalMessages] = useState(0); | ||
const [networkMessages, setNetworkMessages] = useState<Record<string, { src: number, dest: number }>>({}); | ||
|
||
useEffect(() => { | ||
const fetchData = async () => { | ||
setLoading(true); | ||
try { | ||
|
||
const responseTracker = await fetch(XCALLTRACKER_ENDPOINT, { cache: 'no-store' }); | ||
const responseTrackerData = await responseTracker.json(); | ||
setTotalMessages(responseTrackerData.data.total) | ||
|
||
const networkPromises = networks.map(async (network) => { | ||
const srcResponse = await fetch(`/api/statistics/total_messages?src_network=${network}`, { cache: 'no-store' }); | ||
const srcData = await srcResponse.json(); | ||
const destResponse = await fetch(`/api/statistics/total_messages?dest_network=${network}`, { cache: 'no-store' }); | ||
const destData = await destResponse.json(); | ||
return { network, src: srcData.data.total, dest: destData.data.total }; | ||
}); | ||
|
||
const networkData = await Promise.all(networkPromises); | ||
const networkMessages = networkData.reduce((acc, { network, src, dest }) => { | ||
acc[network] = { src, dest }; | ||
return acc; | ||
}, {} as Record<string, { src: number, dest: number }>); | ||
|
||
setNetworkMessages(networkMessages); | ||
} catch (error) { | ||
console.error('Error fetching xcall fees:', error); | ||
} finally { | ||
setLoading(false); | ||
} | ||
}; | ||
|
||
fetchData(); | ||
}, []); | ||
|
||
|
||
return ( | ||
<APIDataContext.Provider value={{ loading, totalMessages, networkMessages }}> | ||
{children} | ||
</APIDataContext.Provider> | ||
); | ||
}; | ||
|
||
export const useData = () => { | ||
const context = useContext(APIDataContext); | ||
if (context === undefined) { | ||
throw new Error("useData must be used within a APIDataContextProvider"); | ||
} | ||
return context; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
export interface XCallFee { | ||
[x: string]: any; | ||
amount: number; | ||
denomination: string; | ||
price: number; | ||
} | ||
|
||
export interface XCallFees { | ||
[key: string]: XCallFee; | ||
} | ||
|
||
export interface DataContextType { | ||
loading: boolean; | ||
totalMessages: number; | ||
networkMessages: Record<string, NetworkMessages>; | ||
} | ||
|
||
export interface DatabaseDataContextType { | ||
ICONArrayDaily: string[]; | ||
ArchwayArrayDaily: string[]; | ||
InjectiveArrayDaily: string[]; | ||
BNBArrayDaily: string[]; | ||
AvalancheArrayDaily: string[]; | ||
EthereumArrayDaily: string[]; | ||
NeutronArrayDaily: string[]; | ||
BaseArrayDaily: string[]; | ||
ArbArrayDaily: string[]; | ||
} | ||
|
||
export interface RelayWallet { | ||
address: string; | ||
balance: number; | ||
denomination: string; | ||
} | ||
|
||
export type RelayWallets = Record<string, RelayWallet>; | ||
|
||
export interface RelayDataContextType { | ||
relayWallets: RelayWallets; | ||
loading: boolean; | ||
error: string | null; | ||
} | ||
|
||
export interface NetworkMessages { | ||
src: number; | ||
dest: number; | ||
} |