From be221f3e1c5a1c7f3bc4297e6068244cca22a955 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 26 Jun 2025 20:10:05 +0200 Subject: [PATCH] Fixed forms --- src/app/(admin)/dashboard/create/page.tsx | 1 - .../dashboard/advanced-url-form-card.tsx | 6 +++--- src/components/dashboard/url-form-card.tsx | 2 +- src/lib/actions/url.ts | 15 +++++++++++++-- src/lib/schema/url.ts | 8 ++++---- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/app/(admin)/dashboard/create/page.tsx b/src/app/(admin)/dashboard/create/page.tsx index c1d94b2..a410564 100644 --- a/src/app/(admin)/dashboard/create/page.tsx +++ b/src/app/(admin)/dashboard/create/page.tsx @@ -5,7 +5,6 @@ export default function DashboardCreatePage() {

Create Short Link

-

Create a new short link with advanced configuration options.

diff --git a/src/components/dashboard/advanced-url-form-card.tsx b/src/components/dashboard/advanced-url-form-card.tsx index 91aab53..56dd39d 100644 --- a/src/components/dashboard/advanced-url-form-card.tsx +++ b/src/components/dashboard/advanced-url-form-card.tsx @@ -20,9 +20,9 @@ export function AdvancedUrlFormCard() { resolver: zodResolver(advancedUrlSchema), defaultValues: { url: "", - slug: undefined, - title: undefined, - maxVisits: undefined, + slug: "", + title: "", + maxVisits: 0, expDate: undefined, forwardQueryParams: true, crawlable: false diff --git a/src/components/dashboard/url-form-card.tsx b/src/components/dashboard/url-form-card.tsx index c6c37ac..6327b30 100644 --- a/src/components/dashboard/url-form-card.tsx +++ b/src/components/dashboard/url-form-card.tsx @@ -18,7 +18,7 @@ export function UrlFormCard() { resolver: zodResolver(urlFormSchema), defaultValues: { url: "", - slug: undefined + slug: "" } }) diff --git a/src/lib/actions/url.ts b/src/lib/actions/url.ts index d56c511..6c5b842 100644 --- a/src/lib/actions/url.ts +++ b/src/lib/actions/url.ts @@ -5,6 +5,7 @@ import { getSession } from "../auth/session" import { insertUrl } from "../db/urls" import { advancedUrlSchema, urlFormSchema } from "../schema/url" import { deleteUrl as deleteUrlDb } from "../db/urls" +import { revalidatePath } from "next/cache" type Response = { error: boolean @@ -30,7 +31,12 @@ export async function addUrl(unsafeData: unknown): Promise { } } - await insertUrl(data) + await insertUrl({ + ...data, + slug: data.slug.length === 0 ? undefined : data.slug, + }) + + revalidatePath("/dashboard") return { error: false, @@ -57,7 +63,12 @@ export async function createAdvanceUrl(unsafeData: unknown): Promise { } } - await insertUrl(data) + await insertUrl({ + ...data, + slug: data.slug?.length === 0 ? undefined : data.slug, + title: data.title?.length === 0 ? undefined : data.title, + maxVisits: data.maxVisits > 0 ? data.maxVisits : undefined, + }) return { error: false, diff --git a/src/lib/schema/url.ts b/src/lib/schema/url.ts index b398297..d379d00 100644 --- a/src/lib/schema/url.ts +++ b/src/lib/schema/url.ts @@ -2,14 +2,14 @@ import { z } from "zod"; export const urlFormSchema = z.object({ url: z.string().url("Please enter a valid URL"), - slug: z.string().max(10, "Slug must be 10 characters or less").optional() + slug: z.string().max(10, "Slug must be 10 characters or less") }) export const advancedUrlSchema = z.object({ url: z.string().url("Please enter a valid URL"), - slug: z.string().max(10, "Slug must be 10 characters or less").optional(), - title: z.string().max(100, "Title must be 100 characters or less").optional(), - maxVisits: z.number().int().min(1, "Max visits must be at least 1").optional(), + slug: z.string().max(10, "Slug must be 10 characters or less"), + title: z.string().max(100, "Title must be 100 characters or less"), + maxVisits: z.number().int(), expDate: z.date().optional(), forwardQueryParams: z.boolean(), crawlable: z.boolean(),