Manage Collection - Limit
Ternoa provides you with many collection features. Not only creating a collection can be done in just a few lines of code but we also cover many collection basic usecases: Ternoa allows you to easily create functions to close, limit and burn a collection.
Prerequisites
Before getting started, make sure you have the following ready:
- Create a Ternoa account with Alphanet CAPS
- Install and set up your editor of choice (we will use Visual Studio Code [VSC] in this tutorial)
- Install NodeJS v.14+ & NPM
- Install & initialize Ternoa-JS
How to limit a collection of NFT using Ternoa-JS
This function limits a collection of NFT on the Ternoa chain. It returns an object promise containing the CollectionLimitedEvent provided by the Ternoa blockchain. Use your own account by updating the //TernoaTestAccount with your account seed when retrieving the keyring from the example below. Replace the COLLECTION_ID with the one to limit.
Note: The collection limit can only be set once. Either at collection creation or using the extrinsic below.
import {
limitCollection,
initializeApi,
getKeyringFromSeed,
WaitUntil,
} from "ternoa-js";
const limitCollection = async () => {
try {
await initializeApi();
const keyring = await getKeyringFromSeed("//TernoaTestAccount");
const COLLECTION_ID = 1; // the collection id you want to limit
const collectionData = await limitCollection(
COLLECTION_ID,
keyring,
WaitUntil.BlockInclusion
);
console.log(
`Collection ${collectionData.collectionId} limited to : ${collectionData.limit}`
);
} catch (e) {
console.error(e);
}
};
The expected params
`id`: The ID of the Collection.
`keyring`: the provided keyring (containing the address) will be used to sign the transaction and pay the execution fee.
`waitUntil`: WaitUntil define at which point we want to get the results of the transaction execution: BlockInclusion or BlockFinalization.
Response
The response provided from the blockchain event includes all the informations below according to the params provided when limiting a collection of NFT.
`collectionId`: ID of the limited collection.
`limit`: the limit set for the collection.
How to retrieve a limited collection using Ternoa Indexer
Ternoa indexer is a record of the Ternoa Chain data. You can query data for some specific entities (NFT, Collection, Marketplace(...)) using graphql. In this exemple, we use the graphql-request library.
You first need to prepare a stringified query to get collection data from a specific collection id, as we did in the query(id) function.
Do not hesitate to adapt the information you require in your query. When the query is ready, you can make the request to our indexer by providing both the indexer endpoint and the query. To check if the collection is limited, the **limit**
should be set and the **timestampLimit**
must be filled.
import { request, gql } from "graphql-request";
const COLLECTION_ID = 0;
const query = (id: number) => gql`
{
collectionEntity(id: "${id}") {
collectionId
nbNfts
limit
timestampLimit
}
}
`;
const getCollectionData = async () => {
try {
const response = await request<{ collectionEntity: CollectionType }>(
"https://indexer-alphanet.ternoa.dev",
query(COLLECTION_ID)
);
console.log(response);
} catch (error) {
console.error(error);
}
};
type CollectionType = {
collectionId: string;
nbNfts: number;
limit: number;
timestampLimit: string | null;
};
Support
If you face any trouble, feel free to reach out to our community engineers in our Discord.