diff --git a/CHANGELOG.md b/CHANGELOG.md index ad3d94280..2ffdce292 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +- [#230](https://github.com/alleslabs/celatone-frontend/pull/230) Add cw2info to code table - [#228](https://github.com/alleslabs/celatone-frontend/pull/228) Add Faucet testnet page - [#79](https://github.com/alleslabs/celatone-frontend/pull/79) Add dropdown menu and wireup up json attach funds - [#225](https://github.com/alleslabs/celatone-frontend/pull/225) Add assets section in account details page diff --git a/src/lib/gql/gql.ts b/src/lib/gql/gql.ts index 5b3b351db..11acd2bbe 100644 --- a/src/lib/gql/gql.ts +++ b/src/lib/gql/gql.ts @@ -5,15 +5,15 @@ import { TypedDocumentNode as DocumentNode } from "@graphql-typed-document-node/ const documents = { "\n query getBlockTimestampByHeightQuery($height: Int!) {\n blocks_by_pk(height: $height) {\n timestamp\n }\n }\n": types.GetBlockTimestampByHeightQueryDocument, - "\n query getCodeListQuery {\n codes(limit: 100, offset: 0, order_by: { id: desc }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n": + "\n query getCodeListQuery {\n codes(limit: 100, offset: 0, order_by: { id: desc }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n": types.GetCodeListQueryDocument, - "\n query getCodeListByUserQuery($walletAddr: String!) {\n codes(\n where: { account: { address: { _eq: $walletAddr } } }\n limit: 100\n offset: 0\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n": + "\n query getCodeListByUserQuery($walletAddr: String!) {\n codes(\n where: { account: { address: { _eq: $walletAddr } } }\n limit: 100\n offset: 0\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n": types.GetCodeListByUserQueryDocument, - "\n query getCodeListByIDsQuery($ids: [Int!]!) {\n codes(where: { id: { _in: $ids } }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n": + "\n query getCodeListByIDsQuery($ids: [Int!]!) {\n codes(where: { id: { _in: $ids } }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n": types.GetCodeListByIDsQueryDocument, - "\n query getCodeDataByCodeId($codeId: Int!) {\n codes_by_pk(id: $codeId) {\n id\n account {\n address\n }\n transaction {\n hash\n block {\n height\n timestamp\n }\n }\n # Can only have 1 store code proposal\n code_proposals(limit: 1) {\n proposal_id\n block {\n height\n timestamp\n }\n }\n access_config_permission\n access_config_addresses\n }\n }\n": + "\n query getCodeDataByCodeId($codeId: Int!) {\n codes_by_pk(id: $codeId) {\n id\n account {\n address\n }\n transaction {\n hash\n block {\n height\n timestamp\n }\n }\n # Can only have 1 store code proposal\n code_proposals(limit: 1) {\n proposal_id\n block {\n height\n timestamp\n }\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n": types.GetCodeDataByCodeIdDocument, - "\n query getCodeListByWalletAddressPagination(\n $walletAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n codes(\n where: { account: { address: { _eq: $walletAddress } } }\n limit: $pageSize\n offset: $offset\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n": + "\n query getCodeListByWalletAddressPagination(\n $walletAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n codes(\n where: { account: { address: { _eq: $walletAddress } } }\n limit: $pageSize\n offset: $offset\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n": types.GetCodeListByWalletAddressPaginationDocument, "\n query getCodeListCountByWalletAddress($walletAddress: String!) {\n codes_aggregate(where: { account: { address: { _eq: $walletAddress } } }) {\n aggregate {\n count\n }\n }\n }\n": types.GetCodeListCountByWalletAddressDocument, @@ -31,7 +31,7 @@ const documents = { types.GetContractListByCodeIdPaginationDocument, "\n query getContractListCountByCodeId($codeId: Int!) {\n contracts_aggregate(where: { code_id: { _eq: $codeId } }) {\n aggregate {\n count\n }\n }\n }\n": types.GetContractListCountByCodeIdDocument, - "\n query getMigrationHistoriesByContractAddress(\n $contractAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n contract_histories(\n where: { contract: { address: { _eq: $contractAddress } } }\n order_by: { block: { timestamp: desc } }\n limit: $pageSize\n offset: $offset\n ) {\n code_id\n account {\n address\n }\n block {\n height\n timestamp\n }\n remark\n code {\n account {\n address\n }\n }\n }\n }\n": + "\n query getMigrationHistoriesByContractAddress(\n $contractAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n contract_histories(\n where: { contract: { address: { _eq: $contractAddress } } }\n order_by: { block: { timestamp: desc } }\n limit: $pageSize\n offset: $offset\n ) {\n code_id\n account {\n address\n }\n block {\n height\n timestamp\n }\n remark\n code {\n account {\n address\n }\n cw2_contract\n cw2_version\n }\n }\n }\n": types.GetMigrationHistoriesByContractAddressDocument, "\n query getMigrationHistoriesCountByContractAddress($contractAddress: String!) {\n contract_histories_aggregate(\n where: { contract: { address: { _eq: $contractAddress } } }\n ) {\n aggregate {\n count\n }\n }\n }\n": types.GetMigrationHistoriesCountByContractAddressDocument, @@ -63,20 +63,20 @@ export function graphql( source: "\n query getBlockTimestampByHeightQuery($height: Int!) {\n blocks_by_pk(height: $height) {\n timestamp\n }\n }\n" ): typeof documents["\n query getBlockTimestampByHeightQuery($height: Int!) {\n blocks_by_pk(height: $height) {\n timestamp\n }\n }\n"]; export function graphql( - source: "\n query getCodeListQuery {\n codes(limit: 100, offset: 0, order_by: { id: desc }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n" -): typeof documents["\n query getCodeListQuery {\n codes(limit: 100, offset: 0, order_by: { id: desc }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n"]; + source: "\n query getCodeListQuery {\n codes(limit: 100, offset: 0, order_by: { id: desc }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n" +): typeof documents["\n query getCodeListQuery {\n codes(limit: 100, offset: 0, order_by: { id: desc }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n"]; export function graphql( - source: "\n query getCodeListByUserQuery($walletAddr: String!) {\n codes(\n where: { account: { address: { _eq: $walletAddr } } }\n limit: 100\n offset: 0\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n" -): typeof documents["\n query getCodeListByUserQuery($walletAddr: String!) {\n codes(\n where: { account: { address: { _eq: $walletAddr } } }\n limit: 100\n offset: 0\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n"]; + source: "\n query getCodeListByUserQuery($walletAddr: String!) {\n codes(\n where: { account: { address: { _eq: $walletAddr } } }\n limit: 100\n offset: 0\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n" +): typeof documents["\n query getCodeListByUserQuery($walletAddr: String!) {\n codes(\n where: { account: { address: { _eq: $walletAddr } } }\n limit: 100\n offset: 0\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n"]; export function graphql( - source: "\n query getCodeListByIDsQuery($ids: [Int!]!) {\n codes(where: { id: { _in: $ids } }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n" -): typeof documents["\n query getCodeListByIDsQuery($ids: [Int!]!) {\n codes(where: { id: { _in: $ids } }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n"]; + source: "\n query getCodeListByIDsQuery($ids: [Int!]!) {\n codes(where: { id: { _in: $ids } }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n" +): typeof documents["\n query getCodeListByIDsQuery($ids: [Int!]!) {\n codes(where: { id: { _in: $ids } }) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n"]; export function graphql( - source: "\n query getCodeDataByCodeId($codeId: Int!) {\n codes_by_pk(id: $codeId) {\n id\n account {\n address\n }\n transaction {\n hash\n block {\n height\n timestamp\n }\n }\n # Can only have 1 store code proposal\n code_proposals(limit: 1) {\n proposal_id\n block {\n height\n timestamp\n }\n }\n access_config_permission\n access_config_addresses\n }\n }\n" -): typeof documents["\n query getCodeDataByCodeId($codeId: Int!) {\n codes_by_pk(id: $codeId) {\n id\n account {\n address\n }\n transaction {\n hash\n block {\n height\n timestamp\n }\n }\n # Can only have 1 store code proposal\n code_proposals(limit: 1) {\n proposal_id\n block {\n height\n timestamp\n }\n }\n access_config_permission\n access_config_addresses\n }\n }\n"]; + source: "\n query getCodeDataByCodeId($codeId: Int!) {\n codes_by_pk(id: $codeId) {\n id\n account {\n address\n }\n transaction {\n hash\n block {\n height\n timestamp\n }\n }\n # Can only have 1 store code proposal\n code_proposals(limit: 1) {\n proposal_id\n block {\n height\n timestamp\n }\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n" +): typeof documents["\n query getCodeDataByCodeId($codeId: Int!) {\n codes_by_pk(id: $codeId) {\n id\n account {\n address\n }\n transaction {\n hash\n block {\n height\n timestamp\n }\n }\n # Can only have 1 store code proposal\n code_proposals(limit: 1) {\n proposal_id\n block {\n height\n timestamp\n }\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n"]; export function graphql( - source: "\n query getCodeListByWalletAddressPagination(\n $walletAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n codes(\n where: { account: { address: { _eq: $walletAddress } } }\n limit: $pageSize\n offset: $offset\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n" -): typeof documents["\n query getCodeListByWalletAddressPagination(\n $walletAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n codes(\n where: { account: { address: { _eq: $walletAddress } } }\n limit: $pageSize\n offset: $offset\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n }\n }\n"]; + source: "\n query getCodeListByWalletAddressPagination(\n $walletAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n codes(\n where: { account: { address: { _eq: $walletAddress } } }\n limit: $pageSize\n offset: $offset\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n" +): typeof documents["\n query getCodeListByWalletAddressPagination(\n $walletAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n codes(\n where: { account: { address: { _eq: $walletAddress } } }\n limit: $pageSize\n offset: $offset\n order_by: { id: desc }\n ) {\n id\n contracts_aggregate {\n aggregate {\n count\n }\n }\n account {\n uploader: address\n }\n access_config_permission\n access_config_addresses\n cw2_contract\n cw2_version\n }\n }\n"]; export function graphql( source: "\n query getCodeListCountByWalletAddress($walletAddress: String!) {\n codes_aggregate(where: { account: { address: { _eq: $walletAddress } } }) {\n aggregate {\n count\n }\n }\n }\n" ): typeof documents["\n query getCodeListCountByWalletAddress($walletAddress: String!) {\n codes_aggregate(where: { account: { address: { _eq: $walletAddress } } }) {\n aggregate {\n count\n }\n }\n }\n"]; @@ -102,8 +102,8 @@ export function graphql( source: "\n query getContractListCountByCodeId($codeId: Int!) {\n contracts_aggregate(where: { code_id: { _eq: $codeId } }) {\n aggregate {\n count\n }\n }\n }\n" ): typeof documents["\n query getContractListCountByCodeId($codeId: Int!) {\n contracts_aggregate(where: { code_id: { _eq: $codeId } }) {\n aggregate {\n count\n }\n }\n }\n"]; export function graphql( - source: "\n query getMigrationHistoriesByContractAddress(\n $contractAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n contract_histories(\n where: { contract: { address: { _eq: $contractAddress } } }\n order_by: { block: { timestamp: desc } }\n limit: $pageSize\n offset: $offset\n ) {\n code_id\n account {\n address\n }\n block {\n height\n timestamp\n }\n remark\n code {\n account {\n address\n }\n }\n }\n }\n" -): typeof documents["\n query getMigrationHistoriesByContractAddress(\n $contractAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n contract_histories(\n where: { contract: { address: { _eq: $contractAddress } } }\n order_by: { block: { timestamp: desc } }\n limit: $pageSize\n offset: $offset\n ) {\n code_id\n account {\n address\n }\n block {\n height\n timestamp\n }\n remark\n code {\n account {\n address\n }\n }\n }\n }\n"]; + source: "\n query getMigrationHistoriesByContractAddress(\n $contractAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n contract_histories(\n where: { contract: { address: { _eq: $contractAddress } } }\n order_by: { block: { timestamp: desc } }\n limit: $pageSize\n offset: $offset\n ) {\n code_id\n account {\n address\n }\n block {\n height\n timestamp\n }\n remark\n code {\n account {\n address\n }\n cw2_contract\n cw2_version\n }\n }\n }\n" +): typeof documents["\n query getMigrationHistoriesByContractAddress(\n $contractAddress: String!\n $offset: Int!\n $pageSize: Int!\n ) {\n contract_histories(\n where: { contract: { address: { _eq: $contractAddress } } }\n order_by: { block: { timestamp: desc } }\n limit: $pageSize\n offset: $offset\n ) {\n code_id\n account {\n address\n }\n block {\n height\n timestamp\n }\n remark\n code {\n account {\n address\n }\n cw2_contract\n cw2_version\n }\n }\n }\n"]; export function graphql( source: "\n query getMigrationHistoriesCountByContractAddress($contractAddress: String!) {\n contract_histories_aggregate(\n where: { contract: { address: { _eq: $contractAddress } } }\n ) {\n aggregate {\n count\n }\n }\n }\n" ): typeof documents["\n query getMigrationHistoriesCountByContractAddress($contractAddress: String!) {\n contract_histories_aggregate(\n where: { contract: { address: { _eq: $contractAddress } } }\n ) {\n aggregate {\n count\n }\n }\n }\n"]; diff --git a/src/lib/gql/graphql.ts b/src/lib/gql/graphql.ts index a403322bd..f80954d03 100644 --- a/src/lib/gql/graphql.ts +++ b/src/lib/gql/graphql.ts @@ -1439,6 +1439,8 @@ export type Codes = { contracts: Array; /** An aggregate relationship */ contracts_aggregate: Contracts_Aggregate; + cw2_contract?: Maybe; + cw2_version?: Maybe; id: Scalars["Int"]; /** An object relationship */ transaction?: Maybe; @@ -1599,6 +1601,8 @@ export type Codes_Bool_Exp = { contract_instantiated?: InputMaybe; contracts?: InputMaybe; contracts_aggregate?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction?: InputMaybe; transaction_id?: InputMaybe; @@ -1628,6 +1632,8 @@ export type Codes_Insert_Input = { contract_histories?: InputMaybe; contract_instantiated?: InputMaybe; contracts?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction?: InputMaybe; transaction_id?: InputMaybe; @@ -1639,6 +1645,8 @@ export type Codes_Max_Fields = { __typename?: "codes_max_fields"; access_config_permission?: Maybe; contract_instantiated?: Maybe; + cw2_contract?: Maybe; + cw2_version?: Maybe; id?: Maybe; transaction_id?: Maybe; uploader?: Maybe; @@ -1648,6 +1656,8 @@ export type Codes_Max_Fields = { export type Codes_Max_Order_By = { access_config_permission?: InputMaybe; contract_instantiated?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction_id?: InputMaybe; uploader?: InputMaybe; @@ -1658,6 +1668,8 @@ export type Codes_Min_Fields = { __typename?: "codes_min_fields"; access_config_permission?: Maybe; contract_instantiated?: Maybe; + cw2_contract?: Maybe; + cw2_version?: Maybe; id?: Maybe; transaction_id?: Maybe; uploader?: Maybe; @@ -1667,6 +1679,8 @@ export type Codes_Min_Fields = { export type Codes_Min_Order_By = { access_config_permission?: InputMaybe; contract_instantiated?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction_id?: InputMaybe; uploader?: InputMaybe; @@ -1704,6 +1718,8 @@ export type Codes_Order_By = { contract_histories_aggregate?: InputMaybe; contract_instantiated?: InputMaybe; contracts_aggregate?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction?: InputMaybe; transaction_id?: InputMaybe; @@ -1724,6 +1740,10 @@ export enum Codes_Select_Column { /** column name */ ContractInstantiated = "contract_instantiated", /** column name */ + Cw2Contract = "cw2_contract", + /** column name */ + Cw2Version = "cw2_version", + /** column name */ Id = "id", /** column name */ TransactionId = "transaction_id", @@ -1736,6 +1756,8 @@ export type Codes_Set_Input = { access_config_addresses?: InputMaybe; access_config_permission?: InputMaybe; contract_instantiated?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction_id?: InputMaybe; uploader?: InputMaybe; @@ -1805,6 +1827,8 @@ export type Codes_Stream_Cursor_Value_Input = { access_config_addresses?: InputMaybe; access_config_permission?: InputMaybe; contract_instantiated?: InputMaybe; + cw2_contract?: InputMaybe; + cw2_version?: InputMaybe; id?: InputMaybe; transaction_id?: InputMaybe; uploader?: InputMaybe; @@ -1836,6 +1860,10 @@ export enum Codes_Update_Column { /** column name */ ContractInstantiated = "contract_instantiated", /** column name */ + Cw2Contract = "cw2_contract", + /** column name */ + Cw2Version = "cw2_version", + /** column name */ Id = "id", /** column name */ TransactionId = "transaction_id", @@ -6904,6 +6932,8 @@ export type GetCodeListQueryQuery = { id: number; access_config_permission: string; access_config_addresses: any; + cw2_contract?: string | null; + cw2_version?: string | null; contracts_aggregate: { __typename?: "contracts_aggregate"; aggregate?: { @@ -6926,6 +6956,8 @@ export type GetCodeListByUserQueryQuery = { id: number; access_config_permission: string; access_config_addresses: any; + cw2_contract?: string | null; + cw2_version?: string | null; contracts_aggregate: { __typename?: "contracts_aggregate"; aggregate?: { @@ -6948,6 +6980,8 @@ export type GetCodeListByIDsQueryQuery = { id: number; access_config_permission: string; access_config_addresses: any; + cw2_contract?: string | null; + cw2_version?: string | null; contracts_aggregate: { __typename?: "contracts_aggregate"; aggregate?: { @@ -6970,6 +7004,8 @@ export type GetCodeDataByCodeIdQuery = { id: number; access_config_permission: string; access_config_addresses: any; + cw2_contract?: string | null; + cw2_version?: string | null; account: { __typename?: "accounts"; address: string }; transaction?: { __typename?: "transactions"; @@ -6997,6 +7033,8 @@ export type GetCodeListByWalletAddressPaginationQuery = { id: number; access_config_permission: string; access_config_addresses: any; + cw2_contract?: string | null; + cw2_version?: string | null; contracts_aggregate: { __typename?: "contracts_aggregate"; aggregate?: { @@ -7150,6 +7188,8 @@ export type GetMigrationHistoriesByContractAddressQuery = { block: { __typename?: "blocks"; height: number; timestamp: any }; code: { __typename?: "codes"; + cw2_contract?: string | null; + cw2_version?: string | null; account: { __typename?: "accounts"; address: string }; }; }>; @@ -7541,6 +7581,11 @@ export const GetCodeListQueryDocument = { kind: "Field", name: { kind: "Name", value: "access_config_addresses" }, }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_contract" }, + }, + { kind: "Field", name: { kind: "Name", value: "cw2_version" } }, ], }, }, @@ -7690,6 +7735,11 @@ export const GetCodeListByUserQueryDocument = { kind: "Field", name: { kind: "Name", value: "access_config_addresses" }, }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_contract" }, + }, + { kind: "Field", name: { kind: "Name", value: "cw2_version" } }, ], }, }, @@ -7809,6 +7859,11 @@ export const GetCodeListByIDsQueryDocument = { kind: "Field", name: { kind: "Name", value: "access_config_addresses" }, }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_contract" }, + }, + { kind: "Field", name: { kind: "Name", value: "cw2_version" } }, ], }, }, @@ -7945,6 +8000,11 @@ export const GetCodeDataByCodeIdDocument = { kind: "Field", name: { kind: "Name", value: "access_config_addresses" }, }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_contract" }, + }, + { kind: "Field", name: { kind: "Name", value: "cw2_version" } }, ], }, }, @@ -8125,6 +8185,11 @@ export const GetCodeListByWalletAddressPaginationDocument = { kind: "Field", name: { kind: "Name", value: "access_config_addresses" }, }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_contract" }, + }, + { kind: "Field", name: { kind: "Name", value: "cw2_version" } }, ], }, }, @@ -9390,6 +9455,14 @@ export const GetMigrationHistoriesByContractAddressDocument = { ], }, }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_contract" }, + }, + { + kind: "Field", + name: { kind: "Name", value: "cw2_version" }, + }, ], }, }, diff --git a/src/lib/model/code.ts b/src/lib/model/code.ts index b10be39ea..dc16b5331 100644 --- a/src/lib/model/code.ts +++ b/src/lib/model/code.ts @@ -16,9 +16,9 @@ import type { CodeData, PublicDetail, Option, - PublicCodeData, HumanAddr, CodeInfo, + PublicCode, } from "lib/types"; import { InstantiatePermission } from "lib/types"; @@ -27,7 +27,7 @@ export interface CodeDataState { chainId: string; codeData: Option; publicProject: { - publicCodeData: Option; + publicCodeData: Option; publicDetail: Option; }; } @@ -87,6 +87,8 @@ export const useSavedCodes = () => { instantiatePermission: rawSavedCode?.instantiatePermission ?? InstantiatePermission.UNKNOWN, permissionAddresses: rawSavedCode?.permissionAddresses ?? [], + cw2Contract: rawSavedCode?.cw2Contract, + cw2Version: rawSavedCode?.cw2Version, isSaved: true, }; }); diff --git a/src/lib/pages/code-details/index.tsx b/src/lib/pages/code-details/index.tsx index 85dd67f67..be1ed6383 100644 --- a/src/lib/pages/code-details/index.tsx +++ b/src/lib/pages/code-details/index.tsx @@ -13,7 +13,7 @@ import { useCodeData } from "lib/model/code"; import { useCodeStore } from "lib/providers/store"; import { AmpEvent, AmpTrack } from "lib/services/amplitude"; import { InstantiatePermission } from "lib/types"; -import { getFirstQueryParam, isCodeId } from "lib/utils"; +import { getCw2Info, getFirstQueryParam, isCodeId } from "lib/utils"; import { CodeInfoSection } from "./components/CodeInfoSection"; import { CTASection } from "./components/CTASection"; @@ -34,6 +34,8 @@ const CodeDetailsBody = observer( if (!codeData) return ; + const cw2Info = getCw2Info(codeData.cw2Contract, codeData.cw2Version); + return ( <> @@ -56,10 +58,22 @@ const CodeDetailsBody = observer( - Code ID + Code ID: + + + CW2 Info: + + + {cw2Info ?? "N/A"} + + diff --git a/src/lib/pages/codes/components/CodesTable.tsx b/src/lib/pages/codes/components/CodesTable.tsx index ce0d6997c..24ec09ebf 100644 --- a/src/lib/pages/codes/components/CodesTable.tsx +++ b/src/lib/pages/codes/components/CodesTable.tsx @@ -25,6 +25,7 @@ import { CodeNameCell, } from "lib/components/table"; import type { CodeInfo } from "lib/types"; +import { getCw2Info } from "lib/utils"; // Types of Table: Recent Codes / My Stored Codes / My Saved Codes type TableType = "recent" | "stored" | "saved"; @@ -47,7 +48,7 @@ interface OtherTBodyProps { } const TEMPLATE_COLUMNS = - "max(80px) minmax(320px, 1fr) max(120px) max(160px) minmax(320px, 0.75fr)"; + "max(80px) minmax(300px, 1fr) minmax(220px, 1fr) max(120px) max(160px) minmax(320px, 0.75fr)"; const StateContainer = ({ children }: { children: ReactNode }) => ( ( > Code ID Code Name + CW2 Info Contracts Uploader Permission @@ -121,6 +123,7 @@ const CodeTableRow = ({ code }: CodesRowProps) => { const goToCodeDetails = () => { navigate({ pathname: `/code/${code.id}` }); }; + const cw2Info = getCw2Info(code.cw2Contract, code.cw2Version); return ( { + + + {cw2Info ?? "N/A"} + + Code ID Code Name + CW2 Info Sender Block Height Timestamp diff --git a/src/lib/pages/contract-details/components/tables/migration/MigrationRow.tsx b/src/lib/pages/contract-details/components/tables/migration/MigrationRow.tsx index 4fddd6362..351f913aa 100644 --- a/src/lib/pages/contract-details/components/tables/migration/MigrationRow.tsx +++ b/src/lib/pages/contract-details/components/tables/migration/MigrationRow.tsx @@ -6,7 +6,7 @@ import { ExplorerLink } from "lib/components/ExplorerLink"; import { TableRow, CodeNameCell } from "lib/components/table"; import type { ContractMigrationHistory } from "lib/types"; import { RemarkOperation } from "lib/types"; -import { dateFromNow, formatUTC } from "lib/utils"; +import { dateFromNow, formatUTC, getCw2Info } from "lib/utils"; interface MigrationRowProps { templateColumns: GridProps["templateColumns"]; @@ -58,6 +58,8 @@ export const MigrationRow = ({ history, }: MigrationRowProps) => { const getAddressType = useGetAddressType(); + const cw2Info = getCw2Info(history.cw2Contract, history.cw2Version); + return ( @@ -76,6 +78,14 @@ export const MigrationRow = ({ }} /> + + + {cw2Info ?? "N/A"} + + + {migrationHistories.map((history, idx) => ( { const navigate = useInternalNavigate(); const { currentChainName } = useWallet(); - const goToCodeDetails = () => { navigate({ - pathname: `/code/${publicCodeInfo.publicInfo.id}`, + pathname: `/code/${publicInfo.id}`, }); }; + const cw2Info = getCw2Info(publicInfo.cw2Contract, publicInfo.cw2Version); + return ( - {publicCodeInfo.publicInfo.name} + {publicInfo.name} + + + + {cw2Info ?? "N/A"} + - {publicCodeInfo.publicInfo.contractCount} + {publicInfo.contractCount} - - - - e.stopPropagation()}> - + - - + e.stopPropagation()}> + + + + ); diff --git a/src/lib/pages/public-project/components/table/code/PublicProjectCodeTable.tsx b/src/lib/pages/public-project/components/table/code/PublicProjectCodeTable.tsx index 805f157bf..fb7afecd7 100644 --- a/src/lib/pages/public-project/components/table/code/PublicProjectCodeTable.tsx +++ b/src/lib/pages/public-project/components/table/code/PublicProjectCodeTable.tsx @@ -22,16 +22,16 @@ interface PublicProjectCodeTableProps { } const TEMPLATE_COLUMNS = - "max(80px) minmax(320px, 1fr) max(120px) max(160px) max(160px) max(250px)"; + "max(80px) minmax(300px, 1fr) minmax(220px, 1fr) max(120px) max(160px) minmax(320px, 0.75fr)"; const CodeTableHeader = () => ( Code ID Code Name + CW2 Info Contracts Uploader Permission - ); @@ -57,6 +57,8 @@ export const PublicProjectCodeTable = observer( permissionAddresses: code.permissionAddresses, id: code.id, uploader: code.uploader, + cw2Contract: code.cw2Contract, + cw2Version: code.cw2Version, isSaved: isCodeIdSaved(code.id), ...getCodeLocalInfo(code.id), }, @@ -90,17 +92,19 @@ export const PublicProjectCodeTable = observer( withBorder /> ) : ( - - - {publicCodes.map((code) => ( - - ))} + <> + + + {publicCodes.map((code) => ( + + ))} + {onViewMore && } - + )} ); diff --git a/src/lib/pages/public-project/components/table/contract/PublicProjectContractTable.tsx b/src/lib/pages/public-project/components/table/contract/PublicProjectContractTable.tsx index 7802a3f7c..908d5d75a 100644 --- a/src/lib/pages/public-project/components/table/contract/PublicProjectContractTable.tsx +++ b/src/lib/pages/public-project/components/table/contract/PublicProjectContractTable.tsx @@ -83,17 +83,19 @@ export const PublicProjectContractTable = observer( withBorder /> ) : ( - - - {publicContracts.map((contract) => ( - - ))} + <> + + + {publicContracts.map((contract) => ( + + ))} + {onViewMore && } - + )} ); diff --git a/src/lib/pages/public-project/slug.tsx b/src/lib/pages/public-project/slug.tsx index a6bf2d232..95a09e5c3 100644 --- a/src/lib/pages/public-project/slug.tsx +++ b/src/lib/pages/public-project/slug.tsx @@ -7,6 +7,7 @@ import { CustomTab } from "lib/components/CustomTab"; import { Loading } from "lib/components/Loading"; import PageContainer from "lib/components/PageContainer"; import { AmpEvent, AmpTrack } from "lib/services/amplitude"; +import { scrollToTop } from "lib/utils"; import { DetailHeader } from "./components/DetailHeader"; import { PublicProjectCodeTable } from "./components/table/code/PublicProjectCodeTable"; @@ -29,6 +30,11 @@ export const ProjectDetail = observer(() => { if (router.isReady) AmpTrack(AmpEvent.TO_PROJECT_DETAIL); }, [router.isReady]); + const handleOnViewMore = (tab: TabIndex) => { + setTabIndex(tab); + scrollToTop(); + }; + if (isLoading) return ; return ( @@ -61,11 +67,11 @@ export const ProjectDetail = observer(() => { setTabIndex(TabIndex.Codes)} + onViewMore={() => handleOnViewMore(TabIndex.Codes)} /> setTabIndex(TabIndex.Contracts)} + onViewMore={() => handleOnViewMore(TabIndex.Contracts)} /> diff --git a/src/lib/query/code.ts b/src/lib/query/code.ts index 5616ee5e1..742e0525e 100644 --- a/src/lib/query/code.ts +++ b/src/lib/query/code.ts @@ -14,6 +14,8 @@ export const getCodeListQueryDocument = graphql(` } access_config_permission access_config_addresses + cw2_contract + cw2_version } } `); @@ -37,6 +39,8 @@ export const getCodeListByUserQueryDocument = graphql(` } access_config_permission access_config_addresses + cw2_contract + cw2_version } } `); @@ -55,6 +59,8 @@ export const getCodeListByIDsQueryDocument = graphql(` } access_config_permission access_config_addresses + cw2_contract + cw2_version } } `); @@ -83,6 +89,8 @@ export const getCodeDataByCodeId = graphql(` } access_config_permission access_config_addresses + cw2_contract + cw2_version } } `); @@ -110,6 +118,8 @@ export const getCodeListByWalletAddressPagination = graphql(` } access_config_permission access_config_addresses + cw2_contract + cw2_version } } `); diff --git a/src/lib/query/contract.ts b/src/lib/query/contract.ts index 4cfcc4605..dc392a413 100644 --- a/src/lib/query/contract.ts +++ b/src/lib/query/contract.ts @@ -161,6 +161,8 @@ export const getMigrationHistoriesByContractAddressPagination = graphql(` account { address } + cw2_contract + cw2_version } } } diff --git a/src/lib/services/codeService.ts b/src/lib/services/codeService.ts index d98edbc38..677558dd3 100644 --- a/src/lib/services/codeService.ts +++ b/src/lib/services/codeService.ts @@ -38,6 +38,8 @@ export const useCodeListQuery = (): UseQueryResult => { code.access_config_permission as InstantiatePermission, permissionAddresses: code.access_config_addresses as PermissionAddresses, + cw2Contract: code.cw2_contract, + cw2Version: code.cw2_version, })) ); }, [indexerGraphClient]); @@ -66,6 +68,8 @@ export const useCodeListByWalletAddress = ( code.access_config_permission as InstantiatePermission, permissionAddresses: code.access_config_addresses as PermissionAddresses, + cw2Contract: code.cw2_contract, + cw2Version: code.cw2_version, })) ); }, [walletAddr, indexerGraphClient]); @@ -100,6 +104,8 @@ export const useCodeListByCodeIds = ( code.access_config_permission as InstantiatePermission, permissionAddresses: code.access_config_addresses as PermissionAddresses, + cw2Contract: code.cw2_contract, + cw2Version: code.cw2_version, })) ); }, [ids, indexerGraphClient]); @@ -143,6 +149,8 @@ export const useCodeDataByCodeId = ( permissionAddresses: codes_by_pk.access_config_addresses as PermissionAddresses, instantiatePermission: codes_by_pk.access_config_permission, + cw2Contract: codes_by_pk.cw2_contract, + cw2Version: codes_by_pk.cw2_version, }; }); }, [codeId, indexerGraphClient]); @@ -178,6 +186,8 @@ export const useCodeListByWalletAddressPagination = ( code.access_config_permission as InstantiatePermission, permissionAddresses: code.access_config_addresses as PermissionAddresses, + cw2Contract: code.cw2_contract, + cw2Version: code.cw2_version, })) ); }, [indexerGraphClient, offset, pageSize, walletAddress]); diff --git a/src/lib/services/contractService.ts b/src/lib/services/contractService.ts index 0c5715132..da464030b 100644 --- a/src/lib/services/contractService.ts +++ b/src/lib/services/contractService.ts @@ -210,6 +210,8 @@ export const useMigrationHistoriesByContractAddressPagination = ( timestamp: parseDate(history.block.timestamp), remark: history.remark, uploader: history.code.account.address as Addr, + cw2Contract: history.code.cw2_contract, + cw2Version: history.code.cw2_version, }) ) ); diff --git a/src/lib/services/publicProjectService.ts b/src/lib/services/publicProjectService.ts index c9cdd5111..49d01cc37 100644 --- a/src/lib/services/publicProjectService.ts +++ b/src/lib/services/publicProjectService.ts @@ -8,7 +8,6 @@ import { CELATONE_API_ENDPOINT, getChainApiPath, getMainnetApiPath } from "env"; import type { PublicContract, Option, - PublicCodeData, PublicInfo, PublicProjectInfo, RawPublicContract, @@ -32,7 +31,7 @@ const parseCode = (raw: RawPublicCode): PublicCode => ({ contractCount: raw.contracts, }); -export const usePublicProjects = () => { +export const usePublicProjects = (): UseQueryResult => { const { currentChainRecord } = useWallet(); const queryFn = useCallback(async () => { @@ -59,7 +58,9 @@ export const usePublicProjects = () => { }); }; -export const usePublicProjectBySlug = (slug: Option) => { +export const usePublicProjectBySlug = ( + slug: Option +): UseQueryResult => { const { currentChainRecord } = useWallet(); const queryFn = useCallback(async () => { @@ -127,7 +128,7 @@ export const usePublicProjectByContractAddress = ( export const usePublicProjectByCodeId = ( codeId: Option -): UseQueryResult => { +): UseQueryResult => { const { currentChainRecord } = useWallet(); const queryFn = useCallback(async () => { @@ -137,12 +138,12 @@ export const usePublicProjectByCodeId = ( throw new Error("No chain selected (usePublicProjectByCodeId)"); return axios - .get( + .get( `${CELATONE_API_ENDPOINT}/codes/${getChainApiPath( currentChainRecord.chain.chain_name )}/${currentChainRecord.chain.chain_id}/${codeId}` ) - .then(({ data: projectInfo }) => projectInfo); + .then(({ data: projectInfo }) => parseCode(projectInfo)); }, [codeId, currentChainRecord]); return useQuery( diff --git a/src/lib/types/code.ts b/src/lib/types/code.ts index 4db1ea075..846f57484 100644 --- a/src/lib/types/code.ts +++ b/src/lib/types/code.ts @@ -16,6 +16,8 @@ export interface CodeInfo extends CodeLocalInfo { contractCount: Option; instantiatePermission: InstantiatePermission; permissionAddresses: PermissionAddresses; + cw2Contract: Option; + cw2Version: Option; isSaved?: boolean; } @@ -34,16 +36,6 @@ export interface CodeData { proposal: Option; instantiatePermission: InstantiatePermission; permissionAddresses: PermissionAddresses; -} - -export interface PublicCodeData { - contracts: number; - description: string; - id: number; - instantiatePermission: string; - name: string; - permissionAddresses: string[]; - slug: string; - uploader: string; - verified: boolean; + cw2Contract: Option; + cw2Version: Option; } diff --git a/src/lib/types/contract.ts b/src/lib/types/contract.ts index c2411efda..4fa93ea5c 100644 --- a/src/lib/types/contract.ts +++ b/src/lib/types/contract.ts @@ -39,6 +39,8 @@ export interface ContractMigrationHistory { timestamp: Date; remark: ContractHistoryRemark; uploader: Addr; + cw2Contract: Option; + cw2Version: Option; } export interface ContractData { diff --git a/src/lib/types/projects.ts b/src/lib/types/projects.ts index 5bb01470c..dd3b4c145 100644 --- a/src/lib/types/projects.ts +++ b/src/lib/types/projects.ts @@ -5,6 +5,7 @@ import type { HumanAddr, InstantiatePermission, PermissionAddresses, + Option, } from "lib/types"; export interface Account { @@ -23,6 +24,10 @@ export interface RawPublicCode { uploader: Addr; instantiatePermission: InstantiatePermission; permissionAddresses: PermissionAddresses; + github: string; + verified: boolean; + cw2Contract: Option; + cw2Version: Option; } export interface PublicCode extends Omit { diff --git a/src/lib/utils/cw2.ts b/src/lib/utils/cw2.ts new file mode 100644 index 000000000..55edc005e --- /dev/null +++ b/src/lib/utils/cw2.ts @@ -0,0 +1,7 @@ +import type { Option } from "lib/types"; + +export const getCw2Info = ( + cw2Contract: Option, + cw2Version: Option +): Option => + cw2Contract && cw2Version ? `${cw2Contract} (${cw2Version})` : undefined; diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 960c0eabb..4f68b69f6 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -26,3 +26,4 @@ export * from "./getAttachFunds"; export * from "./assetValue"; export * from "./codePermission"; export * from "./executeTags"; +export * from "./cw2";