Chore/1925 network params (#1927)

* chore: remove network parameters query from token that was unused

* chore: begin migrating network parameters queries

* chore: more network parameter query migrations

* chore: more network params query migrations

* test: fix tests

* test: fix tests in web3 provider

* test: fix remaining tests

* test: fix e2e test build

* chore: move generic params helper into react helpers

* chore: missed migration

* chore: more migrations

* test: fix test

* test: final test migrations

* fix: e2e test mock

* chore: update type

* chore: update helper script

* test: fix query

* test: fix reduce logic

* test: fix query aliasing
This commit is contained in:
Dexter Edwards 2022-11-07 14:57:35 +00:00 committed by GitHub
parent dc5881b71b
commit da99e731fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 668 additions and 737 deletions

View File

@ -1,6 +0,0 @@
query NetworkParametersQuery {
networkParameters {
key
value
}
}

View File

@ -1,27 +0,0 @@
/* tslint:disable */
/* eslint-disable */
// @generated
// This file was automatically generated and should not be edited.
// ====================================================
// GraphQL query operation: NetworkParametersQuery
// ====================================================
export interface NetworkParametersQuery_networkParameters {
__typename: "NetworkParameter";
/**
* The name of the network parameter
*/
key: string;
/**
* The value of the network parameter
*/
value: string;
}
export interface NetworkParametersQuery {
/**
* Return the full list of network parameters
*/
networkParameters: NetworkParametersQuery_networkParameters[] | null;
}

View File

@ -1,46 +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 NetworkParametersQueryQueryVariables = Types.Exact<{ [key: string]: never; }>;
export type NetworkParametersQueryQuery = { __typename?: 'Query', networkParameters?: Array<{ __typename?: 'NetworkParameter', key: string, value: string }> | null };
export const NetworkParametersQueryDocument = gql`
query NetworkParametersQuery {
networkParameters {
key
value
}
}
`;
/**
* __useNetworkParametersQueryQuery__
*
* To run a query within a React component, call `useNetworkParametersQueryQuery` and pass it any options that fit your needs.
* When your component renders, `useNetworkParametersQueryQuery` 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 } = useNetworkParametersQueryQuery({
* variables: {
* },
* });
*/
export function useNetworkParametersQueryQuery(baseOptions?: Apollo.QueryHookOptions<NetworkParametersQueryQuery, NetworkParametersQueryQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<NetworkParametersQueryQuery, NetworkParametersQueryQueryVariables>(NetworkParametersQueryDocument, options);
}
export function useNetworkParametersQueryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<NetworkParametersQueryQuery, NetworkParametersQueryQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<NetworkParametersQueryQuery, NetworkParametersQueryQueryVariables>(NetworkParametersQueryDocument, options);
}
export type NetworkParametersQueryQueryHookResult = ReturnType<typeof useNetworkParametersQueryQuery>;
export type NetworkParametersQueryLazyQueryHookResult = ReturnType<typeof useNetworkParametersQueryLazyQuery>;
export type NetworkParametersQueryQueryResult = Apollo.QueryResult<NetworkParametersQueryQuery, NetworkParametersQueryQueryVariables>;

View File

