Skip to content

Commit a983665

Browse files
committed
Merge branch 'main' into joe-UB-Route-Discovery
2 parents b869ead + acd8b9e commit a983665

File tree

414 files changed

+26224
-19919
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

414 files changed

+26224
-19919
lines changed

.changeset/blue-comics-doubt.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/blue-mice-prove.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/breezy-dodos-hunt.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@thirdweb-dev/engine": patch
3+
---
4+
5+
client id optional

.changeset/fast-onions-obey.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": patch
3+
---
4+
5+
default the spinner stroke color to currentColor and make the color prop optional

.changeset/five-sheep-crash.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@thirdweb-dev/insight": patch
3+
---
4+
5+
client id optional

.changeset/green-olives-unite.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": patch
3+
---
4+
5+
Handle large NFT colletions when updating metadata

.changeset/limited-country-dropdown.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/shy-pigs-drive.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/slick-apes-do.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/tired-rice-kiss.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

apps/dashboard/framer-rewrites.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ module.exports = [
2727
// -- engine
2828
"/engine",
2929
// -- solutions pages --
30-
"/solutions/gaming",
31-
"/solutions/consumer-apps",
32-
"/solutions/defi",
33-
"/solutions/ecosystem",
30+
"/solutions/:solution_slug",
3431
// -- campaigns --
3532
// "/unlimited-wallets", -- OFF for now
3633
// -- TPP --

apps/dashboard/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
"@radix-ui/react-popover": "^1.1.10",
4141
"@radix-ui/react-progress": "^1.1.4",
4242
"@radix-ui/react-radio-group": "^1.3.3",
43-
"@radix-ui/react-select": "^2.2.2",
44-
"@radix-ui/react-separator": "^1.1.4",
43+
"@radix-ui/react-select": "^2.2.5",
44+
"@radix-ui/react-separator": "^1.1.7",
4545
"@radix-ui/react-slot": "^1.2.0",
4646
"@radix-ui/react-switch": "^1.2.2",
4747
"@radix-ui/react-tooltip": "1.2.3",
@@ -77,7 +77,7 @@
7777
"nextjs-toploader": "^1.6.12",
7878
"nuqs": "^2.4.3",
7979
"p-limit": "^6.2.0",
80-
"papaparse": "^5.5.2",
80+
"papaparse": "^5.5.3",
8181
"pluralize": "^8.0.0",
8282
"posthog-js": "1.67.1",
8383
"prettier": "3.5.3",
@@ -89,7 +89,7 @@
8989
"react-dropzone": "^14.3.8",
9090
"react-error-boundary": "^5.0.0",
9191
"react-hook-form": "7.55.0",
92-
"react-markdown": "^9.0.1",
92+
"react-markdown": "10.1.0",
9393
"react-table": "^7.8.0",
9494
"recharts": "2.15.3",
9595
"remark-gfm": "4.0.1",
@@ -105,7 +105,7 @@
105105
"thirdweb": "workspace:*",
106106
"tiny-invariant": "^1.3.3",
107107
"use-debounce": "^10.0.4",
108-
"zod": "3.24.3"
108+
"zod": "3.25.24"
109109
},
110110
"devDependencies": {
111111
"@chakra-ui/cli": "^2.4.1",

apps/dashboard/src/@3rdweb-sdk/react/hooks/useEngine.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import type { EngineBackendWalletType } from "lib/engine";
1111
import { useState } from "react";
1212
import { useActiveAccount } from "thirdweb/react";
1313
import invariant from "tiny-invariant";
14-
import type { ResultItem } from "../../../app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/metrics/components/StatusCodes";
15-
import type { EngineStatus } from "../../../app/(app)/team/[team_slug]/[project_slug]/engine/dedicated/(instance)/[engineId]/overview/components/transactions-table";
14+
import type { ResultItem } from "../../../app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(instance)/[engineId]/metrics/components/StatusCodes";
15+
import type { EngineStatus } from "../../../app/(app)/team/[team_slug]/[project_slug]/(sidebar)/engine/dedicated/(instance)/[engineId]/overview/components/transactions-table";
1616
import { engineKeys } from "../cache-keys";
1717

1818
// Engine instances

apps/dashboard/src/app/(app)/(dashboard)/(bridge)/bridge/components/client/UniversalBridgeEmbed.tsx

Lines changed: 0 additions & 29 deletions
This file was deleted.
Loading

apps/dashboard/src/app/(app)/(dashboard)/(bridge)/routes/components/server/routes-table.tsx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,11 @@ export async function RoutesData(props: {
7777

7878
const totalPages = Math.ceil(filteredCount / DEFAULT_PAGE_SIZE);
7979

80-
const activePage = Number(props.searchParams.page || 1);
81-
const pageSize = DEFAULT_PAGE_SIZE;
82-
const startIndex = (activePage - 1) * pageSize;
83-
const endIndex = startIndex + pageSize;
84-
const paginatedRoutes = routesToRender.slice(startIndex, endIndex);
85-
8680
return (
8781
<>
8882
<main>
8983
{/* empty state */}
90-
{paginatedRoutes.length === 0 ? (
84+
{routesToRender.length === 0 ? (
9185
<div className="flex h-[300px] items-center justify-center rounded-lg border p-8 lg:h-[500px]">
9286
<p className="text-2xl">No Results found</p>
9387
</div>
@@ -111,7 +105,7 @@ export async function RoutesData(props: {
111105
</TableRow>
112106
</TableHeader>
113107
<TableBody>
114-
{paginatedRoutes.map((route) => (
108+
{routesToRender.map((route) => (
115109
<RouteListRow
116110
key={`${route.originToken.chainId}:${route.originToken.address}-${route.destinationToken.chainId}:${route.destinationToken.address}`}
117111
originChainId={route.originToken.chainId}
@@ -131,7 +125,7 @@ export async function RoutesData(props: {
131125
</TableContainer>
132126
) : (
133127
<ul className="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3">
134-
{paginatedRoutes.map((route) => (
128+
{routesToRender.map((route) => (
135129
<li
136130
key={`${route.originToken.chainId}:${route.originToken.address}-${route.destinationToken.chainId}:${route.destinationToken.address}`}
137131
className="h-full"
@@ -155,12 +149,15 @@ export async function RoutesData(props: {
155149
</main>
156150
<div className="h-10" />
157151
{totalPages > 1 && (
158-
<ChainlistPagination totalPages={totalPages} activePage={activePage} />
152+
<ChainlistPagination
153+
totalPages={totalPages}
154+
activePage={Number(props.searchParams.page) || 1}
155+
/>
159156
)}
160157
<div className="h-4" />
161158
<p className="text-balance text-center text-muted-foreground text-sm">
162159
Showing{" "}
163-
<span className="text-accent-foreground">{paginatedRoutes.length}</span>{" "}
160+
<span className="text-accent-foreground">{routesToRender.length}</span>{" "}
164161
out of{" "}
165162
{filteredCount !== totalCount ? (
166163
<>

apps/dashboard/src/app/(app)/(dashboard)/(bridge)/routes/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
type SearchParams,
1111
} from "./components/server/routes-table";
1212

13-
const title = "Routes: Swap, Bridge, and On-Ramp";
13+
const title = "Universal Bridge Routes: Swap, Bridge, and Onramp";
1414
const description =
1515
"A list of token routes for swapping, bridging, and on-ramping between EVM chains with thirdweb.";
1616

apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/direct-listings/ContractDirectListingsPage.client.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use client";
22

33
import type { ThirdwebContract } from "thirdweb";
4+
import type { ProjectMeta } from "../../../../../../team/[team_slug]/[project_slug]/contract/[chainIdOrSlug]/[contractAddress]/types";
45
import { ErrorPage, LoadingPage } from "../../_components/page-skeletons";
56
import { RedirectToContractOverview } from "../../_components/redirect-contract-overview.client";
67
import { useContractPageMetadata } from "../../_hooks/useContractPageMetadata";
@@ -9,6 +10,7 @@ import { ContractDirectListingsPage } from "./ContractDirectListingsPage";
910
export function ContractDirectListingsPageClient(props: {
1011
contract: ThirdwebContract;
1112
isLoggedIn: boolean;
13+
projectMeta: ProjectMeta | undefined;
1214
}) {
1315
const metadataQuery = useContractPageMetadata(props.contract);
1416

@@ -21,7 +23,12 @@ export function ContractDirectListingsPageClient(props: {
2123
}
2224

2325
if (!metadataQuery.data.isDirectListingSupported) {
24-
return <RedirectToContractOverview contract={props.contract} />;
26+
return (
27+
<RedirectToContractOverview
28+
contract={props.contract}
29+
projectMeta={props.projectMeta}
30+
/>
31+
);
2532
}
2633

2734
return (
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,18 @@
1-
import { notFound, redirect } from "next/navigation";
21
import { getRawAccount } from "../../../../../../account/settings/getAccount";
3-
import { getContractPageParamsInfo } from "../../_utils/getContractFromParams";
4-
import { getContractPageMetadata } from "../../_utils/getContractPageMetadata";
5-
import { ContractDirectListingsPage } from "./ContractDirectListingsPage";
6-
import { ContractDirectListingsPageClient } from "./ContractDirectListingsPage.client";
2+
import type { PublicContractPageParams } from "../../types";
3+
import { SharedDirectListingsPage } from "./shared-direct-listings-page";
74

85
export default async function Page(props: {
9-
params: Promise<{
10-
contractAddress: string;
11-
chain_id: string;
12-
}>;
6+
params: Promise<PublicContractPageParams>;
137
}) {
14-
const params = await props.params;
15-
const account = await getRawAccount();
16-
const info = await getContractPageParamsInfo(params);
17-
18-
if (!info) {
19-
notFound();
20-
}
21-
22-
if (info.isLocalhostChain) {
23-
return (
24-
<ContractDirectListingsPageClient
25-
contract={info.clientContract}
26-
isLoggedIn={!!account}
27-
/>
28-
);
29-
}
30-
31-
const { isDirectListingSupported, isInsightSupported } =
32-
await getContractPageMetadata(info.serverContract);
33-
34-
if (!isDirectListingSupported) {
35-
redirect(`/${params.chain_id}/${params.contractAddress}`);
36-
}
8+
const [params, account] = await Promise.all([props.params, getRawAccount()]);
379

3810
return (
39-
<ContractDirectListingsPage
40-
contract={info.clientContract}
11+
<SharedDirectListingsPage
12+
contractAddress={params.contractAddress}
13+
chainIdOrSlug={params.chain_id}
14+
projectMeta={undefined}
4115
isLoggedIn={!!account}
42-
isInsightSupported={isInsightSupported}
4316
/>
4417
);
4518
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { notFound } from "next/navigation";
2+
import type { ProjectMeta } from "../../../../../../team/[team_slug]/[project_slug]/contract/[chainIdOrSlug]/[contractAddress]/types";
3+
import { redirectToContractLandingPage } from "../../../../../../team/[team_slug]/[project_slug]/contract/[chainIdOrSlug]/[contractAddress]/utils";
4+
import { getContractPageParamsInfo } from "../../_utils/getContractFromParams";
5+
import { getContractPageMetadata } from "../../_utils/getContractPageMetadata";
6+
import { ContractDirectListingsPage } from "./ContractDirectListingsPage";
7+
import { ContractDirectListingsPageClient } from "./ContractDirectListingsPage.client";
8+
9+
export async function SharedDirectListingsPage(props: {
10+
contractAddress: string;
11+
chainIdOrSlug: string;
12+
projectMeta: ProjectMeta | undefined;
13+
isLoggedIn: boolean;
14+
}) {
15+
const info = await getContractPageParamsInfo({
16+
contractAddress: props.contractAddress,
17+
chainIdOrSlug: props.chainIdOrSlug,
18+
teamId: props.projectMeta?.teamId,
19+
});
20+
21+
if (!info) {
22+
notFound();
23+
}
24+
25+
if (info.isLocalhostChain) {
26+
return (
27+
<ContractDirectListingsPageClient
28+
contract={info.clientContract}
29+
isLoggedIn={props.isLoggedIn}
30+
projectMeta={props.projectMeta}
31+
/>
32+
);
33+
}
34+
35+
const { isDirectListingSupported, isInsightSupported } =
36+
await getContractPageMetadata(info.serverContract);
37+
38+
if (!isDirectListingSupported) {
39+
redirectToContractLandingPage({
40+
chainIdOrSlug: props.chainIdOrSlug,
41+
contractAddress: props.contractAddress,
42+
projectMeta: props.projectMeta,
43+
});
44+
}
45+
46+
return (
47+
<ContractDirectListingsPage
48+
contract={info.clientContract}
49+
isLoggedIn={props.isLoggedIn}
50+
isInsightSupported={isInsightSupported}
51+
/>
52+
);
53+
}

apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/(marketplace)/english-auctions/ContractEnglishAuctionsPage.client.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use client";
22

33
import type { ThirdwebContract } from "thirdweb";
4+
import type { ProjectMeta } from "../../../../../../team/[team_slug]/[project_slug]/contract/[chainIdOrSlug]/[contractAddress]/types";
45
import { ErrorPage, LoadingPage } from "../../_components/page-skeletons";
56
import { RedirectToContractOverview } from "../../_components/redirect-contract-overview.client";
67
import { useContractPageMetadata } from "../../_hooks/useContractPageMetadata";
@@ -9,6 +10,7 @@ import { ContractEnglishAuctionsPage } from "./ContractEnglishAuctionsPage";
910
export function ContractEnglishAuctionsPageClient(props: {
1011
contract: ThirdwebContract;
1112
isLoggedIn: boolean;
13+
projectMeta: ProjectMeta | undefined;
1214
}) {
1315
const metadataQuery = useContractPageMetadata(props.contract);
1416

@@ -21,7 +23,12 @@ export function ContractEnglishAuctionsPageClient(props: {
2123
}
2224

2325
if (!metadataQuery.data.isEnglishAuctionSupported) {
24-
return <RedirectToContractOverview contract={props.contract} />;
26+
return (
27+
<RedirectToContractOverview
28+
contract={props.contract}
29+
projectMeta={props.projectMeta}
30+
/>
31+
);
2532
}
2633

2734
return (

0 commit comments

Comments
 (0)