From 4405aa50c30c4e693d1c4590f97e552f4cd7ce45 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Sat, 31 Jan 2026 13:47:19 +0000 Subject: [PATCH] feat: preserve back navigation on search and like button --- src/components/like-button.tsx | 9 +++++++-- src/components/search-bar.tsx | 10 +++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/components/like-button.tsx b/src/components/like-button.tsx index 9fe8070..2152553 100644 --- a/src/components/like-button.tsx +++ b/src/components/like-button.tsx @@ -1,7 +1,7 @@ "use client"; import { useEffect, useState } from "react"; -import { redirect } from "next/navigation"; +import { useRouter } from "next/navigation"; import { Icon, loadIcons } from "@iconify/react"; import { abbreviateNumber } from "@/lib/abbreviation"; @@ -16,13 +16,18 @@ interface Props { } export default function LikeButton({ likes, isLiked, miiId, isLoggedIn, disabled, abbreviate, big }: Props) { + const router = useRouter(); + const [isLikedState, setIsLikedState] = useState(isLiked); const [likesState, setLikesState] = useState(likes); const [isAnimating, setIsAnimating] = useState(false); const onClick = async () => { if (disabled) return; - if (!isLoggedIn) redirect("/login"); + if (!isLoggedIn) { + router.push("/login"); + return; + } setIsLikedState(!isLikedState); setLikesState(isLikedState ? likesState - 1 : likesState + 1); diff --git a/src/components/search-bar.tsx b/src/components/search-bar.tsx index d25cafe..e48eb3e 100644 --- a/src/components/search-bar.tsx +++ b/src/components/search-bar.tsx @@ -1,24 +1,28 @@ "use client"; -import { redirect, useSearchParams } from "next/navigation"; +import { redirect, useRouter, useSearchParams } from "next/navigation"; import { useState } from "react"; import { Icon } from "@iconify/react"; import { querySchema } from "@/lib/schemas"; export default function SearchBar() { + const router = useRouter(); const searchParams = useSearchParams(); const [query, setQuery] = useState(""); const handleSearch = () => { const result = querySchema.safeParse(query); - if (!result.success) redirect("/"); + if (!result.success) { + router.push("/"); + return; + } // Clone current search params and add query param const params = new URLSearchParams(searchParams.toString()); params.set("q", query); params.set("page", "1"); - redirect(`/?${params.toString()}`); + router.push(`/?${params.toString()}`); }; const handleKeyDown = (event: React.KeyboardEvent) => {