[SDK] Fix single event listener (#7)
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
---
|
||||
"@thirdweb-dev/auth": patch
|
||||
"thirdweb": patch
|
||||
"@thirdweb-dev/contracts-js": patch
|
||||
"eslint-config-thirdweb": patch
|
||||
"@thirdweb-dev/react": patch
|
||||
"@thirdweb-dev/sdk": patch
|
||||
"@thirdweb-dev/solana": patch
|
||||
"@thirdweb-dev/storage": patch
|
||||
"@thirdweb-dev/tsconfig": patch
|
||||
---
|
||||
|
||||
init monorepo
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@thirdweb-dev/sdk": patch
|
||||
---
|
||||
|
||||
Fix listening to a single contract event
|
||||
+3
-2
@@ -27,9 +27,10 @@
|
||||
"clean": "turbo run clean && rm -rf node_modules",
|
||||
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
|
||||
"changeset": "changeset",
|
||||
"version-packages": "changeset version",
|
||||
"bump-version": "changeset version",
|
||||
"release": "turbo run build && changeset publish",
|
||||
"postinstall": "yarn-deduplicate yarn.lock"
|
||||
"postinstall": "yarn-deduplicate yarn.lock",
|
||||
"dev-version": "yarn changeset pre enter dev && yarn bump-version"
|
||||
},
|
||||
"preconstruct": {
|
||||
"packages": [
|
||||
|
||||
@@ -66,7 +66,7 @@ export class ContractEvents<TContract extends BaseContract> {
|
||||
*/
|
||||
public addEventListener(
|
||||
eventName: keyof TContract["filters"] | (string & {}),
|
||||
listener: (event: Record<string, any>) => void,
|
||||
listener: (event: ContractEvent) => void,
|
||||
) {
|
||||
// validates event, throws error if not found
|
||||
const event = this.contractWrapper.readContract.interface.getEvent(
|
||||
@@ -74,7 +74,7 @@ export class ContractEvents<TContract extends BaseContract> {
|
||||
);
|
||||
|
||||
const address = this.contractWrapper.readContract.address;
|
||||
const filter = { address, topics: [event.name] };
|
||||
const filter = { address, topics: [this.contractWrapper.readContract.interface.getEventTopic(event)] };
|
||||
|
||||
const wrappedListener = (log: providers.Log) => {
|
||||
const parsedLog =
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { ethers, Wallet } from "ethers";
|
||||
import { sdk, signers } from "./before-setup";
|
||||
import { EventType } from "../src/constants/events";
|
||||
import { expect } from "chai";
|
||||
import { ContractEvent, NFTDrop, ThirdwebSDK, NFTCollection } from "../src";
|
||||
import { ContractEvent, NFTDrop, NFTCollection } from "../src";
|
||||
import { AddressZero } from "@ethersproject/constants";
|
||||
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
|
||||
|
||||
@@ -10,6 +9,7 @@ global.fetch = require("cross-fetch");
|
||||
|
||||
describe("Events", async () => {
|
||||
let dropContract: NFTDrop;
|
||||
let dropContract2: NFTDrop;
|
||||
let nftContract: NFTCollection;
|
||||
let adminWallet: SignerWithAddress,
|
||||
samWallet: SignerWithAddress,
|
||||
@@ -34,6 +34,20 @@ describe("Events", async () => {
|
||||
}),
|
||||
);
|
||||
|
||||
dropContract2 = sdk.getNFTDrop(
|
||||
await sdk.deployer.deployBuiltInContract(NFTDrop.contractType, {
|
||||
name: `Testing drop from SDK`,
|
||||
description: "Test contract from tests",
|
||||
image:
|
||||
"https://pbs.twimg.com/profile_images/1433508973215367176/XBCfBn3g_400x400.jpg",
|
||||
primary_sale_recipient: AddressZero,
|
||||
seller_fee_basis_points: 500,
|
||||
fee_recipient: AddressZero,
|
||||
platform_fee_basis_points: 10,
|
||||
platform_fee_recipient: AddressZero,
|
||||
}),
|
||||
);
|
||||
|
||||
nftContract = sdk.getNFTCollection(
|
||||
await sdk.deployer.deployBuiltInContract(NFTCollection.contractType, {
|
||||
name: "NFT Contract",
|
||||
@@ -65,7 +79,7 @@ describe("Events", async () => {
|
||||
|
||||
it("should emit Contract events", async () => {
|
||||
const events: ContractEvent[] = [];
|
||||
dropContract.events.listenToAllEvents((event) => {
|
||||
const remove = dropContract.events.addEventListener("TokensLazyMinted", (event) => {
|
||||
events.push(event);
|
||||
});
|
||||
await dropContract.createBatch([
|
||||
@@ -77,32 +91,31 @@ describe("Events", async () => {
|
||||
},
|
||||
]);
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000));
|
||||
dropContract.events.removeAllListeners();
|
||||
remove();
|
||||
expect(events.length).to.be.gt(0);
|
||||
expect(events.map((e) => e.eventName)).to.include("TokensLazyMinted");
|
||||
});
|
||||
|
||||
// TODO
|
||||
it.skip("should emit Signature events", async () => {
|
||||
const RPC_URL = "https://rpc-mumbai.maticvigil.com/";
|
||||
const provider = ethers.getDefaultProvider(RPC_URL);
|
||||
const wallet = Wallet.createRandom().connect(provider);
|
||||
const esdk = new ThirdwebSDK(wallet, {
|
||||
gasless: {
|
||||
openzeppelin: {
|
||||
relayerUrl: "https://google.com", // TODO test relayer url?
|
||||
},
|
||||
it("should emit all Contract events", async () => {
|
||||
const events: ContractEvent[] = [];
|
||||
const remove = dropContract2.events.listenToAllEvents((event) => {
|
||||
events.push(event);
|
||||
});
|
||||
await dropContract2.createBatch([
|
||||
{
|
||||
name: "1",
|
||||
},
|
||||
});
|
||||
sdk.on(EventType.Transaction, (event) => {
|
||||
console.log(event);
|
||||
});
|
||||
sdk.on(EventType.Signature, (event) => {
|
||||
console.log(event);
|
||||
});
|
||||
await esdk
|
||||
.getNFTDrop(dropContract.getAddress())
|
||||
.setApprovalForAll(ethers.constants.AddressZero, true);
|
||||
{
|
||||
name: "2",
|
||||
},
|
||||
]);
|
||||
await dropContract2.claimConditions.set([{}]);
|
||||
await dropContract2.claim(1)
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000));
|
||||
remove();
|
||||
expect(events.length).to.be.gt(0);
|
||||
expect(events.map((e) => e.eventName)).to.include("TokensLazyMinted");
|
||||
expect(events.map((e) => e.eventName)).to.include("TokensClaimed");
|
||||
});
|
||||
|
||||
it("should return single event", async () => {
|
||||
|
||||
Reference in New Issue
Block a user