Enhance user management and payment processing features

- Updated `package.json` to include a new script for launching Prisma Studio.
- Modified `signup` function in `auth-actions.ts` to include account number in user data.
- Refactored `createPayment` function in `payment.ts` to improve error handling and return structured responses.
- Updated UI components in the dashboard to improve layout and responsiveness, including changes to `UserDevices` and `UserPayments` pages.
- Introduced new `AdminDevicesTable` and `UsersPaymentsTable` components for better admin functionalities.
- Enhanced `DeviceCartDrawer` to provide user feedback during payment processing.
- Added account number input to the signup form and updated validation schema accordingly.
- Updated Prisma schema to include a new `ninja_user_id` field for user management.

These changes improve the overall functionality, maintainability, and user experience of the application, particularly in user management and payment processing.
This commit is contained in:
2025-01-06 12:49:13 +05:00
parent 745f8d8fad
commit 0a63e4337e
19 changed files with 512 additions and 46 deletions

View File

@ -13,7 +13,7 @@ export default async function LoginPage() {
return redirect("/devices");
}
return (
<div className="bg-gray-100 dark:bg-black w-full h-screen flex items-center justify-center font-sans">
<div className="dark:bg-black w-full h-screen flex items-center justify-center font-sans">
<div className="flex flex-col items-center justify-center w-full h-full ">
<Image alt="Sar Link Logo" src="/logo.png" width={100} height={100} />
<div className="mt-4 flex flex-col items-center justify-center">

View File

@ -29,8 +29,8 @@ export default async function SignupPage({
});
return (
<div className="bg-gray-100 dark:bg-black w-full h-screen flex items-center justify-center font-sans">
<div className="flex flex-col items-center justify-center w-full h-full ">
<div className="dark:bg-black w-full flex items-center justify-center font-sans">
<div className="flex flex-col items-center justify-center w-full h-full py-4">
<Image
priority
alt="Sar Link Logo"

View File

@ -1,4 +1,4 @@
import { DevicesTable } from "@/components/devices-table";
import { AdminDevicesTable } from "@/components/admin/admin-devices-table";
import Search from "@/components/search";
import { Suspense } from "react";
@ -32,7 +32,7 @@ export default async function UserDevices({
</div>
<Suspense key={query} fallback={"loading...."}>
<DevicesTable parentalControl={true} searchParams={searchParams} />
<AdminDevicesTable parentalControl={true} searchParams={searchParams} />
</Suspense>
</div>
);

View File

@ -1,8 +1,20 @@
import { UsersPaymentsTable } from "@/components/admin/user-payments-table";
import { AdminAuthGuard } from "@/lib/auth-guard";
import React from "react";
import React, { Suspense } from "react";
export default async function UserPayments() {
export default async function UserPayments({
searchParams,
}: {
searchParams: Promise<{
query: string;
page: number;
sortBy: string;
status: string;
}>;
}) {
await AdminAuthGuard();
const query = (await searchParams)?.query || "";
return (
<div>
<div className="flex justify-between items-center border-[1px] rounded-md border-dashed font-bold title-bg py-4 px-2 mb-4">
@ -10,6 +22,9 @@ export default async function UserPayments() {
User Payments
</h3>
</div>
<Suspense key={query} fallback={"loading...."}>
<UsersPaymentsTable searchParams={searchParams} />
</Suspense>
</div>
);
}

View File

@ -25,7 +25,7 @@ export default function RootLayout({
}>) {
return (
<html lang="en" suppressHydrationWarning>
<body className={`${barlow.variable} antialiased font-sans`}>
<body className={`${barlow.variable} antialiased font-sans bg-gray-100`}>
<Provider>
<NextTopLoader color="#f49d1b" showSpinner={false} zIndex={9999} />
<Toaster richColors />