From b173351011f78c319f850198a655fc72a6bd3d61 Mon Sep 17 00:00:00 2001 From: ajvpot <553597+ajvpot@users.noreply.github.com> Date: Tue, 23 Sep 2025 04:04:17 +0200 Subject: [PATCH] path display overhaul --- .../(app)/meshcore/node/[publicKey]/page.tsx | 1 - src/app/(app)/search/page.tsx | 27 +++- src/app/api/meshcore/search/route.ts | 4 +- src/components/AdvertDetails.tsx | 3 +- src/components/ChatMessageItem.tsx | 5 +- src/components/NodeLinkWithHover.tsx | 25 +++- src/components/PathDisplay.tsx | 29 ---- src/components/PathVisualization.tsx | 141 +++++------------- src/hooks/useQueryParams.ts | 4 +- src/lib/pathUtils.ts | 94 ++++++++++++ 10 files changed, 191 insertions(+), 142 deletions(-) delete mode 100644 src/components/PathDisplay.tsx create mode 100644 src/lib/pathUtils.ts diff --git a/src/app/(app)/meshcore/node/[publicKey]/page.tsx b/src/app/(app)/meshcore/node/[publicKey]/page.tsx index 8fb7f79..6f420ff 100644 --- a/src/app/(app)/meshcore/node/[publicKey]/page.tsx +++ b/src/app/(app)/meshcore/node/[publicKey]/page.tsx @@ -5,7 +5,6 @@ import Link from "next/link"; import moment from "moment"; import { formatPublicKey } from "@/lib/meshcore"; import { getNameIconLabel } from "@/lib/meshcore-map-nodeutils"; -import PathDisplay from "@/components/PathDisplay"; import AdvertDetails from "@/components/AdvertDetails"; import ContactQRCode from "@/components/ContactQRCode"; import { useConfig, LAST_SEEN_OPTIONS } from "@/components/ConfigContext"; diff --git a/src/app/(app)/search/page.tsx b/src/app/(app)/search/page.tsx index 51d1572..3f3ab45 100644 --- a/src/app/(app)/search/page.tsx +++ b/src/app/(app)/search/page.tsx @@ -13,11 +13,14 @@ import { ChevronDownIcon } from '@heroicons/react/24/outline'; function SearchPageContent() { const { config } = useConfig(); - const { query, setQuery, setLimit, setExact } = useSearchQuery(); + const { query, setQuery, setLimit, setExact, setIsRepeater } = useSearchQuery(); const [showFilters, setShowFilters] = useState(false); // Helper function to check if exact search is enabled const isExactEnabled = query.exact === true || (typeof query.exact === 'string' && (query.exact === 'true' || query.exact === '')); + + // Helper function to check if is_repeater search is enabled + const isRepeaterEnabled = query.is_repeater === true || (typeof query.is_repeater === 'string' && (query.is_repeater === 'true' || query.is_repeater === '')); // Always use config values for region and lastSeen const searchParams = { @@ -26,6 +29,7 @@ function SearchPageContent() { lastSeen: config.lastSeen, limit: query.limit || 50, exact: isExactEnabled, + is_repeater: isRepeaterEnabled, }; const { data, isLoading, error } = useMeshcoreSearch({ @@ -82,7 +86,7 @@ function SearchPageContent() { {showFilters && (