Read a Move Table object by using Typescript SDK

This is triggered by a discord question from member crazybit here.

How can we get the rows of a Move Table by using the Typescript SDK?

ANSWER:

Table is the field pools of the ClmmPools object here.
So
Table ID = 0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb

We need to utilize getDynamicFields for this:

import {getFullnodeUrl, SuiClient, SuiParsedData} from "@mysten/sui.js/client";
import {SuiMoveObject} from "@mysten/sui.js";

const client = new SuiClient({
    url: getFullnodeUrl("mainnet"),
});


const readTable = async function (tableId: string) {
    client.getDynamicFields({parentId: tableId}).then(dynamicFieldPage => {

        const resultData = dynamicFieldPage.data;

        resultData?.forEach(tableRowResult => {
            const poolId = tableRowResult.objectId;
            client.getObject({
                id: poolId,
                options: {showContent: true}
            }).then(dynFieldForPool => {
                const poolFields  = (dynFieldForPool.data.content as SuiMoveObject).fields.value.fields;
                console.log("Dynamic Field id = ",dynFieldForPool.data.objectId);
                console.log("pool_address: ",poolFields["pool_address"]);
                console.log("is_closed: ",poolFields["is_closed"]);
                console.log("is_show_rewarder: ",poolFields["is_closed"]);
                console.log("project_url: ",poolFields["project_url"]);
                console.log("show_rewarder_1: ",poolFields["show_rewarder_1"]);
                console.log("show_rewarder_2: ",poolFields["show_rewarder_2"]);
                console.log("show_rewarder_3: ",poolFields["show_rewarder_3"]);

                console.log("--------------------------------------------------")
            })
        });
    });

}

readTable('0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb');
1 Like