From 2d2ceac5698c83968a3cb3ab71a5c8691d2d9829 Mon Sep 17 00:00:00 2001 From: afkarxyz Date: Thu, 2 Apr 2026 16:22:14 +0700 Subject: [PATCH] .dropdown region songlink --- frontend/src/components/SearchBar.tsx | 40 ++++++++++++++++++--------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/SearchBar.tsx b/frontend/src/components/SearchBar.tsx index 9614b13..8ee2e50 100644 --- a/frontend/src/components/SearchBar.tsx +++ b/frontend/src/components/SearchBar.tsx @@ -11,6 +11,7 @@ import { SearchSpotify, SearchSpotifyByType } from "../../wailsjs/go/main/App"; import { backend } from "../../wailsjs/go/models"; import { cn } from "@/lib/utils"; import { useTypingEffect } from "@/hooks/useTypingEffect"; +import { getSettings, type Settings } from "@/lib/settings"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; const FETCH_PLACEHOLDERS = [ @@ -245,6 +246,7 @@ interface SearchBarProps { export function SearchBar({ url, loading, onUrlChange, onFetch, onFetchUrl, history, onHistorySelect, onHistoryRemove, hasResult, searchMode, onSearchModeChange, region, onRegionChange, }: SearchBarProps) { const [searchQuery, setSearchQuery] = useState(""); const [searchResults, setSearchResults] = useState(null); + const [showRegionSelector, setShowRegionSelector] = useState(() => getSettings().linkResolver === "songlink"); const [resultFilter, setResultFilter] = useState(""); const [sortOrders, setSortOrders] = useState>({ tracks: "default", @@ -279,6 +281,18 @@ export function SearchBar({ url, loading, onUrlChange, onFetch, onFetchUrl, hist console.error("Failed to load recent searches:", error); } }, []); + useEffect(() => { + const syncRegionVisibility = (settings?: Partial) => { + const resolver = settings?.linkResolver ?? getSettings().linkResolver; + setShowRegionSelector(resolver === "songlink"); + }; + syncRegionVisibility(); + const handleSettingsUpdate = (event: Event) => { + syncRegionVisibility((event as CustomEvent>).detail); + }; + window.addEventListener("settingsUpdated", handleSettingsUpdate); + return () => window.removeEventListener("settingsUpdated", handleSettingsUpdate); + }, []); const saveRecentSearch = (query: string) => { const trimmed = query.trim(); if (!trimmed) @@ -589,19 +603,19 @@ export function SearchBar({ url, loading, onUrlChange, onFetch, onFetchUrl, hist {!searchMode && (<> - + {showRegionSelector && ()}