thirdweb 5.76.0-nightly-e702490f2ff5e2b7d6b28c06731af880583cf8bc-20241210010916 → 5.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.js +33 -0
- package/dist/cjs/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.js +172 -0
- package/dist/cjs/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.js.map +1 -0
- package/dist/cjs/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.js +175 -0
- package/dist/cjs/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.js.map +1 -0
- package/dist/cjs/extensions/erc721/write/sigMint.js +99 -4
- package/dist/cjs/extensions/erc721/write/sigMint.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js +2 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/esm/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.js +30 -0
- package/dist/esm/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.js +164 -0
- package/dist/esm/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.js.map +1 -0
- package/dist/esm/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.js +168 -0
- package/dist/esm/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.js.map +1 -0
- package/dist/esm/extensions/erc721/write/sigMint.js +99 -4
- package/dist/esm/extensions/erc721/write/sigMint.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js +2 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +1 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.d.ts +98 -0
- package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.d.ts +136 -0
- package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.d.ts.map +1 -0
- package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.d.ts +132 -0
- package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.d.ts.map +1 -0
- package/dist/types/extensions/erc721/write/sigMint.d.ts +119 -18
- package/dist/types/extensions/erc721/write/sigMint.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/extensions/erc721/__generated__/ISignatureMintERC721_v2/events/TokensMintedWithSignature.ts +55 -0
- package/src/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.ts +196 -0
- package/src/extensions/erc721/__generated__/ISignatureMintERC721_v2/write/mintWithSignature.ts +214 -0
- package/src/extensions/erc721/write/sigMint.ts +184 -8
- package/src/extensions/erc721/write/sigMint721.test.ts +42 -0
- package/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.test.tsx +135 -0
- package/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx +2 -0
- package/src/version.ts +1 -1
- package/src/wallets/in-app/core/wallet/enclave-wallet.ts +1 -1
@@ -60,6 +60,48 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
60
60
|
});
|
61
61
|
}, 60000);
|
62
62
|
|
63
|
+
it("should generate a mint signature and mint an NFT for LoyaltyContract", async () => {
|
64
|
+
const loyaltyContract = getContract({
|
65
|
+
address: await deployERC721Contract({
|
66
|
+
account: TEST_ACCOUNT_A,
|
67
|
+
chain: ANVIL_CHAIN,
|
68
|
+
client: TEST_CLIENT,
|
69
|
+
params: {
|
70
|
+
name: "Test",
|
71
|
+
symbol: "TST",
|
72
|
+
royaltyRecipient: TEST_ACCOUNT_C.address,
|
73
|
+
saleRecipient: TEST_ACCOUNT_B.address,
|
74
|
+
},
|
75
|
+
type: "LoyaltyCard",
|
76
|
+
}),
|
77
|
+
chain: ANVIL_CHAIN,
|
78
|
+
client: TEST_CLIENT,
|
79
|
+
});
|
80
|
+
const { payload, signature } = await generateMintSignature({
|
81
|
+
mintRequest: {
|
82
|
+
to: TEST_ACCOUNT_B.address,
|
83
|
+
metadata: {
|
84
|
+
name: "My NFT",
|
85
|
+
description: "This is my NFT",
|
86
|
+
image: "https://example.com/image.png",
|
87
|
+
},
|
88
|
+
},
|
89
|
+
account: TEST_ACCOUNT_A,
|
90
|
+
contract: loyaltyContract,
|
91
|
+
contractType: "LoyaltyCard",
|
92
|
+
});
|
93
|
+
const transaction = mintWithSignature({
|
94
|
+
contract: loyaltyContract,
|
95
|
+
payload,
|
96
|
+
signature,
|
97
|
+
});
|
98
|
+
const { transactionHash } = await sendTransaction({
|
99
|
+
transaction,
|
100
|
+
account: TEST_ACCOUNT_A,
|
101
|
+
});
|
102
|
+
expect(transactionHash.length).toBe(66);
|
103
|
+
});
|
104
|
+
|
63
105
|
it("should generate a mint signature and mint an NFT", async () => {
|
64
106
|
const { payload, signature } = await generateMintSignature({
|
65
107
|
mintRequest: {
|
@@ -0,0 +1,135 @@
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
2
|
+
import { render, screen } from "../../../../../../test/src/react-render.js";
|
3
|
+
import { useSocialProfiles } from "../../../../core/social/useSocialProfiles.js";
|
4
|
+
import { useProfiles } from "../../../hooks/wallets/useProfiles.js";
|
5
|
+
import { LinkedProfilesScreen } from "./LinkedProfilesScreen.jsx";
|
6
|
+
|
7
|
+
// Mock the hooks
|
8
|
+
vi.mock("../../../hooks/wallets/useProfiles");
|
9
|
+
vi.mock("../../../../core/social/useSocialProfiles");
|
10
|
+
vi.mock("../../components/Img", () => ({
|
11
|
+
Img: () => <div data-testid="mock-img">Mock Image</div>,
|
12
|
+
}));
|
13
|
+
|
14
|
+
describe("LinkedProfilesScreen", () => {
|
15
|
+
const mockClient = {
|
16
|
+
clientId: "test-client-id",
|
17
|
+
secretKey: undefined,
|
18
|
+
};
|
19
|
+
|
20
|
+
const mockProps = {
|
21
|
+
onBack: vi.fn(),
|
22
|
+
setScreen: vi.fn(),
|
23
|
+
locale: {
|
24
|
+
manageWallet: {
|
25
|
+
linkedProfiles: "Linked Profiles",
|
26
|
+
linkProfile: "Link Profile",
|
27
|
+
},
|
28
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
29
|
+
} as any,
|
30
|
+
client: mockClient,
|
31
|
+
};
|
32
|
+
|
33
|
+
beforeEach(() => {
|
34
|
+
vi.mocked(useSocialProfiles).mockReturnValue({
|
35
|
+
data: undefined,
|
36
|
+
isLoading: false,
|
37
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
38
|
+
} as any);
|
39
|
+
});
|
40
|
+
|
41
|
+
describe("getProfileDisplayName", () => {
|
42
|
+
it("should display email for email profile type", () => {
|
43
|
+
vi.mocked(useProfiles).mockReturnValue({
|
44
|
+
data: [{ type: "email", details: { email: "test@example.com" } }],
|
45
|
+
isLoading: false,
|
46
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
47
|
+
} as any);
|
48
|
+
|
49
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
50
|
+
expect(screen.getByText("test@example.com")).toBeInTheDocument();
|
51
|
+
});
|
52
|
+
|
53
|
+
it("should display email for google profile type", () => {
|
54
|
+
vi.mocked(useProfiles).mockReturnValue({
|
55
|
+
data: [{ type: "google", details: { email: "google@example.com" } }],
|
56
|
+
isLoading: false,
|
57
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
58
|
+
} as any);
|
59
|
+
|
60
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
61
|
+
expect(screen.getByText("google@example.com")).toBeInTheDocument();
|
62
|
+
});
|
63
|
+
|
64
|
+
it("should display phone number for phone profile type", () => {
|
65
|
+
vi.mocked(useProfiles).mockReturnValue({
|
66
|
+
data: [{ type: "phone", details: { phone: "+1234567890" } }],
|
67
|
+
isLoading: false,
|
68
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
69
|
+
} as any);
|
70
|
+
|
71
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
72
|
+
expect(screen.getByText("+1234567890")).toBeInTheDocument();
|
73
|
+
});
|
74
|
+
|
75
|
+
it("should display shortened address when address is present", () => {
|
76
|
+
vi.mocked(useProfiles).mockReturnValue({
|
77
|
+
data: [
|
78
|
+
{
|
79
|
+
type: "wallet",
|
80
|
+
details: { address: "0x1234567890abcdef1234567890abcdef12345678" },
|
81
|
+
},
|
82
|
+
],
|
83
|
+
isLoading: false,
|
84
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
85
|
+
} as any);
|
86
|
+
|
87
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
88
|
+
expect(screen.getByText("0x123456...345678")).toBeInTheDocument();
|
89
|
+
});
|
90
|
+
|
91
|
+
it("should display email for cognito profile type", () => {
|
92
|
+
vi.mocked(useProfiles).mockReturnValue({
|
93
|
+
data: [{ type: "cognito", details: { email: "cognito@example.com" } }],
|
94
|
+
isLoading: false,
|
95
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
96
|
+
} as any);
|
97
|
+
|
98
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
99
|
+
expect(screen.getByText("cognito@example.com")).toBeInTheDocument();
|
100
|
+
});
|
101
|
+
|
102
|
+
it("should display Custom Profile for custom_auth_endpoint", () => {
|
103
|
+
vi.mocked(useProfiles).mockReturnValue({
|
104
|
+
data: [{ type: "Custom_auth_endpoint", details: {} }],
|
105
|
+
isLoading: false,
|
106
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
107
|
+
} as any);
|
108
|
+
|
109
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
110
|
+
expect(screen.getByText("Custom Profile")).toBeInTheDocument();
|
111
|
+
});
|
112
|
+
|
113
|
+
it("should capitalize unknown profile types", () => {
|
114
|
+
vi.mocked(useProfiles).mockReturnValue({
|
115
|
+
data: [{ type: "unknown", details: {} }],
|
116
|
+
isLoading: false,
|
117
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
118
|
+
} as any);
|
119
|
+
|
120
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
121
|
+
expect(screen.getByText("Unknown")).toBeInTheDocument();
|
122
|
+
});
|
123
|
+
|
124
|
+
it("should not display guest profiles", () => {
|
125
|
+
vi.mocked(useProfiles).mockReturnValue({
|
126
|
+
data: [{ type: "guest", details: {} }],
|
127
|
+
isLoading: false,
|
128
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocking data
|
129
|
+
} as any);
|
130
|
+
|
131
|
+
render(<LinkedProfilesScreen {...mockProps} />);
|
132
|
+
expect(screen.queryByText("Guest")).not.toBeInTheDocument();
|
133
|
+
});
|
134
|
+
});
|
135
|
+
});
|
@@ -33,6 +33,8 @@ function getProfileDisplayName(profile: Profile) {
|
|
33
33
|
case (profile.type as string) === "cognito" &&
|
34
34
|
profile.details.email !== undefined:
|
35
35
|
return profile.details.email;
|
36
|
+
case (profile.type as string).toLowerCase() === "custom_auth_endpoint":
|
37
|
+
return "Custom Profile";
|
36
38
|
default:
|
37
39
|
return profile.type.slice(0, 1).toUpperCase() + profile.type.slice(1);
|
38
40
|
}
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.76.0
|
1
|
+
export const version = "5.76.0";
|
@@ -162,7 +162,7 @@ export class EnclaveWallet implements IWebWallet {
|
|
162
162
|
chainId: toHex(tx.chainId),
|
163
163
|
};
|
164
164
|
|
165
|
-
if (tx.maxFeePerGas) {
|
165
|
+
if (typeof tx.maxFeePerGas === "bigint") {
|
166
166
|
transaction.maxFeePerGas = toHex(tx.maxFeePerGas);
|
167
167
|
transaction.maxPriorityFeePerGas =
|
168
168
|
typeof tx.maxPriorityFeePerGas === "bigint"
|