Fixed forms
This commit is contained in:
@@ -5,7 +5,6 @@ export default function DashboardCreatePage() {
|
||||
<div className="p-6 space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold text-foreground mb-2">Create Short Link</h1>
|
||||
<p className="text-muted-foreground">Create a new short link with advanced configuration options.</p>
|
||||
</div>
|
||||
<AdvancedUrlFormCard />
|
||||
</div>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -18,7 +18,7 @@ export function UrlFormCard() {
|
||||
resolver: zodResolver(urlFormSchema),
|
||||
defaultValues: {
|
||||
url: "",
|
||||
slug: undefined
|
||||
slug: ""
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -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<Response> {
|
||||
}
|
||||
}
|
||||
|
||||
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<Response> {
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user