diff --git a/src/app/(root)/(routes)/settings/page.tsx b/src/app/(root)/(routes)/settings/page.tsx index 570106e..1ac0342 100644 --- a/src/app/(root)/(routes)/settings/page.tsx +++ b/src/app/(root)/(routes)/settings/page.tsx @@ -1,17 +1,26 @@ import React from "react"; import SubscriptionButton from "@/components/subcription-button"; import { checkSubscription } from "@/lib/subscriptions"; +import { getSearchCreditCount } from "@/lib/searchCredits"; +import { auth } from "@clerk/nextjs"; const SettingsPage = async () => { + const { userId } = auth(); const hasSubscription = await checkSubscription(); + if (!userId) { + return
No user Id. Please login again.
; + } + + const creditCount = await getSearchCreditCount(userId); + return (

Settings

{hasSubscription - ? "You are currently on a pro plan." - : "You are currently on a free plan."} + ? `You are currently on a pro plan. Search credits left: ${creditCount}` + : `You are currently on a free plan. Search credits left: ${creditCount}`}
diff --git a/src/app/(root)/layout.tsx b/src/app/(root)/layout.tsx index c7b9bdd..78a36fb 100644 --- a/src/app/(root)/layout.tsx +++ b/src/app/(root)/layout.tsx @@ -1,9 +1,24 @@ import Navbar from "@/components/navbar"; import { Sidebar } from "@/components/sidebar"; import { checkSubscription } from "@/lib/subscriptions"; +import { incrementSearchCredit, checkSearchCredits } from "@/lib/searchCredits"; +import { auth } from "@clerk/nextjs"; +import { redirect } from "next/navigation"; const RootLayout = async ({ children }: { children: React.ReactNode }) => { + const { userId } = auth(); const hasSubscription = await checkSubscription(); + + if (!userId) { + return redirect("/"); + } + const inSearchCreditsDb = await checkSearchCredits(userId); + + if (!inSearchCreditsDb) { + await incrementSearchCredit(userId, 5); + console.log("First time logging in. 5 credits are given."); + } + return (
diff --git a/src/app/api/search/route.ts b/src/app/api/search/route.ts index 0a67d08..6369a4f 100644 --- a/src/app/api/search/route.ts +++ b/src/app/api/search/route.ts @@ -4,7 +4,7 @@ import dayjs from "dayjs"; import prismadb from '../../lib/prismadb'; import { auth, currentUser } from "@clerk/nextjs"; import { NextResponse } from 'next/server'; -import { checkSearchCredits, deductSearchCredit, getSearchCreditCount, incrementSearchCredit } from '@/lib/searchCredits'; +import { checkSearchCredits, deductSearchCredit, getSearchCreditCount } from '@/lib/searchCredits'; @@ -52,8 +52,7 @@ export async function POST(req: Request) { const inSearchCreditsDb = await checkSearchCredits(userId) if (!inSearchCreditsDb) { - await incrementSearchCredit(userId, 5) - console.log("First time searching. Added 5 credits.") + return new NextResponse("Not inside credits database", {status: 401}) } const creditsLeft = await getSearchCreditCount(userId) @@ -63,10 +62,9 @@ export async function POST(req: Request) { } if (creditsLeft == false) { - return new NextResponse("Not inside credits database", {status: 401}) + return new NextResponse("Credits left is null.", {status: 401}) } - if (creditsLeft > 0) { await deductSearchCredit(userId)