diff --git a/package-lock.json b/package-lock.json index cf3e4e8..64d6806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "sonner": "^2.0.6", "tailwind-merge": "^3.3.1", "vaul": "^1.1.2", - "zod": "^3.25.76", + "zod": "^4.0.5", "zustand": "^5.0.6" }, "devDependencies": { @@ -5069,9 +5069,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", + "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 2331c10..0437620 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "sonner": "^2.0.6", "tailwind-merge": "^3.3.1", "vaul": "^1.1.2", - "zod": "^3.25.76", + "zod": "^4.0.5", "zustand": "^5.0.6" }, "devDependencies": { diff --git a/src/pages/downloader.tsx b/src/pages/downloader.tsx index a77de8a..401e0ff 100644 --- a/src/pages/downloader.tsx +++ b/src/pages/downloader.tsx @@ -26,8 +26,11 @@ import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { invoke } from "@tauri-apps/api/core"; const searchFormSchema = z.object({ - url: z.string().min(1, { message: "URL is required" }) - .url({message: "Invalid URL format." }), + url: z.url({ + error: (issue) => issue.input === undefined || issue.input === null || issue.input === "" + ? "URL is required" + : "Invalid URL format" + }), }); export default function DownloaderPage() { @@ -206,6 +209,7 @@ export default function DownloaderPage() { mode: "onChange", }) const watchedUrl = searchForm.watch("url"); + const { errors: searchFormErrors } = searchForm.formState; function handleSearchSubmit(values: z.infer) { setVideoMetadata(null); @@ -371,7 +375,7 @@ export default function DownloaderPage() { )}