-
I minted and listed script successfully on rinkeby yarn hardhat run .\scripts\mint-and-list-item.ts --network rinkeby The contract detail. as you can see at block number 11124744 item is Listed. Also when I check my subgraph studio log I can see it triggers successfully at this block. Here is the output from the playground with no data returned. Not sure what I am missing? Below is my handler codes import { Address, BigInt } from "@graphprotocol/graph-ts";
import {
ItemBought as ItemBoughtEvent,
ItemListed as ItemListedEvent,
ListingCancelled as ListingCancelledEvent,
} from "../generated/NftMarketplace/NftMarketplace";
import {
ActiveItem,
ItemListed,
ItemBought,
ListingCancelled,
} from "../generated/schema";
export function handleItemBought(event: ItemBoughtEvent): void {
let itemBought = ItemBought.load(
getIdFromEventParams(event.params.tokenId, event.params.marketplaceAddress)
);
let activeItem = ActiveItem.load(
getIdFromEventParams(event.params.tokenId, event.params.marketplaceAddress)
);
if (!itemBought) {
itemBought = new ItemBought(
getIdFromEventParams(
event.params.tokenId,
event.params.marketplaceAddress
)
);
}
itemBought.buyer = event.params.buyer;
itemBought.nftAddress = event.params.marketplaceAddress;
itemBought.tokenId = event.params.tokenId;
activeItem!.buyer = event.params.buyer;
itemBought.save();
activeItem!.save();
}
export function handleItemListed(event: ItemListedEvent): void {
let itemListed = ItemListed.load(
getIdFromEventParams(event.params.tokenId, event.params.marketplaceAddress)
);
let activeItem = ActiveItem.load(
getIdFromEventParams(event.params.tokenId, event.params.marketplaceAddress)
);
if (!itemListed) {
itemListed = new ItemListed(
getIdFromEventParams(
event.params.tokenId,
event.params.marketplaceAddress
)
);
}
if (!activeItem) {
activeItem = new ActiveItem(
getIdFromEventParams(
event.params.tokenId,
event.params.marketplaceAddress
)
);
}
itemListed.seller = event.params.seller;
activeItem.seller = event.params.seller;
itemListed.nftAddress = event.params.marketplaceAddress;
activeItem.nftAddress = event.params.marketplaceAddress;
itemListed.tokenId = event.params.tokenId;
activeItem.tokenId = event.params.tokenId;
itemListed.price = event.params.price;
activeItem.price = event.params.price;
activeItem.buyer = Address.fromString(
"0x0000000000000000000000000000000000000000"
);
}
export function handleListingCancelled(event: ListingCancelledEvent): void {
let itemCancelled = ListingCancelled.load(
getIdFromEventParams(event.params.tokenId, event.params.marketplaceAddress)
);
let activeItem = ActiveItem.load(
getIdFromEventParams(event.params.tokenId, event.params.marketplaceAddress)
);
if (!itemCancelled) {
itemCancelled = new ListingCancelled(
getIdFromEventParams(
event.params.tokenId,
event.params.marketplaceAddress
)
);
}
itemCancelled.seller = event.params.seller;
itemCancelled.nftAddress = event.params.marketplaceAddress;
itemCancelled.tokenId = event.params.tokenId;
activeItem!.buyer = Address.fromString(
"0x000000000000000000000000000000000000dEaD"
);
itemCancelled.save();
activeItem!.save();
}
function getIdFromEventParams(tokenId: BigInt, nftAddress: Address): string {
return tokenId.toHexString() + nftAddress.toHexString();
} Only difference is my file name for the above handler code is |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Ohh.. Sorry.. what a foolish I am. Forget to save in itemListedsave();
activeItem!.save(); |
Beta Was this translation helpful? Give feedback.
Ohh.. Sorry.. what a foolish I am. Forget to save in
handleItemListed