@ -1,22 +1,28 @@
import { render, screen } from '@testing-library/react'; import { render, screen } from '@testing-library/react';
import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { NetworkParametersTable } from './network-parameters'; import { NetworkParametersTable } from './network-parameters';
import type { NetworkParametersQuery } from './__generated__/NetworkParametersQuery';
describe('NetworkParametersTable', () => { describe('NetworkParametersTable', () => {
it('renders correctly when it has network params', () => { it('renders correctly when it has network params', () => {
const data: NetworkParametersQuery = { const data: NetworkParamsQuery = {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'market.liquidityProvision.minLpStakeQuantumMultiple', key: 'market.liquidityProvision.minLpStakeQuantumMultiple',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'market.fee.factors.infrastructureFee', key: 'market.fee.factors.infrastructureFee',
value: '0.0005', value: '0.0005',
}, },
},
], ],
},
}; };
render(<NetworkParametersTable data={data} loading={false} />); render(<NetworkParametersTable data={data} loading={false} />);
expect(screen.getByTestId('network-param-header')).toHaveTextContent( expect(screen.getByTestId('network-param-header')).toHaveTextContent(
@ -34,19 +40,25 @@ describe('NetworkParametersTable', () => {
}); });
it('renders the rows in ascending order', () => { it('renders the rows in ascending order', () => {
const data: NetworkParametersQuery = { const data: NetworkParamsQuery = {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'market.fee.factors.infrastructureFee', key: 'market.fee.factors.infrastructureFee',
value: '0.0005', value: '0.0005',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'market.liquidityProvision.minLpStakeQuantumMultiple', key: 'market.liquidityProvision.minLpStakeQuantumMultiple',
value: '1', value: '1',
}, },
},
], ],
},
}; };
render(<NetworkParametersTable data={data} loading={false} />); render(<NetworkParametersTable data={data} loading={false} />);
expect(screen.getByTestId('network-param-header')).toHaveTextContent( expect(screen.getByTestId('network-param-header')).toHaveTextContent(

View File

@ -1,4 +1,3 @@
import { gql, useQuery } from '@apollo/client';
import { import {
AsyncRenderer, AsyncRenderer,
KeyValueTable, KeyValueTable,
@ -12,11 +11,10 @@ import {
} from '@vegaprotocol/react-helpers'; } from '@vegaprotocol/react-helpers';
import { suitableForSyntaxHighlighter } from '@vegaprotocol/react-helpers'; import { suitableForSyntaxHighlighter } from '@vegaprotocol/react-helpers';
import { RouteTitle } from '../../components/route-title'; import { RouteTitle } from '../../components/route-title';
import type {
NetworkParametersQuery,
NetworkParametersQuery_networkParameters,
} from './__generated__/NetworkParametersQuery';
import orderBy from 'lodash/orderBy'; import orderBy from 'lodash/orderBy';
import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { useNetworkParamsQuery } from '@vegaprotocol/react-helpers';
import compact from 'lodash/compact';
const PERCENTAGE_PARAMS = [ const PERCENTAGE_PARAMS = [
'governance.proposal.asset.requiredMajority', 'governance.proposal.asset.requiredMajority',
@ -57,7 +55,7 @@ const BIG_NUMBER_PARAMS = [
export const NetworkParameterRow = ({ export const NetworkParameterRow = ({
row: { key, value }, row: { key, value },
}: { }: {
row: NetworkParametersQuery_networkParameters; row: { key: string; value: string };
}) => { }) => {
const isSyntaxRow = suitableForSyntaxHighlighter(value); const isSyntaxRow = suitableForSyntaxHighlighter(value);
@ -86,18 +84,9 @@ export const NetworkParameterRow = ({
); );
}; };
export const NETWORK_PARAMETERS_QUERY = gql`
query NetworkParametersQuery {
networkParameters {
key
value
}
}
`;
export interface NetworkParametersTableProps export interface NetworkParametersTableProps
extends React.HTMLAttributes<HTMLTableElement> { extends React.HTMLAttributes<HTMLTableElement> {
data?: NetworkParametersQuery; data?: NetworkParamsQuery | undefined;
error?: Error; error?: Error;
loading: boolean; loading: boolean;
} }
@ -118,7 +107,9 @@ export const NetworkParametersTable = ({
error={error} error={error}
render={(data) => { render={(data) => {
const ascParams = orderBy( const ascParams = orderBy(
data.networkParameters || [], compact(data.networkParametersConnection.edges).map(
({ node }) => node
) || [],
(param) => param.key, (param) => param.key,
'asc' 'asc'
); );
@ -135,8 +126,6 @@ export const NetworkParametersTable = ({
); );
export const NetworkParameters = () => { export const NetworkParameters = () => {
const { data, loading, error } = useQuery<NetworkParametersQuery>( const { data, loading, error } = useNetworkParamsQuery();
NETWORK_PARAMETERS_QUERY
);
return <NetworkParametersTable data={data} error={error} loading={loading} />; return <NetworkParametersTable data={data} error={error} loading={loading} />;
}; };

View File

@ -1,6 +0,0 @@
query NetworkParams {
networkParameters {
key
value
}
}

View File

@ -1,27 +0,0 @@
/* tslint:disable */
/* eslint-disable */
// @generated
// This file was automatically generated and should not be edited.
// ====================================================
// GraphQL query operation: NetworkParams
// ====================================================
export interface NetworkParams_networkParameters {
__typename: "NetworkParameter";
/**
* The name of the network parameter
*/
key: string;
/**
* The value of the network parameter
*/
value: string;
}
export interface NetworkParams {
/**
* return the full list of network parameters
*/
networkParameters: NetworkParams_networkParameters[] | null;
}

View File

@ -1,46 +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 NetworkParamsQueryVariables = Types.Exact<{ [key: string]: never; }>;
export type NetworkParamsQuery = { __typename?: 'Query', networkParameters?: Array<{ __typename?: 'NetworkParameter', key: string, value: string }> | null };
export const NetworkParamsDocument = gql`
query NetworkParams {
networkParameters {
key
value
}
}
`;
/**
* __useNetworkParamsQuery__
*
* To run a query within a React component, call `useNetworkParamsQuery` and pass it any options that fit your needs.
* When your component renders, `useNetworkParamsQuery` 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 } = useNetworkParamsQuery({
* variables: {
* },
* });
*/
export function useNetworkParamsQuery(baseOptions?: Apollo.QueryHookOptions<NetworkParamsQuery, NetworkParamsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<NetworkParamsQuery, NetworkParamsQueryVariables>(NetworkParamsDocument, options);
}
export function useNetworkParamsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<NetworkParamsQuery, NetworkParamsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<NetworkParamsQuery, NetworkParamsQueryVariables>(NetworkParamsDocument, options);
}
export type NetworkParamsQueryHookResult = ReturnType<typeof useNetworkParamsQuery>;
export type NetworkParamsLazyQueryHookResult = ReturnType<typeof useNetworkParamsLazyQuery>;
export type NetworkParamsQueryResult = Apollo.QueryResult<NetworkParamsQuery, NetworkParamsQueryVariables>;

View File

@ -1,9 +1,9 @@
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import { MockedProvider } from '@apollo/client/testing'; import { MockedProvider } from '@apollo/client/testing';
import { render, screen } from '@testing-library/react'; import { render, screen } from '@testing-library/react';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers';
import { ProposalRejectionReason, ProposalState } from '@vegaprotocol/types'; import { ProposalRejectionReason, ProposalState } from '@vegaprotocol/types';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider'; import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider';
import { generateProposal } from '../../test-helpers/generate-proposals'; import { generateProposal } from '../../test-helpers/generate-proposals';
import { CurrentProposalStatus } from './current-proposal-status'; import { CurrentProposalStatus } from './current-proposal-status';
@ -11,24 +11,30 @@ import type { Proposal_proposal } from '../../proposal/__generated__/Proposal';
const networkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const networkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.requiredMajority', key: 'governance.proposal.updateNetParam.requiredMajority',
value: '0.00000001', value: '0.00000001',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.requiredParticipation', key: 'governance.proposal.updateNetParam.requiredParticipation',
value: '0.000000001', value: '0.000000001',
}, },
},
], ],
}, },
}, },
},
}; };
const renderComponent = ({ proposal }: { proposal: Proposal_proposal }) => { const renderComponent = ({ proposal }: { proposal: Proposal_proposal }) => {

View File

@ -5,9 +5,9 @@ import { mockWalletContext } from '../../test-helpers/mocks';
import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider'; import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider';
import { VegaWalletContext } from '@vegaprotocol/wallet'; import { VegaWalletContext } from '@vegaprotocol/wallet';
import { MemoryRouter as Router } from 'react-router-dom'; import { MemoryRouter as Router } from 'react-router-dom';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
jest.mock('@vegaprotocol/environment', () => ({ jest.mock('@vegaprotocol/environment', () => ({
useEnvironment: () => ({ useEnvironment: () => ({
@ -17,44 +17,58 @@ jest.mock('@vegaprotocol/environment', () => ({
const updateMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const updateMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.freeform.maxClose', key: 'governance.proposal.freeform.maxClose',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.freeform.maxEnact', key: 'governance.proposal.freeform.maxEnact',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.freeform.minClose', key: 'governance.proposal.freeform.minClose',
value: '1h0m0s', value: '1h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.freeform.minEnact', key: 'governance.proposal.freeform.minEnact',
value: '2h0m0s', value: '2h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.freeform.minProposerBalance', key: 'governance.proposal.freeform.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
}; };
const renderComponent = () => const renderComponent = () =>

View File

@ -5,9 +5,9 @@ import { mockWalletContext } from '../../test-helpers/mocks';
import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider'; import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider';
import { VegaWalletContext } from '@vegaprotocol/wallet'; import { VegaWalletContext } from '@vegaprotocol/wallet';
import { MemoryRouter as Router } from 'react-router-dom'; import { MemoryRouter as Router } from 'react-router-dom';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers';
jest.mock('@vegaprotocol/environment', () => ({ jest.mock('@vegaprotocol/environment', () => ({
useEnvironment: () => ({ useEnvironment: () => ({
@ -17,44 +17,58 @@ jest.mock('@vegaprotocol/environment', () => ({
const updateMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const updateMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.maxClose', key: 'governance.proposal.updateNetParam.maxClose',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.maxEnact', key: 'governance.proposal.updateNetParam.maxEnact',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.minClose', key: 'governance.proposal.updateNetParam.minClose',
value: '1h0m0s', value: '1h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.minEnact', key: 'governance.proposal.updateNetParam.minEnact',
value: '2h0m0s', value: '2h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.minProposerBalance', key: 'governance.proposal.updateNetParam.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
}; };
const renderComponent = () => const renderComponent = () =>

View File

@ -5,9 +5,9 @@ import { VegaWalletContext } from '@vegaprotocol/wallet';
import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider'; import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider';
import { mockWalletContext } from '../../test-helpers/mocks'; import { mockWalletContext } from '../../test-helpers/mocks';
import { ProposeNewAsset } from './propose-new-asset'; import { ProposeNewAsset } from './propose-new-asset';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
jest.mock('@vegaprotocol/environment', () => ({ jest.mock('@vegaprotocol/environment', () => ({
useEnvironment: () => ({ useEnvironment: () => ({
@ -17,44 +17,58 @@ jest.mock('@vegaprotocol/environment', () => ({
const newAssetNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const newAssetNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.asset.maxClose', key: 'governance.proposal.asset.maxClose',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.asset.maxEnact', key: 'governance.proposal.asset.maxEnact',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.asset.minClose', key: 'governance.proposal.asset.minClose',
value: '1h0m0s', value: '1h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.asset.minEnact', key: 'governance.proposal.asset.minEnact',
value: '2h0m0s', value: '2h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.asset.minProposerBalance', key: 'governance.proposal.asset.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
}; };
const renderComponent = () => const renderComponent = () =>

View File

@ -6,8 +6,8 @@ import { AppStateProvider } from '../../../../contexts/app-state/app-state-provi
import { VegaWalletContext } from '@vegaprotocol/wallet'; import { VegaWalletContext } from '@vegaprotocol/wallet';
import { BrowserRouter as Router } from 'react-router-dom'; import { BrowserRouter as Router } from 'react-router-dom';
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
jest.mock('@vegaprotocol/environment', () => ({ jest.mock('@vegaprotocol/environment', () => ({
useEnvironment: () => ({ useEnvironment: () => ({
@ -17,44 +17,58 @@ jest.mock('@vegaprotocol/environment', () => ({
const newMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const newMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.market.maxClose', key: 'governance.proposal.market.maxClose',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.market.maxEnact', key: 'governance.proposal.market.maxEnact',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.market.minClose', key: 'governance.proposal.market.minClose',
value: '1h0m0s', value: '1h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.market.minEnact', key: 'governance.proposal.market.minEnact',
value: '2h0m0s', value: '2h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.market.minProposerBalance', key: 'governance.proposal.market.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
}; };
const renderComponent = () => const renderComponent = () =>

View File

@ -13,56 +13,73 @@ import {
import { ProposeRaw } from './propose-raw'; import { ProposeRaw } from './propose-raw';
import { ProposalEventDocument } from '@vegaprotocol/governance'; import { ProposalEventDocument } from '@vegaprotocol/governance';
import type { ProposalEventSubscription } from '@vegaprotocol/governance'; import type { ProposalEventSubscription } from '@vegaprotocol/governance';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
const paramsDelay = 20; const paramsDelay = 20;
const rawProposalNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const rawProposalNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.asset.minProposerBalance', key: 'governance.proposal.asset.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateAsset.minProposerBalance', key: 'governance.proposal.updateAsset.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.market.minProposerBalance', key: 'governance.proposal.market.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.minProposerBalance', key: 'governance.proposal.updateMarket.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateNetParam.minProposerBalance', key: 'governance.proposal.updateNetParam.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.freeform.minProposerBalance', key: 'governance.proposal.freeform.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
delay: paramsDelay, delay: paramsDelay,
}; };

View File

@ -5,9 +5,9 @@ import { VegaWalletContext } from '@vegaprotocol/wallet';
import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider'; import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider';
import { mockWalletContext } from '../../test-helpers/mocks'; import { mockWalletContext } from '../../test-helpers/mocks';
import { ProposeUpdateAsset } from './propose-update-asset'; import { ProposeUpdateAsset } from './propose-update-asset';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
jest.mock('@vegaprotocol/environment', () => ({ jest.mock('@vegaprotocol/environment', () => ({
useEnvironment: () => ({ useEnvironment: () => ({
@ -17,44 +17,58 @@ jest.mock('@vegaprotocol/environment', () => ({
const updateAssetNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const updateAssetNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateAsset.maxClose', key: 'governance.proposal.updateAsset.maxClose',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateAsset.maxEnact', key: 'governance.proposal.updateAsset.maxEnact',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateAsset.minClose', key: 'governance.proposal.updateAsset.minClose',
value: '1h0m0s', value: '1h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateAsset.minEnact', key: 'governance.proposal.updateAsset.minEnact',
value: '2h0m0s', value: '2h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateAsset.minProposerBalance', key: 'governance.proposal.updateAsset.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
}; };
const renderComponent = () => const renderComponent = () =>

View File

@ -6,51 +6,65 @@ import { VegaWalletContext } from '@vegaprotocol/wallet';
import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider'; import { AppStateProvider } from '../../../../contexts/app-state/app-state-provider';
import { mockWalletContext } from '../../test-helpers/mocks'; import { mockWalletContext } from '../../test-helpers/mocks';
import { ProposeUpdateMarket } from './propose-update-market'; import { ProposeUpdateMarket } from './propose-update-market';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { MARKETS_QUERY } from './propose-update-market'; import { MARKETS_QUERY } from './propose-update-market';
import type { ProposalMarketsQuery } from './__generated__/ProposalMarketsQuery'; import type { ProposalMarketsQuery } from './__generated__/ProposalMarketsQuery';
import { NETWORK_PARAMETERS_QUERY } from '@vegaprotocol/react-helpers'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
const updateMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const updateMarketNetworkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.maxClose', key: 'governance.proposal.updateMarket.maxClose',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.maxEnact', key: 'governance.proposal.updateMarket.maxEnact',
value: '8760h0m0s', value: '8760h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.minClose', key: 'governance.proposal.updateMarket.minClose',
value: '1h0m0s', value: '1h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.minEnact', key: 'governance.proposal.updateMarket.minEnact',
value: '2h0m0s', value: '2h0m0s',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.minProposerBalance', key: 'governance.proposal.updateMarket.minProposerBalance',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1000000000000000000', value: '1000000000000000000',
}, },
},
], ],
}, },
}, },
},
}; };
const marketQueryMock: MockedResponse<ProposalMarketsQuery> = { const marketQueryMock: MockedResponse<ProposalMarketsQuery> = {

View File

@ -1,6 +1,6 @@
import { NETWORK_PARAMS_QUERY } from '@vegaprotocol/web3'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
import type { MockedResponse } from '@apollo/client/testing'; import type { MockedResponse } from '@apollo/client/testing';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import type { PubKey } from '@vegaprotocol/wallet'; import type { PubKey } from '@vegaprotocol/wallet';
export const mockPubkey: PubKey = { export const mockPubkey: PubKey = {
@ -29,19 +29,23 @@ const mockEthereumConfig = {
export const networkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { export const networkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'blockchains.ethereumConfig', key: 'blockchains.ethereumConfig',
value: JSON.stringify(mockEthereumConfig), value: JSON.stringify(mockEthereumConfig),
}, },
},
], ],
}, },
}, },
},
}; };
const oneMinute = 1000 * 60; const oneMinute = 1000 * 60;

View File

@ -81,7 +81,7 @@ describe('ethereum wallet', { tags: '@smoke' }, () => {
// Using portfolio withdrawals tab is it requires Ethereum wallet connection // Using portfolio withdrawals tab is it requires Ethereum wallet connection
cy.visit('/portfolio'); cy.visit('/portfolio');
cy.mockGQL((req) => { cy.mockGQL((req) => {
aliasQuery(req, 'NetworkParamsQuery', generateNetworkParameters()); aliasQuery(req, 'NetworkParams', generateNetworkParameters());
}); });
cy.mockGQLSubscription(); cy.mockGQLSubscription();
cy.get('main[data-testid="portfolio"]').should('exist'); cy.get('main[data-testid="portfolio"]').should('exist');
@ -89,7 +89,7 @@ describe('ethereum wallet', { tags: '@smoke' }, () => {
}); });
it('can connect', () => { it('can connect', () => {
cy.wait('@NetworkParamsQuery'); cy.wait('@NetworkParams');
cy.getByTestId('connect-eth-wallet-btn').click(); cy.getByTestId('connect-eth-wallet-btn').click();
cy.getByTestId('web3-connector-list').should('exist'); cy.getByTestId('web3-connector-list').should('exist');
cy.getByTestId('web3-connector-MetaMask').click(); cy.getByTestId('web3-connector-MetaMask').click();

View File

@ -1,13 +1,15 @@
import merge from 'lodash/merge'; import merge from 'lodash/merge';
import type { NetworkParamsQuery } from '@vegaprotocol/web3'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import type { PartialDeep } from 'type-fest'; import type { PartialDeep } from 'type-fest';
export const generateNetworkParameters = ( export const generateNetworkParameters = (
override?: PartialDeep<NetworkParamsQuery> override?: PartialDeep<NetworkParamsQuery>
): NetworkParamsQuery => { ): NetworkParamsQuery => {
const defaultResult: NetworkParamsQuery = { const defaultResult: NetworkParamsQuery = {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'blockchains.ethereumConfig', key: 'blockchains.ethereumConfig',
value: JSON.stringify({ value: JSON.stringify({
@ -31,7 +33,9 @@ export const generateNetworkParameters = (
confirmations: 3, confirmations: 3,
}), }),
}, },
},
], ],
},
}; };
return merge(defaultResult, override); return merge(defaultResult, override);
}; };

View File

@ -101,7 +101,7 @@ const mockTradingPage = (
aliasQuery(req, 'Chart', generateChart()); aliasQuery(req, 'Chart', generateChart());
aliasQuery(req, 'Candles', generateCandles()); aliasQuery(req, 'Candles', generateCandles());
aliasQuery(req, 'Withdrawals', generateWithdrawals()); aliasQuery(req, 'Withdrawals', generateWithdrawals());
aliasQuery(req, 'NetworkParamsQuery', generateNetworkParameters()); aliasQuery(req, 'NetworkParams', generateNetworkParameters());
aliasQuery(req, 'EstimateOrder', generateEstimateOrder()); aliasQuery(req, 'EstimateOrder', generateEstimateOrder());
aliasQuery(req, 'MarketMarkPrice', generateMarkPrice()); aliasQuery(req, 'MarketMarkPrice', generateMarkPrice());
aliasQuery(req, 'PartyBalance', generatePartyBalance()); aliasQuery(req, 'PartyBalance', generatePartyBalance());

View File

@ -11,7 +11,17 @@ declare global {
export function addGetNetworkParameters() { export function addGetNetworkParameters() {
// @ts-ignore - ignoring Cypress type error which gets resolved when Cypress uses the command // @ts-ignore - ignoring Cypress type error which gets resolved when Cypress uses the command
Cypress.Commands.add('get_network_parameters', () => { Cypress.Commands.add('get_network_parameters', () => {
const mutation = '{networkParameters {key value}}'; const mutation = `
{
networkParametersConnection {
edges {
node {
key
value
}
}
}
}`;
cy.request({ cy.request({
method: 'POST', method: 'POST',
url: `http://localhost:3028/query`, url: `http://localhost:3028/query`,
@ -20,11 +30,12 @@ export function addGetNetworkParameters() {
}, },
headers: { 'content-type': 'application/json' }, headers: { 'content-type': 'application/json' },
}) })
.its('body.data.networkParameters') .its('body.data.networkParametersConnection.edges')
.then(function (response) { .then(function (response) {
// @ts-ignore - ignoring Cypress type error which gets resolved when Cypress uses the command // @ts-ignore - ignoring Cypress type error which gets resolved when Cypress uses the command
const object = response.reduce(function (r, e) { const object = response.reduce(function (r, e) {
r[e.key] = e.value; const { value, key } = e.node;
r[key] = value;
return r; return r;
}, {}); }, {});
return object; return object;

View File

@ -33,7 +33,7 @@ export interface LiquidityTableProps {
data?: LiquidityProvisionData[]; data?: LiquidityProvisionData[];
symbol?: string; symbol?: string;
assetDecimalPlaces?: number; assetDecimalPlaces?: number;
stakeToCcySiskas: string; stakeToCcySiskas: string | null;
} }
export const LiquidityTable = forwardRef<AgGridReact, LiquidityTableProps>( export const LiquidityTable = forwardRef<AgGridReact, LiquidityTableProps>(

View File

@ -0,0 +1,17 @@
query NetworkParams {
networkParametersConnection {
edges {
node {
key
value
}
}
}
}
query NetworkParam($key: String!) {
networkParameter(key: $key) {
key
value
}
}

View File

@ -1,31 +0,0 @@
/* tslint:disable */
/* eslint-disable */
// @generated
// This file was automatically generated and should not be edited.
// ====================================================
// GraphQL query operation: NetworkParam
// ====================================================
export interface NetworkParam_networkParameter {
__typename: "NetworkParameter";
/**
* The name of the network parameter
*/
key: string;
/**
* The value of the network parameter
*/
value: string;
}
export interface NetworkParam {
/**
* Return a single network parameter
*/
networkParameter: NetworkParam_networkParameter | null;
}
export interface NetworkParamVariables {
key: string;
}

View File

@ -1,27 +0,0 @@
/* tslint:disable */
/* eslint-disable */
// @generated
// This file was automatically generated and should not be edited.
// ====================================================
// GraphQL query operation: NetworkParams
// ====================================================
export interface NetworkParams_networkParameters {
__typename: "NetworkParameter";
/**
* The name of the network parameter
*/
key: string;
/**
* The value of the network parameter
*/
value: string;
}
export interface NetworkParams {
/**
* Return the full list of network parameters
*/
networkParameters: NetworkParams_networkParameters[] | null;
}

View File

@ -0,0 +1,93 @@
import { Schema as Types } from '@vegaprotocol/types';
import { gql } from '@apollo/client';
import * as Apollo from '@apollo/client';
const defaultOptions = {} as const;
export type NetworkParamsQueryVariables = Types.Exact<{ [key: string]: never; }>;
export type NetworkParamsQuery = { __typename?: 'Query', networkParametersConnection: { __typename?: 'NetworkParametersConnection', edges?: Array<{ __typename?: 'NetworkParameterEdge', node: { __typename?: 'NetworkParameter', key: string, value: string } } | null> | null } };
export type NetworkParamQueryVariables = Types.Exact<{
key: Types.Scalars['String'];
}>;
export type NetworkParamQuery = { __typename?: 'Query', networkParameter?: { __typename?: 'NetworkParameter', key: string, value: string } | null };
export const NetworkParamsDocument = gql`
query NetworkParams {
networkParametersConnection {
edges {
node {
key
value
}
}
}
}
`;
/**
* __useNetworkParamsQuery__
*
* To run a query within a React component, call `useNetworkParamsQuery` and pass it any options that fit your needs.
* When your component renders, `useNetworkParamsQuery` 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 } = useNetworkParamsQuery({
* variables: {
* },
* });
*/
export function useNetworkParamsQuery(baseOptions?: Apollo.QueryHookOptions<NetworkParamsQuery, NetworkParamsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<NetworkParamsQuery, NetworkParamsQueryVariables>(NetworkParamsDocument, options);
}
export function useNetworkParamsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<NetworkParamsQuery, NetworkParamsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<NetworkParamsQuery, NetworkParamsQueryVariables>(NetworkParamsDocument, options);
}
export type NetworkParamsQueryHookResult = ReturnType<typeof useNetworkParamsQuery>;
export type NetworkParamsLazyQueryHookResult = ReturnType<typeof useNetworkParamsLazyQuery>;
export type NetworkParamsQueryResult = Apollo.QueryResult<NetworkParamsQuery, NetworkParamsQueryVariables>;
export const NetworkParamDocument = gql`
query NetworkParam($key: String!) {
networkParameter(key: $key) {
key
value
}
}
`;
/**
* __useNetworkParamQuery__
*
* To run a query within a React component, call `useNetworkParamQuery` and pass it any options that fit your needs.
* When your component renders, `useNetworkParamQuery` 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 } = useNetworkParamQuery({
* variables: {
* key: // value for 'key'
* },
* });
*/
export function useNetworkParamQuery(baseOptions: Apollo.QueryHookOptions<NetworkParamQuery, NetworkParamQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<NetworkParamQuery, NetworkParamQueryVariables>(NetworkParamDocument, options);
}
export function useNetworkParamLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<NetworkParamQuery, NetworkParamQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<NetworkParamQuery, NetworkParamQueryVariables>(NetworkParamDocument, options);
}
export type NetworkParamQueryHookResult = ReturnType<typeof useNetworkParamQuery>;
export type NetworkParamLazyQueryHookResult = ReturnType<typeof useNetworkParamLazyQuery>;
export type NetworkParamQueryResult = Apollo.QueryResult<NetworkParamQuery, NetworkParamQueryVariables>;

View File

@ -1,4 +1,4 @@
export * from './__generated__/NetworkParam'; export * from './__generated___/NetworkParams';
export * from './use-apply-grid-transaction'; export * from './use-apply-grid-transaction';
export * from './use-data-provider'; export * from './use-data-provider';
export * from './use-fetch'; export * from './use-fetch';

View File

@ -4,19 +4,19 @@ import { MockedProvider } from '@apollo/client/testing';
import type { NetworkParamsKey } from './use-network-params'; import type { NetworkParamsKey } from './use-network-params';
import { import {
NetworkParams, NetworkParams,
NETWORK_PARAMETERS_QUERY,
NETWORK_PARAMETER_QUERY,
useNetworkParam, useNetworkParam,
useNetworkParams, useNetworkParams,
} from './use-network-params'; } from './use-network-params';
import type { ReactNode } from 'react'; import type { ReactNode } from 'react';
import type { NetworkParams as NetworkParamsResponse } from './__generated__/NetworkParams'; import type { NetworkParamsQuery } from './__generated___/NetworkParams';
import { NetworkParamDocument } from './__generated___/NetworkParams';
import { NetworkParamsDocument } from './__generated___/NetworkParams';
describe('useNetworkParam', () => { describe('useNetworkParam', () => {
const setup = (arg: NetworkParamsKey) => { const setup = (arg: NetworkParamsKey) => {
const mock: MockedResponse = { const mock: MockedResponse = {
request: { request: {
query: NETWORK_PARAMETER_QUERY, query: NetworkParamDocument,
variables: { variables: {
key: arg, key: arg,
}, },
@ -51,31 +51,39 @@ describe('useNetworkParam', () => {
describe('useNetworkParams', () => { describe('useNetworkParams', () => {
const setup = (args?: NetworkParamsKey[]) => { const setup = (args?: NetworkParamsKey[]) => {
const mock: MockedResponse<NetworkParamsResponse> = { const mock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMETERS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'spam.protection.proposal.min.tokens', key: 'spam.protection.proposal.min.tokens',
value: '1', value: '1',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'governance.proposal.updateMarket.minProposerBalance', key: 'governance.proposal.updateMarket.minProposerBalance',
value: '2', value: '2',
}, },
},
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'reward.staking.delegation.payoutDelay', key: 'reward.staking.delegation.payoutDelay',
value: '200', value: '200',
}, },
},
], ],
}, },
}, },
},
}; };
const wrapper = ({ children }: { children: ReactNode }) => ( const wrapper = ({ children }: { children: ReactNode }) => (
<MockedProvider mocks={[mock]}>{children}</MockedProvider> <MockedProvider mocks={[mock]}>{children}</MockedProvider>

View File

@ -1,24 +1,9 @@
import { gql, useQuery } from '@apollo/client'; import compact from 'lodash/compact';
import { useMemo } from 'react'; import { useMemo } from 'react';
import type { NetworkParams as NetworkParamsResponse } from './__generated__/NetworkParams'; import {
useNetworkParamQuery,
export const NETWORK_PARAMETERS_QUERY = gql` useNetworkParamsQuery,
query NetworkParams { } from './__generated___/NetworkParams';
networkParameters {
key
value
}
}
`;
export const NETWORK_PARAMETER_QUERY = gql`
query NetworkParam($key: String!) {
networkParameter(key: $key) {
key
value
}
}
`;
export const NetworkParams = { export const NetworkParams = {
blockchains_ethereumConfig: 'blockchains_ethereumConfig', blockchains_ethereumConfig: 'blockchains_ethereumConfig',
@ -126,16 +111,14 @@ type Result = {
}; };
export const useNetworkParams = <T extends NetworkParamsKey[]>(params?: T) => { export const useNetworkParams = <T extends NetworkParamsKey[]>(params?: T) => {
const { data, loading, error } = useQuery<NetworkParamsResponse, never>( const { data, loading, error } = useNetworkParamsQuery();
NETWORK_PARAMETERS_QUERY
);
const paramsObj = useMemo(() => { const paramsObj = useMemo(() => {
if (!data?.networkParameters) return null; if (!data?.networkParametersConnection.edges) return null;
return data.networkParameters return compact(data.networkParametersConnection.edges)
.map((p) => ({ .map((p) => ({
...p, ...p.node,
key: p.key.split('.').join('_'), key: p.node.key.split('.').join('_'),
})) }))
.filter((p) => { .filter((p) => {
if (params === undefined || params.length === 0) return true; if (params === undefined || params.length === 0) return true;
@ -156,11 +139,12 @@ export const useNetworkParams = <T extends NetworkParamsKey[]>(params?: T) => {
}; };
export const useNetworkParam = (param: NetworkParamsKey) => { export const useNetworkParam = (param: NetworkParamsKey) => {
const { data, loading, error } = useQuery(NETWORK_PARAMETER_QUERY, { const { data, loading, error } = useNetworkParamQuery({
variables: { variables: {
key: param, key: param,
}, },
}); });
return { return {
param: data?.networkParameter ? data.networkParameter.value : null, param: data?.networkParameter ? data.networkParameter.value : null,
loading, loading,

View File

@ -1,5 +1,4 @@
export * from './lib/ethereum-error'; export * from './lib/ethereum-error';
export * from './lib/__generated__/NetworkParamsQuery';
export * from './lib/use-bridge-contract'; export * from './lib/use-bridge-contract';
export * from './lib/use-token-contract'; export * from './lib/use-token-contract';
export * from './lib/use-token-decimals'; export * from './lib/use-token-decimals';

View File

@ -1,6 +0,0 @@
query NetworkParamsQuery {
networkParameters {
key
value
}
}

View File

@ -1,27 +0,0 @@
/* tslint:disable */
/* eslint-disable */
// @generated
// This file was automatically generated and should not be edited.
// ====================================================
// GraphQL query operation: NetworkParamsQuery
// ====================================================
export interface NetworkParamsQuery_networkParameters {
__typename: "NetworkParameter";
/**
* The name of the network parameter
*/
key: string;
/**
* The value of the network parameter
*/
value: string;
}
export interface NetworkParamsQuery {
/**
* Return the full list of network parameters
*/
networkParameters: NetworkParamsQuery_networkParameters[] | null;
}

View File

@ -1,46 +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 NetworkParamsQueryQueryVariables = Types.Exact<{ [key: string]: never; }>;
export type NetworkParamsQueryQuery = { __typename?: 'Query', networkParameters?: Array<{ __typename?: 'NetworkParameter', key: string, value: string }> | null };
export const NetworkParamsQueryDocument = gql`
query NetworkParamsQuery {
networkParameters {
key
value
}
}
`;
/**
* __useNetworkParamsQueryQuery__
*
* To run a query within a React component, call `useNetworkParamsQueryQuery` and pass it any options that fit your needs.
* When your component renders, `useNetworkParamsQueryQuery` 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 } = useNetworkParamsQueryQuery({
* variables: {
* },
* });
*/
export function useNetworkParamsQueryQuery(baseOptions?: Apollo.QueryHookOptions<NetworkParamsQueryQuery, NetworkParamsQueryQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<NetworkParamsQueryQuery, NetworkParamsQueryQueryVariables>(NetworkParamsQueryDocument, options);
}
export function useNetworkParamsQueryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<NetworkParamsQueryQuery, NetworkParamsQueryQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<NetworkParamsQueryQuery, NetworkParamsQueryQueryVariables>(NetworkParamsQueryDocument, options);
}
export type NetworkParamsQueryQueryHookResult = ReturnType<typeof useNetworkParamsQueryQuery>;
export type NetworkParamsQueryLazyQueryHookResult = ReturnType<typeof useNetworkParamsQueryLazyQuery>;
export type NetworkParamsQueryQueryResult = Apollo.QueryResult<NetworkParamsQueryQuery, NetworkParamsQueryQueryVariables>;

View File

@ -1,6 +1,6 @@
import { gql, useQuery } from '@apollo/client'; import { useNetworkParamsQuery } from '@vegaprotocol/react-helpers';
import compact from 'lodash/compact';
import { useMemo } from 'react'; import { useMemo } from 'react';
import type { NetworkParamsQuery } from './__generated__/NetworkParamsQuery';
export interface EthereumConfig { export interface EthereumConfig {
network_id: string; network_id: string;
@ -23,27 +23,17 @@ export interface EthereumConfig {
}; };
} }
export const NETWORK_PARAMS_QUERY = gql`
query NetworkParamsQuery {
networkParameters {
key
value
}
}
`;
export const useEthereumConfig = () => { export const useEthereumConfig = () => {
const { data, loading, error } = const { data, loading, error } = useNetworkParamsQuery();
useQuery<NetworkParamsQuery>(NETWORK_PARAMS_QUERY);
const config = useMemo(() => { const config = useMemo(() => {
if (!data) { if (!data) {
return null; return null;
} }
const param = data.networkParameters?.find( const param = compact(data.networkParametersConnection.edges)
(np) => np.key === 'blockchains.ethereumConfig' .map(({ node }) => node)
); ?.find((node) => node.key === 'blockchains.ethereumConfig');
if (!param) { if (!param) {
return null; return null;

View File

@ -3,8 +3,8 @@ import type { MockedResponse } from '@apollo/client/testing';
import { MockedProvider } from '@apollo/client/testing'; import { MockedProvider } from '@apollo/client/testing';
import { Web3Container } from './web3-container'; import { Web3Container } from './web3-container';
import type { useWeb3React } from '@web3-react/core'; import type { useWeb3React } from '@web3-react/core';
import type { NetworkParamsQuery } from './__generated__/NetworkParamsQuery'; import type { NetworkParamsQuery } from '@vegaprotocol/react-helpers';
import { NETWORK_PARAMS_QUERY } from './use-ethereum-config'; import { NetworkParamsDocument } from '@vegaprotocol/react-helpers';
import { EnvironmentProvider } from '@vegaprotocol/environment'; import { EnvironmentProvider } from '@vegaprotocol/environment';
const defaultHookValue = { const defaultHookValue = {
@ -26,19 +26,23 @@ const mockEthereumConfig = {
const networkParamsQueryMock: MockedResponse<NetworkParamsQuery> = { const networkParamsQueryMock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'blockchains.ethereumConfig', key: 'blockchains.ethereumConfig',
value: JSON.stringify(mockEthereumConfig), value: JSON.stringify(mockEthereumConfig),
}, },
},
], ],
}, },
}, },
},
}; };
const mockEnvironment = { const mockEnvironment = {
@ -135,19 +139,23 @@ it('Passes ethereum config to children', async () => {
it('Shows no config found message if the network parameter doesnt exist', async () => { it('Shows no config found message if the network parameter doesnt exist', async () => {
const mock: MockedResponse<NetworkParamsQuery> = { const mock: MockedResponse<NetworkParamsQuery> = {
request: { request: {
query: NETWORK_PARAMS_QUERY, query: NetworkParamsDocument,
}, },
result: { result: {
data: { data: {
networkParameters: [ networkParametersConnection: {
edges: [
{ {
node: {
__typename: 'NetworkParameter', __typename: 'NetworkParameter',
key: 'nope', key: 'nope',
value: 'foo', value: 'foo',
}, },
},
], ],
}, },
}, },
},
}; };
setup(mock); setup(mock);
expect(screen.getByText('Loading...')).toBeInTheDocument(); expect(screen.getByText('Loading...')).toBeInTheDocument();