Untitled
unknown
plain_text
a year ago
1.7 kB
12
Indexable
static async handleTBACreated({ event }) {
const token_address = event.data[0];
const token_id = Utils.feltToInt({
low: event.data[1],
high: event.data[2],
});
const provider = new RpcProvider({
nodeUrl: CRAWLER.URL,
});
const { abi: nft_contract_abi } = await provider.getClassAt(token_address);
if (!nft_contract_abi) return null;
const nft_contract_view = new Contract(nft_contract_abi, token_address, provider);
const token_owner = await nft_contract_view.owner_of({
// token id
low: event.data[1],
high: event.data[2],
});
const token_uri_array = await nft_contract_view.token_uri({
low: event.data[1],
high: event.data[2],
});
const token_uri = token_uri_array.map(Utils.feltToStr).join('');
const { data: nft_metadata } = await axios.get(token_uri);
const { abi: registry_contract_abi } = await provider.getClassAt(process.env.REGISTRY_CONTRACT);
if (!registry_contract_abi) return null;
const registry_contract_view = new Contract(registry_contract_abi, process.env.REGISTRY_CONTRACT, provider);
const tba_address = await registry_contract_view.get_account(
process.env.TBA_CLASSHASH,
token_address,
// token id
{
low: event.data[1],
high: event.data[2],
}
)
await Databases.saveTBA({
tba_address: '0x' + tba_address.toString(16),
contract_address: token_address,
token_id: token_id,
owner_address: '0x' + token_owner.toString(16),
tba_name: nft_metadata.name,
tba_image: nft_metadata.image
})
}Editor is loading...
Leave a Comment