From c56ea8b90ff48a858141c427c221a0dd2a5eea8d Mon Sep 17 00:00:00 2001 From: Shay Patel Date: Wed, 24 Dec 2025 13:01:34 +0000 Subject: [PATCH] Hook up API calls with Axios --- .../shay/shortlink/ShortCodeGenerator.java | 4 +- .../shay/shortlink/ShortLinkController.java | 3 +- frontend/app/page.tsx | 19 +-- frontend/app/utils/api.ts | 27 ++++ frontend/app/utils/shortenLink.ts | 10 -- frontend/package-lock.json | 116 +++++++++++++++--- frontend/package.json | 1 + 7 files changed, 146 insertions(+), 34 deletions(-) create mode 100644 frontend/app/utils/api.ts delete mode 100644 frontend/app/utils/shortenLink.ts diff --git a/backend/src/main/java/services/shay/shortlink/ShortCodeGenerator.java b/backend/src/main/java/services/shay/shortlink/ShortCodeGenerator.java index 5c760a7..670386e 100644 --- a/backend/src/main/java/services/shay/shortlink/ShortCodeGenerator.java +++ b/backend/src/main/java/services/shay/shortlink/ShortCodeGenerator.java @@ -1,6 +1,7 @@ package services.shay.shortlink; import java.security.SecureRandom; +import java.util.Date; public class ShortCodeGenerator { @@ -17,8 +18,7 @@ public class ShortCodeGenerator { } public static String generate() { - return "abc"; - // return generate(7); + return generate(7); } } diff --git a/backend/src/main/java/services/shay/shortlink/ShortLinkController.java b/backend/src/main/java/services/shay/shortlink/ShortLinkController.java index 61ec6f4..a60e561 100644 --- a/backend/src/main/java/services/shay/shortlink/ShortLinkController.java +++ b/backend/src/main/java/services/shay/shortlink/ShortLinkController.java @@ -9,7 +9,8 @@ import java.net.URI; import java.util.UUID; @RestController -@RequestMapping("/sl") +@CrossOrigin(origins = "*") +@RequestMapping("/l") public class ShortLinkController { private final ShortLinkRepository shortLinkRepository; diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index c7da833..6208240 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -1,18 +1,20 @@ 'use client'; import { useState } from "react"; -import { shortenLink } from "./utils/shortenLink"; +import { shortenLink } from "./utils/api"; import { Clipboard, Minimize2 } from "lucide-react"; export default function Home() { const [errorMessage, setErrorMessage] = useState(null); const [successMessage, setSuccessMessage] = useState(null); + const [loading, setLoading] = useState(false); const [shortUrl, setShortUrl] = useState(null); const [manageUrl, setManageUrl] = useState(null); async function handleSubmit(event: React.FormEvent) { event.preventDefault(); + setLoading(true); try { const formData = new FormData(event.currentTarget); const longUrl = formData.get("longUrl") as string; @@ -25,6 +27,8 @@ export default function Home() { console.error(err); setErrorMessage("Failed to shorten the link. Please try again."); setSuccessMessage(null); + } finally { + setLoading(false); } } @@ -40,9 +44,9 @@ export default function Home() { } return ( -
-

halflink

-

Shorten a link with ease.

+
+

halflink

+

Shorten a link with ease.

@@ -78,7 +83,7 @@ export default function Home() { />