Skip to content

Commit

Permalink
Fixes onboarding status and redirects with darkmode issues (#78)
Browse files Browse the repository at this point in the history
  • Loading branch information
sudoFerraz authored Mar 26, 2024
1 parent 8fecf07 commit 96b52ac
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 29 deletions.
9 changes: 1 addition & 8 deletions src/app/(auth)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "../globals.css";
import { NextAuthProvider } from "../providers/nextAuthProvider";

const inter = Inter({ subsets: ["latin"] });

Expand All @@ -15,11 +14,5 @@ export default async function AuthLayout({
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<NextAuthProvider>
<html lang="en">
<body className={inter.className}>{children}</body>
</html>
</NextAuthProvider>
);
return <>{children}</>;
}
4 changes: 2 additions & 2 deletions src/app/(dashboard)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ export default async function DashboardLayout({
children: React.ReactNode;
}>) {
return (
<html lang="en">
<div>
<Header />
<div className="flex h-screen">
<SessionRefreshProvider>
<Sidebar />
<main className="w-full pt-16">{children}</main>
</SessionRefreshProvider>
</div>
</html>
</div>
);
}
18 changes: 7 additions & 11 deletions src/app/api/onboarding/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,29 @@ import {
OnboardingStep,
getOnboardingStatusForUser,
saveCreateOnboardingStatusForUser,
updateOnboardingStatusForUser,
} from "./userOnboardingService";
import { NextRequest, NextResponse } from "next/server";
import { UpdateOnboardingStatusRequestDto } from "./updateOnboardingStatusRequest.dto";

/**
* Creates / updates onboarding status
* Updates onboarding status
*/
export async function POST(req: NextRequest) {
const session = await getServerSession(options);
let success = false;
let onboardingStatus = null;
if (session?.userId) {
success = true;
const updateOnboardingStatusRequest =
(await req.json()) as UpdateOnboardingStatusRequestDto;
onboardingStatus = await getOnboardingStatusForUser(session.userId);
if (onboardingStatus == null) {
onboardingStatus = await saveCreateOnboardingStatusForUser(
session.userId,
updateOnboardingStatusRequest.onboardingFlow,
updateOnboardingStatusRequest.onboardingStep,
);
}
await updateOnboardingStatusForUser(
session.userId,
updateOnboardingStatusRequest.onboardingFlow,
updateOnboardingStatusRequest.onboardingStep,
);
}
return NextResponse.json({
success: success,
onboardingStatus: onboardingStatus,
});
}

Expand Down
26 changes: 26 additions & 0 deletions src/app/api/onboarding/userOnboardingService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export enum OnboardingFlow {
UNKNOWN,
PRIVATE,
PUBLIC,
BETA,
}

export enum OnboardingStep {
Expand All @@ -25,6 +26,31 @@ export async function getOnboardingStatusForUser(
return userOnboarding;
}

export async function updateOnboardingStatusForUser(
userId: string,
flow: OnboardingFlow,
step: OnboardingStep,
) {
const userOnboarding = await prisma.userOnboarding.findFirst({
where: {
user_id: userId,
},
});
if (userOnboarding !== null) {
await prisma.userOnboarding.update({
where: {
user_id: userId,
id: userOnboarding.id,
},
data: {
flow: OnboardingFlow[flow],
flow_step: OnboardingStep[step],
updated_at: new Date(),
},
});
}
}

export async function saveCreateOnboardingStatusForUser(
userId: string,
flow: OnboardingFlow,
Expand Down
2 changes: 1 addition & 1 deletion src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export default async function RootLayout({
children: React.ReactNode;
}>) {
return (
<html lang="en">
<html lang="en" suppressHydrationWarning>
<body className={`${inter.className}`}>
<Providers>
<NextAuthProvider>
Expand Down
26 changes: 19 additions & 7 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import { UserOnboarding } from "@prisma/client";
import axios from "axios";
import { redirect } from "next/navigation";
import { useEffect, useState } from "react";
import {
OnboardingFlow,
OnboardingStep,
} from "./api/onboarding/userOnboardingService";

export default function Home() {
const [userOnboardingStatus, setUserOnboarding] = useState<UserOnboarding>();
Expand All @@ -15,17 +19,25 @@ export default function Home() {
}
};

const handleUpdateUserOnboarding = async () => {
await axios.post("/api/onboarding", {
onboardingFlow: OnboardingFlow.BETA,
onboardingStep: OnboardingStep.COMPLETED,
});
};

useEffect(() => {
handleFetchUserOnboarding();
}, []);

useEffect(() => {
// if (userOnboardingStatus?. === "completed") {
// redirect("/repositories/new");
// } else {
redirect("/overview");
// }
if (userOnboardingStatus) {
if (userOnboardingStatus.flow.toLowerCase() !== "beta") {
handleUpdateUserOnboarding();
redirect("/repositories/new");
} else {
redirect("/overview");
}
}
}, [userOnboardingStatus]);

redirect("/overview");
}

0 comments on commit 96b52ac

Please sign in to comment.