Skip to content

Examples: Get Metadatas info

Chun Lam edited this page Feb 21, 2024 · 2 revisions
import { 
    MetadataHttp, MetadataQueryParams, MetadataType, MosaicId, NamespaceId
} from "tsjs-xpx-chain-sdk";

const API_URL = 'http://localhost:3000';

const metadataHttp = new MetadataHttp(API_URL);

const getMetadata = () => {
    const compositeHash = "5DB111FAFD1CD1AB10747B1BDDF895D6469965A1D11D73E8B74F0D44A16BBE8E";

    metadataHttp.getMetadata(compositeHash).subscribe({
        next: metadataEntry => {
            console.log(metadataEntry);
            console.log(metadataEntry.value); // current metadata value
            console.log(metadataEntry.scopedMetadataKey); // the key of the metadata value
        }, 
        error: error => {
            console.error(error);
        }, 
        complete: () => {
            console.log('done.');
        }
    });
}

const getMetadatas = () => {
    const compositeHash = "5DB111FAFD1CD1AB10747B1BDDF895D6469965A1D11D73E8B74F0D44A16BBE8E";
    const compositeHash2 = "8C2635D6F73EE14D8E06B8C22ADD6FA6600C486C45508142DDADA74BD090D728";

    metadataHttp.getMetadatas([compositeHash, compositeHash2]).subscribe({
        next: metadataEntries => {
            console.log(metadataEntries);
        }, 
        error: error => {
            console.error(error);
        }, 
        complete:() => {
            console.log('done.');
        }
    });
}

const searchMetadatas = () => {
    const xpxNamespaceId = new NamespaceId("prx.xpx");
    const xpxMosaicId = new MosaicId("13bfc518e40549d7");
    const targetPublicKey = "F06FE22FBA1E116B8F0E673BA4EE424B16BD6EA7548ED259F3DCEBF8D74C49B9";

    // full structure of the MetadataQueryParams, all are optional
    /*
    pageSize?: number;
    pageNumber?: number;
    metadataType?: MetadataType;
    order?: Order;
    sortField?: MetadataSortingField;
    sourceAddress?: Address | string;
    targetId?: NamespaceId | MosaicId | string;
    targetKey?: PublicAccount | string;
    scopedMetadataKey?: UInt64 | string;
    */

    // search targetKey, account type metadata
    let metadataQueryParams = new MetadataQueryParams();
    metadataQueryParams.metadataType = MetadataType.ACCOUNT;
    metadataQueryParams.targetKey = targetPublicKey;

    metadataHttp.searchMetadata(metadataQueryParams).subscribe({
        next: metadataSearchResult => {
            console.log(metadataSearchResult.metadataEntries);
            console.log(metadataSearchResult.pagination);
        }, 
        error: error => {
            console.error(error);
        }, 
        complete: () => {
            console.log('done.');
        }
    })

    // search mosaic type metadata
    let metadataQueryParams2 = new MetadataQueryParams();
    metadataQueryParams2.metadataType = MetadataType.MOSAIC;
    metadataQueryParams2.targetId = xpxMosaicId;

    metadataHttp.searchMetadata(metadataQueryParams2).subscribe({
        next: metadataSearchResult => {
            console.log(metadataSearchResult.metadataEntries);
            console.log(metadataSearchResult.pagination);
        }, 
        error: error => {
            console.error(error);
        }, 
        complete: () => {
            console.log('done.');
        }
    })

    // search namespace type metadata
    let metadataQueryParams3 = new MetadataQueryParams();
    metadataQueryParams3.metadataType = MetadataType.NAMESPACE;
    metadataQueryParams3.targetId = xpxNamespaceId;

    metadataHttp.searchMetadata(metadataQueryParams3).subscribe({
        next: metadataSearchResult => {
            console.log(metadataSearchResult.metadataEntries);
            console.log(metadataSearchResult.pagination);
        }, 
        error: error => {
            console.error(error);
        }, 
        complete: () => {
            console.log('done.');
        }
    })
}

getMetadata();
getMetadatas();
searchMetadatas();