chore: migrate network stats and clean up liquidity lib (#1896)
* chore: migrate network stats and clean up liquidity lib * fix: format * fix: test imports * fix: format * fix: market info expiry format tests * fix: format again * fix: build
This commit is contained in:
parent
b273e2740d
commit
b3a8176297
@ -1,7 +1,4 @@
|
|||||||
query LiquidityProvisionMarkets {
|
fragment MarketNode on Market {
|
||||||
marketsConnection {
|
|
||||||
edges {
|
|
||||||
node {
|
|
||||||
id
|
id
|
||||||
liquidityProvisionsConnection {
|
liquidityProvisionsConnection {
|
||||||
edges {
|
edges {
|
||||||
@ -15,6 +12,13 @@ query LiquidityProvisionMarkets {
|
|||||||
targetStake
|
targetStake
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
query LiquidityProvisionMarkets {
|
||||||
|
marketsConnection {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
...MarketNode
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,77 +0,0 @@
|
|||||||
/* tslint:disable */
|
|
||||||
/* eslint-disable */
|
|
||||||
// @generated
|
|
||||||
// This file was automatically generated and should not be edited.
|
|
||||||
|
|
||||||
// ====================================================
|
|
||||||
// GraphQL query operation: LiquidityProvisionMarkets
|
|
||||||
// ====================================================
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection_edges_node_liquidityProvisionsConnection_edges_node {
|
|
||||||
__typename: "LiquidityProvision";
|
|
||||||
/**
|
|
||||||
* Specified as a unit-less number that represents the amount of settlement asset of the market.
|
|
||||||
*/
|
|
||||||
commitmentAmount: string;
|
|
||||||
/**
|
|
||||||
* Nominated liquidity fee factor, which is an input to the calculation of liquidity fees on the market, as per setting fees and rewarding liquidity providers.
|
|
||||||
*/
|
|
||||||
fee: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection_edges_node_liquidityProvisionsConnection_edges {
|
|
||||||
__typename: "LiquidityProvisionsEdge";
|
|
||||||
node: LiquidityProvisionMarkets_marketsConnection_edges_node_liquidityProvisionsConnection_edges_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection_edges_node_liquidityProvisionsConnection {
|
|
||||||
__typename: "LiquidityProvisionsConnection";
|
|
||||||
edges: (LiquidityProvisionMarkets_marketsConnection_edges_node_liquidityProvisionsConnection_edges | null)[] | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection_edges_node_data {
|
|
||||||
__typename: "MarketData";
|
|
||||||
/**
|
|
||||||
* The amount of stake targeted for this market
|
|
||||||
*/
|
|
||||||
targetStake: string | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection_edges_node {
|
|
||||||
__typename: "Market";
|
|
||||||
/**
|
|
||||||
* Market ID
|
|
||||||
*/
|
|
||||||
id: string;
|
|
||||||
/**
|
|
||||||
* The list of the liquidity provision commitments for this market
|
|
||||||
*/
|
|
||||||
liquidityProvisionsConnection: LiquidityProvisionMarkets_marketsConnection_edges_node_liquidityProvisionsConnection | null;
|
|
||||||
/**
|
|
||||||
* marketData for the given market
|
|
||||||
*/
|
|
||||||
data: LiquidityProvisionMarkets_marketsConnection_edges_node_data | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection_edges {
|
|
||||||
__typename: "MarketEdge";
|
|
||||||
/**
|
|
||||||
* The market
|
|
||||||
*/
|
|
||||||
node: LiquidityProvisionMarkets_marketsConnection_edges_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets_marketsConnection {
|
|
||||||
__typename: "MarketConnection";
|
|
||||||
/**
|
|
||||||
* The markets in this connection
|
|
||||||
*/
|
|
||||||
edges: LiquidityProvisionMarkets_marketsConnection_edges[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LiquidityProvisionMarkets {
|
|
||||||
/**
|
|
||||||
* One or more instruments that are trading on the Vega network
|
|
||||||
*/
|
|
||||||
marketsConnection: LiquidityProvisionMarkets_marketsConnection | null;
|
|
||||||
}
|
|
@ -3,17 +3,15 @@ import { Schema as Types } from '@vegaprotocol/types';
|
|||||||
import { gql } from '@apollo/client';
|
import { gql } from '@apollo/client';
|
||||||
import * as Apollo from '@apollo/client';
|
import * as Apollo from '@apollo/client';
|
||||||
const defaultOptions = {} as const;
|
const defaultOptions = {} as const;
|
||||||
|
export type MarketNodeFragment = { __typename?: 'Market', id: string, liquidityProvisionsConnection?: { __typename?: 'LiquidityProvisionsConnection', edges?: Array<{ __typename?: 'LiquidityProvisionsEdge', node: { __typename?: 'LiquidityProvision', commitmentAmount: string, fee: string } } | null> | null } | null, data?: { __typename?: 'MarketData', targetStake?: string | null } | null };
|
||||||
|
|
||||||
export type LiquidityProvisionMarketsQueryVariables = Types.Exact<{ [key: string]: never; }>;
|
export type LiquidityProvisionMarketsQueryVariables = Types.Exact<{ [key: string]: never; }>;
|
||||||
|
|
||||||
|
|
||||||
export type LiquidityProvisionMarketsQuery = { __typename?: 'Query', marketsConnection?: { __typename?: 'MarketConnection', edges: Array<{ __typename?: 'MarketEdge', node: { __typename?: 'Market', id: string, liquidityProvisionsConnection?: { __typename?: 'LiquidityProvisionsConnection', edges?: Array<{ __typename?: 'LiquidityProvisionsEdge', node: { __typename?: 'LiquidityProvision', commitmentAmount: string, fee: string } } | null> | null } | null, data?: { __typename?: 'MarketData', targetStake?: string | null } | null } }> } | null };
|
export type LiquidityProvisionMarketsQuery = { __typename?: 'Query', marketsConnection?: { __typename?: 'MarketConnection', edges: Array<{ __typename?: 'MarketEdge', node: { __typename?: 'Market', id: string, liquidityProvisionsConnection?: { __typename?: 'LiquidityProvisionsConnection', edges?: Array<{ __typename?: 'LiquidityProvisionsEdge', node: { __typename?: 'LiquidityProvision', commitmentAmount: string, fee: string } } | null> | null } | null, data?: { __typename?: 'MarketData', targetStake?: string | null } | null } }> } | null };
|
||||||
|
|
||||||
|
export const MarketNodeFragmentDoc = gql`
|
||||||
export const LiquidityProvisionMarketsDocument = gql`
|
fragment MarketNode on Market {
|
||||||
query LiquidityProvisionMarkets {
|
|
||||||
marketsConnection {
|
|
||||||
edges {
|
|
||||||
node {
|
|
||||||
id
|
id
|
||||||
liquidityProvisionsConnection {
|
liquidityProvisionsConnection {
|
||||||
edges {
|
edges {
|
||||||
@ -26,11 +24,19 @@ export const LiquidityProvisionMarketsDocument = gql`
|
|||||||
data {
|
data {
|
||||||
targetStake
|
targetStake
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
export const LiquidityProvisionMarketsDocument = gql`
|
||||||
|
query LiquidityProvisionMarkets {
|
||||||
|
marketsConnection {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
...MarketNode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
${MarketNodeFragmentDoc}`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __useLiquidityProvisionMarketsQuery__
|
* __useLiquidityProvisionMarketsQuery__
|
@ -1,4 +1,5 @@
|
|||||||
export * from './__generated___/MarketLiquidity';
|
export * from './__generated__/MarketLiquidity';
|
||||||
|
export * from './__generated__/MarketsLiquidity';
|
||||||
export * from './liquidity-data-provider';
|
export * from './liquidity-data-provider';
|
||||||
export * from './liquidity-table';
|
export * from './liquidity-table';
|
||||||
export * from './markets-liquidity-provider';
|
export * from './markets-liquidity-provider';
|
||||||
|
@ -13,7 +13,7 @@ import {
|
|||||||
LiquidityProvisionsDocument,
|
LiquidityProvisionsDocument,
|
||||||
LiquidityProvisionsUpdateDocument,
|
LiquidityProvisionsUpdateDocument,
|
||||||
MarketLpDocument,
|
MarketLpDocument,
|
||||||
} from './__generated___/MarketLiquidity';
|
} from './__generated__/MarketLiquidity';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
MarketLpQuery,
|
MarketLpQuery,
|
||||||
@ -23,7 +23,7 @@ import type {
|
|||||||
LiquidityProvisionFieldsFragment,
|
LiquidityProvisionFieldsFragment,
|
||||||
LiquidityProvisionsQuery,
|
LiquidityProvisionsQuery,
|
||||||
LiquidityProvisionsUpdateSubscription,
|
LiquidityProvisionsUpdateSubscription,
|
||||||
} from './__generated___/MarketLiquidity';
|
} from './__generated__/MarketLiquidity';
|
||||||
import type { Account } from '@vegaprotocol/accounts';
|
import type { Account } from '@vegaprotocol/accounts';
|
||||||
export const liquidityProvisionsDataProvider = makeDataProvider<
|
export const liquidityProvisionsDataProvider = makeDataProvider<
|
||||||
LiquidityProvisionsQuery,
|
LiquidityProvisionsQuery,
|
||||||
|
@ -18,8 +18,8 @@ import {
|
|||||||
marketListProvider,
|
marketListProvider,
|
||||||
} from '@vegaprotocol/market-list';
|
} from '@vegaprotocol/market-list';
|
||||||
|
|
||||||
import type { LiquidityProvisionMarkets } from './__generated__/LiquidityProvisionMarkets';
|
import type { LiquidityProvisionMarketsQuery } from './__generated__/MarketsLiquidity';
|
||||||
import { LiquidityProvisionMarketsDocument } from './__generated___/MarketsLiquidity';
|
import { LiquidityProvisionMarketsDocument } from './__generated__/MarketsLiquidity';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
calcDayVolume,
|
calcDayVolume,
|
||||||
@ -45,7 +45,7 @@ export interface Markets {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const getData = (
|
const getData = (
|
||||||
responseData: LiquidityProvisionMarkets
|
responseData: LiquidityProvisionMarketsQuery
|
||||||
): LiquidityProvisionMarket[] | null => {
|
): LiquidityProvisionMarket[] | null => {
|
||||||
return (
|
return (
|
||||||
responseData?.marketsConnection?.edges.map((edge) => {
|
responseData?.marketsConnection?.edges.map((edge) => {
|
||||||
@ -82,7 +82,7 @@ export const addData = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const liquidityMarketsProvider = makeDataProvider<
|
export const liquidityMarketsProvider = makeDataProvider<
|
||||||
LiquidityProvisionMarkets,
|
LiquidityProvisionMarketsQuery,
|
||||||
LiquidityProvisionMarket[],
|
LiquidityProvisionMarket[],
|
||||||
never,
|
never,
|
||||||
never
|
never
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import BigNumber from 'bignumber.js';
|
import BigNumber from 'bignumber.js';
|
||||||
import { addDecimalsFormatNumber } from '@vegaprotocol/react-helpers';
|
import { addDecimalsFormatNumber } from '@vegaprotocol/react-helpers';
|
||||||
|
|
||||||
import type { LiquidityProvisionMarkets_marketsConnection_edges_node } from './../__generated__/LiquidityProvisionMarkets';
|
import type { MarketNodeFragment } from './../__generated__/MarketsLiquidity';
|
||||||
|
|
||||||
export type LiquidityProvisionMarket =
|
export type LiquidityProvisionMarket = MarketNodeFragment;
|
||||||
LiquidityProvisionMarkets_marketsConnection_edges_node;
|
|
||||||
|
|
||||||
export interface Provider {
|
export interface Provider {
|
||||||
commitmentAmount: string;
|
commitmentAmount: string;
|
||||||
|
@ -3,6 +3,19 @@ import React from 'react';
|
|||||||
|
|
||||||
import { MarketExpires } from './market-expires';
|
import { MarketExpires } from './market-expires';
|
||||||
|
|
||||||
|
jest.mock('@vegaprotocol/react-helpers', () => ({
|
||||||
|
t: jest.fn().mockImplementation((text) => text),
|
||||||
|
getDateTimeFormat: () =>
|
||||||
|
Intl.DateTimeFormat('en-GB', {
|
||||||
|
year: 'numeric',
|
||||||
|
month: 'numeric',
|
||||||
|
day: 'numeric',
|
||||||
|
hour: 'numeric',
|
||||||
|
minute: 'numeric',
|
||||||
|
second: 'numeric',
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
|
||||||
describe('MarketExpires', () => {
|
describe('MarketExpires', () => {
|
||||||
describe('should properly parse different tags', () => {
|
describe('should properly parse different tags', () => {
|
||||||
it('settlement:date', () => {
|
it('settlement:date', () => {
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
query NetworkStats {
|
query Stats {
|
||||||
nodeData {
|
nodeData {
|
||||||
stakedTotal
|
stakedTotal
|
||||||
totalNodes
|
totalNodes
|
||||||
inactiveNodes
|
inactiveNodes
|
||||||
validatingNodes
|
validatingNodes
|
||||||
uptime
|
|
||||||
}
|
}
|
||||||
statistics {
|
statistics {
|
||||||
status
|
status
|
||||||
@ -19,5 +18,6 @@ query NetworkStats {
|
|||||||
appVersion
|
appVersion
|
||||||
chainVersion
|
chainVersion
|
||||||
chainId
|
chainId
|
||||||
|
genesisTime
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
/* tslint:disable */
|
|
||||||
/* eslint-disable */
|
|
||||||
// @generated
|
|
||||||
// This file was automatically generated and should not be edited.
|
|
||||||
|
|
||||||
// ====================================================
|
|
||||||
// GraphQL query operation: NetworkStats
|
|
||||||
// ====================================================
|
|
||||||
|
|
||||||
export interface NetworkStats_nodeData {
|
|
||||||
__typename: "NodeData";
|
|
||||||
/**
|
|
||||||
* Total staked amount across all nodes
|
|
||||||
*/
|
|
||||||
stakedTotal: string;
|
|
||||||
/**
|
|
||||||
* Total number of nodes
|
|
||||||
*/
|
|
||||||
totalNodes: number;
|
|
||||||
/**
|
|
||||||
* Number of inactive nodes
|
|
||||||
*/
|
|
||||||
inactiveNodes: number;
|
|
||||||
/**
|
|
||||||
* Number of nodes validating
|
|
||||||
*/
|
|
||||||
validatingNodes: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface NetworkStats_statistics {
|
|
||||||
__typename: "Statistics";
|
|
||||||
/**
|
|
||||||
* Status of the Vega application connection with the chain
|
|
||||||
*/
|
|
||||||
status: string;
|
|
||||||
/**
|
|
||||||
* Current block number
|
|
||||||
*/
|
|
||||||
blockHeight: string;
|
|
||||||
/**
|
|
||||||
* Duration of the last block, in nanoseconds
|
|
||||||
*/
|
|
||||||
blockDuration: string;
|
|
||||||
/**
|
|
||||||
* Number of items in the backlog
|
|
||||||
*/
|
|
||||||
backlogLength: string;
|
|
||||||
/**
|
|
||||||
* Number of transaction processed per block
|
|
||||||
*/
|
|
||||||
txPerBlock: string;
|
|
||||||
/**
|
|
||||||
* Number of the trades per seconds
|
|
||||||
*/
|
|
||||||
tradesPerSecond: string;
|
|
||||||
/**
|
|
||||||
* Number of orders per seconds
|
|
||||||
*/
|
|
||||||
ordersPerSecond: string;
|
|
||||||
/**
|
|
||||||
* Average number of orders added per blocks
|
|
||||||
*/
|
|
||||||
averageOrdersPerBlock: string;
|
|
||||||
/**
|
|
||||||
* RFC3339Nano current time of the chain (decided through consensus)
|
|
||||||
*/
|
|
||||||
vegaTime: string;
|
|
||||||
/**
|
|
||||||
* Version of the Vega node (semver)
|
|
||||||
*/
|
|
||||||
appVersion: string;
|
|
||||||
/**
|
|
||||||
* Version of the chain (semver)
|
|
||||||
*/
|
|
||||||
chainVersion: string;
|
|
||||||
/**
|
|
||||||
* Current chain ID
|
|
||||||
*/
|
|
||||||
chainId: string;
|
|
||||||
/**
|
|
||||||
* RFC3339Nano genesis time of the chain
|
|
||||||
*/
|
|
||||||
genesisTime: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface NetworkStats {
|
|
||||||
/**
|
|
||||||
* Returns information about nodes
|
|
||||||
*/
|
|
||||||
nodeData: NetworkStats_nodeData | null;
|
|
||||||
/**
|
|
||||||
* Get statistics about the Vega node
|
|
||||||
*/
|
|
||||||
statistics: NetworkStats_statistics;
|
|
||||||
}
|
|
63
libs/network-stats/src/components/stats-manager/__generated__/Stats.ts
generated
Normal file
63
libs/network-stats/src/components/stats-manager/__generated__/Stats.ts
generated
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import { Schema as Types } from '@vegaprotocol/types';
|
||||||
|
|
||||||
|
import { gql } from '@apollo/client';
|
||||||
|
import * as Apollo from '@apollo/client';
|
||||||
|
const defaultOptions = {} as const;
|
||||||
|
export type StatsQueryVariables = Types.Exact<{ [key: string]: never; }>;
|
||||||
|
|
||||||
|
|
||||||
|
export type StatsQuery = { __typename?: 'Query', nodeData?: { __typename?: 'NodeData', stakedTotal: string, totalNodes: number, inactiveNodes: number, validatingNodes: number } | null, statistics: { __typename?: 'Statistics', status: string, blockHeight: string, blockDuration: string, backlogLength: string, txPerBlock: string, tradesPerSecond: string, ordersPerSecond: string, averageOrdersPerBlock: string, vegaTime: string, appVersion: string, chainVersion: string, chainId: string, genesisTime: string } };
|
||||||
|
|
||||||
|
|
||||||
|
export const StatsDocument = gql`
|
||||||
|
query Stats {
|
||||||
|
nodeData {
|
||||||
|
stakedTotal
|
||||||
|
totalNodes
|
||||||
|
inactiveNodes
|
||||||
|
validatingNodes
|
||||||
|
}
|
||||||
|
statistics {
|
||||||
|
status
|
||||||
|
blockHeight
|
||||||
|
blockDuration
|
||||||
|
backlogLength
|
||||||
|
txPerBlock
|
||||||
|
tradesPerSecond
|
||||||
|
ordersPerSecond
|
||||||
|
averageOrdersPerBlock
|
||||||
|
vegaTime
|
||||||
|
appVersion
|
||||||
|
chainVersion
|
||||||
|
chainId
|
||||||
|
genesisTime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __useStatsQuery__
|
||||||
|
*
|
||||||
|
* To run a query within a React component, call `useStatsQuery` and pass it any options that fit your needs.
|
||||||
|
* When your component renders, `useStatsQuery` returns an object from Apollo Client that contains loading, error, and data properties
|
||||||
|
* you can use to render your UI.
|
||||||
|
*
|
||||||
|
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* const { data, loading, error } = useStatsQuery({
|
||||||
|
* variables: {
|
||||||
|
* },
|
||||||
|
* });
|
||||||
|
*/
|
||||||
|
export function useStatsQuery(baseOptions?: Apollo.QueryHookOptions<StatsQuery, StatsQueryVariables>) {
|
||||||
|
const options = {...defaultOptions, ...baseOptions}
|
||||||
|
return Apollo.useQuery<StatsQuery, StatsQueryVariables>(StatsDocument, options);
|
||||||
|
}
|
||||||
|
export function useStatsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<StatsQuery, StatsQueryVariables>) {
|
||||||
|
const options = {...defaultOptions, ...baseOptions}
|
||||||
|
return Apollo.useLazyQuery<StatsQuery, StatsQueryVariables>(StatsDocument, options);
|
||||||
|
}
|
||||||
|
export type StatsQueryHookResult = ReturnType<typeof useStatsQuery>;
|
||||||
|
export type StatsLazyQueryHookResult = ReturnType<typeof useStatsLazyQuery>;
|
||||||
|
export type StatsQueryResult = Apollo.QueryResult<StatsQuery, StatsQueryVariables>;
|
@ -1,63 +0,0 @@
|
|||||||
import { Schema as Types } from '@vegaprotocol/types';
|
|
||||||
|
|
||||||
import { gql } from '@apollo/client';
|
|
||||||
import * as Apollo from '@apollo/client';
|
|
||||||
const defaultOptions = {} as const;
|
|
||||||
export type NetworkStatsQueryVariables = Types.Exact<{ [key: string]: never; }>;
|
|
||||||
|
|
||||||
|
|
||||||
export type NetworkStatsQuery = { __typename?: 'Query', nodeData?: { __typename?: 'NodeData', stakedTotal: string, totalNodes: number, inactiveNodes: number, validatingNodes: number, uptime: number } | null, statistics: { __typename?: 'Statistics', status: string, blockHeight: string, blockDuration: string, backlogLength: string, txPerBlock: string, tradesPerSecond: string, ordersPerSecond: string, averageOrdersPerBlock: string, vegaTime: string, appVersion: string, chainVersion: string, chainId: string } };
|
|
||||||
|
|
||||||
|
|
||||||
export const NetworkStatsDocument = gql`
|
|
||||||
query NetworkStats {
|
|
||||||
nodeData {
|
|
||||||
stakedTotal
|
|
||||||
totalNodes
|
|
||||||
inactiveNodes
|
|
||||||
validatingNodes
|
|
||||||
uptime
|
|
||||||
}
|
|
||||||
statistics {
|
|
||||||
status
|
|
||||||
blockHeight
|
|
||||||
blockDuration
|
|
||||||
backlogLength
|
|
||||||
txPerBlock
|
|
||||||
tradesPerSecond
|
|
||||||
ordersPerSecond
|
|
||||||
averageOrdersPerBlock
|
|
||||||
vegaTime
|
|
||||||
appVersion
|
|
||||||
chainVersion
|
|
||||||
chainId
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* __useNetworkStatsQuery__
|
|
||||||
*
|
|
||||||
* To run a query within a React component, call `useNetworkStatsQuery` and pass it any options that fit your needs.
|
|
||||||
* When your component renders, `useNetworkStatsQuery` returns an object from Apollo Client that contains loading, error, and data properties
|
|
||||||
* you can use to render your UI.
|
|
||||||
*
|
|
||||||
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* const { data, loading, error } = useNetworkStatsQuery({
|
|
||||||
* variables: {
|
|
||||||
* },
|
|
||||||
* });
|
|
||||||
*/
|
|
||||||
export function useNetworkStatsQuery(baseOptions?: Apollo.QueryHookOptions<NetworkStatsQuery, NetworkStatsQueryVariables>) {
|
|
||||||
const options = {...defaultOptions, ...baseOptions}
|
|
||||||
return Apollo.useQuery<NetworkStatsQuery, NetworkStatsQueryVariables>(NetworkStatsDocument, options);
|
|
||||||
}
|
|
||||||
export function useNetworkStatsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<NetworkStatsQuery, NetworkStatsQueryVariables>) {
|
|
||||||
const options = {...defaultOptions, ...baseOptions}
|
|
||||||
return Apollo.useLazyQuery<NetworkStatsQuery, NetworkStatsQueryVariables>(NetworkStatsDocument, options);
|
|
||||||
}
|
|
||||||
export type NetworkStatsQueryHookResult = ReturnType<typeof useNetworkStatsQuery>;
|
|
||||||
export type NetworkStatsLazyQueryHookResult = ReturnType<typeof useNetworkStatsLazyQuery>;
|
|
||||||
export type NetworkStatsQueryResult = Apollo.QueryResult<NetworkStatsQuery, NetworkStatsQueryVariables>;
|
|
@ -1,6 +1,5 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { useQuery, gql } from '@apollo/client';
|
|
||||||
import { useEnvironment } from '@vegaprotocol/environment';
|
import { useEnvironment } from '@vegaprotocol/environment';
|
||||||
import { statsFields } from '../../config/stats-fields';
|
import { statsFields } from '../../config/stats-fields';
|
||||||
import type {
|
import type {
|
||||||
@ -11,39 +10,14 @@ import { Table } from '../table';
|
|||||||
import { TableRow } from '../table-row';
|
import { TableRow } from '../table-row';
|
||||||
import { PromotedStats } from '../promoted-stats';
|
import { PromotedStats } from '../promoted-stats';
|
||||||
import { PromotedStatsItem } from '../promoted-stats-item';
|
import { PromotedStatsItem } from '../promoted-stats-item';
|
||||||
import type { NetworkStats } from './__generated__/NetworkStats';
|
import { useStatsQuery } from './__generated__/Stats';
|
||||||
|
import type { StatsQuery } from './__generated__/Stats';
|
||||||
|
|
||||||
interface StatsManagerProps {
|
interface StatsManagerProps {
|
||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const STATS_QUERY = gql`
|
const compileData = (data?: StatsQuery) => {
|
||||||
query NetworkStats {
|
|
||||||
nodeData {
|
|
||||||
stakedTotal
|
|
||||||
totalNodes
|
|
||||||
inactiveNodes
|
|
||||||
validatingNodes
|
|
||||||
}
|
|
||||||
statistics {
|
|
||||||
status
|
|
||||||
blockHeight
|
|
||||||
blockDuration
|
|
||||||
backlogLength
|
|
||||||
txPerBlock
|
|
||||||
tradesPerSecond
|
|
||||||
ordersPerSecond
|
|
||||||
averageOrdersPerBlock
|
|
||||||
vegaTime
|
|
||||||
appVersion
|
|
||||||
chainVersion
|
|
||||||
chainId
|
|
||||||
genesisTime
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
const compileData = (data?: NetworkStats) => {
|
|
||||||
const { nodeData, statistics } = data || {};
|
const { nodeData, statistics } = data || {};
|
||||||
const returned = { ...nodeData, ...statistics };
|
const returned = { ...nodeData, ...statistics };
|
||||||
|
|
||||||
@ -71,8 +45,7 @@ const compileData = (data?: NetworkStats) => {
|
|||||||
|
|
||||||
export const StatsManager = ({ className }: StatsManagerProps) => {
|
export const StatsManager = ({ className }: StatsManagerProps) => {
|
||||||
const { VEGA_ENV } = useEnvironment();
|
const { VEGA_ENV } = useEnvironment();
|
||||||
const { data, error, startPolling, stopPolling } =
|
const { data, error, startPolling, stopPolling } = useStatsQuery();
|
||||||
useQuery<NetworkStats>(STATS_QUERY);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
startPolling(1000);
|
startPolling(1000);
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
import type {
|
import type { Schema } from '@vegaprotocol/types';
|
||||||
NetworkStats_nodeData,
|
import type { StatsQuery } from '../components/stats-manager/__generated__/Stats';
|
||||||
NetworkStats_statistics,
|
|
||||||
} from '../components/stats-manager/__generated__/NetworkStats';
|
|
||||||
|
|
||||||
export type Stats = Omit<NetworkStats_nodeData, '__typename'> &
|
type NodeDataKeys =
|
||||||
Omit<NetworkStats_statistics, '__typename'>;
|
| 'stakedTotal'
|
||||||
|
| 'totalNodes'
|
||||||
|
| 'inactiveNodes'
|
||||||
|
| 'validatingNodes';
|
||||||
|
|
||||||
|
export type Stats = Pick<Schema.NodeData, NodeDataKeys> &
|
||||||
|
Omit<StatsQuery['statistics'], '__typename'>;
|
||||||
|
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
export type value = any;
|
export type value = any;
|
||||||
|
@ -22,6 +22,8 @@ module.exports = {
|
|||||||
'../../libs/environment/**',
|
'../../libs/environment/**',
|
||||||
'../../libs/fills/**',
|
'../../libs/fills/**',
|
||||||
'../../libs/governance/**',
|
'../../libs/governance/**',
|
||||||
|
'../../libs/liquidity/**',
|
||||||
|
'../../libs/network-stats/**',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user