From e21bbd1d90d0825e5524a104b9a229005c71e8a6 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Sun, 28 Aug 2022 21:46:56 -0700 Subject: [PATCH 1/6] fix single event listener --- .../sdk/src/core/classes/contract-events.ts | 4 ++-- packages/sdk/test/events.test.ts | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/core/classes/contract-events.ts b/packages/sdk/src/core/classes/contract-events.ts index 3585f389927..e9bf2f7a27d 100644 --- a/packages/sdk/src/core/classes/contract-events.ts +++ b/packages/sdk/src/core/classes/contract-events.ts @@ -66,7 +66,7 @@ export class ContractEvents { */ public addEventListener( eventName: keyof TContract["filters"] | (string & {}), - listener: (event: Record) => 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 { ); 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 = diff --git a/packages/sdk/test/events.test.ts b/packages/sdk/test/events.test.ts index 0222099b651..b5a5891c210 100644 --- a/packages/sdk/test/events.test.ts +++ b/packages/sdk/test/events.test.ts @@ -64,6 +64,25 @@ describe("Events", async () => { }); it("should emit Contract events", async () => { + const events: ContractEvent[] = []; + dropContract.events.addEventListener("TokensLazyMinted", (event) => { + events.push(event); + }); + await dropContract.createBatch([ + { + name: "1", + }, + { + name: "2", + }, + ]); + await new Promise((resolve) => setTimeout(resolve, 5000)); + dropContract.events.removeAllListeners(); + expect(events.length).to.be.gt(0); + expect(events.map((e) => e.eventName)).to.include("TokensLazyMinted"); + }); + + it("should emit all Contract events", async () => { const events: ContractEvent[] = []; dropContract.events.listenToAllEvents((event) => { events.push(event); @@ -76,10 +95,14 @@ describe("Events", async () => { name: "2", }, ]); + await dropContract.claimConditions.set([{}]); + await dropContract.claim(1) await new Promise((resolve) => setTimeout(resolve, 5000)); dropContract.events.removeAllListeners(); + console.log(events); 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"); }); // TODO From 8a96533e026b40995182d080b52b0ccc63590db2 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Sun, 28 Aug 2022 21:48:38 -0700 Subject: [PATCH 2/6] remove skipped test --- packages/sdk/test/events.test.ts | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/packages/sdk/test/events.test.ts b/packages/sdk/test/events.test.ts index b5a5891c210..18a5eac14f3 100644 --- a/packages/sdk/test/events.test.ts +++ b/packages/sdk/test/events.test.ts @@ -105,29 +105,6 @@ describe("Events", async () => { expect(events.map((e) => e.eventName)).to.include("TokensClaimed"); }); - // 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? - }, - }, - }); - 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); - }); - it("should return single event", async () => { await nftContract.mintToSelf({ name: "Test1", From 5a0343a0f6a4db885ae209edbb6dd4d18f4e458d Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Sun, 28 Aug 2022 21:54:18 -0700 Subject: [PATCH 3/6] add changeset --- .changeset/violet-kangaroos-provide.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/violet-kangaroos-provide.md diff --git a/.changeset/violet-kangaroos-provide.md b/.changeset/violet-kangaroos-provide.md new file mode 100644 index 00000000000..e73ab86a48b --- /dev/null +++ b/.changeset/violet-kangaroos-provide.md @@ -0,0 +1,5 @@ +--- +"@thirdweb-dev/sdk": patch +--- + +Fix listening to a single contract event From 930ddf2f92150b7f6de3e3ab9d81523ba5af3f95 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Sun, 28 Aug 2022 22:12:53 -0700 Subject: [PATCH 4/6] change version script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e224aa4cb54..51ae6fe57d2 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "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" }, From 48244c4584b96934b6f9ff970651acb035fbb9b1 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Sun, 28 Aug 2022 22:18:51 -0700 Subject: [PATCH 5/6] remove init changeset --- .changeset/pretty-pugs-kick.md | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .changeset/pretty-pugs-kick.md diff --git a/.changeset/pretty-pugs-kick.md b/.changeset/pretty-pugs-kick.md deleted file mode 100644 index e02200830c2..00000000000 --- a/.changeset/pretty-pugs-kick.md +++ /dev/null @@ -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 From 5ba90cf1b346461939c0b52081df4b1137ed1992 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Sun, 28 Aug 2022 22:34:08 -0700 Subject: [PATCH 6/6] fix tests --- package.json | 3 ++- packages/sdk/test/events.test.ts | 33 ++++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 51ae6fe57d2..9ac1cfab3c9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "changeset": "changeset", "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": [ diff --git a/packages/sdk/test/events.test.ts b/packages/sdk/test/events.test.ts index 18a5eac14f3..b282ce689c0 100644 --- a/packages/sdk/test/events.test.ts +++ b/packages/sdk/test/events.test.ts @@ -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.addEventListener("TokensLazyMinted", (event) => { + const remove = dropContract.events.addEventListener("TokensLazyMinted", (event) => { events.push(event); }); await dropContract.createBatch([ @@ -77,17 +91,17 @@ 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"); }); it("should emit all Contract events", async () => { const events: ContractEvent[] = []; - dropContract.events.listenToAllEvents((event) => { + const remove = dropContract2.events.listenToAllEvents((event) => { events.push(event); }); - await dropContract.createBatch([ + await dropContract2.createBatch([ { name: "1", }, @@ -95,11 +109,10 @@ describe("Events", async () => { name: "2", }, ]); - await dropContract.claimConditions.set([{}]); - await dropContract.claim(1) + await dropContract2.claimConditions.set([{}]); + await dropContract2.claim(1) await new Promise((resolve) => setTimeout(resolve, 5000)); - dropContract.events.removeAllListeners(); - console.log(events); + 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");