From 739dbd265e84e683cf3196cf0075eb3f51b3c204 Mon Sep 17 00:00:00 2001 From: brian Date: Thu, 16 Nov 2023 02:22:49 -0500 Subject: [PATCH] Added error and success messages for deletion --- app/api/caddy/routes/requests/route.ts | 2 +- app/api/caddy/routes/route.ts | 3 ++- app/global-error.tsx | 18 ------------------ app/layout.tsx | 2 ++ components/RouteCards.tsx | 15 ++++++++++++++- package.json | 1 + 6 files changed, 20 insertions(+), 21 deletions(-) delete mode 100644 app/global-error.tsx diff --git a/app/api/caddy/routes/requests/route.ts b/app/api/caddy/routes/requests/route.ts index 8b253f0..79edf17 100644 --- a/app/api/caddy/routes/requests/route.ts +++ b/app/api/caddy/routes/requests/route.ts @@ -7,7 +7,7 @@ export async function POST(req: Request) { //TODO, Christ, maybe I'm not a dev if (!true) { - return new NextResponse(JSON.stringify({"error": "An error has occurred. Please check for a valid body and retry."}), { + return new NextResponse(JSON.stringify({error: true, message: "An error has occurred. Please check for a valid body and retry."}), { status: 400, headers: { 'Content-Type': 'appliation/json', diff --git a/app/api/caddy/routes/route.ts b/app/api/caddy/routes/route.ts index c87c5a8..9f89531 100644 --- a/app/api/caddy/routes/route.ts +++ b/app/api/caddy/routes/route.ts @@ -25,11 +25,12 @@ export async function DELETE(req: Request) { let routesMap: Route[] = routes.map(r => r); let hostsMap = routesMap.map(r => r.match[0].host); + //CHANGE 1 TO 0 let targetRoute: Route = routesMap.filter((r) => (JSON.stringify(r.match[0]) === JSON.stringify(route.match[0]))).values().next().value; let index = routesMap.indexOf(targetRoute); - if(index == -1) return new NextResponse(JSON.stringify({error: 'Route not found'}), { + if(index == -1) return new NextResponse(JSON.stringify({error: true, message: "Route not found"}), { status: 404, headers: { 'Content-Type': 'application/json', diff --git a/app/global-error.tsx b/app/global-error.tsx deleted file mode 100644 index 8b43970..0000000 --- a/app/global-error.tsx +++ /dev/null @@ -1,18 +0,0 @@ -'use client' - -export default function GlobalError({ - error, - reset, -}: { - error: Error & { digest?: string } - reset: () => void -}) { - return ( - - -

Something went wrong!

- - - - ) -} \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index 4188188..47dfa25 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -2,6 +2,7 @@ import type { Metadata } from 'next' import { Inter } from 'next/font/google' import './globals.css' import { ThemeProvider } from '@/components/theme-provider' +import { Toaster } from '@/components/ui/toaster' const inter = Inter({ subsets: ['latin'] }) @@ -27,6 +28,7 @@ export default function RootLayout({ disableTransitionOnChange > {children} + diff --git a/components/RouteCards.tsx b/components/RouteCards.tsx index 05569f2..e36ab75 100644 --- a/components/RouteCards.tsx +++ b/components/RouteCards.tsx @@ -4,15 +4,28 @@ import { Button } from '@/components/ui/button'; import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "./ui/card"; import { getHosts, getRouteUpstreams } from '@/lib/utils'; import { deleteRoute } from '@/lib/serverActions'; +import { toast } from './ui/use-toast'; export default function RouteCards({ routes }: { routes: Array }) { const handleDelete = async (route: Route) => { let res = await deleteRoute(route); - console.log(res); + + if (res.error) return toast({ + title: "Error", + description: res.message, + variant: "destructive" + }); + + return toast({ + title: "Success", + description: "Route deleted successfully!", + variant: "success" + }); } + let handleClick = (route: Route) => { console.log(route); } diff --git a/package.json b/package.json index 2401559..6816553 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-toast": "^1.1.5", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", "next": "14.0.2",