Added actions

This commit is contained in:
2025-06-27 18:25:43 +02:00
parent 35168258eb
commit 38293531e9
4 changed files with 41 additions and 15 deletions

View File

@@ -190,7 +190,6 @@ export function AdvancedUrlFormCard() {
<DatePicker <DatePicker
value={field.value} value={field.value}
onChange={field.onChange} onChange={field.onChange}
placeholder="Select expiration date"
/> />
</FormControl> </FormControl>
<FormDescription> <FormDescription>

View File

@@ -11,7 +11,7 @@ import {
} from "@/components/ui/dropdown-menu" } from "@/components/ui/dropdown-menu"
import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from "@/components/ui/sidebar" import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from "@/components/ui/sidebar"
import { signOut, useSession } from "@/lib/auth/auth-client" import { signOut, useSession } from "@/lib/auth/auth-client"
import { LogOut, Settings, User } from "lucide-react" import { LogOut, User } from "lucide-react"
import Link from "next/link" import Link from "next/link"
import { useRouter } from "next/navigation" import { useRouter } from "next/navigation"

View File

@@ -1,10 +1,9 @@
"use server" "use server"
import { z } from "zod"
import { getSession } from "../auth/session" import { getSession } from "../auth/session"
import { insertUrl } from "../db/urls" import { insertUrl } from "../db/urls"
import { advancedUrlSchema, urlFormSchema } from "../schema/url" import { advancedUrlSchema, editUrlSchema, urlFormSchema } from "../schema/url"
import { deleteUrl as deleteUrlDb } from "../db/urls" import { deleteUrl as deleteUrlDb, updateUrl as updateUrlDb } from "../db/urls"
import { revalidatePath } from "next/cache" import { revalidatePath } from "next/cache"
import { getWebsiteTitle } from "../websiteTitle" import { getWebsiteTitle } from "../websiteTitle"
@@ -78,7 +77,34 @@ export async function createAdvanceUrl(unsafeData: unknown): Promise<Response> {
} }
} }
export async function deleteUrl(unsafe: unknown): Promise<Response> { export async function updateUrl(id: string, unsafeData: unknown): Promise<Response> {
const { session } = await getSession()
if (!session) {
return {
error: true,
message: "You must be logged in to update a short link."
}
}
const { error, data } = editUrlSchema.safeParse(unsafeData)
if (error) {
return {
error: true,
message: "Error parsing form data."
}
}
await updateUrlDb(id, data)
return {
error: false,
message: "Short link updated successfully!"
}
}
export async function deleteUrl(id: string): Promise<Response> {
const { session } = await getSession() const { session } = await getSession()
if (!session) { if (!session) {
@@ -88,15 +114,6 @@ export async function deleteUrl(unsafe: unknown): Promise<Response> {
} }
} }
const { error, data: id } = z.string().safeParse(unsafe)
if (error) {
return {
error: true,
message: "Error parsing form data."
}
}
await deleteUrlDb(id) await deleteUrlDb(id)
return { return {

View File

@@ -13,4 +13,14 @@ export const advancedUrlSchema = z.object({
expDate: z.date().optional(), expDate: z.date().optional(),
forwardQueryParams: z.boolean(), forwardQueryParams: z.boolean(),
crawlable: z.boolean(), crawlable: z.boolean(),
})
export const editUrlSchema = z.object({
url: z.string().url("Please enter a valid URL").optional(),
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().optional(),
expDate: z.date().optional(),
forwardQueryParams: z.boolean().optional(),
crawlable: z.boolean().optional(),
}) })