Fixed forms
This commit is contained in:
@@ -5,7 +5,6 @@ export default function DashboardCreatePage() {
|
|||||||
<div className="p-6 space-y-6">
|
<div className="p-6 space-y-6">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-2xl font-bold text-foreground mb-2">Create Short Link</h1>
|
<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>
|
</div>
|
||||||
<AdvancedUrlFormCard />
|
<AdvancedUrlFormCard />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ export function AdvancedUrlFormCard() {
|
|||||||
resolver: zodResolver(advancedUrlSchema),
|
resolver: zodResolver(advancedUrlSchema),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
url: "",
|
url: "",
|
||||||
slug: undefined,
|
slug: "",
|
||||||
title: undefined,
|
title: "",
|
||||||
maxVisits: undefined,
|
maxVisits: 0,
|
||||||
expDate: undefined,
|
expDate: undefined,
|
||||||
forwardQueryParams: true,
|
forwardQueryParams: true,
|
||||||
crawlable: false
|
crawlable: false
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export function UrlFormCard() {
|
|||||||
resolver: zodResolver(urlFormSchema),
|
resolver: zodResolver(urlFormSchema),
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
url: "",
|
url: "",
|
||||||
slug: undefined
|
slug: ""
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { getSession } from "../auth/session"
|
|||||||
import { insertUrl } from "../db/urls"
|
import { insertUrl } from "../db/urls"
|
||||||
import { advancedUrlSchema, urlFormSchema } from "../schema/url"
|
import { advancedUrlSchema, urlFormSchema } from "../schema/url"
|
||||||
import { deleteUrl as deleteUrlDb } from "../db/urls"
|
import { deleteUrl as deleteUrlDb } from "../db/urls"
|
||||||
|
import { revalidatePath } from "next/cache"
|
||||||
|
|
||||||
type Response = {
|
type Response = {
|
||||||
error: boolean
|
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 {
|
return {
|
||||||
error: false,
|
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 {
|
return {
|
||||||
error: false,
|
error: false,
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ import { z } from "zod";
|
|||||||
|
|
||||||
export const urlFormSchema = z.object({
|
export const urlFormSchema = z.object({
|
||||||
url: z.string().url("Please enter a valid URL"),
|
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({
|
export const advancedUrlSchema = z.object({
|
||||||
url: z.string().url("Please enter a valid URL"),
|
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"),
|
||||||
title: z.string().max(100, "Title must be 100 characters or less").optional(),
|
title: z.string().max(100, "Title must be 100 characters or less"),
|
||||||
maxVisits: z.number().int().min(1, "Max visits must be at least 1").optional(),
|
maxVisits: z.number().int(),
|
||||||
expDate: z.date().optional(),
|
expDate: z.date().optional(),
|
||||||
forwardQueryParams: z.boolean(),
|
forwardQueryParams: z.boolean(),
|
||||||
crawlable: z.boolean(),
|
crawlable: z.boolean(),
|
||||||
|
|||||||
Reference in New Issue
Block a user