From ec9df89c609d2a77d8b40fceea3f07cacc5fbfa9 Mon Sep 17 00:00:00 2001 From: Kyle Lawlor-Bagcal Date: Wed, 19 Jul 2023 20:27:42 -0400 Subject: [PATCH] feat: use react-query and graphql-request --- src/App.tsx | 7 +++++++ src/gql/gql.ts | 5 +++++ src/gql/graphql.ts | 9 +++++++++ src/graphql/indexer/allProposals.graphql | 7 +++++++ 4 files changed, 28 insertions(+) create mode 100644 src/graphql/indexer/allProposals.graphql diff --git a/src/App.tsx b/src/App.tsx index df679ac..0be5568 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,10 +7,17 @@ import { Wallet } from 'store/wallet.store' import { EnableKeplr } from 'pages/enable-keplr-page' import { InstallKeplr } from 'pages/install-keplr-page' import { Loading } from '@/molecules/loading' +import request from 'graphql-request' +import { useQuery } from '@tanstack/react-query' +import { AllProposalsDocument } from 'gql/graphql' export default function App() { useKeplr() const snap = useSnapshot(Wallet) + const { data } = useQuery(['proposals'], async () => + request('http://localhost:5000/indexer/graphql', AllProposalsDocument), + ) + console.log(data?.allProposals?.nodes) switch (snap.keplrStatus) { case 'ready': diff --git a/src/gql/gql.ts b/src/gql/gql.ts index c7bea7b..ccdecf2 100644 --- a/src/gql/gql.ts +++ b/src/gql/gql.ts @@ -13,6 +13,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/ * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { + "query AllProposals {\n allProposals {\n nodes {\n ...ProposalItem\n }\n }\n}": types.AllProposalsDocument, "fragment ProposalItem on Proposal {\n type\n blockHeight\n txIdx\n msgIdx\n chainNum\n timestamp\n txHash\n id: proposalId\n status\n groupPolicyAddress\n groupPolicyVersion\n metadata\n proposers\n submitTime\n groupVersion\n groupPolicyAddress\n finalTallyResult\n votingPeriodEnd\n executorResult\n messages\n}": types.ProposalItemFragmentDoc, "query ProposalsByGroupPolicyAddress($groupPolicyAddress: String!) {\n allProposals(condition: {groupPolicyAddress: $groupPolicyAddress}) {\n nodes {\n ...ProposalItem\n }\n }\n}": types.ProposalsByGroupPolicyAddressDocument, }; @@ -31,6 +32,10 @@ const documents = { */ export function graphql(source: string): unknown; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "query AllProposals {\n allProposals {\n nodes {\n ...ProposalItem\n }\n }\n}"): (typeof documents)["query AllProposals {\n allProposals {\n nodes {\n ...ProposalItem\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/src/gql/graphql.ts b/src/gql/graphql.ts index d2ef1de..59bd64b 100644 --- a/src/gql/graphql.ts +++ b/src/gql/graphql.ts @@ -2730,6 +2730,14 @@ export type UpdateTxPayloadTxEdgeArgs = { orderBy?: InputMaybe>; }; +export type AllProposalsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type AllProposalsQuery = { __typename?: 'Query', allProposals?: { __typename?: 'ProposalsConnection', nodes: Array<( + { __typename?: 'Proposal' } + & { ' $fragmentRefs'?: { 'ProposalItemFragment': ProposalItemFragment } } + ) | null> } | null }; + export type ProposalItemFragment = { __typename?: 'Proposal', type: string, blockHeight: any, txIdx: number, msgIdx: number, chainNum: number, timestamp?: any | null, txHash: string, status: string, groupPolicyAddress: string, groupPolicyVersion: any, metadata: string, proposers: Array, submitTime?: any | null, groupVersion: any, finalTallyResult: any, votingPeriodEnd: any, executorResult: string, messages: any, id: any } & { ' $fragmentName'?: 'ProposalItemFragment' }; export type ProposalsByGroupPolicyAddressQueryVariables = Exact<{ @@ -2743,4 +2751,5 @@ export type ProposalsByGroupPolicyAddressQuery = { __typename?: 'Query', allProp ) | null> } | null }; export const ProposalItemFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProposalItem"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Proposal"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"blockHeight"}},{"kind":"Field","name":{"kind":"Name","value":"txIdx"}},{"kind":"Field","name":{"kind":"Name","value":"msgIdx"}},{"kind":"Field","name":{"kind":"Name","value":"chainNum"}},{"kind":"Field","name":{"kind":"Name","value":"timestamp"}},{"kind":"Field","name":{"kind":"Name","value":"txHash"}},{"kind":"Field","alias":{"kind":"Name","value":"id"},"name":{"kind":"Name","value":"proposalId"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyAddress"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyVersion"}},{"kind":"Field","name":{"kind":"Name","value":"metadata"}},{"kind":"Field","name":{"kind":"Name","value":"proposers"}},{"kind":"Field","name":{"kind":"Name","value":"submitTime"}},{"kind":"Field","name":{"kind":"Name","value":"groupVersion"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyAddress"}},{"kind":"Field","name":{"kind":"Name","value":"finalTallyResult"}},{"kind":"Field","name":{"kind":"Name","value":"votingPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"executorResult"}},{"kind":"Field","name":{"kind":"Name","value":"messages"}}]}}]} as unknown as DocumentNode; +export const AllProposalsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AllProposals"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"allProposals"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"nodes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProposalItem"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProposalItem"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Proposal"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"blockHeight"}},{"kind":"Field","name":{"kind":"Name","value":"txIdx"}},{"kind":"Field","name":{"kind":"Name","value":"msgIdx"}},{"kind":"Field","name":{"kind":"Name","value":"chainNum"}},{"kind":"Field","name":{"kind":"Name","value":"timestamp"}},{"kind":"Field","name":{"kind":"Name","value":"txHash"}},{"kind":"Field","alias":{"kind":"Name","value":"id"},"name":{"kind":"Name","value":"proposalId"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyAddress"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyVersion"}},{"kind":"Field","name":{"kind":"Name","value":"metadata"}},{"kind":"Field","name":{"kind":"Name","value":"proposers"}},{"kind":"Field","name":{"kind":"Name","value":"submitTime"}},{"kind":"Field","name":{"kind":"Name","value":"groupVersion"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyAddress"}},{"kind":"Field","name":{"kind":"Name","value":"finalTallyResult"}},{"kind":"Field","name":{"kind":"Name","value":"votingPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"executorResult"}},{"kind":"Field","name":{"kind":"Name","value":"messages"}}]}}]} as unknown as DocumentNode; export const ProposalsByGroupPolicyAddressDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProposalsByGroupPolicyAddress"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"groupPolicyAddress"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"allProposals"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"condition"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"groupPolicyAddress"},"value":{"kind":"Variable","name":{"kind":"Name","value":"groupPolicyAddress"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"nodes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProposalItem"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProposalItem"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Proposal"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"blockHeight"}},{"kind":"Field","name":{"kind":"Name","value":"txIdx"}},{"kind":"Field","name":{"kind":"Name","value":"msgIdx"}},{"kind":"Field","name":{"kind":"Name","value":"chainNum"}},{"kind":"Field","name":{"kind":"Name","value":"timestamp"}},{"kind":"Field","name":{"kind":"Name","value":"txHash"}},{"kind":"Field","alias":{"kind":"Name","value":"id"},"name":{"kind":"Name","value":"proposalId"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyAddress"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyVersion"}},{"kind":"Field","name":{"kind":"Name","value":"metadata"}},{"kind":"Field","name":{"kind":"Name","value":"proposers"}},{"kind":"Field","name":{"kind":"Name","value":"submitTime"}},{"kind":"Field","name":{"kind":"Name","value":"groupVersion"}},{"kind":"Field","name":{"kind":"Name","value":"groupPolicyAddress"}},{"kind":"Field","name":{"kind":"Name","value":"finalTallyResult"}},{"kind":"Field","name":{"kind":"Name","value":"votingPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"executorResult"}},{"kind":"Field","name":{"kind":"Name","value":"messages"}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/src/graphql/indexer/allProposals.graphql b/src/graphql/indexer/allProposals.graphql new file mode 100644 index 0000000..09562b1 --- /dev/null +++ b/src/graphql/indexer/allProposals.graphql @@ -0,0 +1,7 @@ +query AllProposals { + allProposals { + nodes { + ...ProposalItem + } + } +}