diff --git a/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/PublishedContractTable.tsx b/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/PublishedContractTable.tsx
index 9ba2bd49322..c051cfbd979 100644
--- a/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/PublishedContractTable.tsx
+++ b/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/PublishedContractTable.tsx
@@ -11,8 +11,8 @@ import {
} from "@/components/ui/table";
import { ToolTipLabel } from "@/components/ui/tooltip";
import { TrackedLinkTW } from "@/components/ui/tracked-link";
-import { replaceDeployerAddress } from "components/explore/publisher";
import { useTrack } from "hooks/analytics/useTrack";
+import { replaceDeployerAddress } from "lib/publisher-utils";
import { replaceIpfsUrl } from "lib/sdk";
import { ShieldCheckIcon } from "lucide-react";
import Link from "next/link";
diff --git a/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/profile-header.tsx b/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/profile-header.tsx
new file mode 100644
index 00000000000..36e6d6d2b6b
--- /dev/null
+++ b/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/components/profile-header.tsx
@@ -0,0 +1,47 @@
+"use client";
+
+import { Skeleton } from "@/components/ui/skeleton";
+import { useThirdwebClient } from "@/constants/thirdweb.client";
+import { replaceDeployerAddress } from "lib/publisher-utils";
+import {
+ AccountAddress,
+ AccountAvatar,
+ AccountBlobbie,
+ AccountName,
+ AccountProvider,
+} from "thirdweb/react";
+import { shortenIfAddress } from "utils/usedapp-external";
+
+export function ProfileHeader(props: { profileAddress: string }) {
+ const client = useThirdwebClient();
+ return (
+
+
+
+
}
+ fallbackComponent={
+
+ }
+ />
+
+
+
+ shortenIfAddress(replaceDeployerAddress(addr))
+ }
+ />
+ }
+ loadingComponent={}
+ formatFn={(name) => replaceDeployerAddress(name)}
+ />
+
+
+
+
+
+ );
+}
diff --git a/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/page.tsx b/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/page.tsx
index 59fe2a9efa8..f9c5ef1a707 100644
--- a/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/page.tsx
+++ b/apps/dashboard/src/app/(dashboard)/profile/[addressOrEns]/page.tsx
@@ -1,8 +1,6 @@
-import { getActiveAccountCookie } from "@/constants/cookie";
-import { fetchPublisherProfile } from "components/contract-components/fetch-contracts-with-versions";
+import { replaceDeployerAddress } from "lib/publisher-utils";
import type { Metadata } from "next";
import { notFound } from "next/navigation";
-import { getAddress } from "thirdweb/utils";
import { shortenIfAddress } from "utils/usedapp-external";
import { ProfileUI } from "./ProfileUI";
import { resolveAddressAndEns } from "./resolveAddressAndEns";
@@ -16,22 +14,15 @@ type PageProps = {
export default async function Page(props: PageProps) {
const params = await props.params;
const resolvedInfo = await resolveAddressAndEns(params.addressOrEns);
- const currentUserAddress = await getCurrentUserAddress();
if (!resolvedInfo) {
return notFound();
}
- const publisherProfile = await fetchPublisherProfile(
- resolvedInfo.address,
- ).catch(() => null);
-
return (
);
}
@@ -45,23 +36,11 @@ export async function generateMetadata(props: PageProps): Promise
{
}
const displayName = shortenIfAddress(
- resolvedInfo.ensName || resolvedInfo.address,
- ).replace("deployer.thirdweb.eth", "thirdweb.eth");
+ replaceDeployerAddress(resolvedInfo.ensName || resolvedInfo.address),
+ );
return {
title: displayName,
description: `Visit ${displayName}'s profile. See their published contracts and deploy them in one click.`,
};
}
-
-async function getCurrentUserAddress() {
- try {
- const currentUserAddress = await getActiveAccountCookie();
- if (!currentUserAddress) {
- return null;
- }
- return getAddress(currentUserAddress);
- } catch {
- return null;
- }
-}
diff --git a/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/[version]/opengraph-image.tsx b/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/[version]/opengraph-image.tsx
index cbbf996510c..9f9d25d4428 100644
--- a/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/[version]/opengraph-image.tsx
+++ b/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/[version]/opengraph-image.tsx
@@ -1,6 +1,8 @@
-import { fetchPublisherProfile } from "components/contract-components/fetch-contracts-with-versions";
+import { getThirdwebClient } from "@/constants/thirdweb.server";
import { format } from "date-fns/format";
+import { resolveEns } from "lib/ens";
import { correctAndUniqueLicenses } from "lib/licenses";
+import { getSocialProfiles } from "thirdweb/social";
import { getPublishedContractsWithPublisherMapping } from "../utils/getPublishedContractsWithPublisherMapping";
import { publishedContractOGImageTemplate } from "../utils/publishedContractOGImageTemplate";
@@ -18,20 +20,33 @@ export default async function Image(props: {
version: string;
};
}) {
+ const client = getThirdwebClient();
const { publisher, contract_id } = props.params;
- const [publishedContracts, publisherProfile] = await Promise.all([
+ const [publishedContracts, socialProfiles] = await Promise.all([
getPublishedContractsWithPublisherMapping({
publisher: publisher,
contract_id: contract_id,
}),
- fetchPublisherProfile(publisher),
+ getSocialProfiles({
+ address: (await resolveEns(publisher)).address || publisher,
+ client,
+ }),
]);
if (!publishedContracts) {
return null;
}
+ const publisherProfile = (() => {
+ const name = socialProfiles.find((p) => p.name)?.name || publisher;
+ const avatar = socialProfiles.find((p) => p.avatar)?.avatar;
+ return {
+ name,
+ avatar,
+ };
+ })();
+
const publishedContract =
publishedContracts.find((p) => p.version === props.params.version) ||
publishedContracts[0];
diff --git a/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/opengraph-image.tsx b/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/opengraph-image.tsx
index e3929c14c8b..ef1ca2fbf21 100644
--- a/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/opengraph-image.tsx
+++ b/apps/dashboard/src/app/(dashboard)/published-contract/[publisher]/[contract_id]/opengraph-image.tsx
@@ -1,6 +1,8 @@
-import { fetchPublisherProfile } from "components/contract-components/fetch-contracts-with-versions";
+import { getThirdwebClient } from "@/constants/thirdweb.server";
import { format } from "date-fns/format";
+import { resolveEns } from "lib/ens";
import { correctAndUniqueLicenses } from "lib/licenses";
+import { getSocialProfiles } from "thirdweb/social";
import { getPublishedContractsWithPublisherMapping } from "./utils/getPublishedContractsWithPublisherMapping";
import { publishedContractOGImageTemplate } from "./utils/publishedContractOGImageTemplate";
@@ -17,16 +19,29 @@ export default async function Image(props: {
contract_id: string;
};
}) {
+ const client = getThirdwebClient();
const { publisher, contract_id } = props.params;
- const [publishedContracts, publisherProfile] = await Promise.all([
+ const [publishedContracts, socialProfiles] = await Promise.all([
getPublishedContractsWithPublisherMapping({
publisher: publisher,
contract_id: contract_id,
}),
- fetchPublisherProfile(publisher),
+ getSocialProfiles({
+ address: (await resolveEns(publisher)).address || publisher,
+ client,
+ }),
]);
+ const publisherProfile = (() => {
+ const name = socialProfiles.find((p) => p.name)?.name || publisher;
+ const avatar = socialProfiles.find((p) => p.avatar)?.avatar;
+ return {
+ name,
+ avatar,
+ };
+ })();
+
if (!publishedContracts) {
return null;
}
diff --git a/apps/dashboard/src/components/contract-components/fetch-contracts-with-versions.ts b/apps/dashboard/src/components/contract-components/fetch-contracts-with-versions.ts
index aa2a7033a29..3a166d1be5f 100644
--- a/apps/dashboard/src/components/contract-components/fetch-contracts-with-versions.ts
+++ b/apps/dashboard/src/components/contract-components/fetch-contracts-with-versions.ts
@@ -1,14 +1,11 @@
import { getThirdwebClient } from "@/constants/thirdweb.server";
-import type { ProfileMetadata } from "constants/schemas";
import { isAddress } from "thirdweb";
import { fetchDeployMetadata } from "thirdweb/contract";
import { resolveAddress } from "thirdweb/extensions/ens";
import {
getContractPublisher,
getPublishedContractVersions,
- getPublisherProfileUri,
} from "thirdweb/extensions/thirdweb";
-import { download } from "thirdweb/storage";
export function mapThirdwebPublisher(publisher: string) {
if (publisher === "thirdweb.eth") {
@@ -18,34 +15,6 @@ export function mapThirdwebPublisher(publisher: string) {
return publisher;
}
-export async function fetchPublisherProfile(publisherAddress: string) {
- const client = getThirdwebClient();
-
- const profileUri = await getPublisherProfileUri({
- contract: getContractPublisher(client),
- publisher: isAddress(publisherAddress)
- ? publisherAddress
- : await resolveAddress({
- client,
- name: mapThirdwebPublisher(publisherAddress),
- }),
- });
-
- if (!profileUri) {
- return null;
- }
-
- try {
- const res = await download({
- client,
- uri: profileUri,
- });
- return res.json() as Promise;
- } catch {
- return null;
- }
-}
-
export async function fetchPublishedContractVersions(
publisherAddress: string,
contractId: string,
diff --git a/apps/dashboard/src/components/contract-components/hooks.ts b/apps/dashboard/src/components/contract-components/hooks.ts
index e6ebbf1eedf..56a83bf6f85 100644
--- a/apps/dashboard/src/components/contract-components/hooks.ts
+++ b/apps/dashboard/src/components/contract-components/hooks.ts
@@ -12,32 +12,10 @@ import { isAddress } from "thirdweb/utils";
import {
type PublishedContractWithVersion,
fetchPublishedContractVersions,
- fetchPublisherProfile,
} from "./fetch-contracts-with-versions";
import { fetchPublishedContracts } from "./fetchPublishedContracts";
import { fetchPublishedContractsFromDeploy } from "./fetchPublishedContractsFromDeploy";
-function publisherProfileQuery(publisherAddress?: string) {
- return queryOptions({
- queryKey: ["releaser-profile", publisherAddress],
- queryFn: () => {
- if (!publisherAddress) {
- throw new Error("publisherAddress is not defined");
- }
- return fetchPublisherProfile(publisherAddress);
- },
- enabled: !!publisherAddress,
- // 24h
- gcTime: 60 * 60 * 24 * 1000,
- // 1h
- staleTime: 60 * 60 * 1000,
- });
-}
-
-export function usePublisherProfile(publisherAddress?: string) {
- return useQuery(publisherProfileQuery(publisherAddress));
-}
-
export function useAllVersions(
publisherAddress: string | undefined,
contractId: string | undefined,
diff --git a/apps/dashboard/src/components/contract-components/publisher/PublisherSocials.tsx b/apps/dashboard/src/components/contract-components/publisher/PublisherSocials.tsx
deleted file mode 100644
index 2538de3f19a..00000000000
--- a/apps/dashboard/src/components/contract-components/publisher/PublisherSocials.tsx
+++ /dev/null
@@ -1,137 +0,0 @@
-import { Button } from "@/components/ui/button";
-import { TrackedLinkTW } from "@/components/ui/tracked-link";
-import { DiscordIcon } from "components/icons/brand-icons/DiscordIcon";
-import { GithubIcon } from "components/icons/brand-icons/GithubIcon";
-import { LinkedInIcon } from "components/icons/brand-icons/LinkedinIcon";
-import { MediumIcon } from "components/icons/brand-icons/MediumIcon";
-import { MetaIcon } from "components/icons/brand-icons/MetaIcon";
-import { RedditIcon } from "components/icons/brand-icons/RedditIcon";
-import { TelegramIcon } from "components/icons/brand-icons/TelegramIcon";
-import { XIcon } from "components/icons/brand-icons/XIcon";
-import type { ProfileMetadata } from "constants/schemas";
-import { GlobeIcon } from "lucide-react";
-import { hostnameEndsWith } from "../../../utils/url";
-
-const TRACKING_CATEGORY = "releaser-header";
-
-export const PublisherSocials: React.FC<{
- publisherProfile: ProfileMetadata;
-}> = ({ publisherProfile }) => (
-
- {publisherProfile.twitter && (
-
- )}
-
- {publisherProfile.discord && (
-
- )}
-
- {publisherProfile.github && (
-
- )}
-
- {publisherProfile.website && (
-
- )}
-
- {publisherProfile.medium && (
-
- )}
-
- {publisherProfile.telegram && (
-
- )}
-
- {publisherProfile.facebook && (
-
- )}
-
- {publisherProfile.reddit && (
-
- )}
-
- {publisherProfile.linkedin && (
-
- )}
-
-);
-
-function TrackedIconButton(props: {
- icon: React.FC<{ className?: string }>;
- href: string;
- label: string;
-}) {
- return (
-
- );
-}
diff --git a/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx b/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx
deleted file mode 100644
index 8664c42ec20..00000000000
--- a/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx
+++ /dev/null
@@ -1,242 +0,0 @@
-"use client";
-
-import { FormFieldSetup } from "@/components/blocks/FormFieldSetup";
-import { Spinner } from "@/components/ui/Spinner/Spinner";
-import { Button } from "@/components/ui/button";
-import { Input } from "@/components/ui/input";
-import {
- Sheet,
- SheetContent,
- SheetHeader,
- SheetTitle,
- SheetTrigger,
-} from "@/components/ui/sheet";
-import { Textarea } from "@/components/ui/textarea";
-import { useThirdwebClient } from "@/constants/thirdweb.client";
-import { resolveSchemeWithErrorHandler } from "@/lib/resolveSchemeWithErrorHandler";
-import { useQueryClient } from "@tanstack/react-query";
-import { FileInput } from "components/shared/FileInput";
-import {
- DASHBOARD_ENGINE_RELAYER_URL,
- DASHBOARD_FORWARDER_ADDRESS,
-} from "constants/misc";
-import type { ProfileMetadata, ProfileMetadataInput } from "constants/schemas";
-import { useTrack } from "hooks/analytics/useTrack";
-import { useImageFileOrUrl } from "hooks/useImageFileOrUrl";
-import { EditIcon } from "lucide-react";
-import { useId, useState } from "react";
-import { useForm } from "react-hook-form";
-import { toast } from "sonner";
-import {
- getContractPublisher,
- setPublisherProfileUri,
-} from "thirdweb/extensions/thirdweb";
-import { useActiveAccount, useSendAndConfirmTransaction } from "thirdweb/react";
-import { upload } from "thirdweb/storage";
-import { MaskedAvatar } from "tw-components/masked-avatar";
-
-interface EditProfileProps {
- publisherProfile: ProfileMetadata;
-}
-
-export const EditProfile: React.FC = ({
- publisherProfile,
-}) => {
- const FORM_ID = useId();
- const client = useThirdwebClient();
- const {
- register,
- handleSubmit,
- setValue,
- watch,
- formState: { errors },
- } = useForm({
- defaultValues: publisherProfile,
- values: publisherProfile,
- });
-
- const imageUrl = useImageFileOrUrl(watch("avatar"));
-
- const address = useActiveAccount()?.address;
- const queryClient = useQueryClient();
- const sendTx = useSendAndConfirmTransaction({
- gasless: {
- experimentalChainlessSupport: true,
- provider: "engine",
- relayerUrl: DASHBOARD_ENGINE_RELAYER_URL,
- relayerForwarderAddress: DASHBOARD_FORWARDER_ADDRESS,
- },
- });
- const trackEvent = useTrack();
- const [open, setOpen] = useState(false);
-
- return (
-
-
-
-
-
-
- Edit your profile
-
-
-
-
- );
-};
diff --git a/apps/dashboard/src/components/contract-components/publisher/masked-avatar.tsx b/apps/dashboard/src/components/contract-components/publisher/masked-avatar.tsx
deleted file mode 100644
index 4b55fac6e4e..00000000000
--- a/apps/dashboard/src/components/contract-components/publisher/masked-avatar.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-"use client";
-
-import { useThirdwebClient } from "@/constants/thirdweb.client";
-import { resolveSchemeWithErrorHandler } from "@/lib/resolveSchemeWithErrorHandler";
-import {
- MaskedAvatar,
- type MaskedAvatarProps,
-} from "tw-components/masked-avatar";
-import { useEns, usePublisherProfile } from "../hooks";
-
-interface PublisherAvatarProps extends Omit {
- address: string;
-}
-
-export const PublisherAvatar: React.FC = ({
- address,
- isPending,
- ...restProps
-}) => {
- const client = useThirdwebClient();
- const ensQuery = useEns(address);
- const publisherProfile = usePublisherProfile(
- ensQuery.data?.address || undefined,
- );
-
- const publisherImageUrl = resolveSchemeWithErrorHandler({
- uri: publisherProfile.data?.avatar,
- client,
- });
-
- if (
- !(isPending || ensQuery.isPending || publisherProfile.isPending) &&
- !publisherImageUrl
- ) {
- return null;
- }
-
- return (
-
- );
-};
diff --git a/apps/dashboard/src/components/contract-components/publisher/publisher-header.tsx b/apps/dashboard/src/components/contract-components/publisher/publisher-header.tsx
index 8613ef9245c..1d568071f4e 100644
--- a/apps/dashboard/src/components/contract-components/publisher/publisher-header.tsx
+++ b/apps/dashboard/src/components/contract-components/publisher/publisher-header.tsx
@@ -1,15 +1,19 @@
+"use client";
+
+import { useThirdwebClient } from "@/constants/thirdweb.client";
import { Flex, Skeleton } from "@chakra-ui/react";
-import {
- replaceDeployerAddress,
- treatAddress,
-} from "components/explore/publisher";
import { useTrack } from "hooks/analytics/useTrack";
-import { useActiveAccount } from "thirdweb/react";
+import { replaceDeployerAddress } from "lib/publisher-utils";
+import {
+ AccountAddress,
+ AccountAvatar,
+ AccountBlobbie,
+ AccountName,
+ AccountProvider,
+} from "thirdweb/react";
import { Heading, Link, LinkButton } from "tw-components";
-import { useEns, usePublisherProfile } from "../hooks";
-import { PublisherSocials } from "./PublisherSocials";
-import { EditProfile } from "./edit-profile";
-import { PublisherAvatar } from "./masked-avatar";
+import { shortenIfAddress } from "utils/usedapp-external";
+import { useEns } from "../hooks";
const TRACKING_CATEGORY = "releaser-header";
@@ -22,10 +26,7 @@ export const PublisherHeader: React.FC = ({
page,
}) => {
const ensQuery = useEns(wallet);
- const publisherProfile = usePublisherProfile(
- ensQuery.data?.address || undefined,
- );
- const address = useActiveAccount()?.address;
+ const client = useThirdwebClient();
const trackEvent = useTrack();
@@ -40,10 +41,12 @@ export const PublisherHeader: React.FC = ({
Published by
-
-
+
+
trackEvent({
category: TRACKING_CATEGORY,
@@ -52,15 +55,15 @@ export const PublisherHeader: React.FC
= ({
})
}
>
-
+ }
+ loadingComponent={}
+ className="size-14 rounded-full"
/>
-
-
= ({
})
}
>
-
- {treatAddress(
- publisherProfile?.data?.name ||
- ensQuery.data?.ensName ||
- wallet,
- )}
-
+
+ shortenIfAddress(replaceDeployerAddress(addr))
+ }
+ />
+ }
+ loadingComponent={}
+ formatFn={(name) => replaceDeployerAddress(name)}
+ />
- {publisherProfile?.data && (
-
- )}
-
-
+
+
= ({
>
View all contracts
-
- {ensQuery.data?.address === address && publisherProfile?.data && (
-
- )}
);
diff --git a/apps/dashboard/src/components/explore/contract-card/index.tsx b/apps/dashboard/src/components/explore/contract-card/index.tsx
index e34684a7fa6..df9f591148f 100644
--- a/apps/dashboard/src/components/explore/contract-card/index.tsx
+++ b/apps/dashboard/src/components/explore/contract-card/index.tsx
@@ -6,10 +6,11 @@ import { getThirdwebClient } from "@/constants/thirdweb.server";
import { resolveSchemeWithErrorHandler } from "@/lib/resolveSchemeWithErrorHandler";
import { cn } from "@/lib/utils";
import { moduleToBase64 } from "app/(dashboard)/published-contract/utils/module-base-64";
+import { replaceDeployerAddress } from "lib/publisher-utils";
import { RocketIcon, ShieldCheckIcon } from "lucide-react";
import Link from "next/link";
import { fetchPublishedContractVersion } from "../../contract-components/fetch-contracts-with-versions";
-import { ContractPublisher, replaceDeployerAddress } from "../publisher";
+import { ContractPublisher } from "../publisher";
interface ContractCardProps {
publisher: string;
diff --git a/apps/dashboard/src/components/explore/publisher/index.tsx b/apps/dashboard/src/components/explore/publisher/index.tsx
index 10969838dc2..a52561ed787 100644
--- a/apps/dashboard/src/components/explore/publisher/index.tsx
+++ b/apps/dashboard/src/components/explore/publisher/index.tsx
@@ -1,53 +1,52 @@
-import { PublisherAvatar } from "components/contract-components/publisher/masked-avatar";
+"use client";
+
+import { Skeleton } from "@/components/ui/skeleton";
+import { useThirdwebClient } from "@/constants/thirdweb.client";
+import { replaceDeployerAddress } from "lib/publisher-utils";
import Link from "next/link";
+import {
+ AccountAddress,
+ AccountAvatar,
+ AccountBlobbie,
+ AccountName,
+ AccountProvider,
+} from "thirdweb/react";
import { shortenIfAddress } from "utils/usedapp-external";
-import { isEnsName, resolveEns } from "../../../lib/ens";
interface ContractPublisherProps {
addressOrEns: string;
}
-export const ContractPublisher: React.FC = async ({
+export const ContractPublisher: React.FC = ({
addressOrEns,
}) => {
- let ensOrAddressToShow = addressOrEns;
-
- if (!isEnsName(addressOrEns)) {
- try {
- const res = await resolveEns(addressOrEns);
- if (res.ensName) {
- ensOrAddressToShow = res.ensName;
- }
- } catch {
- // ignore
- }
- }
-
+ const client = useThirdwebClient();
return (
-
-
+
+
+ }
+ loadingComponent={}
+ className="size-5 rounded-full"
+ />
- {treatAddress(ensOrAddressToShow)}
-
+
+ shortenIfAddress(replaceDeployerAddress(addr))
+ }
+ />
+ }
+ loadingComponent={}
+ formatFn={(name) => replaceDeployerAddress(name)}
+ />
+
+
);
};
-
-export function replaceDeployerAddress(address: string) {
- return (
- address
- .replace("deployer.thirdweb.eth", "thirdweb.eth")
- // deployer.thirdweb.eth
- .replace("0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024", "thirdweb.eth")
- );
-}
-
-export function treatAddress(address: string) {
- return shortenIfAddress(replaceDeployerAddress(address));
-}
diff --git a/apps/dashboard/src/components/icons/brand-icons/MediumIcon.tsx b/apps/dashboard/src/components/icons/brand-icons/MediumIcon.tsx
deleted file mode 100644
index b05bac5f35e..00000000000
--- a/apps/dashboard/src/components/icons/brand-icons/MediumIcon.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { SVGProps } from "react";
-
-export const MediumIcon = (props: SVGProps) => {
- return (
-
- );
-};
diff --git a/apps/dashboard/src/components/icons/brand-icons/MetaIcon.tsx b/apps/dashboard/src/components/icons/brand-icons/MetaIcon.tsx
deleted file mode 100644
index ee1d42a27e7..00000000000
--- a/apps/dashboard/src/components/icons/brand-icons/MetaIcon.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { SVGProps } from "react";
-
-export const MetaIcon = (props: SVGProps) => {
- return (
-
- );
-};
diff --git a/apps/dashboard/src/components/icons/brand-icons/TelegramIcon.tsx b/apps/dashboard/src/components/icons/brand-icons/TelegramIcon.tsx
deleted file mode 100644
index dbfcea3e1ff..00000000000
--- a/apps/dashboard/src/components/icons/brand-icons/TelegramIcon.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import type { SVGProps } from "react";
-
-export const TelegramIcon = (props: SVGProps) => {
- return (
-
- );
-};
diff --git a/apps/dashboard/src/components/settings/ApiKeys/Create/CreateApiKeyModal.stories.tsx b/apps/dashboard/src/components/settings/ApiKeys/Create/CreateApiKeyModal.stories.tsx
index df40b767fcb..a28810c62e7 100644
--- a/apps/dashboard/src/components/settings/ApiKeys/Create/CreateApiKeyModal.stories.tsx
+++ b/apps/dashboard/src/components/settings/ApiKeys/Create/CreateApiKeyModal.stories.tsx
@@ -38,7 +38,6 @@ function Story(props: {
const [isOpen, setIsOpen] = useState(true);
const mutation = useMutation({
mutationFn: async (input: CreateKeyInput) => {
- console.log("Creating API key with", input);
await new Promise((resolve) => setTimeout(resolve, 1000));
const apiKey = createApiKeyStub();
apiKey.name = input.name || apiKey.name;
diff --git a/apps/dashboard/src/constants/schemas.ts b/apps/dashboard/src/constants/schemas.ts
index 945c7f070ff..c44e436b201 100644
--- a/apps/dashboard/src/constants/schemas.ts
+++ b/apps/dashboard/src/constants/schemas.ts
@@ -65,27 +65,3 @@ export const CommonContractSchema = z
defaultAdmin: AddressOrEnsSchema.optional(),
})
.catchall(z.unknown());
-
-// @internal
-const ProfileSchemaInput = z.object({
- name: z.string().optional(),
- bio: z.string().optional(),
- avatar: FileOrStringSchema.optional(),
- website: z.string().optional(),
- twitter: z.string().optional(),
- telegram: z.string().optional(),
- facebook: z.string().optional(),
- github: z.string().optional(),
- medium: z.string().optional(),
- linkedin: z.string().optional(),
- reddit: z.string().optional(),
- discord: z.string().optional(),
-});
-
-// @internal
-const ProfileSchemaOutput = ProfileSchemaInput.extend({
- avatar: z.string().optional(),
-});
-
-export type ProfileMetadataInput = z.infer;
-export type ProfileMetadata = z.infer;
diff --git a/apps/dashboard/src/lib/publisher-utils.ts b/apps/dashboard/src/lib/publisher-utils.ts
new file mode 100644
index 00000000000..88088c97756
--- /dev/null
+++ b/apps/dashboard/src/lib/publisher-utils.ts
@@ -0,0 +1,8 @@
+export function replaceDeployerAddress(address: string) {
+ return (
+ address
+ .replace("deployer.thirdweb.eth", "thirdweb.eth")
+ // deployer.thirdweb.eth
+ .replace("0xdd99b75f095d0c4d5112aCe938e4e6ed962fb024", "thirdweb.eth")
+ );
+}
diff --git a/apps/dashboard/src/stores/chainStores.tsx b/apps/dashboard/src/stores/chainStores.tsx
index 45e0ffa2a7e..bcc87f97a58 100644
--- a/apps/dashboard/src/stores/chainStores.tsx
+++ b/apps/dashboard/src/stores/chainStores.tsx
@@ -28,7 +28,6 @@ export function SyncChainStores() {
storageKey={TW_LOCAL_CHAIN_STORE}
store={chainOverridesStore}
onLoaded={() => {
- console.log("chain overrides loaded");
isChainOverridesLoadedStore.setValue(true);
}}
/>
diff --git a/apps/dashboard/src/tw-components/masked-avatar/index.tsx b/apps/dashboard/src/tw-components/masked-avatar/index.tsx
index 6fa472dec9d..01e7548d0d1 100644
--- a/apps/dashboard/src/tw-components/masked-avatar/index.tsx
+++ b/apps/dashboard/src/tw-components/masked-avatar/index.tsx
@@ -2,7 +2,7 @@ import { Img } from "@/components/blocks/Img";
import { cn } from "@/lib/utils";
import hexagon from "./hexagon.png";
-export interface MaskedAvatarProps {
+interface MaskedAvatarProps {
src: string;
isPending?: boolean;
alt?: string;
diff --git a/packages/thirdweb/src/react/web/ui/prebuilt/Account/avatar.tsx b/packages/thirdweb/src/react/web/ui/prebuilt/Account/avatar.tsx
index 84772e6d3c0..ad6444a07df 100644
--- a/packages/thirdweb/src/react/web/ui/prebuilt/Account/avatar.tsx
+++ b/packages/thirdweb/src/react/web/ui/prebuilt/Account/avatar.tsx
@@ -206,6 +206,7 @@ export function AccountAvatar({
throw new Error("Failed to resolve social + ens avatar");
},
+ retry: false,
...queryOptions,
});
diff --git a/packages/thirdweb/src/react/web/ui/prebuilt/Account/balance.tsx b/packages/thirdweb/src/react/web/ui/prebuilt/Account/balance.tsx
index dafa851123f..93ea9a3ac85 100644
--- a/packages/thirdweb/src/react/web/ui/prebuilt/Account/balance.tsx
+++ b/packages/thirdweb/src/react/web/ui/prebuilt/Account/balance.tsx
@@ -179,6 +179,7 @@ export function AccountBalance({
tokenAddress,
});
},
+ retry: false,
...queryOptions,
});
diff --git a/packages/thirdweb/src/react/web/ui/prebuilt/Account/name.tsx b/packages/thirdweb/src/react/web/ui/prebuilt/Account/name.tsx
index cb85f0ae123..75b634f4861 100644
--- a/packages/thirdweb/src/react/web/ui/prebuilt/Account/name.tsx
+++ b/packages/thirdweb/src/react/web/ui/prebuilt/Account/name.tsx
@@ -160,6 +160,7 @@ export function AccountName({
}
return formatFn ? formatFn(name) : name;
},
+ retry: false,
...queryOptions,
});