diff --git a/apps/dashboard/src/@3rdweb-sdk/react/components/connect-wallet/index.tsx b/apps/dashboard/src/@3rdweb-sdk/react/components/connect-wallet/index.tsx
index 9cae81b66cd..5fa0a02e62a 100644
--- a/apps/dashboard/src/@3rdweb-sdk/react/components/connect-wallet/index.tsx
+++ b/apps/dashboard/src/@3rdweb-sdk/react/components/connect-wallet/index.tsx
@@ -150,7 +150,7 @@ export const CustomConnectWallet = (props: {
- Sign In
+ Connect Wallet
>
diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx
index f10cd47c4ed..b8d8eb66e78 100644
--- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx
+++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx
@@ -146,7 +146,7 @@ export function FaucetButton({
- Sign In
+ Connect Wallet
);
diff --git a/apps/dashboard/src/app/login/LoginPage.tsx b/apps/dashboard/src/app/login/LoginPage.tsx
index 43b3762c03f..ed3c9641061 100644
--- a/apps/dashboard/src/app/login/LoginPage.tsx
+++ b/apps/dashboard/src/app/login/LoginPage.tsx
@@ -123,11 +123,7 @@ function PageContent(props: {
| {
id: "complete";
}
- >(
- props.account
- ? { id: "onboarding", account: props.account }
- : { id: "login" },
- );
+ >({ id: "login" });
const router = useDashboardRouter();
const connectionStatus = useActiveWalletConnectionStatus();
diff --git a/apps/dashboard/src/app/login/page.tsx b/apps/dashboard/src/app/login/page.tsx
index f8850979f5f..9d86a8e0224 100644
--- a/apps/dashboard/src/app/login/page.tsx
+++ b/apps/dashboard/src/app/login/page.tsx
@@ -1,7 +1,5 @@
-import { redirect } from "next/navigation";
import { getRawAccount } from "../account/settings/getAccount";
import { LoginAndOnboardingPage } from "./LoginPage";
-import { isOnboardingComplete } from "./onboarding/isOnboardingRequired";
export default async function Page(props: {
searchParams: Promise<{
@@ -11,13 +9,11 @@ export default async function Page(props: {
const nextPath = (await props.searchParams).next;
const account = await getRawAccount();
- if (account && isOnboardingComplete(account)) {
- if (nextPath) {
- redirect(nextPath);
- } else {
- redirect("/team");
- }
- }
+ // don't redirect away from login page if authToken is already present and onboarding is done
+ // so that if user is stuck in a state where cookie is set, account onboarding is complete but the wallet is not connected, they can connect wallet, sign in and continue
+
+ // if the user is already logged in, wallet is connected and onboarding is complete
+ // user will be redirected to the next path on the client side without having to do anything
return ;
}
diff --git a/apps/dashboard/src/app/team/[team_slug]/(team)/layout.tsx b/apps/dashboard/src/app/team/[team_slug]/(team)/layout.tsx
index 387a7a3b039..2cb3232d4f9 100644
--- a/apps/dashboard/src/app/team/[team_slug]/(team)/layout.tsx
+++ b/apps/dashboard/src/app/team/[team_slug]/(team)/layout.tsx
@@ -2,6 +2,7 @@ import { getProjects } from "@/api/projects";
import { getTeamNebulaWaitList, getTeams } from "@/api/team";
import { TabPathLinks } from "@/components/ui/tabs";
import { notFound, redirect } from "next/navigation";
+import { getValidAccount } from "../../../account/settings/getAccount";
import { TeamHeaderLoggedIn } from "../../components/TeamHeader/team-header-logged-in.client";
export default async function TeamLayout(props: {
@@ -9,7 +10,11 @@ export default async function TeamLayout(props: {
params: Promise<{ team_slug: string }>;
}) {
const params = await props.params;
- const teams = await getTeams();
+
+ const [account, teams] = await Promise.all([
+ getValidAccount(`/team/${params.team_slug}`),
+ getTeams(),
+ ]);
if (!teams) {
redirect("/login");
@@ -37,6 +42,7 @@ export default async function TeamLayout(props: {
currentTeam={team}
teamsAndProjects={teamsAndProjects}
currentProject={undefined}
+ account={account}
/>
;
}) {
const params = await props.params;
- const teams = await getTeams();
+ const [teams, account] = await Promise.all([
+ getTeams(),
+ getValidAccount(`/team/${params.team_slug}/${params.project_slug}`),
+ ]);
if (!teams) {
redirect("/login");
@@ -49,6 +53,7 @@ export default async function TeamLayout(props: {
currentProject={project}
currentTeam={team}
teamsAndProjects={teamsAndProjects}
+ account={account}
/>
- Sign in
+ Connect Wallet
@@ -64,7 +64,7 @@ export function TeamHeaderLoggedOutMobileUI(props: {
- Sign in
+ Connect Wallet
diff --git a/apps/dashboard/src/app/team/components/TeamHeader/team-header-logged-in.client.tsx b/apps/dashboard/src/app/team/components/TeamHeader/team-header-logged-in.client.tsx
index db2188bdab7..e2d06acfddf 100644
--- a/apps/dashboard/src/app/team/components/TeamHeader/team-header-logged-in.client.tsx
+++ b/apps/dashboard/src/app/team/components/TeamHeader/team-header-logged-in.client.tsx
@@ -5,7 +5,7 @@ import type { Team } from "@/api/team";
import { getThirdwebClient } from "@/constants/thirdweb.server";
import { useDashboardRouter } from "@/lib/DashboardRouter";
import { CustomConnectWallet } from "@3rdweb-sdk/react/components/connect-wallet";
-import { useAccount } from "@3rdweb-sdk/react/hooks/useApi";
+import type { Account } from "@3rdweb-sdk/react/hooks/useApi";
import { useCallback, useState } from "react";
import { useActiveWallet, useDisconnect } from "thirdweb/react";
import { LazyCreateAPIKeyDialog } from "../../../../components/settings/ApiKeys/Create/LazyCreateAPIKeyDialog";
@@ -20,10 +20,10 @@ export function TeamHeaderLoggedIn(props: {
currentTeam: Team;
teamsAndProjects: Array<{ team: Team; projects: Project[] }>;
currentProject: Project | undefined;
+ account: Pick;
}) {
const [isCreateProjectDialogOpen, setIsCreateProjectDialogOpen] =
useState(false);
- const myAccountQuery = useAccount();
const activeWallet = useActiveWallet();
const { disconnect } = useDisconnect();
const router = useDashboardRouter();
@@ -45,7 +45,7 @@ export function TeamHeaderLoggedIn(props: {
currentProject: props.currentProject,
currentTeam: props.currentTeam,
teamsAndProjects: props.teamsAndProjects,
- account: myAccountQuery.data,
+ account: props.account,
logout: logout,
connectButton: ,
createProject: () => setIsCreateProjectDialogOpen(true),
diff --git a/apps/dashboard/src/app/team/components/TeamHeader/team-header.tsx b/apps/dashboard/src/app/team/components/TeamHeader/team-header.tsx
index 868af34cb24..b662b528da4 100644
--- a/apps/dashboard/src/app/team/components/TeamHeader/team-header.tsx
+++ b/apps/dashboard/src/app/team/components/TeamHeader/team-header.tsx
@@ -1,13 +1,13 @@
import { getProjects } from "@/api/projects";
import { getTeams } from "@/api/team";
-import { getAuthToken } from "../../../api/lib/getAuthToken";
+import { getRawAccount } from "../../../account/settings/getAccount";
import { TeamHeaderLoggedOut } from "./TeamHeaderLoggedOut";
import { TeamHeaderLoggedIn } from "./team-header-logged-in.client";
export async function TeamHeader() {
- const authToken = await getAuthToken();
+ const account = await getRawAccount();
- if (!authToken) {
+ if (!account) {
return ;
}
@@ -34,6 +34,7 @@ export async function TeamHeader() {
currentTeam={firstTeam}
teamsAndProjects={teamsAndProjects}
currentProject={undefined}
+ account={account}
/>
);
}
diff --git a/apps/dashboard/src/components/buttons/MismatchButton.tsx b/apps/dashboard/src/components/buttons/MismatchButton.tsx
index 767958b8486..9a7dc57f7e2 100644
--- a/apps/dashboard/src/components/buttons/MismatchButton.tsx
+++ b/apps/dashboard/src/components/buttons/MismatchButton.tsx
@@ -108,7 +108,7 @@ export const MismatchButton = forwardRef<
- Sign In
+ Connect Wallet
);