+ {isNftLoading ? (
+
Loading...
+ ) : (
+ <>
+
+
+
+ {nft ? (
+
+ ) : null}
+ {activeEOA ? (
+
+
+ You own {ownedNfts?.[0]?.quantityOwned.toString() || "0"}{" "}
+ {nft?.metadata?.name}
+
+
+
+ ) : null}
+ {txIds.length > 0 && (
+
+
+
+
+
+ Tx ID
+ Status
+ TX Hash
+
+
+
+ {txIds.map((txId) => (
+
+ ))}
+
+
+
+
+ )}
+ >
+ )}
+
+ );
+}
diff --git a/packages/thirdweb/src/wallets/in-app/web/lib/in-app-gateway.test.ts b/packages/thirdweb/src/wallets/in-app/web/lib/in-app-gateway.test.ts
index 54b22a490c6..de239b75aad 100644
--- a/packages/thirdweb/src/wallets/in-app/web/lib/in-app-gateway.test.ts
+++ b/packages/thirdweb/src/wallets/in-app/web/lib/in-app-gateway.test.ts
@@ -1,126 +1,110 @@
-import { sendTransaction, signMessage } from "@thirdweb-dev/engine";
+import {
+ configure,
+ isSuccessResponse,
+ sendTransaction,
+ signMessage,
+} from "@thirdweb-dev/engine";
import { beforeAll, describe, expect, it } from "vitest";
import { TEST_CLIENT } from "~test/test-clients.js";
import { sepolia } from "../../../../chains/chain-definitions/sepolia.js";
-import { createThirdwebClient } from "../../../../client/client.js";
import { waitForTransactionHash } from "../../../../engine/wait-for-tx-hash.js";
-import {
- getThirdwebBaseUrl,
- setThirdwebDomains,
-} from "../../../../utils/domains.js";
-import { getClientFetch } from "../../../../utils/fetch.js";
import { stringify } from "../../../../utils/json.js";
import type { Account } from "../../../interfaces/wallet.js";
import { inAppWallet } from "../in-app.js";
-// TODO: productionize this test
-describe
- .runIf(process.env.TW_SECRET_KEY)
- .skip("InAppWallet Gateway Tests", () => {
- let account: Account;
- let authToken: string | null | undefined;
- const clientIdFetch = getClientFetch(
- createThirdwebClient({
- clientId: TEST_CLIENT.clientId,
- }),
- );
+describe.runIf(process.env.TW_SECRET_KEY)("InAppWallet Gateway Tests", () => {
+ let account: Account;
+ let authToken: string | null | undefined;
- beforeAll(async () => {
- setThirdwebDomains({
- bundler: "bundler.thirdweb-dev.com",
- engineCloud: "engine.thirdweb-dev.com",
- inAppWallet: "embedded-wallet.thirdweb-dev.com",
- rpc: "rpc.thirdweb-dev.com",
- });
- const wallet = inAppWallet();
- account = await wallet.connect({
- client: TEST_CLIENT,
- strategy: "backend",
- walletSecret: "test-secret",
- });
- authToken = wallet.getAuthToken();
- expect(authToken).toBeDefined();
+ beforeAll(async () => {
+ configure({
+ clientId: TEST_CLIENT.clientId,
+ secretKey: TEST_CLIENT.secretKey,
});
+ const wallet = inAppWallet();
+ account = await wallet.connect({
+ client: TEST_CLIENT,
+ strategy: "backend",
+ walletSecret: "test-secret",
+ });
+ authToken = wallet.getAuthToken?.();
+ expect(authToken).toBeDefined();
+ });
- it("should sign a message with backend strategy", async () => {
- const rawSignature = await account.signMessage({
- message: "Hello, world!",
- });
-
- // sign via api
- const signResult = await signMessage({
- baseUrl: getThirdwebBaseUrl("engineCloud"),
- body: {
- params: [
- {
- format: "text",
- message: "Hello, world!",
- },
- ],
- signingOptions: {
- from: account.address,
- type: "EOA",
- },
- },
- bodySerializer: stringify,
- fetch: clientIdFetch,
- headers: {
- "x-wallet-access-token": authToken,
- },
- });
-
- const signatureResult = signResult.data?.result[0];
- if (signatureResult && "result" in signatureResult) {
- expect(signatureResult.result.signature).toEqual(rawSignature);
- } else {
- throw new Error(
- `Failed to sign message: ${stringify(signatureResult?.error) || "Unknown error"}`,
- );
- }
+ it("should sign a message with backend strategy", async () => {
+ const rawSignature = await account.signMessage({
+ message: "Hello, world!",
});
- it("should queue a 7702 transaction", async () => {
- const body = {
- executionOptions: {
- chainId: sepolia.id,
- from: account.address,
- type: "auto" as const,
- },
+ // sign via api
+ const signResult = await signMessage({
+ body: {
params: [
{
- data: "0x",
- to: account.address,
- value: "0",
+ format: "text",
+ message: "Hello, world!",
},
],
- };
- const result = await sendTransaction({
- baseUrl: getThirdwebBaseUrl("engineCloud"),
- body,
- bodySerializer: stringify,
- fetch: clientIdFetch,
- headers: {
- "x-wallet-access-token": authToken,
+ signingOptions: {
+ from: account.address,
+ type: "EOA",
},
- });
- if (result.error) {
- throw new Error(
- `Error sending transaction: ${stringify(result.error)}`,
- );
- }
+ },
+ headers: {
+ "x-wallet-access-token": authToken,
+ },
+ });
- const txId = result.data?.result.transactions[0]?.id;
- console.log(txId);
- if (!txId) {
- throw new Error("No transaction ID found");
- }
+ if (signResult.error) {
+ throw new Error(`Error signing message: ${stringify(signResult.error)}`);
+ }
- const tx = await waitForTransactionHash({
- client: TEST_CLIENT,
- transactionId: txId,
- });
+ const signatureResult = signResult.data?.result?.[0];
+ if (signatureResult && isSuccessResponse(signatureResult)) {
+ expect(signatureResult.result.signature).toEqual(rawSignature);
+ } else {
+ throw new Error(
+ `Failed to sign message: ${stringify(signatureResult?.error) || "Unknown error"}`,
+ );
+ }
+ });
- console.log(tx.transactionHash);
- expect(tx.transactionHash).toBeDefined();
+ it("should queue a 4337 transaction", async () => {
+ const body = {
+ executionOptions: {
+ chainId: sepolia.id,
+ from: account.address,
+ type: "auto" as const,
+ },
+ params: [
+ {
+ data: "0x",
+ to: account.address,
+ value: "0",
+ },
+ ],
+ };
+ const result = await sendTransaction({
+ body,
+ headers: {
+ "x-wallet-access-token": authToken,
+ },
});
+ if (result.error) {
+ throw new Error(`Error sending transaction: ${stringify(result.error)}`);
+ }
+
+ const txId = result.data?.result.transactions[0]?.id;
+ if (!txId) {
+ throw new Error("No transaction ID found");
+ }
+
+ const tx = await waitForTransactionHash({
+ client: TEST_CLIENT,
+ transactionId: txId,
+ });
+
+ console.log(tx.transactionHash);
+ expect(tx.transactionHash).toBeDefined();
});
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2cec5a27ed3..924ce4d9252 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -7581,7 +7581,6 @@ packages:
'@walletconnect/modal@2.7.0':
resolution: {integrity: sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw==}
- deprecated: Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm
'@walletconnect/react-native-compat@2.17.3':
resolution: {integrity: sha512-lHKwXKoB0rdDH1ukxUx7o86xosWbttWIHYMZ8tgAQC1k9VH3CZZCoBcHOAAX8iBzyb0n0UP3/9zRrOcJE5nz7Q==}
@@ -16330,10 +16329,10 @@ snapshots:
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sso-oidc': 3.592.0
+ '@aws-sdk/client-sso-oidc': 3.592.0(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/client-sts': 3.592.0
'@aws-sdk/core': 3.592.0
- '@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/middleware-host-header': 3.577.0
'@aws-sdk/middleware-logger': 3.577.0
'@aws-sdk/middleware-recursion-detection': 3.577.0
@@ -16376,10 +16375,10 @@ snapshots:
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sso-oidc': 3.592.0
+ '@aws-sdk/client-sso-oidc': 3.592.0(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/client-sts': 3.592.0
'@aws-sdk/core': 3.592.0
- '@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/middleware-host-header': 3.577.0
'@aws-sdk/middleware-logger': 3.577.0
'@aws-sdk/middleware-recursion-detection': 3.577.0
@@ -16422,10 +16421,10 @@ snapshots:
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sso-oidc': 3.592.0
+ '@aws-sdk/client-sso-oidc': 3.592.0(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/client-sts': 3.592.0
'@aws-sdk/core': 3.592.0
- '@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/middleware-host-header': 3.577.0
'@aws-sdk/middleware-logger': 3.577.0
'@aws-sdk/middleware-recursion-detection': 3.577.0
@@ -16469,7 +16468,7 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/client-sso-oidc@3.592.0':
+ '@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0)':
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
@@ -16512,6 +16511,7 @@ snapshots:
'@smithy/util-utf8': 3.0.0
tslib: 2.8.1
transitivePeerDependencies:
+ - '@aws-sdk/client-sts'
- aws-crt
'@aws-sdk/client-sso-oidc@3.840.0':
@@ -16648,7 +16648,7 @@ snapshots:
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sso-oidc': 3.592.0
+ '@aws-sdk/client-sso-oidc': 3.592.0(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/core': 3.592.0
'@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/middleware-host-header': 3.577.0
@@ -16767,6 +16767,24 @@ snapshots:
'@smithy/util-stream': 4.2.3
tslib: 2.8.1
+ '@aws-sdk/credential-provider-ini@3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)':
+ dependencies:
+ '@aws-sdk/client-sts': 3.592.0
+ '@aws-sdk/credential-provider-env': 3.587.0
+ '@aws-sdk/credential-provider-http': 3.587.0
+ '@aws-sdk/credential-provider-process': 3.587.0
+ '@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)
+ '@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/types': 3.577.0
+ '@smithy/credential-provider-imds': 3.2.8
+ '@smithy/property-provider': 3.1.11
+ '@smithy/shared-ini-file-loader': 3.1.12
+ '@smithy/types': 3.7.2
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - '@aws-sdk/client-sso-oidc'
+ - aws-crt
+
'@aws-sdk/credential-provider-ini@3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)':
dependencies:
'@aws-sdk/client-sts': 3.592.0
@@ -16821,6 +16839,25 @@ snapshots:
transitivePeerDependencies:
- aws-crt
+ '@aws-sdk/credential-provider-node@3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)':
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.587.0
+ '@aws-sdk/credential-provider-http': 3.587.0
+ '@aws-sdk/credential-provider-ini': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/credential-provider-process': 3.587.0
+ '@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)
+ '@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/types': 3.577.0
+ '@smithy/credential-provider-imds': 3.2.8
+ '@smithy/property-provider': 3.1.11
+ '@smithy/shared-ini-file-loader': 3.1.12
+ '@smithy/types': 3.7.2
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - '@aws-sdk/client-sso-oidc'
+ - '@aws-sdk/client-sts'
+ - aws-crt
+
'@aws-sdk/credential-provider-node@3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)':
dependencies:
'@aws-sdk/credential-provider-env': 3.587.0
@@ -17094,7 +17131,7 @@ snapshots:
'@aws-sdk/token-providers@3.587.0(@aws-sdk/client-sso-oidc@3.592.0)':
dependencies:
- '@aws-sdk/client-sso-oidc': 3.592.0
+ '@aws-sdk/client-sso-oidc': 3.592.0(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/types': 3.577.0
'@smithy/property-provider': 3.1.11
'@smithy/shared-ini-file-loader': 3.1.12